资源描述
单击此处编辑母版标题样式,*,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,Oracle SQL&PL/SQL,第9,章,创建和管理表,描述主要的数据库对象,创建表,描述可用于定义列的数据类型,修改表定义,删除、更名、截断表,本章要点,数据库对象,对象描述,表存储数据的基本单元,由行和列组成,视图 来自一个或多个表的数据的子集,序列 产生主关键字值,索引提高某些查询的性能的数据结构,同义词 赋予对象另外的名字,CREATE TABLE,语句,您必须具备,:,CREATE TABLE,的权限,一定的存贮空间,您需要指定,:,表名,列名、列的类型及列的宽度,CREATE TABLE,schema,.,table,(,column,datatype,DEFAULT,expr,;,命名规则,必须以字母开头,长度为,130,个字符,只能包含,AZ,az,09,_,$,和,#,对于同一个用户不能使用和其他对象相同的名字,不能是,Oracle,的保留字,引用其他用户的表,属于其他用户而不属于当前用户的表,需使用用户名作为表的前缀,DEFAULT,选项,指定在插入数据时,列的默认值,hiredate,DATE DEFAULT SYSDATE,合法的值可以是字面值、表达式或,SQL,函数,非法的值是另一个列的名称或虚拟列,默认的数据类型必须和列的类型匹配,数据类型,类型描述,VARCHAR2(,size,),变长字符串,CHAR(,size,),固定长度字符串,NUMBER(,p,s),变长数值,DATE,日期和时间值,LONG,可存放高达,2,GB,的,变长字符数据,CLOB,可存放高达,4,GB,的,变长单字节数据,RAW and LONG RAW,二进制数据,BLOB,可存放高达,4,GB,二进制数据,BFILEBinary data stored in an external file;up to 4 gigabytes,创建表,SQL CREATE TABLE dept1 2(,deptno,NUMBER(2),3,dname,VARCHAR2(14),4 loc VARCHAR2(13);,Table created.,创建表,验证是否创建成功,SQL DESCRIBE dept1,Name Null?Type,-,DEPTNO NOT NULL NUMBER(2),DNAME VARCHAR2(14),LOC VARCHAR2(13),查询数据字典,列出当前用户的表,列出当前用户不同的对象类型,查询当前用户的表、视图、同义词及序列,SQL SELECTtable_name,2FROMuser_tables;,SQL SELECTDISTINCT object_type,2FROM user_objects;,SQL SELECT*,2FROMuser_catalog;,用子查询创建表,在,CREATE TABLE,语句的,AS,子句中使用子查询可以在创建表的同时插入数据,所指定列的数量和类型必须和子查询中列的数量和类型相匹配,由列名和默认值定义列,CREATE TABLE,table,column,(,column,.),AS,subquery,;,使用子查询创建表,Name Null?Type,-,EMPNO NOT NULL NUMBER(4),ENAME VARCHAR2(10),ANNSAL NUMBER,HIREDATE DATE,SQL DESCRIBE dept30,SQL CREATE TABLE dept30,2AS 3SELECT,empno,ename,sal,*12 ANNSAL,hiredate,4FROM,emp,5WHERE,deptno,=30;,Table created.,使用子查询创建表,使用指导:,表可以按指定的列名创建,并且子查询提取出,来的记录会插入到新表中。,列的定义可以包含列名及默认值,如果专门指定了表的列,那么子查询中列的数,量必须和将要创建的表的列的数量相同。,如果没有指定要创建表的列,那么创建出的,新表的列的名称和子查询中各个列的名称相,同。,ALTER TABLE,语句,使用,ALTER TABLE,语句可以:,添加一个列,修改已存在的列,为新列定义默认值,ALTER TABLE,table,ADD (,column,datatype,DEFAULT,expr,column,datatype,.);,ALTER TABLE,table,MODIFY (,column,datatype,DEFAULT,expr,column,datatype,.);,添加新列,DEPT30,EMPNO ENAME ANNSAL HIREDATE,-,7698BLAKE 3420001-MAY-81,7654MARTIN 1500028-SEP-81,7499ALLEN 1920020-FEB-81,7844TURNER 1800008-SEP-81,.,“在,DEPT30,表中添加新列,JOB”,DEPT30,EMPNO ENAME ANNSAL HIREDATE,-,7698BLAKE 3420001-MAY-81,7654MARTIN 1500028-SEP-81,7499ALLEN 1920020-FEB-81,7844TURNER 1800008-SEP-81,.,JOB,JOB,新列,添加新列,使用,ADD,子句添加新列,columns.,EMPNO ENAME ANNSAL HIREDATE JOB,-,7698 BLAKE 34200 01-MAY-81,7654 MARTIN 15000 28-SEP-81,7499 ALLEN 19200 20-FEB-81,7844 TURNER 18000 08-SEP-81,.,6 rows selected.,SQL ALTER TABLE dept30,2 ADD (job VARCHAR2(9);,Table altered.,新列成为表的最后一列,修改列,可以修改列的数据类型、长度及默认值,改变列的默认值仅仅影响后来插入的新记录,可添加或修改列,但不能删除列,不能指定新列的位置。,ALTER TABLEdept30,MODIFY(,ename,VARCHAR2(15);,Table altered.,删除表,表中的所有数据和结构都被删除,任何悬而未决的事务都将被提交,所有的索引被删除,.,不能回滚该语句,SQL DROP TABLE dept30;,Table dropped.,修改对象的名称,要修改表、视图、序列或同义词的名称,可以使用,RENAME,语句,您必须拥有对象的所有权,.,SQL RENAME dept1 TO department;,Table renamed.,截断表,TRUNCATE TABLE,语句:,删除表中所有记录,释放该表的存储空间,使用,TRUNCATE,移除后不能回滚,换一种方法可以使用,DELETE,语句删除记录,SQL TRUNCATE TABLE department;,Table truncated.,给表添加注释,使用,COMMENT,语句,可以为表、列、视图、快照添加注释,SQL COMMENT ON TABLE,emp,2 IS Employee Information;,Comment created.,给表添加注释,注释可以通过以下字典表查询,ALL_COL_COMMENTS,USER_COL_COMMENTS,ALL_TAB_COMMENTS,USER_TAB_COMMENTS,可以通过设置空字符串的方式删除注释,
展开阅读全文