• 1. 创建和管理表
  • 2. 目标通过本章学习,您将可以: 描述主要的数据库对象。 创建表。 描述各种数据类型。 修改表的定义。 删除,重命名和清空表。
  • 3. 常见的数据库对象对象 描述 表 基本的数据存储集合,由行和列组成。 视图 从表中抽出的逻辑上相关的数据集合。 序列 提供有规律的数值。 索引 提高查询的效率 同义词 给对象起别名
  • 4. 命名规则表名和列名: 必须以字母开头 必须在 1–30 个字符之间 必须只能包含 A–Z, a–z, 0–9, _, $, 和 # 必须不能和用户定义的其他对象重名 必须 不能是Oracle 的保留字
  • 5. CREATE TABLE 语句必须具备: CREATE TABLE权限 存储空间 必须指定: 表名 列名, 数据类型, 尺寸CREATE TABLE [schema.]table (column datatype [DEFAULT expr][, ...]);
  • 6. 引用其他用户的表其他用户定义的表不在当前用户的方案中 应该使用用户名座位前缀,引用其他用户定义的对象
  • 7. DEFAULT 选项插入时为一个列指定默认值 字符串, 表达式, 或SQL 函数都是合法的 其它列的列名和伪列是非法的 默认值必须满足列的数据类型定义... hire_date DATE DEFAULT SYSDATE, ...
  • 8. 语法 确认创建表CREATE TABLE dept (deptno NUMBER(2), dname VARCHAR2(14), loc VARCHAR2(13)); Table created.DESCRIBE dept
  • 9. Oracle 数据库中的表用表户定义的: 用户自己创建并维护的一组表 包含了用户所需的信息 数据字典: 由Oracle Server自动创建的一组表 包含数据库信息
  • 10. SELECT table_name FROM user_tables ;SELECT * FROM user_catalog ;查询数据字典查看用户定义的各种数据库对象查看用户定义的表, 视图, 同义词和序列SELECT DISTINCT object_type FROM user_objects ;查看用户定义的表.
  • 11. 数据类型数据类型 描述 VARCHAR2(size) 可变长字符数据 CHAR(size) 定长字符数据 NUMBER(p,s) 可变长数值数据 DATE 日期型数据 LONG 可变长字符数据,最大可达到2G CLOB 字符数据,最大可达到4G RAW and LONG RAW 裸二进制数据 BLOB 二进制数据,最大可达到4G BFILE 存储外部文件的二进制数据,最大可达到4G ROWID 行地址
  • 12. 日期数据类型数据类型 描述 TIMESTAMP 时间撮 INTERVAL YEAR TO MONTH 若干年月 INTERVAL DAY TO SECOND 若干天到秒Oracle9i对日期的改进: 加入了新的日期型数据类型. 有效的存储新数据类型. 提高对时区和本地时区的支持.
  • 13. 日期数据类型TIMESTAMP 数据类型是对 DATE 数据类型的扩展 按DATE数据类型存放 年, 月, 日, 小时, 分钟, 秒 以及微秒甚至纳秒 TIMESTAMP 数据类型的一般形式:TIMESTAMP[(fractional_seconds_precision)]
  • 14. TIMESTAMP WITH TIME ZONETIMESTAMP WITH TIME ZONE 是一个带有时区的 TIMESTAMP 时区部分按照小时和分钟显示本地时区与UTC的时差TIMESTAMP[(fractional_seconds_precision)] WITH TIME ZONE
  • 15. TIMESTAMP WITH LOCAL TIMETIMESTAMP WITH LOCAL TIME ZONE 是一种带有本地时区的 TIMESTAMP 数据库按照数据库的本地时区存放数据 时区不显示在数据后面, Oracle 自动将数据转换为用户所在的时区 TIMESTAMP WITH LOCAL TIME ZONE 的一般形式TIMESTAMP[(fractional_seconds_precision)] WITH LOCAL TIME ZONE
  • 16. INTERVAL YEAR TO MONTH 数据INTERVAL YEAR TO MONTH 存放若干年和若干月的一个时间段。INTERVAL YEAR [(year_precision)] TO MONTHINTERVAL '123-2' YEAR(3) TO MONTH Indicates an interval of 123 years, 2 months. INTERVAL '123' YEAR(3) Indicates an interval of 123 years 0 months. INTERVAL '300' MONTH(3) Indicates an interval of 300 months. INTERVAL '123' YEAR Returns an error, because the default precision is 2, and '123' has 3 digits.
  • 17. 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.
  • 18. INTERVAL DAY TO SECOND 数据INTERVAL DAY TO SECOND存放若干天到若干秒的一个时间段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.
  • 19. 使用子查询创建表时候用 AS subquery 选项,将创建表和插入数据结合起来 指定的列和子查询中的列要一一对应 通过列名和默认值定义列CREATE TABLE table [(column, column...)] AS subquery;
  • 20. 使用子查询创建表举例DESCRIBE dept80CREATE TABLE dept80 AS SELECT employee_id, last_name, salary*12 ANNSAL, hire_date FROM employees WHERE department_id = 80; Table created.
  • 21. ALTER TABLE 语句使用 ALTER TABLE 语句可以: 追加新的列 修改现有的列 为新追加的列定义默认值 删除一个列
  • 22. ALTER TABLE 语句使用 ALTER TABLE 语句追加, 修改, 或 删除列的语法.ALTER TABLE table ADD (column datatype [DEFAULT expr] [, column datatype]...);ALTER TABLE table MODIFY (column datatype [DEFAULT expr] [, column datatype]...);ALTER TABLE table DROP (column);
  • 23. 追加一个新列DEPT80追加一个新列DEPT80新列
  • 24. 追加一个新列使用 ADD 子句追加一个新列 新列是表中的最后一列ALTER TABLE dept80 ADD (job_id VARCHAR2(9)); Table altered.
  • 25. 修改一个列可以修改列的数据类型, 尺寸, 和默认值 对默认值的修改只影响今后对表的修改ALTER TABLE dept80 MODIFY (last_name VARCHAR2(30)); Table altered.
  • 26. 删除一个列使用 DROP COLUMN 子句删除不再需要的列.ALTER TABLE dept80 DROP COLUMN job_id; Table altered.
  • 27. ALTER TABLE table SET UNUSED (column); ALTER TABLE table SET UNUSED COLUMN column; SET UNUSED 选项使用 SET UNUSED 使一个或多个列被标记为不可用 使用 DROP UNUSED COLUMNS 选项删除不可用的列ORALTER TABLE table DROP UNUSED COLUMNS;
  • 28. 删除表数据和结构都被删除 所有正在运行的相关事物被提交 所有相关索引被删除 DROP TABLE 语句不能回滚DROP TABLE dept80; Table dropped.
  • 29. 改变对象的名称执行RENAME语句改变表, 视图, 序列, 或同义词的名称 必须是对象的拥有者RENAME dept TO detail_dept; Table renamed.
  • 30. 清空表TRUNCATE TABLE 语句: 删除表中所有的数据 释放表的存储空间 TRUNCATE语句不能回滚 可以使用 DELETE 语句删除数据TRUNCATE TABLE detail_dept; Table truncated.
  • 31. 表的注释使用COMMENT 语句给表或列添加注释 可以通过下列数据字典视图查看所添加的注释: ALL_COL_COMMENTS USER_COL_COMMENTS ALL_TAB_COMMENTS USER_TAB_COMMENTSCOMMENT ON TABLE employees IS 'Employee Information'; Comment created.
  • 32. 总结语句 描述 CREATE TABLE 创建表 ALTER TABLE 修改表结构 DROP TABLE 删除表 RENAME 重命名表 TRUNCATE 删除表中的所有数据,并释放存储空间 COMMENT 给对象加注释通过本章学习,您已经学会如何使用DDL语句创建, 修改, 删除, 和重命名表.