数据库基础知识个人整理版-强烈推荐_第1页
数据库基础知识个人整理版-强烈推荐_第2页
数据库基础知识个人整理版-强烈推荐_第3页
数据库基础知识个人整理版-强烈推荐_第4页
数据库基础知识个人整理版-强烈推荐_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

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

文档简介

1、数据库知识要点总结第一章关系数据模型数据模型(静态)的三要素一关系数据结构(一)基本概念包括:1属性(Attribute):实体所具有的某一特征。(如学生的特征是学号、姓名、)域(Domain):属性对应的一组具有相同数据类型的值的集合。每个属性有一个域。(关系模型限定域必须原子性1NF)2键(key)(1)候选键(candidatekey)关系的某一属性或属性组的值唯一标识一个元组,而其任何真子集无此性质。候选键的诸属性称为主属性,不包含在任何候选键中的属性称为非主属性。(2)主键(primarykey)一个关系至少有一个侯选键,可以有几个侯选键。一般从侯选键中选择一个作为主键(primar

2、ykey),其他的称为侯补键(alternatekey)每个主键的值是不能相同的,(3)外键(foreignkey)如关系中的属性或属性组不是本关系的主键,而引用其他关系或本关系的主键,则称为本关系的外键。3关系(Relation):(1)关系:定义在事物的所有属性域上的多元关系,一个关系就是一张二维表。(2)关系模式:关系的描述称为关系模式,它可以形式化的表示为R(U,D,DOM,F)R为关系名U为组成该关系的属性名集合D为属性组U中属性所来自的域DOM为属性向域的映像集合F为属性间数据的依赖关系集合关系模式通常简记为:R(U)或R(A1,A2,A3,?,An)关系的三种基本类型基本表:是实

3、际存在的表,它是实际存储数据的逻辑表示。查询表:是查询结果对应的表。视图表:是由基本表或其他视图导出的表,是虚表,不对应实际存储内容。二关系操作(一)两种关系操作1查询(Query)查询可以分为选择(SELECT),投影(Project),连接(Join),交(Intersection),并(Union),差(Except),除(Divide),笛卡尔乘积。其中选择,投影,并,差,笛卡尔乘积是5种基本操作,其他的操作可用这些基本操作定义和导出2插入(Insert),删除(Delete),修改(Update)(二)关系操作的特点集合式的操作方式,即操作的对象和结果都是集合。(三)关系数据语言可以

4、分为三类1关系代数语言2关系演算语言(元组关系演算和域关系演算)3具有关系代数和关系演算双重特点的语言(SQL语言)三关系完整性约束关系数据库的数据必须遵循的约束实体完整性(EntityIntegrity)参照完整性(ReferentialIntegrity)用户自定义完整性(User-DefinedIntegrity)实体完整性和参照完整性是关系模型必须满足的完整性约束条件,被称为关系的两个不变性。(一)实体完整性实体完整性规则:关系模式R的主属性值不可为空指所有主属性均不可取空值,不仅仅是主键不可为空(二)参照完整性1夕卜键(ForeignKey)定义:设F是基本关系R的一个或一组属性,但

5、不是关系R的码,KS是基本关系S的主码。如果F与KS相对应,则称F是R的外码(ForeignKey)R称为参照关系(ReferentialRelation),S称为被参照关系(ReferencedRelation)2参照完整性规则若属性(或属性组)F是基本关系R的外码,它与基本关系S的主码KS相对应(基本关系到R和S不一定是不同关系),则对于R中每个元组在F上的值必须为:(1)等于被参照关系S中所参照的候选键的某个值(2)空值(三)用户自定义完整性针对某一具体数据的约束条件,反映某一具体应用所涉及的数据必须满足的特殊语义由应用环境决定四关系代数关系代数按运算符的不同可分为传统关系运算和专门关系

