还剩17页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
数据库知识要点总结第一章关系数据模型数据模型静态的三要素-关系数据结构-基本概念包括1属性Attribute实体所具有的某一特征如学生的特征是学号、姓名、--域Domain属性对应的一组具有相同数据类型的值的集合每个属性有一个域关系模型限定域必须原子性INF2键key1候选键candidate key关系的某一属性或属性组的值唯一标识一个元组,而其任何真子集无此性质候选键的诸属性称为主属性,不包含在任何候选键中的属性称为非主属性2主键primary key一个关系至少有-一个侯选键,可以有几个侯选键一般从侯选键中选择一个作为主键primary key,其他的称为侯补键alternate key每个主键的值是不能相同的,3夕卜键foreign key如关系中的属性或属性组不是本关系的主键,而引用其他关系或本关系的主键,则称为本关系的外键3关系Relation I关系定义在事物的所有属性域上的多元关系,一个关系就是一张二维表2关系模式关系的描述称为关系模式,它可以形式化的表示为R U,D,DOM,FR为关系名U为疝成该关系的属性名集合D为属性组U中属性所来自的域DOM为属性向域的映像集合F为属性间数据的依赖关系集合关系模式通常简记为R U或RAl,A2,A3,……,An关系的三种基本类型基本表是实际存在的表,它是实际存储数据的逻辑表示查询表是查询结果对应的表视图表是由基本表或其他视图导出的表,是虚表,不对应实际存储内容二关系操作一两种关系操作1查询Query查询可以分为选择SELECT,投影Project,连接Join,^Intersection,并Union,差Except,除Divide,笛卡尔乘积其中选择,投影,并,差,笛卡尔乘积是5种基本操作,其他的操作可用这些基本操作定义和导出2插入Insert,删除Delete,修改Update二关系操作的特点集合式的操作方式,即操作的对象和结果都是集合3)在SQL语句中,命令不区分大小写,但字符串区分大小写WHERE子句中的关系运算符比较操作符逻辑操作符ANDOR NO其他操作符INBETWEENANDIS NULL和IS NOT NULLLIKEEXISTS例如1)IN查询匕001s003,,s006和)08四学生的信息SELECT*FROM StudentWHEREs#IN CsOOl,;sOO3,/sOO6\,sOO8,)2)IS[NOT]NULL查询缺少年龄数据的学生SELECT*FROM StudentWHERE age IS NULLLIKE查询姓名的第一个字母为的学生SELECT*FROM StudentWHEREsnameLIKE R%%:任意长度的字符串_单个字符(一个汉字占两个字节)注意LIKE只能用于字符串的匹配,不能用于其他类型查询姓名的第一个字母为,W并且倒数第二个字母为,SWJ学生SELECT*FROM StudentWHEREsnameLIKE R%S_多个比较式可用NOT、AND和OR连接SELECT*FROM StudentWHEREageISNULLand snameLIKE R%3)若要查询通配符可以用转义字符escapecharacter通常character用\
(2)去除重复记录(DISTINCT)查询学生的姓名SELECT Distinctsname FROM StudentDISTINCTt只对记录有效,不针对某个特定列SELECT Distinctsname,ageFROM Student
(3)排序查询(ORDERLY)注I)order by只能对最终查询结果进行排序,也就是说其只能放在查询语句的最后一条2)可以使用列的别名,列的位置进行排序3)在大多数情况下,指定的排序列(orderby列名)都是选择列(select列名),但排序列也可以不是选择列但如果在seleci语句中使用了distinct关键字,则排序列必须是选择列了查询所有学生信息并将结果按年龄升序排列SELECT*FROM StudentORDERBy age将结果按年龄升序排列,按姓名降序排列SELECT*FROM StudentORDERBy age ASC,snameDESCASC表示升序,DESC表示降序4聚集函数注i聚集函数和groupby子句联合使用,表示对每个组进行统计,否则将所有数据行当成一个组进行统计2聚集函数只能出现在选择列表、orderby子句、having子句中,而不能出现在where和groupby子句中3除了couni*外,其他聚集函数都会忽略null行4聚集函数中可以指定all和distinct选项其中all是默认选项,表示统计所有的行包括重复行,而distinct只统计不同的行count distinctsalFuctionName[DISTINCT|ALL]歹U名COUNT列名对一列中的值计数COUNT*计算记录个数SUM列名求一列值的总和数值AVG列名求一列值的平均值MIN列名求一列值的最小值MAX列名求一列值的最大值例子求学生的总人数SELECT coun*FROM student求选修了课程的学生人数SELECT COUNTDISTINCTs#FROM SC求学生的平均年龄SELECT avgageas average_age FROM student5分组查询GROUP%Y1基本格式group by列名1,列名2having条件ORDER by列名查询男生和女生的平均年龄SELECT sex,AVGage asAverage_ageFROM StudentGroup By sex注意除聚集函数外的属性必须全部出现在GroupBy子句中2返回特定的分组结果HAVE1NG查询不同年龄的学生人数,并返回人数在5人以上的结果SELECT age,COUNT*as studentsFROM StudentGroup ByageHaving COUNT*5Having子句中必须聚集函数的比较式,而且聚集函数的比较式也只能通过Having子句给出Having中的聚集函数可与SELECT中的不同查询人数在60以上的各个班级的学生平均年龄SELECT class,AVGage FROM StudentGroupByclassHaving COUNTS606使用rollup和cube限定词Rollup用于生成横向统计结果SQL select deptno,job,avgsal,maxsalfrom emp2group byrollupdeptnojob;DEPTNOJOB AVGSALMAXSAL1CLERK13X130010MANAGER2450245010PRESIDENT
50005000102916.66667500020CLERK950110020ANALYST300030002MANAGER2975297522175300030CLERK95095030MANAGER2850285030SALESMAN
14001600301566.
6666728502073.214295000Cube用于生成纵向统计结果SQL selectdeptno,job,avgsal,maxsalfrom emp2group bycubedeptnojob;DEPTNOJOB AVGSALMAXSAL
2073.21429500CLERK
1037.51300ANALYST30003000MANAGER
2758.333332975SALESMAN14001600PRESIDENT
500050001296.666675X01CLERK13X13001MANAGER2450245010PRESIDENT50005000202175300020CLERK950110020ANALYST300030002MANAGER
2975297531566.66667285030CLERK95095030MANAGER2850285030SALESMAN14001600
(二)连接查询一个查询同时涉及两个以上的表,则称之为连接查询表(蜂外键,是外键)表SC sc#Studentc#S#Age S#Score01Sa2001C180022101C285Sb03sc2102C189表CourseSELECT<表名.列名>[,〈表名.列名…FROM〈表名>[,〈表名习…[WHERE<查询表达式习1等值连接和非等值连接注在连接查询中应在列前加上表作为前缀,但如果列名在不同的表中不同,则可以不加表名限制,否则必须加当指定表的别名时,别名应跟在表名后面例如SQL>selectd.deptno,d.dname,e.ename,e.sal2from deptd,empe3where d.deptno=e.deptno4and d.deptno=20;1)等值连接查询学生的学号,姓名和所选课程号SELECT students#,studcnt.sname,sc.c#FROM student,scWHEREstudent.s#=sc.s#联接条件2)非等值连接SELECT SC.S#,Course.creditFROM SC,CourseWHERE SC.C#UN Course.C#2自然连接若在等值连接中把目标列中重复的属性列去掉则为自然连接3自身连接给一个表定义两个或多个不同的别名,就可以像使用这两个别名进行连接查询SELECT FIRST.Cno,SECOND.CpnoFROM CourseFIRST,Course SECONDWHEREFIRST.Cpno=SECOND.Cno4外连接查询外连接分为左外连接和右外连接左外连接列出左边关系中所有的元组右外连接列出右边关系中所有的元组SELECT<表名.列名>[,〈表名.列名习…FROM〈表名〉LEFTIRIGHT OUTJOIN[USING]<表名〉ON(连接条件)USING去掉重更行5复合条件查询WHERE子句中可以有多个连接条件,称为复合条件连接
(三)嵌套查询在SQL语言中,一个SELECT-FROM-WHERE语句称为一个查询块将一个查询块嵌套在另一个查询块的WHERE子句或HAVING短语的条件中的查询称为嵌套查询s#c#S#SnMie AgeScore01Sa2001C18002孰2101C28503sc2102C189表Coursec#Cjname creditC1Ca3C24GkC3Cc
3.5表(是外键,是外键)StudentsSC s#c#I无关子查询父查询与子杳询相互独立,子查询语句不依赖父查询中返回的任何记录,可以独立执行查询没有选修课程的所有学生的学号和姓名SELECT s#,snameFROM studentWHEREs#NOT IN(SELECT distincts#FROM sc)子查询返回选修了课程的学生学号集合,它与外层的查询无依赖关系,可以单独执行无关子查询一般与IN一起使用,用于返网一个值列表2相关子查询相关子查询的结果依赖于父查询的返回值食询选修了课程的学生学号和姓名SELECT s#,snameFROM studentWHEREEXISTS(SELECT*FROM scWHEREsc.s#=student.s#)相关子查询不可单独执行,依赖于外层查询EXISTS(子查询)当子查询返回结果非空时为真,否则为假执行分析对于student的每一行,根据该行的s#去sc中皆找有无匹配记录3连接视图子查询出现在FROM子句中作为表使用查询只选修了1门或2门课程的学生学号、姓名和课程数SELECT s#,count_c#FROM(SELECT s.s#as s#,count(sc.s#)as count_c#FROM students,scWHEREs.s#=sc.s#Group bys.s#SC2,studentWHERE sc
2.s#=student.s#and count_c#=l ORcount_c#=2联机视图可以和其它表一样使用四查询结果的连接Union和UnionAllMinusIntersectIUnion和Union All查询课程平均成绩在90分以上或者年龄小于20的学生学号SELECT s#FROM studentWHERE age20UNIONSELECT s#FROM SELECT s#,AVGscorcFROM SCgroup bys#having avgscore90SC2UNION操作自动去除重复记录UNION All操作不去除重复记录2Minus查询未选修课程的学生学号SELECT s#FROM StudentMinusSELECTdistincts#FROM SC3Intersect返回两个查询结果的交集查询课程平均成绩在90分以上并且年龄小于20的学生学号SELECT s#FROMstudentWHEREage20IntersectSELECT s#FROM SELECT s#.AVGscoreFROM SCgroup bys#having avgscore90SC2五授权(-)创建数据库模式的权限CREATE USER(用户名〉IWITH JIDBA|RESOURCE|CONNECT]1对数据库模式的授权由DBA在创建用户时实现2新创建的用户有三种权限拥有的权限可否执行的操作CREATE USERCREATE SCHEMACREATETABLE登录数据库执行查询和操作DBA可以可以可以可以RESOURCE不可以不可以可以可以CONNECT不可以不可以不可以可以但必须拥有相应权限
(二)授权和回收关系数据库系统中的存取权限对象操作类型(权限)对象类型数据库模式CREATE SCHEMA基本表CREATE TABEL,ALTER TEBLE模式视图CREATE VIEW索引CREATE INDEX数据基本表和视图SELECT,INSERT,UPDATE,DELETE,REFERENCES,ALLPRIVILEGES数据属性列SELECT,INSERT,UPDATE,DELETE,REFERENCES,ALLPRIVILEGES1授权GRANT v权限>[,<权限习…ON<对象类型〉〈对象名〉[,<对象名〉<对象名习…TOv用户>用户>](WITH GRANTOPTION];例如GRANT SELECTONTABLEStudentTOUIWITH GRANTOPTION
(1)WITHGRANTOPTION表示获得某种权限后的用户,还可以把这种权限授予其他用户如果没有此句,则不能传播该权限⑵用户可以是PUBLIC即全体用户2回收REVOKE<权限》[,〈权限刊…ON〈对象类型〉v对象名>[,<对象名>v对象名习…FROM〈用户>[,〈用户习…[CASCADE|RESTRICT];例如REVOKE SELECTONTABLE StudentFROMUICASCADE;
(三)数据库角色1创建角色CREATE ROLE(角色名〉;例如CREATE ROLER1数据库角色是被命名的一组与数据库操作相关的权限,角色是权限集合2给角色授权GRANT v权限>[,<权限习…ON〈对象类型〉〈对象名〉[,〈对象名〉(对象名…TO v角色》[,<角色>];例如GRANT SELECT,UPDATE,INSERTONTABLE StudentTORI;3将一个角色授予其他角色或用户GRANT〈角色1>[,角色2习…TOv角色》[,v用户习[WITH ADMINOPTION1WITH ADMINOPTION表示获得某权限的角色或用户还可以把这种权限再授予其他角色或用户例如GRANT R1TOwang;4角色权限回收REVOKE<权限》[,〈权限习…ONv对象类型〉〈对象名〉[,v对象名x对象名习…FROM<角色>[,<角色>];例如REVOKE RIFROMwang;六完整性约束命名子句完整性约束条件可以在CREATETABLE语句中定义SQL还在CREATETABLE语句中提供了完整性约束命名子句CONSTRAINT,用来对完整性约束条件命名I创建完整性约束CONSTRAINTV完整性约束条件名习PRIMARYKEY短语[FOREIGNKEY短语|CHECK短语]例如CREATETEBLE StudentSnoNUMERIC6CONSTRAINT ClCHECKSno BETWEEN90000AND999999SnameCHAR20CONSTRAINT C2NOT NULL,Sage NUMERIC⑶CONSTRAINT C3CHECKSage<30,Ssex CHAR2CONSTRAINT C4CHECKSsex INC男二,女,,CONSTRAINT StudentKeyPRIMARY KEYSno;2修改完整性约束例如ALTER TABLEStudentDROPCONSTRAINT C4;ALTER TABLEStudentADDCONSTRAINT C5CHECKSage<40;七触发器CREATE TRIGGERv触发器名〉{BEFORE|AFTER}<触发事件>ON〈表名>FOR EACH{ROW|ST/VTEMENT[WHENv触发条件可〈触发动作体》第三章关系数据库理论-关系模式回顾一个关系模式应当是一个五元组R U,D,DOM,FR为关系名U为组成该关系的属性名集合D为属性组U中属性所来自的域DOM为属性向域的映像集合F为属性间数据的依赖关系集合由于D和DOM对模式设计关系不大,因此我们在本章中把关系模式看作是一个三元组:RU,F当且仅当U上的一个关系r满足F时,称r为关系模式R〈U,F的一个关系二数据依赖数据依赖是一个关系内部属性与属性之间的一种约束关系这种关系是通过学习属性间值的相等与否体现出来的数据间相关联系最重要的数据依赖其中最重要的是函数依赖和多值依赖三规范化一函数依赖理论1函数依赖定义
10.1设RU是属性集U上的关系模式X,Y是U的子集若对于RU的任意一个可能的关系r,r中不可能存在两个元组在X上的属性值相等,而在Y上的属性值不等,则称X函数确定Y或Y函数依赖于X,记作X-Y下面介绍一些术语和记号X-Y,但YqX,则称X-Y为壬凡的函数依赖否则,称X-Y为韭壬凡的函数依赖今后,若不特别声明,我们总是讨论非平凡的函数依赖若X-Y,则称X为决定因素Determinant若X-*Y,Y-X,则记作X-~Y若Y不函数依赖于X,则记作XY2完全函数依赖和部分函数依赖定义102在RU中,如果XfY,并且对于X的任何一个真子集都有X,Y,则称Y对X完全函数依赖,记作:XY o若X-Y,但Y不完全函数依赖于-X,则称Y对X部分函数依赖,记作XYo3传递函数依赖定义
10.3在RU中,如果X~Y,YX,YX,Y~Z,则称Z对X传递函数依赖加上条件YX,是因为如果Y-X,则X--Y,实际上是,是直接函数依赖而不是传递函数依赖4多值依赖定义
10.9设RU是属性集U上的一个关系模式X,Y,Z是的U的子集,并且Z=U-X-Y关系模式RU中多值依赖X~~Y成立,当且仅当对RU的任一关系r,给定的一对x,z值有一组Y的值,这组值仅仅决定于x值而与z值无关多值依赖的例子例学校中某一门课程由多个教员讲授,他们使用相同的一套参考书每个教员可以讲授多门课程,每种参考书可以供多门课程使用我们可以用一个非规范化的关系来表示教员T,课程C和参考书B之间的关系课程C教员T参考书B物理李勇普通物理学王军光学原理物理习题集数学李勇数学分析张平微分方程高等代数把这张表变成一张规范化的二维表,就成为:Teaching课程C教员T参考书B理普通物理学光学原理物理习题集普通物理学光学原理物理习题集数学分析微分方程高理等代数数学分析微分方程高等代数理李勇理李勇例如,在关系模式TEACHING中,对于一个(物理,光学原理)有一组丁值{李勇,王军},理李勇这组值仅仅决定于课程C上的值(物理)也就是说对于另一个(物理,普通物理学)它对理王军应的一组T值仍是{李勇,王军},尽管这时参考书B的值已经改变了因此T多值依赖于学王军学王军C,即C-To四范式学李勇(-)范式学李勇关系数据库中的关系模式要满足一定的规范化要求,满足不同程度规范化要求的关系模式的学李勇学张平类称为不同的迤式张平满足最低要求的关系模式称为第一范式,简称1NF在第一范式中满足进一步要求的为第二张平范式,其余以此类推R为第几范式就可以写成RGxNF按属性间依赖情况来区分,关系规范化的程度为eINF,2NF,3NF,BCNF,4NF和5NF等对于各种范式之间的关系有5NF4NFBCNF3NF2NF1NF成立
(二)规范化一个低一级范式的关系模式,通过模式分解可以转换为若干个高一级范式的关系模式的集合,这•过程称为规范化
(三)范式定义11NF作为一张二维表,对它有一个最起码的要求,每一个分量必须是不可公的数据项,满足了这个条件的关系模式就属于第一范式22NF若RINF,且每个非空主属性完全依赖广码,则R2NF33NF关系模式RU,F中若不存在这样的码X,属性组丫及非主属性Z(ZY)使得X-Y,Y-Z成立,YX,则称R〈U,F3NF(不存在传递依赖)4BCNF关系模式RU,F£1NF,若对R中任何非平凡的函数依赖X-Y(YX),X必含有键,则称RBCNF54NF关系模式RU,F£1NF,如果对于R的每个非平凡多值依赖X--Y(YX),X都含有码,则R〈U,F4NF
(四)关于范式的说明I若一个关系模式R不是3NF,就会产生插入异常、删除异常、更新异常和数据冗余度等问题所以一般情况下,关系模式应至少达到3NF
(三)关系数据语言可以分为三类1关系代数语言2关系演算语言(元组关系演算和域关系演算)3具有关系代数和关系演算双重特点的语言(SQL语言)三关系完整性约束关系数次库前数据必须遵循的约束实体完整性(EntityIntegrity)参照完整性(Referential Integrity)用户自定义完整性(User-Defined Integrity)实体完整性和参照完整性是关系模型必须满足的完整性约束条件,被称为关系的两个不变性
(一)实体完整性实体完整性规则关系模式R的主属性值不可为空指所有主属性均不可取空值,不仅仅是主键不可为空INFI
(二)参照完整性2NF1夕卜键(Foreign Key)I定义设F是基本关系R的一个或一组属性,但不是关系R的码,3NFKS是基本关系S的I主码如果F与KS相对应,则称F是R的外码(Foreign Key)R称为参照关系(Referential Relation)t S称为被参照关系BCNF(Referenced Relation)I2参照完整性规则若属性(或属性组)F是基本关系R的外码,它与基本关系S的主码KS相对应(基本关系到R和S不一定是不同关系),则对于R中每个元组在F上的值必须为
(1)等于被参照关系S中所参照的候选键的某个值
(2)空值
(三)用户自定义完整性针对某一具体数据的约束条件,反映某一具体应用所涉及的数据必须满足的特殊语义由应用环境决定四关系代数关系代数按运算符的不同可分为传统关系运算和专门关系运算
(一)传统关系运算(交,并,差,笛卡尔乘积)1U(并)RlUR2=b2db3b消除非主属性对码的部分依赖消除非主属性对码的传递函数依赖消除主属性对码的部分和传递函数依赖消除非平凡且非函数依赖的多值依赖d3ba3ce5fg662n(交AND)RinR2=b2dc2d3—(差)RI—R2;b3bd3b4X(笛卡尔乘积)R1XS=b2d2db2d3bb3b2db3b3bc2d2dc2d3bd3b2dd3b3b
(二)专门关系运算1选择(SELECT)(选择符合条件的元组)8〈选择条件〉(V关系名〉)如5性别:男(STUDENT)表的水平划分2投影(Project)(选择符合条件的属性)口属性表(v关系名〉)如口学号,姓名(STUDENT)表的垂直划分3连接操作(Join)笛卡尔乘积RX S={t,g|tGR ANDgGS)
(1)连接分为等值连接和自然连接A(I)B1)等值连接(巾为=)连接操作RIXIS其中A和B分别为R和S上度数相等且具有可比性的属性组RI.AlRI.A2Rl.A3S.A2S.A3如上例RIIXI S=b2d2dRI.A2=S.A2b3b3bc2d2dd3b3b2)自然连接(只有1X1)一般连接是从行的角度出发的,但自然连接还要取消重复的列,是从行和列的角度进行运算S.A2S.A3R
1.A1R
1.A2R
1.A3如RIIXI S=b2dB3b4除运算(彳)RI.Al如Rl+S=b在RI上b印象集合是{(2,d),(3,d)}S在(Al,A2)上的投影为{(2,d),(3,d))第二章关系数据库的标准语言SQL一SQL动词表SQL功能动词数据查询SELECT数据定义CREATE,DROP,ALTER数据操纵INSERT,UPDATE,DELETE数据控制GRANT,REVOKE二数据定义操作对象操作方式创建删除修改模式CREATE SCHEMADROP SCHEMA表CRE/VTETABLE DROPTABLEALTER TABLE视图CREATE VIEWDROP VIEW索引CREATE INDEXDROP INDEX注意SQL通常不提供修改模式定义,修改视图定义,修改索引定义的操作
(一)模式的定义和删除1模式的定义CREATE SCHEMA〈模式名〉AUTORIZATIONv用户〉例如CREATE SCHEMAs-t”AUTORIZATION wang;
(1)要创建模式,调用该命令的用户必须具有DBA权限,或者获得了DBA授予的CREATESCHEMA权限
(2)如果没指定〈模式名〉那么〈模式名〉隐含为〈用户名〉
(3)定义模式,实际上是定义了一个命名空间,在这个空间中可以进一步定义该模式包含的数据库对象,例如基本表,视图,索引2模式的删除DROP SCHEMA<模式名xCASCADE|RESTRICTS(两者必选其一)例如DROP SCHEMAs-t”CASCADE(D CASCADE(级联)表示在删除模式的同时把该模式中所有的数据库对象全部一起删除
(2)RESTRICT(限制)表示在删除该模式中已经定义了下属数据库对象(表,视图索引),则拒绝该删除语句(-)表的定义,删除和修改1表的定义CREATETEBLA〈表名〉(〈列名〉〈数据类型,[列级完整性约束][,v列名〉〈数据类型》[列级完整性约束]][,〈表级完整性约束>])列定义的完整格式〈列名〉〈列类型〉[DEFAULT v默认值>][|NOT]NULL][v列约束>]CREATE TEBLAv表名〉AS〈SELECT杳询〉若要定义模式式下的表CREATE TABLEV模式名>.<表名〉
(1)数据类型ANSI/ISO Oracle字符型Charn CharnCharacternCharacterVaryingn Varchar2nCharVaryingn数值型Numeric NumberDecimalIntegerIntFloatDoubleReal日期型Date DateTime2完整性约束主键约束Primary Key实体完整性外键约束Foreign Key参照完整性检查约束Check用户自定义完整性唯一键约束Unique非空约束Null|Not Null默认值Defaud3例子CREATE TABLEstudentSno CHAR8PRIMARY KEY,SnamcCHAR20UNIQUE,Ssex CHAR2DEFALULT男,Sage SMALLINTCHECKSage>0SdeptCHAR20CREATE TABLECourseCno CHAR4PRIMARY KEY,CnameCHAR40,CpnoCHAR4REFERENCES CourseCno,Ccredit SMALLINT,CHECKCcredit>0CREATE TABLEscSno CHAR9,CnoCHAR4,Grade SMALLINT,PRIMARYKEY Sno,Cno,//注意一定要有括号FOREIGN KEYSnoREFERENCES CourseCno,//sno一定要有括号4说明1列约束在每个列后定义,可以有多个约束子句,不能定义多个列上的约束2表约束在全部列定义完成后定义,可以有多个约束子句,多个列上的约束必须使用表约束,单列上的约束可以用列约束,也可用表约束2表的删除DROP TABLE〈表名>[CASCADE|RESTRICT]1CASCADE级联删除该表没有任何限制,删除表的同时,相关的依赖对象如视图也一起删除2RESTRICT限制删除该表是有限制条件的欲删除的表不能被其他表的约束所引用如CHECK.FOREIGNKEY等约束,不能有视图,不能有触发渊trigger,不能存储过程或函数3缺省情况下是RESTRICT3表的修改ALTER TABLEv表名》[ADDv列名x数据类型》[完整性约束]]|[MODIFY<列名><数据类型〉〔完整性约束]]|[DROPCOLUMN〈歹ij名习|[ADD〈表约束可|[DROPCONSTRAINT v约束名>]例如1ALTER TABLEStudentADDDept Varchar210UNIQUE2AlterTabic StudentDROPCOLUMNage3AILTERTABLE StudentMODIFYagenumber3NOTNULL4ALTER TABLEStudentADDCONSTRAINT PK_StudentPRIMARY KEYS#5ALTER TABLESCDROPCONSTRAINT FK_SC三视图的定义和删除1视图的定义CREATE VIEWv视图名〉(列名1,列名2,…)〃列名一定要放在括号里AS〈查询>[WITH CHECKOPTION|W1TH READONLY]例如CREATE VIEWcs_view(sno,name,age)ASSELECT s#,snamc,ageFROM studentWHEREDept=计算机系’WITH READONLY;
(1)WITHCHECKOPTION表示对视图进行UPTATE,INSERT,DELETE操作时要保证更新,插入,删除的行世足视图定义中的谓词条件(即子杳询中的条件表达式)WITH READONLY表示视图是只读的
(2)视图的属性列名只能是全部缺省或全部指定,没有别的选择但在下列两种情况下必须明确指定组成视图的列名1)某个目标列不是单纯的属性名,而是聚集函数或列表达式2)多表连接时选出几个同名列作为视图的字段
(3)了查询可以是任意的SELECT子句,但通常不允许含有OREERBY子句各DISDINCT短语
(4)不是所有视图都是可更新的i)基于联接杳询的视图不可更新2)使用了函数的视图不可更新3)使用了分组操作的视图不可更新4)只有建立在单个表上而且没有使用函数的视图才是可更新的2视图的删除DROP VIEW〈视图名〉[CASCADE]
(四)索引的定义和删除1索引的定义CREATE[UNIQUE|CLUSTER]INDEX〈索引名〉ON〈表名>(<列名>[<次序>][,<列名次序习]…)例如CREATE UNIQUEINDEXSCnoonSC(Sno ASC,Cno DESC);
(1)UNIQUE表明此索引的每一个索引值只对应唯一的数据记录
(2)CLUSTER表示要建立的索引是聚簇索引聚簇索引是指索引项的顺序与表中的物理顺序一致的索引组织,在一个表上只能建立一个聚簇索引
(3)次序可选ASC(升序)或DESC(降序)缺省值为ASC2索引的删除DROP INDEX〈索引名〉DROP INDEXSCno;三数据更新(~)插入数据INSERT插入数据通常有两种形式,一种是插入一个元组,另一种是插入子查询结果后者可以一次插入多个元组1插入一个元组INSERTINTO〈表名>[(<属性列1>[,<属性列2>])]VALUES(<常量1>[,<常量2>])例如INSERTINTO Student(Sno.Sname,Ssex,Sdept,Sage)VALUES(2008⑸2,‘陈冬,男,IS,18);INTO语句中没有出现的属性列,新元组在这些列上将取空值或默认值在INTO子句中只指出了表名,没有指出属性名,新元组要在所有属性列上都指定值,属性列的次序与CREATETABLE中的次序相同2插入子查询结果INSERTINTO〈表名>[(<属性列1>[,<属性列2>])]子查询;例如INSERTINTO Dept_age(Sdept,Avg^age)SELECT Sdept.AVG(Sage)FROM StudentGROUPBYSdept;(-)修改数据UPDATE v表名〉5£1<列名>=<表达式>[,<列名>=<表达式>]一[WHERE v条件>];例如UPDATE StudentSETSage=22WHERESno=20()215021;
(三)删除数据DELETEFROMv表名》[WHERE〈条件>];例如DELETEFROM StudentWHERESno=20021528;DELETE语句删除的是表中的数据,而不是关于表的定义四数据查询基本数据查询的格式SELECT[ALL|DISTINCT]<目标列表达式>AS<别名>[,<标歹U表达式〉ASv别名>]...FROM〈名或视图名习,〈表名或视图名习…[WHEREv查询表达式习[GROUPBY<列名l>][HAVING(条件表达式>]][ORDERBY<列名2>][ASC|DESC];
(一)单表查询在一个表中查询数据表表(是外键,是外键)Student SCs#c#S#Age c#S#Score01Sa2001C1800221Sb01C28503sc2102C189Course表i*查询查询全部记录查询全部的学生信息SELECT*FROM Student;*表示所有列等同于SELECT s#,sname,age,sex FROM Student2使用别名(AS或空格)使用别名查询所有学生的学号和姓名SELECTs#AS学号,snameAS姓名FROMStudent如果别名包含空格,须使用双引号SELECTs#AS MStudentNumbervFROMStudent3表达式查询(三种表达式,字符串表达式,算术表达式,函数表达式)
(1)字符串表达式查询所有学生的学号、姓名和出生年份,返回两列信息,其中一列是“学号姓名”,另一列是出生年份SELECTS#||41snameAS学生,2003—age AS出生年份FROMStudent说明连接字符串II表示则多个查询列连接为一个列输出
(2)算术表达式查询学生的出生年份SELECT2003-ageAS出生年份FROMStudent;
(3)函数表达式SELECT sno,to_char(birth,mm-dd-yyyy)AS birthdayFROM StudentSELECTCount(sno)As学生人数FROMStudent4条件查询
(1)WHERE条件注I)在where子句中使用列名和表达式,但不能使用别名2)在where子句中使用数值时,既可以用单引号也可以不用单引号,使用日期值字符值时,都必须使用单引号,并且FI期值的格式必须要符合数据库中支持的日期格式,否则必须事先使用to.date函数将其转换成为数据库中支持的日期格式oracle中门期的默认格式为01-1月-82在输入查询条件时,可以用to_date(1998-0191,yyyy-mm-dd)。
个人认证
优秀文档
获得点赞 0