五种约束条件概念和使用语法_第1页
五种约束条件概念和使用语法_第2页
五种约束条件概念和使用语法_第3页
五种约束条件概念和使用语法_第4页
五种约束条件概念和使用语法_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、练:约束条件 主键(Primarykey,简称PK 非空约束(notnull,简称NN 唯一约束(Unique,简称UK 检查约束(Check,简称CK 外键(Foreignkey,简称FK 2:练习2:视图 3:练习3:索引 4:练习4:序列 1、练:约束条件主键Primarykey,PK【案1】主键约束演示(定义在列级,约束名称由系统命名createtablecreatetabledeptnonumber(2)primarykey,dnamevarchar2(20),locationSQL>insertintodept_ning1values(10,'developer','beijing')SQL>insertintodept_ning1values10market'shenzhen再执行一--如果揑入重复编码,会提示错误--其中,SYS_C003994是数据库自定义的--如果约束条件没有显式命名,数据库默认给约束条件命名【案2】主键约束演示(定义在表级SQL>SQL>createtabledeptnonumber(2),dnamevarchar2(20),locationvarchar2(40),constraintdept_ning2_deptno_pkprimarykey--表级约束条建议约束命名规则:表名_列名_约束条件的类--当揑入重复编码时,会提示具体的约束条件名字错误,方便定位出错SQL>insertintodept_ning2values(10,'developer','beijing')--再执行一遍SQL>insertintodept_ning2values(10,'market','shenzhen');非空约束notnull,NNSQL>createtableidnumber(4)primarykey,namevarchar2(10)notnull,agenumber(2)SQL>insertintostudent_ningvalues(1,'zhangwei',20);SQL>insertintostudent_ningvalues(2,'zhangwei',SQL>insertintostudent_ningvalues(3,null,--报错:提name列丌能为--insertintostudent_ning(id,age)values(3,SQL>droptablestudent_ning除表SQL>createtablestudent_ning(idnumber(4)primarynamevarchar2(10)constraintstudent_name_nnnotnull,agenumber(2)唯一约束UniqueUK【案5】唯一约束演示(列级约束条件SQL>SQL>createtableidnumber(4)primarykey,varchar2(30)unique,agenumber(2)SQL>insertintovalues(1,'amy',',SQL>insertintovalues(2,'rory',',--会出错误:ORA-00001:唯一约束条件【案6】唯一约束演示(表级约束条件SQL>SQL>createtableidnamevarchar2(10)notnull,ageconstraintstudent_ning2_id_pkprimarykey(id),constraintstudent_ning2_ _ukunique( --主键约束建立在表--唯一约束建立在表SQL>insertintostudent_ning2 '=SQL>updatestudent_ning2setwhereid=2;--丌管是insertupdateSQL>insertintostudent_ning2values(2,'rory',null,--unique约束只要求丌能重复,可以为检查约束Check,简称CKSQL>SQL>createtableidnumber(4)primarykey,namevarchar2(10)notnull,varchar2(30)agenumber(2)check(age>genderchar(1)check(genderin('FMF'代SQL>SQL>droptablestudent_ning3;SQL>createtablestudent_ning3(idnamevarchar2(10)notnull,agegenderchar(1), constraintstudent_ning3_id_pkprimarykey(id),constraintstudent_ning3_ check(age>10),constraintstudent_ning3_gender_ckcheck(genderin('F','M','f',SQL>insertintostudent_ning3values(1,'amy',null,19,SQL>insertintostudent_ning3values(2,'rory',null,8, check约束ageSQL>insertintostudent_ning3values(3,'doctor',null,50, check约束genderin外键Foreignkey,FK【案例9】Major和Student建SQL>createtableidnumber(2)primarykey,namechar(20)SQL>insertintomajor_ningvalues(1,'computer');SQL>insertintomajor_ningvalues(2,'history');SQL>insertintomajor_ningvalues(3,'music');SQL>insertintomajor_ningvalues(4,'sing');SQL>commit;(SQL>createtablesidnamevarchar2(20)notnull,genderchar(1),constraint unique( constraintstu_n4_g_ckcheck(genderin('F','M')),constraintstu_n4_mid_fkforeignkey(majorid)referencesMajorStudentSQL>SQL>insertintostudent_ning4values(101,'amy',null,'F',SQL>insertintoValues(102,'river', ','F',,--提示错误:错误码:ORA-violated-parentkeynotfound【案11】外键约束演示2_insertSQL>SQL>insertintoValues(102,'river',--外键列可以揑入空','F',【案12】外键约束演示3_delete删除主表中的数SQL>SQL>deletefrommajor_ningwhereid=删除专业表Major中id=1--提示错误:错误码:ORA---英文提示childrecord--因为学生表(Student)中某条数据的“专业ID”和专业表(Major)中的“ 【案13】外键约束演示4_ondeletesetSQL>altertabledropconstraintSQL>altertabledropconstraintSQL>>altertablestudent_ning4addconstraintstu_n4_mid_fkforeignkey(majorid)referencesmajor_ning(id)ondeletesetSQL>insertintostudent_ning4values(104,'rory',null,'M',1);--rory1专业的学生SQL>deletefrommajor_ningwhereid SQL>select*from--amy的专业被设置为【案14】外键约束演示4_ondeleteSQL>altertabledropconstraintSQL>>altertablestudent_ning4addconstraintstu_n4_mid_fkforeignkey(majorid)referencesmajor_ning(id)ondeleteSQL>select*fromstudent_ning4SQL>insertintvalues(104amy'nullF',3);amy3部SQL>deletefrommajor_ningwhereid3 【案15】建表同时建立约束条件演示,可以建立在表级或列级,可以给名字或由系统自SQL>SQL>createtablestudent_ning5(idnumber(3),namechar(20)notnullchar(50)unique,majoridnumber(2),constraintstu_id_pkprimarykey(id)constraintstu_mid_fkforeignkey(majorid)references)SQL>SQL>createtablestudent_ning6(idnumber(3),genderchar(1),SQL>altertableaddconstraintstu_n6_id_pkprimarySQL>altertableaddconstraintstu_n6_mid_fkforeignkey(majorid)referencesmajor_ning(id);SQL>altertableaddconstraint _uk SQL>SQL>altertableaddconstraintstu_n6_g_ckcheck(genderin('M',建议:在建表之后创建约束条件,结构清晰,可读性好,方便操作约束条件。【案例17】Drop表&&Create新表 altertablestudentdropconstraintstu_mid_fk --删除参照表约droptablestudent --删除参照表(从表droptablemajor --删除被参照表(createtablemajor(...)createtable altertablestudentaddconstraint--创建被参照表(--创建参照表(从表 此文件可以直接在数据库sqlplus中运行,用于初始化数据环境【案例18】查询student_ning6表的约束条件名和类SQL>SQL>selectconstraint_name,constraint_typefromuser_constraintswheretable_name=2:练习2:视图【案19】创建视图,视图的定义是一个数据表的子SQL>SQL>createviewv_emp_ningselectempno,ename,jobfromwheredeptno=20SQL>descSQL>select*from--视图的好处:简化查询;隐藏数据表的【案20】创建视图,视图的定义是一个复杂查SQL>SQL>createviewv_emp_countfromemp_ninggroupbydeptnoSQL>updateemp_ningsetdeptno=10wheredeptnoisnull;SQL>select*fromv_emp_count--视图丌包含任何数据,是基表数据的投【案21】视图可以使用createorreplace来创建或覆盖,并可查询视图的定义SQL>SQL>createorreplaceviewv_emp_countsum(salary)sum_s,avg(nvl(salary,0))avg_s,max(salary)max_s,min(salary)min_sfromgroupbydeptnoSQL>selecttextfromwhereview_name='V_EMP_COUNT' setlong3:练习3:索引【案22】表的主键和唯一约束条件,会自动创建索SQL>SQL>createstudent_ning7(idconstraintstu_n7_id_pkprimarykey(id),constraintstu_n7_ _ukunique( )SQL>selectconstraint_namefromwheretable_name='STUDENT_NING7'--查询student_ning7表上的索--和主键/唯一约束条件同名,数据库自动创建的索SQL>selectindex_namefromwheretable_name='STUDENT_NING7'--凡是有约束条件的字段(id)上的查询,会使用索SQL>select*fromstudent_ning7whereid=1001SQL>select*fromstudent_ning7wherename='zhangsan'SQL>createindex【案23】如果经常在名字上做查询,名字字段没有唯一约束,这时可以创建基于名字字段的索引,索SQL>createindexononstudent_ning7(name)4:练习4:序列----产生1开始的数字值,步迚是SQL>createsequencemyseq_ning--查看序列产生的SQL>selectmyseq_ning.nextvalfrom

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论