6、运算(?传统关系运算(交,并,邑笛卡尔乘积):关系-1一关米R2关系SA1A2A3a3cb2dc2de5fg6fA2A32d3bd3ba3ce5fg662 n(交AND)R1nR2=b2dc2d3 一(差)R1R2=b3bd3b4 X(笛卡尔乘积)R1XS=b2d2db2d3bb3b2db3b3bc2d2dc2d3bd3b2dd3b3b(二)专门关系运算1选择(SELECT)(选择符合条件的元组)5选择条件(关系名)如:S性别=男(STUDENT)表的水平划分2投影(Project)(选择符合条件的属性)n属性表(关系名)如:n学号,姓名(STUDENT)表的垂直戈1J分3连接操作(Join)

7、笛卡尔乘积RXS=t,g|t?RANDg?S(1)连接分为等值连接和自然连接连接操作:R|X|S其中A和B分别为R和S上度数相等且具有可比性的属性组A4)B1)等值连接(力为=)关系R1关系R2关系0A1A2A3a3cb2dc2de5fg6fA2A32d 13bR1.A1R1.A2R1.A3S.A2S.A3如上例R1|X|S=b2d2dR1.A2=S.A2b3b3bc2d2dd3b3b2)自然连接(只有|X|)一般连接是从行的角度出发的,但自然连接还要取消重复的列,是从行和列的角度进行运算S.A2S.A3R1.A1R1.A2R1.A3如R1|X|S=b2dB3b4除运算(+)R1.A1如R1+

8、S=b在R1上b印象集合是(2,d),(3,d)S在(A1,A2)上的投影为(2,d),(3,d)CREATE第二章关系数据库的标准语言SQLSQL动词表SQL功能动词数据查询SELECT数据定义CREATE,DROP,ALTER数据操纵INSERT,UPDATE,DELETE数据控制GRANT,REVOKE二数据定义操作对象操作方式|创建删除修改_模式CREATESCHEMADROPSCHEMA表CREATETABLEDROPTABLEALTERTABLE视图1CREATEVIEWDROPVIEW索引CREATEINDEXDROPINDEX汪忌SQL通常不提供修改模式定义,修改视图定义,修改

9、索引定义的操作(一)模式的定义和删除1模式的定义CREATESCHEMA<模式名>AUTORIZATION<用户>例如:CREATESCHEMA"s-t”AUTORIZATIONwang;(1)要创建模式,调用该命令的用户必须具有DBA权限,或者获得了DBA授予SCHEMA权限(2)如果没指定<模式名>那么<模式名>隐含为<用户名>(3)定义模式,实际上是定义了一个命名空间,在这个空间中可以进一步定义该模式包含的数据库对象,例如基本表,视图,索引。2模式的删除DROPSCHEMA<模式名><CASCADE|

10、RESTRICT(两者必选其一)例如:DROPSCHEMA"s-t”CASCADE;(1) CASCADE(级联)表示在删除模式的同时把该模式中所有的数据库对象全部一起删除。(2) RESTRICT(限制)表示在删除该模式中已经定义了下属数据库对象(表,视图索引),则拒绝该删除语句。(二)表的定义,删除和修改1表的定义CREATETEBLA<表名>(<列名><数据类型>列级完整性约束,<列名><数据类型>列级完整性约束,<表级完整性约束>)列定义的完整格式:<列名><列类型>DEFAULT

11、<默认值>NOTNULL<列约束>CREATETEBLA<表名>ASSELECT查询>若要定义模式式下的表:CREATETABLE<模式名>.<表名>(1)数据类型ANSI/ISOOracle字符型Char(n)Char(n)Character(n)CharacterVarying(n)Varchar2(n)CharVarying(n)数值型NumericNumberDecimalIntegerIntFloatDoubleReal日期型DateDateTime(2)完整性约束主键约束(PrimaryKey)实体完整性外键约束(F

12、oreignKey)参照完整性检查约束(Check)用户自定义完整性唯一键约束(Unique)非空约束(Null|NotNull)默认值(Defautl)(3)例子CREATETABLEstudent(SnoCHAR(8)PRIMARYKEY,SnameCHAR(20)UNIQUE,SsexCHAR(2)DEFALULT,男?,SageSMALLINTCHECK(Sage>0)SdeptCHAR(20)CREATETABLECourse(CnoCHAR(4)PRIMARYKEY,CnameCHAR(40),CpnoCHAR(4)REFERENCESCourse(Cno),CcreditS

13、MALLINT,CHECK(Ccredit>0)CREATETABLEsc(SnoCHAR(9),CnoCHAR(4),GradeSMALLINT,PRIMARYKEY(Sno,Cno),/注意一定要有括号FOREIGNKEY(Sno)REFERENCESCourse(Cno),/sno一定要有括号)(4)说明1 )列约束:在每个列后定义,可以有多个约束子句,不能定义多个列上的约束2)表约束:在全部列定义完成后定义,可以有多个约束子句,多个列上的约束必须使用表约束,单列上的约束可以用列约束,也可用表约束2 表的删除DROPTABLE<表名>CASCADE|RESTRICT(1

14、)CASCADE(级联)删除该表没有任何限制,删除表的同时,相关的依赖对象(如视图)也一起删除。3 2)RESTRICT(限制)删除该表是有限制条件的。欲删除的表不能被其他表的约束所引用(如CHECK,FOREIGNKEY等约束),不能有视图,不能有触发器(trigger),不能存储过程或函数。4 3)缺省情况下是RESTRICT3表的修改ALTERTABLE<表名>ADD<列名><数据类型>完整性约束|MODIFY<列名><数据类型>完整性约束|DROPCOLUMN<列名>|ADD<表约束>|DROPCONS

