04-创建和管理表
数据库对象:
表 :基本的数据存储集合,行+列
视图:相关的数据集合
序列:提供有规律的数值
索引:提高查询效率
同义词:给对象起别名
数据类型:
命名规则:
表名和列名:
•必须以字母开头
•必须在 1–30 个字符之间
•必须只能包含 A–Z, a–z, 0–9, _, $, 和 #
•必须不能和用户定义的其他对象重名
•必须不能是Oracle 的保留字
1 --DDL 数据定义语言
2 --查询用户定义的表
3 select * from user_tables;
4
5 --查看用户定义的各种数据库对象
6 select distinct object_type
7 from user_objects;
8
9 --查看用户定义的表、视图、同义词和序列
10 select * from user_catalog;
11
12 --使用子查询创建表举例
13 CREATE TABLE dept80
14 AS SELECT employee_id, last_name,
15 salary*12 ANNSAL,
16 hire_date
17 FROM employees
18 WHERE department_id = 80;
19
20
21 --追加一个新列
22 ALTER TABLE dept80
23 ADD (job_id VARCHAR2(9));
24
25 --修改一个列(可修改列的数据类型, 尺寸和默认值)
26 ALTER TABLE dept80
27 MODIFY (last_name VARCHAR2(30));
28
29 ALTER TABLE dept80
30 MODIFY (salary number(9,2) default 1000);
31
32 --删除一个列
33 ALTER TABLE dept80
34 DROP COLUMN job_id;
35
36 --重命名一个列
37 ALTER TABLE dept80
38 RENAME COLUMN job_id TO id;
39
40 --删除表
41 --数据和结构都被删除
42 --所有正在运行的相关事务被提交
43 --所有相关索引被删除
44 --DROP TABLE 语句不能回滚
45 DROP TABLE dept80;
46
47 --清空表(TRUNCATE TABLE 语句)
48 --删除表中所有的数据
49 --释放表的存储空间
50 --TRUNCATE语句不能回滚
51 --可以使用 DELETE 语句删除数据,可以回滚
52 TRUNCATE TABLE detail_dept;
53
54 --改变对象的名称
55 --执行RENAME语句改变表, 视图, 序列, 或同义词的名称
56 RENAME jobss To jobs ;
eg:
1 --创建表dept1 2 --name Null? type 3 --id Number(7) 4 --name Varchar2(25) 5 create table dept1( 6 id number(7), 7 name varchar2(25) 8 ); 9 10 --将表departments中的数据插入新表dept2中 11 create table dept2 12 as 13 select * from departments 14 15 --创建表emp5 16 --name Null? type 17 --id Number(7) 18 --First_name Varchar2(25) 19 --Last_name Varchar2(25) 20 --Dept_id Number(7) 21 create table emp5( 22 id number(7), 23 first_name varchar2(25), 24 last_name varchar2(25), 25 dept_id number(7) 26 ) 27 28 --将列Last_name的长度增加到50 29 alter table emp5 30 modify (last_name varchar2(50)) 31 32 --根据表employees创建employees2 33 create table employees2 34 as 35 select * from employees 36 37 --删除表emp5 38 drop table emp5; 39 40 --将表employees2重命名为emp5 41 rename employees2 to emp5 42 43 --在表dept和emp5中添加新列test_column,并检查所作的操作 44 alter table dept 45 add(test_column number(10)); 46 desc dept; 47 48 --在表dept和emp5中将列test_column设置成不可用,之后删除 49 alter table emp5 50 set unused column test_column 51 52 alter table emp5 53 drop unused columns 54 55 --直接删除表emp5中的列 dept_id 56 Alter table emp5 57 drop column dept_id