我今天学习了Oracle数据库如何修改表的知识,是冯威老师讲的课,我做了简单的记录:
1.在表中插入新的列:
alter table tablename
add city varchar(2) default 'rr' //赋默认值
2.修改表中的列:
alter table tablename
modify city varchar(20)
3.删除表中的列:
alter table tablename
drop column city
4.删除表的内容:
TRUNCATE TABLE tablename
它可以清除表中所有的记录,delete可以选择删除表中的一部分
它是DDL语句,不可以回滚,delete可以使用rollback回滚,放弃修改。
他可以释放表的存储空间,delete不释放空间
5.删除表的语句:这个删除操作不能回滚
drop table tablename
6.改变对象的名称:
使用RENAME语句改变对象名称,可以修改表、视图、序列或者同义词的名称
RENAME old_name TO new_name;
**************************************************************
1.在Oracle数据库中的表:
用户表:
被用户创建和维护的一些表
包括了用户自己的信息
数据字典表:
被Oracle数据库创建和维护的一些表
包括了数据库的信息
2.数据字典:
是每个Oracle数据库的核心
用于描述数据库和它的所有对象
包括了只读的表和视图
被 SYS用户拥有
被 Oracle server维护
用户可以使用 SELECT访问
3.查询用户下所有的表:
select * from user_name
4.查询当前用户下表中的列:
select table_name ,column_name from user_tab_columuns
5.查询当前用户下dept表中的列:
6.约束:对表中的数据限制。
7:Oracle 支持下面五类完整性约束:
1、NOT NULL 非空
2、UNIQUE Key 唯一键
3、PRIMARY KEY 主键
4、FOREIGN KEY 外键
5、CHECK 检察
8.约束:
区分列级约束和表级约束:
列级约束:在建表的同时创建
表级约束:建表后创建
9.非空约束(NOT NULL):确保字段值不允许为空
10.查看表的约束:select * from user_constraints
11.唯一性约束(UNIQUE):唯一性约束条件确保所在的字段或者字段组合不出现 重复值,唯一性约束条件的字段允许出现(1或多个)空值
12.主键约束( PRIMARY KEY):
主键从功能上看相当于非空且唯一,一个表中只允许一个主键,Oracle为主键 创建对应的唯一性索引;
创建主键,constraint pk primary key (employees_id)
13.联合主键:如学生的课程号和学生学号构成联合主键;
14.外键约束( FOREIGN KEY):
外键约束条件参照的是主表的一个或者多个字段的值,通常被外键参照的是主 表的主键或者唯一键,
当表存在是只能在表的外部定义外键约束;
alter table dept02
add constraint pk01 foreign key(dept_id),references dept(dept_id)
*****外键可以是构建于一个表的两个字段,
15.CHECK 约束
Check约束条件是一种比较特殊的约束条件,通过check定义,强制定义在字段 上的每一记录都要满足check中定义的条件。
16.删除约束:删除约束条件对于表和数据不会产生影响
ALTER TABLE employees
DROP CONSTRAINT emp_manager_fk;
17.索引:
索引是:方案(schema)中的一个数据库对象,在 Oracle数据库中用来加速对 表的查询,通过使用快速路径访问方法快速定位数据,减少了磁盘的I/O
与表独立存放,由 Oracle数据库自动维护
18.创建索引:
自动: 当在表上定义一个PRIMARY KEY 或者UNIQUE 约束条件时,Oracle数据库 自动创建一个对应的唯一索引.
手动: 用户可以创建索引以加速查询.CREATE INDEX index
ON table (column[, column]...);
19.删除索引:
drop index index_emp01
20.查询索引:
select * from user_indexs
21.视图:
视图也就是虚表,实际上视图就是一个命名的查询,用于改变基表数据的显示。
22.创建视图:
实际上是给sql语句起一个别名,在查询时,不需要再写完全的Select查询语句 ,只需要简单的写上从视图中查询的语句就可以了,
CREATE VIEW emp_v_10
AS SELECT employee_id ID, last_name NAME,
salary*12 ANN_SALARY
FROM employees
WHERE department_id = 10;
***查询视图:
select * from emp_v_10
***修改视图:
CREATE OR REPLACE VIEW emp_v_10
AS SELECT employee_id ID, last_name NAME,
salary*12 ANN_SALARY
FROM employees
WHERE department_id = 20;
22.禁止对视图进行DML操作:
CREATE VIEW emp_v_10
AS SELECT employee_id ID, last_name NAME,
salary*12 ANN_SALARY
FROM employees
WHERE department_id = 10
with read only --只读
23.删除视图:删掉视图不会导致数据的丢失,因为视图是基于数据库的表之上的 一个查询定义.
drop view emp_v_10
24.行内视图
行内视图是在SQL语句中使用的一个带有别名的子查询.
在主查询FROM 子句中的子查询就是行内视图.
25.Top-N 分析 ********必须掌握******
使用Top-N分析法可以得到某列上最什么的前n个值,
1、使用了rownum这个伪列,这个伪列将会返回行号,可以作为返回记录的序列 号显示。
2、在from后面使用了子查询,这是标准的行内视图的使用。
3、在子查询中使用了order by进行排序,在前面的子查询中不需要使用。
4、在主查询中通过where条件中的rownum伪列定义过滤条件,只返回最什么的前 几行数据。
例如: 显示EMPLOYEES表中薪水最高的前三个雇员信息
求薪水在第二和第三的:
select emp_id from(
SELECT ROWNUM as RANK, last_name, salary
FROM (SELECT last_name,salary FROM employees
ORDER BY salary DESC)
WHERE ROWNUM <= 3)
where rank>1
26.同义词:
同义词是数据库中一个对象的别名,可以简化对对象的访问
通过使用同义词,可以:
1、简化了引用另一个用户对象的方法
2、缩短了对象名称的长度
*****创建同义词:创建employees表的别名.
CREATE SYNONYM s_emp
FOR emp;
select * from S_emp
27.删除同义词:
drop synonym s_emp
28.序列:
是一数据库对象,利用它可生成唯一的整数。
一般使用序列自动地生成表主键值或唯一键值
创建一个序列,从一开始,步长为1:
create sequence seq_stu
increment by 1 --步长
start with 1 --开始值
Maxvalue 21 --最大值
minValue 1 --最小值
29.修改序列
修改序列可以: 修改未来序列值的增量。设置或撤消最小值或最大值。改变缓 冲序列的数目。 指定序列号是否是有序。
*****删除序列
Drop sequence emp_seq
30.存储过程:用于在数据库中完成特定的操作或者任务,
***创建存储过程,--插入数据,
create or replace procedure insertdept
(
in v_deptno number,
)
is
begin
insert into dept(deptno,dname,loc) values (v_deptno,v_dname,v_loc);
commit;
end;
*****执行存储过程:
exec insertdept(13,'aaa','bj')
*****创建带返回值的存储过程:
修改dept的表
create or replace procedure updatedept
(v_deptno in number,v_dname in varchar2)
is
begin
update dept set dname=v_dname,loc=v_loc where deptno=v_deptno;
commit;
v_demo:='success';
end;
******调用存储过程:
declare
v_out varchar2(34);
is
begin
updatedept(13,'789','678',v_demo)
dbms_output.put_line(v_out);
end;
我觉得今天冯老师讲的通俗易懂,很容易让我们理解,今天的知识点比较的多,很多知识都是一成不变的,需要课下花时间去记忆,多记几遍就会记住了。