15、TRAINT<约束名>例如(1)ALTERTABLEStudentADDDeptVarchar2(10)UNIQUE(2)AlterTableStudentDROPCOLUMNage(3)AlLTERTABLEStudentMODIFYagenumber(3)NOTNULL( 4) ALTERTABLEStudentADDCONSTRAINTPK_StudentPRIMARYKEY(S#)( 5) ALTERTABLESCDROPCONSTRAINTFK_SC(三)视图的定义和删除91视图的定义CREATEVIEW<视图名>(列名1,列名2,?)/列名一定要放在括号里A

16、S<查询>WITHCHECKOPTION|WITHREADONLY例如:CREATEVIEWcs_view(sno,name,age)ASSELECTs#,sname,ageFROMstudentWHEREDept=,计算机系,WITHREADONLY;(1) WITHCHECKOPTION表示对视图进行UPTATE,INSERT,DELETE操作时要保证更新,插入,删除的行满足视图定义中的谓词条件(即子查询中的条件表达式)WITHREADONLY表示视图是只读的(2)视图的属性列名只能是全部缺省或全部指定,没有别的选择。但在下列两种情况下必须明确指定组成视图的列名。1)某个目标列

17、不是单纯的属性名,而是聚集函数或列表达式。2)多表连接时选出几个同名列作为视图的字段。(3)子查询可以是任意的SELECT子句,但通常不允许含有OREERBY子句各DISDINCT短语(4)不是所有视图都是可更新的1)基于联接查询的视图不可更新2)使用了函数的视图不可更新3)使用了分组操作的视图不可更新4)只有建立在单个表上而且没有使用函数的视图才是可更新的2视图的删除DROPVIEW<视图名>CASCADE(四)索引的定义和删除1索引的定义CREATEUNIQUE|CLUSTERINDEX<索引名>ON<表名(<列名<次序习,<列名>&l

18、t;次序>?)例如:CREATEUNIQUEINDEXSCnoonSC(SnoASC,CnoDESC);(2) UNIQUE表明此索引的每一个索引值只对应唯一的数据记录(3) CLUSTER表示要建立的索引是聚簇索引。聚簇索引是指索引项的顺序与表中的物理顺序一致的索引组织,在一个表上只能建立一个聚簇索引。(3)次序可选ASC(升序)或DESC(降序)缺省值为ASC2索引的删除DROPINDEX<索引名>DROPINDEXSCno;三数据更新(一)插入数据INSERT插入数据通常有两种形式,一种是插入一个元组,另一种是插入子查询结果。后者可以一次插入多个元组。1插入一个元组IN

