《表和约束》PPT课件.ppt

上传人:小飞机 文档编号:5644268 上传时间:2023-08-05 格式:PPT 页数:44 大小:328.50KB
返回 下载 相关 举报
《表和约束》PPT课件.ppt_第1页
第1页 / 共44页
《表和约束》PPT课件.ppt_第2页
第2页 / 共44页
《表和约束》PPT课件.ppt_第3页
第3页 / 共44页
《表和约束》PPT课件.ppt_第4页
第4页 / 共44页
《表和约束》PPT课件.ppt_第5页
第5页 / 共44页
点击查看更多>>
资源描述

《《表和约束》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《表和约束》PPT课件.ppt(44页珍藏版)》请在三一办公上搜索。

1、,表和约束,本章要点,创建表修改表删除表重命名截断表数据完整性约束,创建表,Oracle中数据库对象命名原则必须由字母开始,长度在130个字符之间。名字中只能包含AZ,az,09,_(下划线),$和#。同一个Oracle服务器用户所拥有的对象名字不能重复。名字不能为Oracle的保留字。名字是大小写不敏感,CREATE TABLE语句,必须有:CREATE TABLE权限指定:表名列名、列数据类型和列的大小,CREATE TABLE schema.table(column datatype DEFAULT expr,.);,创建表,DESCRIBE dept,CREATE TABLE DOSS

2、IER(ID NUMBER(4),CNAME VARCHAR2(20),BIRTHDAY DATE,STATURE NUMBER(3),WEIGHT NUMBER(5,2),COUNTRY_CODE CHAR(2)DEFAULT 01);,默认值应用,插入默认值,insert into dossier(ID,CNAME,BIRTHDAY,STATURE,WEIGHT)values(2,姚明,to_date(1980.9.12,yyyy.mm.dd),226,134);已创建1 行。,使用默认值修改,update dossier set country_code=default where id

3、=2;,使用子查询创建表,使用子查询创建表的语法,CREATE TABLE table(column,column.)AS subquery;,新表的字段列表必须与子查询中的字段列表匹配字段列表可以省略,引用另一个用户的表,SELECT*FROM scott.emp;,如果一个表不属于当前用户,如果引用它,必须把方案名放在表名的前面。例如,scott.emp,Oracle中表的分类,Oracle 数据库中的表分为下面两类:用户表:由用户创建和维护的表的集合,它包含用户所使用的数据。数据字典:由Oracle 服务器创建和维护的表的集合,它包含数据库信息,比如是表的定义,数据库结构的信息等,可以把

4、它理解为表的表,由Oracle服务器创建和维护。如user_tables。,使用数据字典,查询数据字典,SELECT table_nameFROM user_tables;,察看数据字典结构,DESC user_tables;,数据类型,Data TypeDescriptionVARCHAR2(size)可变长度的字符数据CHAR(size)固定长度的字符数据NUMBER(p,s)数字数据DATE 日期和时间值LONG 最大2G的可变长度字符数据 CLOB最大4G的字符数据RAW and LONG RAW 原始二进制数据BLOB最大4G的二进制数据BFILE最大4G的,存储在外部文件中的二进制

5、数据ROWID一个64进制的数制系统,表示表中一行的唯 一地址,ALTERTABLE语句,用ALTERTABLE语句来:添加一个新列修改一个已存在的列为新列定义一个默认值删除一个列,ALTERTABLE语句,用ALTER TABLE语句添加、修改或删除列,ALTER TABLE tableADD(column datatype DEFAULT expr,column datatype.);,ALTER TABLE tableMODIFY(column datatype DEFAULT expr,column datatype.);,ALTER TABLE tableDROP(column);,

