版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、数据库知识要点总结第一章关系数据模型数据模型(静态)的三要素一关系数据结构(一)基本概念包括:1 属性 (Attribute):实体所具有的某一特征。 (如学生的特征是学号、姓名、-)域 (Domain) :属性对应的一组具有相同数据类型的值的集合。每个属性有一个域。(关系模型限定域必须原子性1NF )2 键( key)( 1)候选键( candidate key)关系的某一属性或属性组的值唯一标识一个元组,而其任何真子集无此性质。候选键的诸属性称为主属性,不包含在任何候选键中的属性称为非主属性。( 2)主键( primary key)一个关系至少有一个侯选键,可以有几个侯选键。一般从侯选键中
2、选择一个作为主键( primary key),其他的称为侯补键(alternate key)每个主键的值是不能相同的,( 3)外键( foreign key)如关系中的属性或属性组不是本关系的主键,而引用其他关系或本关系的主键,则称为本关系的外键。3 关系( Relation ):( 1)关系:定义在事物的所有属性域上的多元关系,一个关系就是一张二维表。( 2)关系模式:关系的描述称为关系模式,它可以形式化的表示为R 为关系名U 为组成该关系的属性名集合D 为属性组 U中属性所来自的域DOM为属性向域的映像集合F 为属性间数据的依赖关系集合关系模式通常简记为:R(U)或 R(A1, A2, A
3、3, , An)关系的三种基本类型基本表:是实际存在的表,它是实际存储数据的逻辑表示。查询表:是查询结果对应的表。视图表:是由基本表或其他视图导出的表,是虚表,不对应实际存储内容。二 关系操作(一)两种关系操作1 查询( Query)查询可以分为选择 (SELECT),投影 (Project),连接 (Join),交 (Intersection),并(Union) ,差 (Except) ,除 (Divide),笛卡尔乘积。其中选择,投影,并,差,笛卡尔乘积是5 种基本操作,其他的操作可用这些基本操作定义和导出2 插入 (Insert),删除 (Delete),修改 (Update)(二)关系
4、操作的特点集合式的操作方式,即操作的对象和结果都是集合。(三)关系数据语言可以分为三类1 关系代数语言2 关系演算语言(元组关系演算和域关系演算)3 具有关系代数和关系演算双重特点的语言(SQL语言)三 关系完整性约束关系数据库的数据必须遵循的约束实体完整性( Entity Integrity)参照完整性( Referential Integrity)用户自定义完整性(User-Defined Integrity)实体完整性和参照完整性是关系模型必须满足的完整性约束条件,被称为关系的两个不变性。(一)实体完整性实体完整性规则:关系模式 R 的主属性值不可为空指所有主属性均不可取空值,不仅仅是主
5、键不可为空(二)参照完整性1外键( Foreign Key )定义:设 F 是基本关系 R 的一个或一组属性,但不是关系的码,是基本关系的主码。如果与相对应,则称是的外码(Foreign Key )R 称为参照关系( ReferentialRelation ),S 称为被参照关系( Referenced Relation)2参照完整性规则若属性(或属性组) F 是基本关系 R 的外码,它与基本关系 S 的主码 KS相对应(基本关系到 R和 S 不一定是不同关系) ,则对于 R中每个元组在 F 上的值必须为:( 1)等于被参照关系 S 中所参照的候选键的某个值( 2)空值(三)用户自定义完整性针
6、对某一具体数据的约束条件, 反映某一具体应用所涉及的数据必须满足的特殊语义由应用环境决定四 关系代数关系代数按运算符的不同可分为传统关系运算和专门关系运算(一)传统关系运算(交,并,差,笛卡尔乘积)1(并) R1 R2=b 2 db 3 bc 2 dd 3 ba 3 ce 5 fg 6 62(交 AND)R1R2= b 2 dc 2 d3( 差)R1R2= b 3 bd 3 b4 ( 笛卡尔乘积)R1 S = b 2 d 2 db 2 d 3 bb 3 b 2 db 3 b 3 bc 2 d 2 dc 2 d 3 bd 3 b 2 dd 3 b 3 b(二)专门关系运算1 选择( SELECT
7、) (选择符合条件的元组)<选择条件 >( <关系名 >)如: 性别 =男( STUDENT)表的水平划分2 投影( Project )( 选择符合条件的属性) <属性表 > ( <关系名 >)如: 学号,姓名 ( STUDENT)表的垂直划分3 连接操作( Join)笛卡尔乘积 R S = <t,g>|t R AND gS( 1)连接分为等值连接和自然连接连接操作: R| |S其中 A 和 B 分别为 R 和 S 上度数相等且具有可比性的属性组AB1)等值连接(为 =)R1.A1 R1.A2R1.A3 S.A2 S.A3如上例 R1
8、| |S =b 2d2dR1.A2=S.A2b3b3bc2d2dd3b3b2) 自然连接(只有 | | )一般连接是从行的角度出发的,但自然连接还要取消重复的列,是从行和列的角度进行运算S.A2S.A3R1.A1 R1.A2R1.A3如 R1 | | S=b2dB3b4 除运算(÷)R1.A1如 R1÷S = b在 R1 上 b 印象集合是 (2, d) ,(3 , d)S 在( A1,A2)上的投影为 (2, d) ,(3 , d) 第二章关系数据库的标准语言SQL一 SQL动词表SQL功能 动词数据查询 SELECT数据定义 CREATE, DROP,ALTER数据操纵
9、 INSERT, UPDATE, DELETE 数据控制 GRANT, REVOKE二 数据定义操作对操作方式象创建删除修改模式CREATE SCHEMADROP SCHEMA表CREATE TABLEDROP TABLE ALTER TABLE视图CREATE VIEWDROP VIEW索引CREATE INDEXDROP INDEX注意SQL通常不提供修改模式定义,修改视图定义,修改索引定义的操作(一)模式的定义和删除1 模式的定义CREATE SCHEMA 模<式名 >AUTORIZATION<用户 >例如: CREATE SCHEMA“s-t ” AUTORIZ
10、ATION wang;( 1)要创建模式,调用该命令的用户必须具有 DBA权限,或者获得了 DBA授予的 CREATE SCHEMA权限( 2)如果没指定 <模式名 >那么 <模式名 >隐含为 <用户名 >( 3)定义模式,实际上是定义了一个命名空间,在这个空间中可以进一步定义该模式包含的数据库对象,例如基本表,视图,索引。2 模式的删除DROP SCHEMA<模式名 ><CASCADE | RESTRICT>(两者必选其一)例如: DROP SCHEMA“ s-t ” CASCADE;( 1)CASCADE(级联)表示在删除模式的同
11、时把该模式中所有的数据库对象全部一起删除。( 2)RESTRICT(限制)表示在删除该模式中已经定义了下属数据库对象(表,视图索引),则拒绝该删除语句。(二)表的定义,删除和修改1 表的定义CREATE TEBLA<表名 > (< 列名 > < 数据类型 > 列级完整性约束 ,<列名 > < 数据类型 > 列级完整性约束 ,<表级完整性约束 >)列定义的完整格式:<列名 > < 列类型 > DEFAULT < 默认值 > NOT NULL <列约束 >CREATE TEBLA
12、<表名 > AS <SELECT 查询 >若要定义模式式下的表:CREATE TABLE 模<式名 >.<( 1)数据类型表名 >ANSI/ISOOracle字符型数值型Char(n)Character(n)CharacterVarying(n)Char Varying(n)NumericDecimalIntegerChar(n)Varchar2(n)NumberIntFloatDoubleReal日期型DateDateTime( 2)完整性约束主键约束( Primary Key )外键约束( Foreign Key )检查约束( Check)唯
13、一键约束( Unique )非空约束(默认值( Defautl )(3)例子)实体完整性参照完整性用户自定义完整性CREATE TABLE student(Sno CHAR(8) PRIMARY KEY,Sname CHAR(20) UNIQUE,Ssex CHAR(2) DEFALULT 男,Sage SMALLINT CHECK(Sage>0)Sdept CHAR(20)CREATE TABLE Course(Cno CHAR(4) PRIMARY KEY,Cname CHAR(40),Cpno CHAR(4)REFERENCES Course(Cno),Ccredit SMALLI
14、NT ,CHECK (Ccredit >0)CREATE TABLE sc(Sno CHAR(9),Cno CHAR(4),Grade SMALLINT,PRIMARY KEY (Sno,Cno), / 注意一定要有括号FOREIGN KEY(Sno) REFERENCES Course(Cno), /sno一定要有括号)(4)说明1 )列约束:在每个列后定义,可以有多个约束子句,不能定义多个列上的约束2)表约束:在全部列定义完成后定义,可以有多个约束子句,多个列上的约束必须使用表约束,单列上的约束可以用列约束,也可用表约束2 表的删除DROP TABLE <表名 >CASC
15、ADE | RESTRICT( 1)CASCADE(级联)删除该表没有任何限制,删除表的同时,相关的依赖对象(如视图)也一起删除。( 2)RESTRICT(限制)删除该表是有限制条件的。欲删除的表不能被其他表的约束所引用 (如 CHECK,FOREIGNKEY等约束),不能有视图,不能有触发器 (trigger ),不能存储过程或函数。( 3)缺省情况下是 RESTRICT3 表的修改ALTER TABLE < 表名 >ADD < 列名 ><数据类型 > 完整性约束 | MODIFY < 列名 ><数据类型 > 完整性约束 |DROP
16、 COLUMN <列名 > |ADD< 表约束 > |DROP CONSTRAINT <约束名 >例如( 1)ALTER TABLE Student( 2)Alter Table Student DROP COLUMN age ( 3)AlLTER TABLE Student MODIFYage number(3) NOT NULL( 4)ALTER TABLE Student( 5)ALTER TABLE SCDROP CONSTRAINT FK_SC(三)视图的定义和删除1 视图的定义CREATE VIEW <视图名 >(列名 1,列名 2,
17、 ) / 列名一定要放在括号里 AS < 查询>WITH CHECK OPTION |WITH READ ONLY例如: CREATE VIEW cs_view (sno, name, age)AS SELECT s#, sname, ageFROM studentWHERE Dept =计算机系WITH READ ONLY;( 1)WITHCHECKOPTION表示对视图进行 UPTATE,INSERT,DELETE操作时要保证更新,插入,删除的行满足视图定义中的谓词条件(即子查询中的条件表达式)WITH READ ONLY 表示视图是只读的( 2)视图的属性列名只能是全部缺省或
18、全部指定,没有别的选择。但在下列两种情况下必须明确指定组成视图的列名。1 )某个目标列不是单纯的属性名,而是聚集函数或列表达式。2 )多表连接时选出几个同名列作为视图的字段。( 3)子查询可以是任意的 SELECT子句,但通常不允许含有 OREERBY 子句各 DISDINCT 短语。( 4)不是所有视图都是可更新的1)基于联接查询的视图不可更新2)使用了函数的视图不可更新3)使用了分组操作的视图不可更新4)只有建立在单个表上而且没有使用函数的视图才是可更新的2 视图的删除DROP VIEW <视图名 > CASCADE(四)索引的定义和删除1 索引的定义CREATE UNIQUE
19、 | CLUSTER INDEX <索引名 >ON<表名>(< 列名><次序>,<列名>< 次序>)例如: CREATE UNIQUE INDEX SCno on SC(Sno ASC,Cno DESC);( 1)UNIQUE表明此索引的每一个索引值只对应唯一的数据记录( 2)CLUSTER表示要建立的索引是聚簇索引。聚簇索引是指索引项的顺序与表中的物理顺序一致的索引组织, 在一个表上只能建立一个聚簇索引。( 3)次序可选 ASC(升序)或 DESC(降序)缺省值为 ASC2 索引的删除DROP INDEX <索引名
20、 >DROP INDEX SCno;三 数据更新(一)插入数据INSERT插入数据通常有两种形式,一种是插入一个元组, 另一种是插入子查询结果。后者可以一次插入多个元组。1插入一个元组INSERTINTO <表名> (<属性列1 >,<属性列2 >)VALUES(< 常量 1 > ,<常量2 >)例如INSERTINTO Student (Sno, Sname, Ssex, Sdept, Sage)VALUES ( 20081512 , 陈冬 , 男 , IS , 18); INTO 语句中没有出现的属性列,新元组在这些列上将取
21、空值或默认值。在 INTO子句中只指出了表名,没有指出属性名,新元组要在所有属性列上都指定值,属性列的次序与 CREATE TABLE中的次序相同。2 插入子查询结果INSERTINTO <表名> (<属性列1 >,<属性列2 >)子查询;例如INSERTINTO Dept_age( Sdept ,Avg_age)SELECT Sdept ,AVG(Sage)FROM StudentGROUP BY Sdept;(二)修改数据UPDATE <表名 >SET < 列名 >=<表达式 >,< 列名 >=<表达
22、式 > WHERE < 条件 >例如: UPDATE StudentSET Sage=22WHERE Sno=200215021;(三)删除数据DELETEFROM<表名 >WHERE <条件 >例如: DELETEFROM StudentWHERE Sno= 20021528;DELETE语句删除的是表中的数据,而不是关于表的定义。四 数据查询基本数据查询的格式:SELECT ALL | DISTINCT < 目标列表达式 >AS< 别名 >,< 标列表达式 >AS<别名 > FROM <名或视图
23、名 >,< 表名或视图名 >WHERE<查询表达式 >GROUP BY <列名 1>HAVING<条件表达式 >ORDER BY <列名 2>ASC|DESC;(一)单表查询在一个表中查询数据1* 查询查询全部记录:查询全部的学生信息SELECT * FROM Student ;* 表示所有列等同于SELECT s#, sname, age, sex FROM Student2 使用别名( AS或空格)使用别名:查询所有学生的学号和姓名SELECT s# AS 学号 , sname AS姓名 FROM Student如果别名包含
24、空格,须使用双引号SELECT s# AS “Student Number ” FROM Student3 表达式查询(三种表达式,字符串表达式,算术表达式,函数表达式)( 1)字符串表达式查询所有学生的学号、姓名和出生年份,返回两列信息,其中一列是“学号:姓名”,另一列是出生年份SELECT s# | “ : ” | sname AS 学生 ,2003 age AS 出生年份 FROM Student 说明连接字符串|表示则多个查询列连接为一个列输出。( 2)算术表达式查询学生的出生年份SELECT 2003 age AS 出生年份 FROM Student ;( 3)函数表达式SELECT
25、 sno, to_char(birth, mm-dd-yyyy ) AS birthday FROM Student SELECT Count(sno) As 学生人数 FROM Student4 条件查询( 1) WHERE条件注:1)在 where 子句中使用列名和表达式,但不能使用别名。2)在 where 子句中使用数值时,既可以用单引号也可以不用单引号,使用日期值字符值时,都必须使用单引号,并且日期值的格式必须要符合数据库中支持的日期格式,否则必须事先使用to_date函数将其转换成为数据库中支持的日期格式。oracle中日期的默认格式为:01-1月 -82在输入查询条件时,可以用to
26、_date( 1998 -01-01, yyyy-mm-dd )3)在 SQL语句中,命令不区分大小写,但字符串区分大小写WHERE子句中的关系运算符:比较操作符: >, <, >=, <=, =, <>逻辑操作符: AND OR NO其他操作符:INBETWEEN ANDIS NULL 和 IS NOT NULLLIKEEXISTS例如:1 ) IN :查询 s001 , s003 , s006和 s008四学生的信息 SELECT * FROM StudentWHERE s# IN ( s001 , s003 , s006 , s008)2)IS NOT
27、 NULL :查询缺少年龄数据的学生SELECT * FROM Student WHERE age IS NULL LIKE:查询姓名的第一个字母为 R的学生 SELECT * FROM Student WHERE sname LIKE R% %:任意长度的字符串_:单个字符(一个汉字占两个字节)注意: LIKE 只能用于字符串的匹配,不能用于其他类型。查询姓名的第一个字母为 R并且倒数第二个字母为 S的学生 SELECT * FROM Student WHERE sname LIKE R%S多个比较式可用NOT、AND和 OR连接SELECT * FROM StudentWHERE age
28、IS NULL and sname LIKER%3)若要查询通配符可以用转义字符escape character通常 character用 ( 2)去除重复记录( DISTINCT)查询学生的姓名SELECT Distinct sname FROM Student DISTINCTt 只对记录有效,不针对某个特定列SELECT Distinct sname, age FROM Student( 3)排序查询( ORDER BY)注:1)order by只能对最终查询结果进行排序,也就是说其只能放在查询语句的最后一条。2)可以使用列的别名,列的位置进行排序。3)在大多数情况下,指定的排序列(or
29、der by列名)都是选择列(select列名),但排序列也可以不是选择列。但如果在select语句中使用了distinct关键字,则排序列必须是选择列了。查询所有学生信息并将结果按年龄升序排列SELECT * FROM Student ORDER By age将结果按年龄升序排列, 按姓名降序排列SELECT * FROM StudentORDER By age ASC, sname DESCASC表示升序, DESC表示降序( 4)聚集函数注:1 )聚集函数和 group by 子句联合使用,表示对每个组进行统计,否则将所有数据行当成一个组进行统计。2)聚集函数只能出现在选择列表、 ord
30、er by子句、 having子句中,而不能出现在where和 group by 子句中。3)除了 count (* )外,其他聚集函数都会忽略null 行。4)聚集函数中可以指定 all 和 distinct选项。其中 all 是默认选项, 表示统计所有的行(包括重复行),而distinct只统计不同的行。count( distinct sal)<FuctionName>(DISTINCT | ALL<列名 >)COUNT(列名 ) :对一列中的值计数COUNT(*):计算记录个数SUM(列名 ) :求一列值的总和(数值)AVG (列名 ) :求一列值的平均值MIN
31、( 列名 ) :求一列值的最小值MAX (列名 ) :求一列值的最大值例子:求学生的总人数SELECT count(*) FROM student求选修了课程的学生人数SELECT COUNT(DISTINCT s#) FROM SC求学生的平均年龄SELECT avg(age) as average_age FROM student( 5)分组查询( GROUP BY)1 )基本格式 group by列名 1,列名 2 having条件 ORDER by 列名查询男生和女生的平均年龄SELECT sex, AVG(age) as Average_age FROM StudentGroup B
32、y sex注意:除聚集函数外的属性必须全部出现在2)返回特定的分组结果(HAVEING)Group By 子句中查询不同年龄的学生人数,并返回人数在5 人以上的结果SELECT age, COUNT(*) as students FROM StudentGroup By ageHaving COUNT(*) > 5Having 子句中必须聚集函数的比较式, 而且聚集函数的比较式也只能通过Having 子句给出Having 中的聚集函数可与SELECT中的不同查询人数在60 以上的各个班级的学生平均年龄SELECT class, AVG(age) FROM StudentGroup By
33、classHaving COUNT(*) > 60( 6)使用 rollup和 cube 限定词Rollup 用于生成横向统计结果SQL> select deptno,job,avg(sal),max(sal) from emp2 group by rollup(deptno,job);DEPTNO JOBAVG(SAL)MAX(SAL)- - - -10 CLERK1300130010 MANAGER2450245010 PRESIDENT50005000102916.66667500020 CLERK950110020 ANALYST3000300020 MANAGER2975
34、2975202175300030 CLERK95095030 MANAGER2850285030 SALESMAN14001600301566.6666728502073.214295000Cube 用于生成纵向统计结果SQL> select deptno,job,avg(sal),max(sal) from emp2 group by cube (deptno,job);DEPTNO JOBAVG(SAL)MAX(SAL)- - - -2073.214295000CLERK1037.51300ANALYST30003000MANAGER2758.333332975SALESMAN140
35、01600PRESIDENT50005000102916.66667500010 CLERK1300130010 MANAGER2450245010 PRESIDENT50005000202175300020 CLERK950110020 ANALYST3000300020 MANAGER29752975301566.66667285030 CLERK95095030 MANAGER2850285030 SALESMAN14001600(二)连接查询一个查询同时涉及两个以上的表,则称之为连接查询。SELECT < 表名 . 列名 >,< 表名 . 列名 >FROM &l
36、t;表名 >,< 表名 >WHERE<查询表达式 >1 等值连接和非等值连接注:在连接查询中应在列前加上表作为前缀,但如果列名在不同的表中不同,则可以不加表名限制,否则必须加。当指定表的别名时,别名应跟在表名后面。例如:SQL> select d.deptno , d.dname, e.ename, e.sal 2 from dept d,emp e3 where d.deptno=e.deptno4 and d.deptno=20;1)等值连接查询学生的学号,姓名和所选课程号SELECT student.s#, student.sname,sc.c# FR
37、OM student,scWHERE student.s# = sc.s#联接条件2)非等值连接SELECT SC.S# , Course.creditFROM SC,CourseWHERE SC.C# I IN Course.C#2 自然连接若在等值连接中把目标列中重复的属性列去掉则为自然连接3 自身连接给一个表定义两个或多个不同的别名,就可以像使用这两个别名进行连接查询。SELECT FIRST.Cno, SECOND.Cpno FROM Course FIRST , Course SECONDWHERE FIRST.Cpno=SECOND.Cno4 外连接查询外连接分为左外连接和右外连接
38、左外连接列出左边关系中所有的元组右外连接列出右边关系中所有的元组SELECT < 表名 . 列名 >,< 表名 . 列名 >FROM <表名 >LEFT|RIGHT OUT JOIN USING<表名 > ON ( 连接条件 )USING去掉重复行5 复合条件查询WHERE子句中可以有多个连接条件,称为复合条件连接。(三)嵌套查询在 SQL语言中,一个 SELECT-FROM-WHERE语句称为一个查询块。将一个查询块嵌套在另一个查询块的 WHERE子句或 HAVING短语的条件中的查询称为嵌套查询。1 无关子查询父查询与子查询相互独立,子查询语
39、句不依赖父查询中返回的任何记录,可以独立执行查询没有选修课程的所有学生的学号和姓名SELECT s#,snameFROM studentWHERE s# NOT IN ( SELECT distinct s# FROM sc)子查询返回选修了课程的学生学号集合,它与外层的查询无依赖关系,可以单独执行无关子查询一般与 IN 一起使用,用于返回一个值列表2 相关子查询相关子查询的结果依赖于父查询的返回值查询选修了课程的学生学号和姓名SELECT s#, sname FROM studentWHERE EXISTS (SELECT * FROM sc WHERE sc.s# = student.s#
40、)相关子查询不可单独执行,依赖于外层查询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 student s, scWHERE s.s#=sc.s#Group by s.s#) SC2, studentWHERE sc2.s# = student.s# a
41、nd (count_c#=1 OR count_c#=2)联机视图可以和其它表一样使用(四)查询结果的连接Union 和 Union AllMinusIntersect1 Union 和 Union All查询课程平均成绩在90 分以上或者年龄小于20 的学生学号( SELECT s# FROM student WHERE age<20)UNION( SELECT s#FROM (SELECT s#, AVG(score)FROM SCgroup by s#having avg(score)>90) SC2)UNION操作自动去除重复记录UNION All 操作不去除重复记录2 M
42、inus查询未选修课程的学生学号( SELECT s# FROM Student) Minus( SELECT distinct s# FROM SC )3 Intersect返回两个查询结果的交集查询课程平均成绩在 90 分以上并且年龄小于 20 的学生学号( SELECT s# FROM student WHERE age<20)Intersect( SELECT s#FROM (SELECT s#, AVG(score)FROM SC group by s#having avg(score)>90) SC2)五 授权(一)创建数据库模式的权限CREATE USER 用<
43、户名 > WITH DBA | RESOURCE | CONNECT1 对数据库模式的授权由 DBA在创建用户时实现2 新创建的用户有三种权限拥 有的 权 可否执行的操作限CREATE USERCREATE SCHEMACREATE TABLE 登录数据库执行查询和操作DBA可以可以可以可以RESOURCE 不可以不可以可以可以CONNECT不可以不可以不可以可以但必须拥有相应权限(二)授权和回收关系数据库系统中的存取权限对象类对象操作类型(权限)型数据库模式CREATE SCHEMA基本表CREATE TABEL, ALTER TEBLE模式视图CREATE VIEW索引CREATE
44、INDEX数据基本表和视SELECT,INSERT, UPDATE,DELETE,REFERENCES,图ALL PRIVILEGES数据属性列SELECT,INSERT, UPDATE,DELETE,REFERENCES,ALL PRIVILEGES1 授权GRANT <权限 > ,< 权限 >ON <对象类型 > < 对象名 > ,< 对象名 > < 对象名 >TO <用户 > ,<用户 >WITH GRANT OPTION ;例如: GRANT SELECTON TABLE StudentTO
45、 U1WITH GRANT OPTION( 1) WITH GRANT OPTION表示获得某种权限后的用户,还可以把这种权限授予其他用户。如果没有此句,则不能传播该权限( 2)用户可以是 PUBLIC即全体用户2 回收REVOKE 权<限 > , <权限 >ON <对象类型 > < 对象名 >,< 对象名 ><对象名 > FROM <用户 > , < 用户 > CASCADE | RESTRICT;例如: REVOKE SELECTON TABLE StudentFROM U1CASCADE;(三
46、)数据库角色1 创建角色CREATE ROLE 角<色名 > 例如: CREATE ROLE R1;数据库角色是被命名的一组与数据库操作相关的权限,角色是权限集合2 给角色授权GRANT <权限 > ,<权限 >ON <TO <对象类型 > < 对象名 > ,<角色> ,<角色>;对象名><对象名>例如: GRANT SELECT,UPDATE, INSERTON TABLE StudentTO R1;3 将一个角色授予其他角色或用户GRANT <角色 1> ,<角色
47、2>TO <角色 > ,< 用户 > WITH ADMIN OPTIONWITH ADMIN OPTION表示获得某权限的角色或用户还可以把这种权限再授予其他角色或用户例如: GRANT R1TO wang;4 角色权限回收REVOKE 权<限 > , <权限 >ON <对象类型 > < 对象名 >,< 对象名 ><对象名 > FROM <角色 > , < 角色 > 例如: REVOKE R1FROM wang;六 完整性约束命名子句完整性约束条件可以在 CREATET
48、ABLE语句中定义。 SQL还在 CREATETABLE语句中提供了完整性约束命名子句 CONSTRAINT,用来对完整性约束条件命名。1 创建完整性约束CONSTRAINT<完整性约束条件名>PRIMARY KEY 短语 | FOREIGN KEY 短语 | CHECK 短语 例如: CREATE TEBLE Student(Sno NUMERIC(6)CONSTRAINT C1 CHECK(Sno BETWEEN 90000 AND 999999)Sname CHAR(20)CONSTRAINT C2 NOT NULL,Sage NUMERIC(3)CONSTRAINT C3
49、CHECK(Sage<30),Ssex CHAR(2)CONSTRAINT C4 CHECK (Ssex IN(男 ,女 ),CONSTRAINT StudentKey PRIMARY KEY (Sno));2 修改完整性约束例如: ALTER TABLE StudentDROP CONSTRAINT C4;ALTER TABLE StudentADD CONSTRAINT C5 CHECK (Sage<40);七 触发器CREATE TRIGGER<触发器名 >BEFORE | AFTER < 触发事件 >ON<表名 >FOR EACH ROW| STATEMENTWHEN&
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025届南昌市第二十八中学物理高三上期末经典试题含解析
- 2025届江苏省江阴市普通高中物理高一第一学期期末调研试题含解析
- 2025届陕西省西安工业大学附属补习学校物理高三第一学期期末综合测试模拟试题含解析
- 2025届山东省菏泽市23校联考高三物理第一学期期末学业水平测试试题含解析
- 辽宁省朝阳市(2024年-2025年小学五年级语文)统编版能力评测(下学期)试卷及答案
- 安徽省蚌埠市(2024年-2025年小学五年级语文)人教版随堂测试(上学期)试卷及答案
- 《低压电器培训》课件2
- 2024合同续签通知范本
- 急救担架的使用课件
- 一年级小学生课前三分钟小故事(20篇)
- 临床医学职业生涯规划
- 幼儿园课程故事开展培训
- 《电力建设施工技术规范 第3部分:汽轮发电机组》DLT 5190.3
- 重大版小学英语六年级上册全册教案
- 跌倒坠床护理个案分析
- 艺术设计专业的职业生涯报告
- 火力发电厂施工图设计内容深度规定
- 酒店经理管理酒店运营
- AI在农业领域的应用
- 汽车eps行业国内外市场发展前景分析与投资风险预测报告
- 短视频运营实战:抖音短视频运营
评论
0/150
提交评论