Les创建和管理表优质PPT.ppt
《Les创建和管理表优质PPT.ppt》由会员分享,可在线阅读,更多相关《Les创建和管理表优质PPT.ppt(41页珍藏版)》请在冰豆网上搜索。
![Les创建和管理表优质PPT.ppt](https://file1.bdocx.com/fileroot1/2022-10/7/8364382d-c995-4101-b01e-6c31792f969b/8364382d-c995-4101-b01e-6c31792f969b1.gif)
CREATETABLE的权限拥有存储空间你可以指定表名称列名称,列长度,列类型,SQLCREATETABLEdept2(deptnoNUMBER
(2),3dnameVARCHAR2(14),4locVARCHAR2(13);
Tablecreated.,SQLDESCRIBEdept,NameNull?
Type-DEPTNONUMBER
(2)DNAMEVARCHAR2(14)LOCVARCHAR2(13),确认创建的结果,创建表,引用其他用户的表,属于其他用户的表,不在当前用户的模式下使用这些表的属主名作为前缀,在插入期间可以指定默认值文字值,表达式,或者SQL函数是合法值其他列的名或者伪列是非法的默认的数据类型必须匹配列的数据类型,DEFAULT选项,.hire_dateDATEDEFAULTSYSDATE,.,CREATETABLEhire_dates(idNUMBER(8),hire_dateDATEDEFAULTSYSDATE);
Tablecreated.,用户表由用户创建和维护的一系列表的集合包含用户的信息数据字典由Oracle服务器创建和维护的一系列表的集合包含数据库的信息,Oracle数据库中的表,数据类型描述VARCHAR2(size)变长字符数据,size为最大长度CHAR(size)定长字符数据,size为最大长度NUMBER(p,s)数字类型,p为精度,s为刻度DATE日期和时间值LONG可以保存最大长度为2GB的字符数据CLOB可以保存最大长度为4GB的单字节字符数据RAWandLONGRAW存储二进制数据BLOB最大为4GB的二进制数据类型BFILE在外部文件中存储的二进制数据;
最大为4GB,数据类型,日期数据类型,几种日期数据类型,日期数据类型,TIMESTAMP是DATE数据类型的扩展存储DATE日期类型的年,月,日数据类型加上小时,分钟,和带有小数的秒可以在TIMESTAMP上选择使用和不使用时区,TIMESTAMP(fractional_seconds_precision),TIMESTAMP(fractional_seconds_precision)WITHTIMEZONE,TIMESTAMP(fractional_seconds_precision)WITHLOCALTIMEZONE,日期数据类型,INTERVALYEARTOMONTH数据类型使用年和月日期字段存储一段时间INTERVALDAYTOSECOND数据类型使用天,小时,分钟,秒存储一段时间,INTERVALYEAR(year_precision)TOMONTH,INTERVALDAY(day_precision)TOSECOND(fractional_seconds_precision),INTERVALDAYTOSECOND,INTERVALDAYTOSECOND数据类型使用天,小时,分钟,秒存储一段时间,INTERVAL45:
12:
10.222DAYTOSECOND(3)表示:
4days,5hours,12minutes,10.222seconds,INTERVAL45:
12DAYTOMINUTE表示:
4days,5hoursand12minutes.INTERVAL4005DAY(3)TOHOUR表示:
400days5hours.INTERVAL11:
10.2222222HOURTOSECOND(7)表示:
11hours,12minutes,and10.2222222seconds.,约束,约束是强加到表中的列上的规则提供了以下五种约束:
NOTNULLUNIQUEPRIMARYKEYFOREIGNKEYCHECK,约束规则,创建约束时,可以对约束进行命名,也可以使用SYS_Cn的格式自定义命名可以在以下时候创建约束:
在表创建时同时创建约束在表创建以后创建约束在表或者列级别创建约束在数据字典中查看约束,定义约束,语法:
列级别约束:
表级别约束:
CREATETABLEschema.table(columndatatypeDEFAULTexprcolumn_constraint,.table_constraint,.);
column,.CONSTRAINTconstraint_nameconstraint_type(column,.),columnCONSTRAINTconstraint_nameconstraint_type,定义约束,列级别约束:
表级别约束:
CREATETABLEemployees(employee_idNUMBER(6)CONSTRAINTemp_emp_id_pkPRIMARYKEY,first_nameVARCHAR2(20),.);
CREATETABLEemployees(employee_idNUMBER(6),first_nameVARCHAR2(20),.job_idVARCHAR2(10)NOTNULL,CONSTRAINTemp_emp_id_pkPRIMARYKEY(EMPLOYEE_ID);
1,2,NOTNULL约束,非空约束的列不能有空值:
NOTNULLconstraint(Norowcancontainanullvalueforthiscolumn.),AbsenceofNOTNULLconstraint(Anyrowcancontainanullvalueforthiscolumn.),NOTNULLconstraint,UNIQUE约束,EMPLOYEES,UNIQUE约束,INSERTINTO,不允许,已经存在,允许,UNIQUE约束,定义unique约束或者在表级别或者在列级别:
CREATETABLEemployees(employee_idNUMBER(6),last_nameVARCHAR2(25)NOTNULL,emailVARCHAR2(25),salaryNUMBER(8,2),commission_pctNUMBER(2,2),hire_dateDATENOTNULL,.CONSTRAINTemp_email_ukUNIQUE(email);
PRIMARYKEY约束,DEPARTMENTS,PRIMARYKEY,INSERTINTO,不允许空值,不允许重复值,FOREIGNKEY约束,DEPARTMENTS,EMPLOYEES,FOREIGNKEY,INSERTINTO,不允许9,允许,PRIMARYKEY,FOREIGNKEY约束,在表级或者列级定义:
CREATETABLEemployees(employee_idNUMBER(6),last_nameVARCHAR2(25)NOTNULL,emailVARCHAR2(25),salaryNUMBER(8,2),commission_pctNUMBER(2,2),hire_dateDATENOTNULL,.department_idNUMBER(4),CONSTRAINTemp_dept_fkFOREIGNKEY(department_id)REFERENCESdepartments(department_id),CONSTRAINTemp_email_ukUNIQUE(email);
FOREIGNKEY,FOREIGNKEY:
定义在子表的列上REFERENCES:
引用父表的主键或者唯一键ONDELETECASCADE:
删除父表中的行同时也删除子表中的行ONDELETESETNULL:
将外键设为空值,CHECK约束,每行必须满足定义的条件以下的表达式不允许:
CURRVAL,NEXTVAL,LEVEL和ROWNUM伪列调用以下函数:
SYSDATE,UID,USER,USERENV,.,salaryNUMBER
(2)CONSTRAINTemp_salary_minCHECK(salary0),.,CREATETABLE:
示例,CREATETABLEemployees(employee_idNUMBER(6)CONSTRAINTemp_employee_idPRIMARYKEY,first_nameVARCHAR2(20),last_nameVARCHAR2(25)CONSTRAINTemp_last_name_nnNOTNULL,emailVARCHAR2(25)CONSTRAINTemp_email_nnNOTNULLCONSTRAINTemp_email_ukUNIQUE,phone_numberVARCHAR2(20),hire_dateDATECONSTRAINTemp_hire_date_nnNOTNULL,job_idVARCHAR2(10)CONSTRAINTemp_job_nnNOTNULL,salaryNUMBER(8,2)CONSTRAINTemp_salary_ckCHECK(salary0),commission_pctNUMBER(2,2),manager_idNUMBER(6),department_idNUMBER(4)CONSTRAINTemp_dept_fkREFERENCESdepartments(department_id);
UPDATEemployees*ERRORatline1:
ORA-02291:
integrityconstraint(HR.EMP_DEPT_FK)violated-parentkeynotfound,UPDATEemployeesSETdepartment_id=55WHEREdepartment_id=110;
违反约束,55部门不存在,违反约束,不能删除外键所引用的值,DELETEFROMdepartmentsWHEREdepartment_id=60;
DELETEFROMdepartments*ERRORatline1:
ORA-02292:
integrityconstraint(HR.EMP_DEPT_FK)violated-childrecordfound,使用子查询创建表,通过使用CREATETABLE语句和ASSUBQUERY子句创建表同时插入数据创建表的列的个数要与子查询中的列的个数匹配,CREATETABLEtable(column,column.)ASsubquery;
CREATETABLEdept80ASSELECTemployee_id,last_name,salary*12ANNSAL,hire_dateFROMemployeesWHEREdepartment_id=80;
Table