19、SERTINTO<表名>(<属性列1>,<属性列2>)VALUES(<常量1>,<常量2>)例如INSERTINTOStudent(Sno,Sname,Ssex,Sdept,Sage)VALUES(,20081512?,陈冬?一男?,IS?,18);INTO语句中没有出现的属性列,新元组在这些列上将取空值或默认值。在INTO子句中只指出了表名,没有指出属性名,新元组要在所有属性列上都指定值,属性列的次序与CREATETABLE中的次序相同。2插入子查询结果INSERTINTO<表名>(<属性列1>,<属性

20、列2>)子查询;例如INSERTINTODept_age(Sdept,Avg_age)SELECTSdept,AVG(Sage)FROMStudentGROUPBYSdept;(二)修改数据UPDATE<表名>SET<列名>=<表达式>,<列名>=<表达式>?WHERE<条件>例如:UPDATEStudentSETSage=22WHERESno=?200215021?;(三)删除数据DELETEFROM<表名>WHERE<条件>例如:DELETEFROMStudentWHERESno=?200

21、21528?;DELETE语句删除的是表中的数据,而不是关于表的定义。四数据查询基本数据查询的格式:SELECTALL|DISTINCT<目标列表达式>AS<别名>,<标列表达式>AS<别名>?FROM<名或视图名>,<表名或视图名>?WHERE<查询表达式>GROUPBY<列名1>HAVING<条件表达式>ORDERBY<歹U名2>ASC|DESC;(一)单表查询在一个表中查询数据27s#Age01Sa2002Sb2103SC21Studen俵i*查询查询全部记录:查询全部

22、的学生信息SELECT*FROMStudent;*表示所有列等同于SELECTs#,sname,age,sexFROMStudent2使用别名(AS或空格)使用别名:查询所有学生的学号和姓名SELECTs#AS学号,snameAS姓名FROMStudent如果别名包含空格,须使用双引号SELECTs#AS“StudentNumber"FROMStudent3表达式查询(三种表达式,字符串表达式,算术表达式,函数表达式)(1)字符串表达式查询所有学生的学号、姓名和出生年份,返回两列信息,其中一列是“学号:姓名”,另一列是出生年份SELECTs#|“:"|snameAS学生,2

23、003ageAS出生年份FROMStudent说明连接字符串|表示则多个查询列连接为一个列输出。(2)算术表达式查询学生的出生年份SELECT2003ageAS出生年份FROMStudent;(3)函数表达式SELECTsno,to_char(birth,'mm-dd-yyyy')ASbirthdayFROMStudentSELECTCount(sno)As学生人数FROMStudent4条件查询(1)WHERE条件注:1)在where子句中使用列名和表达式,但不能使用别名。2)在where子句中使用数值时,既可以用单引号也可以不用单引号,使用日期值字符值时,都必须使用单引号,

24、弁且日期值的格式必须要符合数据库中支持的日期格式,否则必须事先使用to_date函数将其转换成为数据库中支持的日期格式。oracle中日期的默认格式为:01-1月-82在输入查询条件时,可以用to_date(,1998?-01-01,?yyyy-mm-dd?)3)在SQL语句中,命令不区分大小写,但字符串区分大小写WHERE子句中的关系运算符:比较操作符:>,<,>=,<=,=,<>逻辑操作符:ANDORNO其他操作符:INBETWEENANDISNULL和ISNOTNULLLIKEEXISTS例如:1)IN:查询,s001?,?s003?,?s006?和?

25、s008?四学生的信息SELECT*FROMStudentWHEREs#IN(,s001?,?s003?,?s006?,?s008?)2)ISNOTNULL:查询缺少年龄数据的学生SELECT*FROMStudentWHEREageISNULLLIKE:查询姓名的第一个字母为,R?的学生SELECT*FROMStudentWHEREsnameLIKE,R%?%:任意长度的字符串_:单个字符(一个汉字占两个字节)注意:LIKE只能用于字符串的匹配,不能用于其他类型。查询姓名的第一个字母为,R?并且倒数第二个字母为,S?的学生SELECT*FROMStudentWHEREsnameLIKE,R%S

26、_?多个比较式可用NOT、AND和OR连接SELECT*FROMStudentWHEREageISNULLandsnameLIKE,R%?3)若要查询通配符可以用转义字符escapecharacter通常character用(2)去除重复记录(DISTINCT)查询学生的姓名SELECTDistinctsnameFROMStudentDISTINCTt只对记录有效,不针对某个特定列SELECTDistinctsname,ageFROMStudent(3)排序查询(ORDERBY)注:1)orderby只能对最终查询结果进行排序,也就是说其只能放在查询语句的最后一条。2)可以使用列的别名,列的位