6、添加列,DEPT80,“添加一个新列到DEPT80表”,DEPT80,New column,添加新列,用ADD字句添加列新列成为最后的列,ALTER TABLE dept80ADD(job_id VARCHAR2(9);Table altered.,修改列,可以改变列的数据类型、大小和默认值对默认值的改变只影响后来插入表中的数据,删除列,用DROP COLUMN子句从表中删除列,删除表,在表中的所有数据和结构都被删除任何未决的事务都被提交所有的索引被删除你不能回退DROP TABLE语句,DROP TABLE dept80;Table dropped.,改变一个对象的名字,执行RENAME语句

7、,改变一个表、视图、序列或同义词You must be the owner of the object.,RENAME dept TO detail_dept;Table renamed.,截断表,TRUNCATE TABLE语句:删除表中所有的行释放该表所使用的存储空间不能回退用TRUNCATE删除的行作为选择,可以用DELETE语句删除行,TRUNCATE TABLE detail_dept;Table truncated.,添加注释到表中,用COMMENT语句添加注释到一个表或列中注释能够通过数据字典视图查看:ALL_COL_COMMENTSUSER_COL_COMMENTSALL_TA

8、B_COMMENTSUSER_TAB_COMMENTS,COMMENT ON TABLE employeesIS Employee Information;Comment created.,Oracle中约束类型,约束强制规则在表级如果有从属关系,约束防止表的删除下面的约束类型是有效的:NOT NULLUNIQUEPRIMARY KEYFOREIGN KEYCHECK,约束原则,命名一个约束,或者由Oracle 用SYS_Cn格式产生一个名字创建一个约束:在创建表的同时,或者在创建表之后在列或者表级定义一个约束在数据字典中查看约束,定义约束,定义约束,列级约束表级约束,column CONST

9、RAINT constraint_name constraint_type,column,.CONSTRAINT constraint_name constraint_type(column,.),NOTNULL约束,确保某些列不允许空值:,CREATE TABLE employees(employee_id NUMBER(6),last_name VARCHAR2(25)NOT NULL,salary NUMBER(8,2),commission_pct NUMBER(2,2),hire_date DATE CONSTRAINT emp_hire_date_nn NOT NULL,.,NOT

10、NULL约束,定义在列级:,UNIQUE约束,EMPLOYEES,UNIQUE约束,INSERT INTO,UNIQUE约束,既可以定义在表级也可以定义在列级:,CREATE TABLE employees(employee_id NUMBER(6),last_name VARCHAR2(25)NOT NULL,email VARCHAR2(25),salary NUMBER(8,2),commission_pct NUMBER(2,2),hire_date DATE NOT NULL,.CONSTRAINT emp_email_uk UNIQUE(email);,PRIMARYKEY约束,D

11、EPARTMENTS,PRIMARY KEY,CREATE TABLE departments(department_id NUMBER(4),department_name VARCHAR2(30)CONSTRAINT dept_name_nn NOT NULL,manager_id NUMBER(6),location_id NUMBER(4),CONSTRAINT dept_id_pk PRIMARY KEY(department_id);,PRIMARYKEY约束,既可以定义在表级也可以定义在列级:,FOREIGNKEY约束,DEPARTMENTS,EMPLOYEES,不允许(9 不存

12、在),FOREIGNKEY约束,既可以定义在表级也可以定义在列级:,CREATE TABLE employees(employee_id NUMBER(6),last_name VARCHAR2(25)NOT NULL,email VARCHAR2(25),salary NUMBER(8,2),commission_pct NUMBER(2,2),hire_date DATE NOT NULL,.department_id NUMBER(4),CONSTRAINT emp_dept_fk FOREIGN KEY(department_id)REFERENCES departments(depa

13、rtment_id),CONSTRAINT emp_email_uk UNIQUE(email);,FOREIGNKEY约束关键字,FOREIGN KEY:在表约束级别,定义在子表的列REFERENCES:标识表和父表中列ON DELETE CASCADE:当父表中的行被删除时,删除子表中相依赖的行ON DELETE SET NULL:转换相依赖的外键为空,CHECK约束,定义每行必须满足的条件下面的表达式不被允许:涉及到CURRVAL,NEXTVAL,LEVEL和ROWNUM伪列调用SYSDATE,UID,USER和USERENV函数涉及其它行中其它值的查询,.,salaryNUMBER(2

14、)CONSTRAINT emp_salary_min CHECK(salary 0),.,添加约束语法,用ALTER TABLE语句:添加或删除约束,但不修改它的结构启用或禁用约束用MODIFY子句添加一个NOT NULL约束,ALTER TABLE table ADD CONSTRAINT constraint type(column);,添加约束,添加一个FOREIGN KEY约束到EMPLOYEES表,指示经理必须已经是EMPLOYEES表中的,ALTER TABLE employeesADD CONSTRAINT emp_manager_fk FOREIGN KEY(manager_i

15、d)REFERENCES employees(employee_id);Table altered.,删除约束,从EMPLOYEES表中删除经理约束删除DEPARTMENTS表上的PRIMARY KEY约束,并且删除相关联的在EMPLOYEES.DEPARTMENT_ID列上的FOREIGN KEY约束,ALTER TABLE employeesDROP CONSTRAINT emp_manager_fk;Table altered.,ALTER TABLEdepartmentsDROP PRIMARY KEY CASCADE;Table altered.,禁用约束,执行ALTER TABLE

16、语句的DISABLE子句来禁用完整性约束应用CASCADE选项禁用相依赖的完整性约束,ALTER TABLEemployeesDISABLE CONSTRAINTemp_emp_id_pk CASCADE;Table altered.,启用约束,用ENABLE字句启用一个在表中定义的当前禁用的完整性约束如果启用一个UNIQUE键或PRIMARY KEY约束一个UNIQUE或PRIMARY KEY索引被自动创建,ALTER TABLEemployeesENABLE CONSTRAINTemp_emp_id_pk;Table altered.,SELECTconstraint_name,const

17、raint_type,search_conditionFROMuser_constraintsWHEREtable_name=EMPLOYEES;,查看约束,查询USER_CONSTRAINTS表来查看所有约束定义和命名,在约束类型中,C代表CHECK,P代表PRIMARY KEY,R代表FOREIGN KEY,U代表UNIQUE,NOT NULL约束实际上是一个CHECK约束。,本章小结,创建表:建表语法,用子查询基于另一个表创建表。修改表:修改表结构;修改列宽,改变列数据类型和添加列。删除表:删除行和表结构。重命名:重命名一个表、视图、序列或同义词。截断:从表中删除所有行,并且释放该表已使

18、用的存储空间。约束类型约束相关数据字典,练习,1.创建表date_test,包含列d,类型为date型。试向date_test表中插入两条记录,一条当前系统日期记录,一条记录为“1998-08-18”。2.创建与departments表相同表结构的表dtest,将departments表中部门编号在200之前的信息插入该表。3.创建与employees表结果相同的表empl,并将其部门编号为前50号的部门的信息复制到empl表。4.试创建student表,要包含以下信息:学生编号(sno):字符型(定长)4位主键学生姓名(sname):字符型(变长)8位唯一学生年龄(sage):数值型非空,5.试创建sc表(成绩表),要包含以下信息:学生编号(sno):字符型(定长)4位主键外键课程编号(cno):字符型(变长)8位主键选课成绩(grade):数值型6.试为student增加一列学生性别默认值“女”。7.试修改学生姓名列数据类型为定长字符型10位。8.试修改学生年龄列允许为空。9.试为选课成绩列添加校验(check)约束为1-100;10.试删除sc表中的外键约束。,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备2025010119号-1

经营许可证:宁B2-20210002

宁公网安备 64010402000987号