Oracle培训(三十)——Oracle 11g 第九章知识点小结——创建和管理表
Oracle培训(三十)——Oracle 11g 第九章知识点总结——创建和管理表
知识点预览
创建和管理表
创建和管理表
1. 常见的数据库对象
2. 命名规则
表名和列名:
a) 必须以字母开头
b) 必须在 1–30 个字符之间
c) 必须只能包含 A–Z, a–z, 0–9, _, $, 和 #
d) 必须不能和用户定义的其他对象重名
e) 必须不能是Oracle 的保留字
3. CREATE TABLE 语句
a) 必须具备:
i. CREATE TABLE权限
ii. 存储空间
CREATE TABLE[schema.]table
(column datatype [DEFAULT expr][, ...]);
b) 必须指定:
i. 表名
ii. 列名, 数据类型, 尺寸
4. 引用其他用户的表
a) 其他用户定义的表不在当前用户的方案中
b) 应该使用用户名座位前缀,引用其他用户定义的对象
5. DEFAULT 选项
a) 插入时为一个列指定默认值
... hire_dateDATE DEFAULT SYSDATE, ...
b) 字符串, 表达式, 或SQL 函数都是合法的
c) 其它列的列名和伪列是非法的
d) 默认值必须满足列的数据类型定义
6. 创建表
a) 语法
CREATE TABLEdept (deptno NUMBER(2), dname VARCHAR2(14), loc VARCHAR2(13));
Table created.
b) 确认
DESCRIBE dept
7. Oracle 数据库中的表
a) 用户定义的表:
i. 用户自己创建并维护的一组表
ii. 包含了用户所需的信息
b) 数据字典:
i. 由Oracle Server自动创建的一组表
ii. 包含数据库信息
8. 查询数据字典
a) 查看用户定义的表.
SELECTtable_name FROM user_tables ;
b) 查看用户定义的各种数据库对象
SELECT DISTINCTobject_type FROM user_objects ;
c) 查看用户定义的表, 视图, 同义词和序列
SELECT * FROM user_catalog ;
9. 数据类型
10. 日期数据类型
a) Oracle9i对日期的改进:
加入了新的日期型数据类型.
有效的存储新数据类型.
提高对时区和本地时区的支持.
b) TIMESTAMP 数据类型是对 DATE 数据类型的扩展
c) 按DATE数据类型存放 年, 月, 日, 小时, 分钟, 秒 以及微秒甚至纳秒
d) TIMESTAMP 数据类型的一般形式:
TIMESTAMP[(fractional_seconds_precision)]
11. TIMESTAMP WITH TIME ZONE
a) TIMESTAMP WITH TIME ZONE 是一个带有时区的 TIMESTAMP
b) 时区部分按照小时和分钟显示本地时区与UTC的时差
TIMESTAMP[(fractional_seconds_precision)]
WITH TIMEZONE
12. TIMESTAMP WITH LOCAL TIME
a) TIMESTAMP WITH LOCAL TIME ZONE 是一种带有本地时区的 TIMESTAMP
b) 数据库按照数据库的本地时区存放数据
c) 时区不显示在数据后面, Oracle 自动将数据转换为用户所在的时区
TIMESTAMP[(fractional_seconds_precision)]
WITH LOCALTIME ZONE
13. INTERVAL YEAR TO MONTH 数据
INTERVAL YEAR TOMONTH 存放若干年和若干月的一个时间段。
INTERVAL YEAR[(year_precision)] TO MONTH
INTERVAL '123-2'YEAR(3) TO MONTH Indicates aninterval of 123 years, 2 months. INTERVAL '123'YEAR(3) Indicates aninterval of 123 years 0 months. INTERVAL '300'MONTH(3) Indicates aninterval of 300 months. INTERVAL '123'YEAR Returns anerror, because the default precision is 2, and '123' has 3digits.
14. INTERVAL DAY TO SECOND 数据
INTERVAL DAY TO SECOND 存放若干天到若干秒的一个时间段
INTERVAL DAY [(day_precision)]
TO SECOND [(fractional_seconds_precision)]
INTERVAL '4 5:12:10.222' DAY TO SECOND(3) Indicates 4 days, 5 hours, 12 minutes, 10 seconds, and 222 thousandths of a second.INTERVAL '123' YEAR(3). INTERVAL '7' DAY Indicates 7 days. INTERVAL '180' DAY(3) Indicates 180 days. INTERVAL '4 5:12:10.222' DAY TO SECOND(3) Indicates 4 days, 5 hours, 12 minutes, 10 seconds, and 222 thousandths of a second. INTERVAL '4 5:12' DAY TO MINUTE Indicates 4 days, 5 hours and 12 minutes. INTERVAL '400 5' DAY(3) TO HOUR Indicates 400 days 5 hours. INTERVAL '11:12:10.2222222' HOUR TO SECOND(7) indicates 11 hours, 12 minutes, and 10.2222222 seconds
.
15. 使用子查询创建表
a) 有时候用 AS subquery 选项,将创建表和插入数据结合起来
CREATE TABLE table
[(column, column...)]
AS subquery;
b) 指定的列和子查询中的列要一一对应
c) 通过列名和默认值定义列
16. 使用子查询创建表举例
CREATE TABLE dept80 AS SELECT employee_id, last_name, salary*12 ANNSAL, hire_date FROM employees WHERE department_id = 80;
Table created.
DESCRIBE dept80
17. ALTER TABLE 语句
使用 ALTER TABLE 语句可以:
追加新的列
修改现有的列
为新追加的列定义默认值
删除一个列
18. ALTER TABLE 语句
使用 ALTER TABLE 语句追加, 修改, 或删除列的语法.
ALTER TABLE table
ADD (column datatype [DEFAULT expr]
[, column datatype]...);
ALTER TABLE table
MODIFY (columndatatype [DEFAULT expr]
[, column datatype]...);
ALTER TABLE table
DROP (column);
19. 追加一个新列
使用 ADD 子句追加一个新列
ALTER TABLEdept80 ADD (job_id VARCHAR2(9));
Table altered.
新列是表中的最后一列
20. 修改一个列
a) 可以修改列的数据类型, 尺寸, 和默认值
ALTER TABLE dept80 MODIFY (last_nameVARCHAR2(30));
Table altered.
b) 对默认值的修改只影响今后对表的修改
21. 删除一个列
使用 DROP COLUMN 子句删除不再需要的列.
ALTER TABLE dept80 DROP COLUMN job_id;
Table altered.
22. SET UNUSED 选项
a) 使用 SET UNUSED 使一个或多个列被标记为不可用
b) 使用 DROP UNUSED COLUMNS 选项删除不可用的列
ALTER TABLE table
SET UNUSED (column);
OR
ALTERTABLE table
SET UNUSED COLUMN column;
ALTER TABLE table
DROP UNUSED COLUMNS;
23. 删除表
a) 数据和结构都被删除
b) 所有正在运行的相关事物被提交
c) 所有相关索引被删除
d) DROP TABLE 语句不能回滚
DROP TABLE dept80;
Table dropped.
24. 改变对象的名称
a) 改变对象的名称
RENAME dept TOdetail_dept;
Table renamed.
b) 必须是对象的拥有者
25. 清空表
a) TRUNCATE TABLE 语句:
i. 删除表中所有的数据
ii. 释放表的存储空间
TRUNCATE TABLE detail_dept;
Table truncated.
b) TRUNCATE语句不能回滚
c) 可以使用 DELETE 语句删除数据
26. 表的注释
a) 使用COMMENT 语句给表或列添加注释
COMMENT ON TABLEemployees IS 'EmployeeInformation';
Comment created.
b) 可以通过下列数据字典视图查看所添加的注释:
i. ALL_COL_COMMENTS
ii. USER_COL_COMMENTS
iii. ALL_TAB_COMMENTS
iv. USER_TAB_COMMENTS
27. 总结