27、置进行排序。3)在大多数情况下,指定的排序列(orderby列名)都是选择列(select列名),但排序列也可以不是选择列。但如果在select语句中使用了distinct关键字,则排序列必须是选择列了。查询所有学生信息并将结果按年龄升序排列SELECT*FROMStudentORDERByage将结果按年龄升序排列,按姓名降序排列SELECT*FROMStudentORDERByageASC,snameDESCASC表示升序,DESC表示降序(4)聚集函数注:1 )聚集函数和groupby子句联合使用,表示对每个组进行统计,否则将所有数据行当成一个组进行统计。2)聚集函数只能出现在选择列表、

28、orderby子句、having子句中,而不能出现在where和groupby子句中。3)除了count(*)外,其他聚集函数都会忽略null行。4)聚集函数中可以指定all和distinct选项。其中all是默认选项,表示统计所有的行(包括重复行),而distinct只统计不同的行。count(distinctsal)<FuctionName>(DISTINCT|ALL<列名>)COUNT(列名):对一列中的值计数COUNT(*):计算记录个数SUM(列名):求一列值的总和(数值)AVG(列名):求一列值的平均值MIN(列名):求一列值的最小值MAX(列名):求一列值

29、的最大值例子:求学生的总人数SELECTcount(*)FROMstudent求选修了课程的学生人数SELECTCOUNT(DISTINCTs#)FROMSC求学生的平均年龄SELECTavg(age)asaverage_ageFROMstudent(5)分组查询(GROUPBY)1 )基本格式groupby列名1,列名2having条件ORDERby列名查询男生和女生的平均年龄SELECTsex,AVG(age)asAverage_ageFROMStudentGroupBysex注意:除聚集函数外的属性必须全部出现在GroupBy子句中2)返回特定的分组结果(HAVEING)查询不同年龄的学

30、生人数,并返回人数在5人以上的结果SELECTage,COUNT(*)asstudentsFROMStudentGroupByageHavingCOUNT(*)>5Having子句中必须聚集函数的比较式,而且聚集函数的比较式也只能通过Having子句给出Having中的聚集函数可与SELECT中的不同查询人数在60以上的各个班级的学生平均年龄SELECTclass,AVG(age)FROMStudentGroupByclassHavingCOUNT(*)>60(6)使用rollup和cube限定词Rollup用于生成横向统计结果SQL>selectdeptno,job,avg

31、(sal),max(sal)fromemp2groupbyrollup(deptno,job);DEPTNO JOBAVG(SAL) MAX(SAL)10 MANAGER2450245010 PRESIDENT50005000102916.66667500020 CLERK950110020 ANAL YST3000300020 MANAGER29752975202175300030 CLERK95095030 MANAGER2850285030 SALESMAN1400160010 CLERK13001300301566.6666728502073.214295000Cube 用于生成纵向统

32、计结果SQL> select deptno,job,avg(sal),max(sal) from emp2 group by cube (deptno,job);DEPTNO JOBAVG(SAL) MAX(SAL)CLERKANAL YST MANAGER SALESMAN PRESIDENT2073.214291037.530002758.33333140050005000130030002975160050001010 CLERK10 MANAGER10 PRESIDENT2916.666671300245050005000130024505000202175300020 CLER

33、K20 ANAL YST20 MANAGER3030 CLERK30 MANAGER30 SALESMAN(二)连接查询950110030003000297529751566.6666728509509502850285014001600一个查询同时涉及两个以上的表,则称之为连接查询。CourseSELECT<表名.列名>,<表名.列名>?FROM<表名>,<表名>?WHERE<查询表达式>1等值连接和非等值连接注:在连接查询中应在列前加上表作为前缀,但如果列名在不同的表中不同,则可以不加表名限制,否则必须加。当指定表的别名时,别名应

34、跟在表名后面。例如:SQL>selectd.deptno,d.dname,e.ename,e.sal2fromdeptd,empe3whered.deptno=e.deptno4andd.deptno=20;1)等值连接查询学生的学号,姓名和所选课程号SELECTstudent.s#,student.sname,sc.c#FROMstudent,scWHEREstudent.s#=sc.s#联接条件2)非等值连接SELECTSC.S#,Course.creditFROMSC,CourseWHERESC.C#IINCourse.C#2自然连接若在等值连接中把目标列中重复的属性列去掉则为自然

