数据定义语言 (Data Definition Language, DDL) 是SQL语言集中负责数据结构定义与数据库对象定义的语言,由CREATE、ALTER与DROP三个语法所组成。数据库对象包括表、视图、索引、同义词、序列等(TABLE/VIEW/INDEX/SYN/SEQUENCE)。我们先对创建和管理表和视图进行一个介绍。

      一、创建和管理表

        数据表是数据库中一个非常重要的对象,是其他对象的基础。可分为用户表和数据字典两类。

        1、创建表(CREATE TABLE)

        CREATE TABLE 语句创建表

CREATE TABLE table                 --table:表名   column:列名
            (column datatype       --列的数据类型和长度
            [DEFAULT expr]         --指定默认值,防止插入时输入空值到列中
            [,...]);

        最为常见的数据类型有三种,分别为字符型,数值型,日期型。

数据类型 说明
VARCHAR2(size) 可变长度字符数据(必须指定最大字符数:最小字符数是 1;最大字符数是 4000)
CHAR [(size)] 固定长度字符数据,长度的大小以字节为单位(默认和最小字符数为 1;最大字符数为 2000)
NUMBER [(p,s)] 数字,精度为p,小数为s (p是数字总长度,s是小数点右边的数字长度;p的范围从1到38,s的范围从-84到127)
DATE 日期和时间值,从公元前4712.1.1到公元9999.12.31

        用子查询语法创建表(CTAS)

CREATE TABLE table
             [(column, column...)]
          AS subquery              --使用子查询

       如果给出了指定的列,列的数目必须等于子查询的SELECT列表的列数目。如果没有给出了指定的列,表的列名应和子查询中的列名是相同的。完整性规则不会被传递到新表中,仅列的数据类型被定义。

       2、修改表(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);                                                --删除
ALTER TABLE table SET UNUSED (column);                                          --隐藏列
ALTER TABLE table DROP UNUSED COLUMNS; --删除隐藏的列

       添加列时不能指定新添加的列出的位置,新列将成为最后一列;修改列时可以修改数据类型大小和默认值,当列中只包含空值时才能减少一个列的宽度和改变数据类型,对默认值的改变仅改变影响以后插入的列;删除列时一次只能有一列被删除。表被修改后必须至少保留一列。一旦一列被删除,它不能再恢复;当一列从表中被删除时,该表中任何其他的被用SET UNUSED选项标记列也被删除,设置UNUSED的作用是为了在cpu、内存等资源不充足的时候,先做上UNUSED标记再等数据库资源空闲的时候用DROP UNUSED COLUMNS删除。

       3、删除表(DROP TABLE)

DROP TABLE table [PURGE];

       当你删除一个表时,数据库丢失表中所有的数据,并且所有与其相关的索引也被删除,任何视图和同义词被保留但无效。ORACLE 10g中由于引入了回收站,因此要彻底删除一个表需要加PURGE关键字。

       4、截断表(TRUNCATE TABLE)

TRUNCATE TABLE table;

       截断表用于从表中删除所有的行,并且释放该表所使用的存储空间。DELETE语句也可以从表中删除所有的行,但它不能释放存储空间。TRUNCATE命令更快一些,原因如下:TRUNCATE语句是数据定义 (DDL) 语句,不产生回滚信息;截断一个表不触发表的删除触发器。

----CREATE TABLE 语句创建表
CREATE TABLE emp_copy 
            (empno number(4),
             ename varchar2(10),
             job varchar2(9),
             mgr number(4),
             hiredate date,
             sal number(7,2),
             comm number(7,2) DEFAULT null,
             deptno number(2));
----用子查询语法创建表
CREATE TABLE emp_copy1
          AS SELECT * FROM emp;
----修改表
ALTER TABLE emp_copy1 ADD (salgrade number(2));    
ALTER TABLE emp_copy1 MODIFY (salgrade varchar2(2)); 
ALTER TABLE emp_copy1 DROP (salgrade);                                             
ALTER TABLE emp_copy1 SET UNUSED (comm);                                        
ALTER TABLE emp_copy1 DROP UNUSED COLUMNS;                              
----删除表
DROP TABLE emp_copy PURGE;
----截断表
TRUNCATE TABLE emp_copy1;
创建和管理表例子

相关文章:

  • 2021-06-01
  • 2021-10-16
  • 2021-09-29
  • 2021-12-28
  • 2022-12-23
  • 2021-05-13
  • 2022-12-23
  • 2021-09-08
猜你喜欢
  • 2021-11-22
  • 2022-01-15
  • 2022-12-23
  • 2022-12-23
  • 2021-10-26
  • 2022-12-23
  • 2021-09-29
相关资源
相似解决方案