35、连接3自身连接给一个表定义两个或多个不同的别名,就可以像使用这两个别名进行连接查询。SELECTFIRST.Cno,SECOND.CpnoFROMCourseFIRST,CourseSECONDWHEREFIRST.Cpno=SECOND.Cno4外连接查询外连接分为左外连接和右外连接左外连接列出左边关系中所有的元组右外连接列出右边关系中所有的元组SELECT<表名.列名>,<表名.列名>?FROM<表名>LEFT|RIGHTOUTJOINUSING卜表名>ON(连接条件)USING去掉重复行5复合条件查询WHERE子句中可以有多个连接条件,称为复合条

36、件连接。(三)嵌套查询在SQL语言中,一个SELECT-FROM-WHERE语句称为一个查询块。将一个查询块嵌套在另一个查询块的WHERE子句或HAVING短语的条件中的查询称为嵌套查询。s#SnameAge01Sa2002Sb2103SCf211无关子查询父查询与子查询相互独立,子查询语句不依赖父查询中返回的任何记录,可以独立执行查询没有选修课程的所有学生的学号和姓名SELECTs#,snameFROMstudentWHEREs#NOTIN(SELECTdistincts#FROMsc)子查询返回选修了课程的学生学号集合,它与外层的查询无依赖关系,可以单独执行无关子查询一般与IN一起使用,用

37、于返回一个值列表2相关子查询相关子查询的结果依赖于父查询的返回值查询选修了课程的学生学号和姓名SELECTs#,snameFROMstudentWHEREEXISTS(SELECT*FROMscWHEREsc.s#=student.s#)相关子查询不可单独执行,依赖于外层查询EXISTS(子查询):当子查询返回结果非空时为真,否则为假执行分析:对于student的每一行,根据该行的s#去sc中查找有无匹配记录3连接视图子查询出现在FROM子句中作为表使用查询只选修了1门或2门课程的学生学号、姓名和课程数SELECTs#,count_c#FROM(SELECTs.s#ass#,count(sc.

38、s#)ascount_c#FROMstudents,scWHEREs.s#=sc.s#Groupbys.s#)SC2,studentWHEREsc2.s#=student.s#and(count_c#=1ORcount_c#=2)联机视图可以和其它表一样使用一一(四)查询结果的连接Union和UnionAllMinusIntersect1 Union和UnionAll查询课程平均成绩在90分以上或者年龄小于(SELECTs#FROMstudentWHEREage<20UNION(SELECTs#FROM(SELECTs#,AVG(score)FROMSCgroupbys#havingav

39、g(score)>90)SC2)UNION操作自动去除重复记录UNIONAll操作不去除重复记录2 Minus查询未选修课程的学生学号(SELECTs#FROMStudent)Minus(SELECTdistincts#FROMSC)3 Intersect返回两个查询结果的交集查询课程平均成绩在90分以上弁且年龄小于(SELECTs#FROMstudentWHEREage<20Intersect20的学生学号 )20的学生学号 )(SELECTs#FROM(SELECTs#,AVG(score)FROMSCgroupbys#havingavg(score)>90)SC2)五授

40、权(一)创建数据库模式的权限CREATEUSER<用户名>WITHDBA|RESOURCE|CONNECT1对数据库模式的授权由DBA在创建用户时实现2新创建的用户有三种权限拥后的权限口件丸行的操作CREATEUSERCREATESCHEMACREATETABLE登录数据库执行查询和操作DBA可以可以可以可以RESOURCE八口.以八口以可以可以CONNECT/、口,以/、口,以/、口,以可以但必须拒启相应权限(二)授权和回收关系数据库系统中的存取权限对象类型对象操作类型(权限)数据库模式1CREATESCHEMA基本表CREATETABEL,ALTERTEBLE模式视图)CREA

41、TEVIEW索引CREATEINDEX数据基本表和视图SELECT,INSERT,UPDATE,DELETE,REFERENCES,ALLPRIVILEGES数据属性列SELECT,INSERT,UPDATE,DELETE,REFERENCES,ALLPRIVILEGES1授权GRANT<权限>,<权限>?ON<对象类型><对象名>,<对象名><对象名>?TO<用户>,<用户>WITHGRANTOPTION;例如:GRANTSELECTONTABLEStudentTOU1WITHGRANTOPTIO

42、N(1)WITHGRANTOPTION表示获得某种权限后的用户,还可以把这种权限授予其他用户。如果没有此句,则不能传播该权限(2)用户可以是PUBLIC即全体用户2回收REVOKE<权限>,<权限>?ON<对象类型><对象名>,<对象名><对象名>?FROM<用户>,<用户>?CASCADE|RESTRICT;例如:REVOKESELECTONTABLEStudentFROMU1CASCADE;(三)数据库角色1创建角色CREATEROLE<角色名>例如:CREATEROLER1;数据库

43、角色是被命名的一组与数据库操作相关的权限,角色是权限集合2给角色授权GRANT<权限>,<权限>?ON<对象类型><对象名>,<对象名><对象名>?TO<角色>,<角色>例如:GRANTSELECT,UPDATE,INSERTONTABLEStudentTOR1;3将一个角色授予其他角色或用户GRANT<角色1>,<角色2>?TO<角色>,<用户>WITHADMINOPTIONWITHADMINOPTION表示获得某权限的角色或用户还可以把这种权限再授

44、予其他角色或用户例如:GRANTR1TOwang;4角色权限回收REVOKE<权限>,<权限>?ON<对象类型><对象名>,<对象名><对象名>?FROM<角色>,<角色>例如:REVOKER1FROMwang;六完整性约束命名子句完整性约束条件可以在CREATETABLE语句中定义。SQL还在CREATETABLE语句中提供了完整性约束命名子句CONSTRAINT,用来对完整性约束条件命名。1创建完整性约束CONSTRAINT<完整性约束条件名>PRIMARYKEY短语|FOREIGN

45、KEY短语|CHECK短语例如:CREATETEBLEStudentSnoNUMERIC(6)CONSTRAINTC1CHECK(SnoBETWEEN90000AND999999)SnameCHAR(20)CONSTRAINTC2NOTNULL,SageNUMERIC(3)CONSTRAINTC3CHECK(Sage<30),SsexCHAR(2)CONSTRAINTC4CHECK(SsexIN(,男?,?女?),CONSTRAINTStudentKeyPRIMARYKEY(Sno));2修改完整性约束例如:ALTERTABLEStudentDROPCONSTRAINTC4;ALTERT

46、ABLEStudentADDCONSTRAINTC5CHECK(Sage<40);七触发器CREATETRIGGER<触发器名>BEFORE|AFTER<触发事件>ON<表名>FOREACHROW|STATEMENTWHEN<触发条件><触发动作体>第三章关系数据库理论一关系模式(回顾)一个关系模式应当是一个五元组。R(U,D,DOM,F)R为关系名U为组成该关系的属性名集合D为属性组U中属性所来自的域DOM为属性向域的映像集合F为属性间数据的依赖关系集合由于D和DOM对模式设计关系不大,因此我们在本章中把关系模式看作是一个三元

47、组:R<U,F>当且仅当U上的一个关系r满足F时,称r为关系模式R<U,F>的一个关系。二数据依赖数据依赖是一个关系内部属性与属性之间的一种约束关系。这种关系是通过学习属性间值的相等与否体现出来的数据间相关联系。最重要的数据依赖其中最重要的是函数依赖和多值依赖。三规范化(一)函数依赖理论1函数依赖定义10.1:设R(U)是属性集U上的关系模式。X,Y是U的子集。若对于R(U)的任意一个可能的关系r,r中不可能存在两个元组在X上的属性值相等,而在Y上的属性值不等,则称X函数确定Y或Y函数依赖于X,记作X-Y。下面介绍一些术语和记号:XY,但Ya,则称XY为平凡的函数依赖。否则,称X一Y为非平凡的函数依赖。今后,若不特别声明,我们总是讨论非平凡的函数依赖。若XY,则称X为决定因素(Determinant)。若X-Y,YX,则记作X<->Y。若

温馨提示

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

最新文档

评论

0/150

提交评论