




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第1页/共133页关系数据语言的种类关系数据语言的种类 关系数据语言关系代数语言关系演算语言具有关系代数和关系演算双重特点的语言元组关系演算语言域关系演算语言例:ISBL例:ALPHA,QUEL例:QBE例:SQL第2页/共133页 SQL有着一体化的特点。其一体化具体体现在两个方面: 1. 无论是实体或实体间的联系,都用“表”来表示; 2. SQL把DDL、DML乃至DCL融于一体,即SQL不但具有查询、更新等数据操作功能,而且具有数据定义和控制功能。第3页/共133页第4页/共133页 1. SQL的发展 1974年IBM的San Jose实验室的Boyce和Chamberlin为关系数据
2、库管理系统System-R设计的一种查询语言,当时称为SEQUEL语言(Structured English Query Language),后简称为SQL (Structured Query Language) 。第5页/共133页1981年IBM推出关系数据库系统SQL/DS 后,SQL得到了广泛应用。1986年美国国家标准协会(ANSI)公布了 第一个SQL标准SQL86。1987年,ISO通过SQL86标准。第6页/共133页1989年,ISO制定SQL89标准,SQL89标 准在SQL86基础上增补了完整性描述。1990年,我国制定等同SQL89的国家标准。1992年,ISO制定SQ
3、L92标准,即SQL2。1999年,ANSI制定SQL3标准。第7页/共133页现状 大部分DBMS产品都支持SQL,成为操作数据库的标准语言。目前,绝大多数流行的关系型数据库管理系统,如Oracle,Sybase,SQL Server等都采用了SQL语言标准。 在许多软件产品中,软件厂商都对SQL的基本命令集进行了扩充,将其扩展成嵌入式SQL语言。SQL Server 2000中使用Transact-SQL语言与数据库服务器打交道。第8页/共133页 2. SQL的分类 交互式SQL 用户可直接键入SQL命令对数据库进行操作。 由DBMS来进行解释。第9页/共133页 2. SQL的分类 嵌
4、入式SQL 能将SQL语句嵌入到高级语言(宿主语言)。 使应用程序充分利用SQL访问数据库的能力、宿主语言的过程处理能力。 一般需要预编译,将嵌入的SQL语句转化为宿主语言编译器能处理的语句。第10页/共133页 关系模式称为表,存储模式称为存储文件,用户子模式由表和视图组成第11页/共133页 数据库由若干表组成,表由若干行和列组成。第12页/共133页 表(基本表)对应实际的存储数据,而视图是在表的基础上推导出来的“虚表”。第13页/共133页 一个表可以跨一个或多个存储文件,一个存储文件也可存放一个或多个表。第14页/共133页 SQL用户可以是终端用户,也可以是应用程序。第15页/共1
5、33页 1SQL(Structured Query Language)全称是结构化查询语言,是一种关系数据库语言,提供数据的定义、查询、更新和控制等功能。功能强大、能够完成各种数据库操作。第16页/共133页 2SQL语言不是一个应用程序开发语言,它只提供对数据库的操作能力,不能完成屏幕控制、菜单管理、报表生成等功能。第17页/共133页 3有利于各种数据库之间交换数据、有利于程序的移植、有利于实现程序和数据间的独立性;有利于实施标准化。第18页/共133页 4书写简单、易学易用。 第19页/共133页SQLDDLDMLDCLCreate Table/Alter Table/Drop Tabl
6、e:定义基本表定义基本表Create View/Drop View:视图操作视图操作Create Index/Drop Index:索引操作索引操作InsertDeleteSelect(查询(查询QL)UpdateGrantRevoke记录操作记录操作权限管理权限管理数据定义数据定义数据操作数据操作数据控制数据控制第20页/共133页 1、数据定义语言(DDL:Data Definition Language) 创建、修改或删除数据库中各种对象,包括表、视图、索引等。第21页/共133页 2、查询语言(QL:Query Language) 按照指定的组合、条件表达式或排序检索已存在的数据库中的
7、数据,但并不改变数据库中数据。第22页/共133页 3、数据操纵语言(DML:Data Manipulation Language ) 对已经存在的数据库进行记录的插入、删除、修改等操作。第23页/共133页 4、数据控制语言(DCL:Data Control Language) 用来授予或收回访问数据库的某种特权、控制数据操纵事务的发生时间及效果、对数据库进行监视。第24页/共133页 大写单词是SQL的关键字,在语句中要按原样来拼写(输入时可用小写) 小写字(或斜体字、汉字)表示要代换的实体,在语句中应把小写字换成一个实际的对象名或数据值。第25页/共133页 竖线(|)分开不同选项,在语
8、句中需选且只能选一个选项。 方括号()中的内容为可选的语法项目。 花括号()中的内容为必选的语法项目。第26页/共133页 ,或,n表示前面的语法项目可重复一次或多次,并用逗号分隔。 或 n表示前面的语法项目可重复一次或多次,并用空格分隔。 尖括号()中的内容为标签(标识符)。第27页/共133页第28页/共133页 数据定义语言用于建立、删除数据库模式和建立、修改、删除数据表。第29页/共133页 当需要在计算机中某个关系数据库系统下建立数据库时,首先要使用数据库模式的命令定义数据库名,即模式名,然后在其中定义各个基本表(数据表)、视图等有关对象。第30页/共133页 1. 建立数据库模式
9、ANSI标准SQL中建立数据库(SCHEMA:模式)的命令是: CREATE SCHEMA|DATABASE AUTHORIZATION ; 例如:创建者是温翠灵,则上面命令写作: CREATE SCHEMA jxgl AUTHORIZATION 温翠灵;第31页/共133页 大多数的关系数据库管理系统(RDBMS),所使用的命令格式于ANSI SQL不同,这些RDBMS更常用下面命令格式: CREATE DATABASE ; 例如:建立学费管理数据库的命令是: CREATE DATABASE xfgl第32页/共133页 2. 删除数据库模式 命令格式是: DROP DATABASE ; 例
10、如删除学费管理数据库的命令是: DROP DATABASE xfgl 注:数据库中信息一并删掉。第33页/共133页 建立基本表的命令格式为: CREATE TABLE ( , , , );第34页/共133页CREATE TABLE ( , , , );数据类型第35页/共133页SQL Server 2000中常用的数据类型:Int或integer:整数,占用4个字节Decimal或numeric:数字数据类型, 格式:Decimal(数据长度,小数位数)float 和 real:浮点数,float更灵活一些第36页/共133页SQL Server 2000中常用的数据类型:datetim
11、e:代表日期和一天内的时间的日期和时间数据类型。从1753年1月1日到9999年12月31日的日期和时间数据,如:1998-01-01 23:59:59.993char:固定长度字符数据类型:格式:char(n) n 必须是一个介于 1 和 8,000 之间的数值,当使用字符型(日期型)数据时需要用或”括起来。 第37页/共133页CREATE TABLE ( , , , ); DEFAULT:默认值约束 NULL/NOT NULL:空值/非空值约束 PRIMARY KEY:主键约束 UNIQUE:单值约束 REFERENCES() :外键约束 CHECK():检查约束第38页/共133页CR
12、EATE TABLE ( , , , ); PRIMARY KEY(, ) UNIQUE (, ) FOREIGN KEY (, ) CHECK()第39页/共133页学学 号号姓姓 名名性别性别出生日期出生日期所所 在在 系系00221020022102王雪莲王雪莲女女1980-9-151980-9-15电电 子子 系系00513090051309白亚春白亚春男男1981-05-61981-05-6计算机系计算机系00522010052201陈陈 韬韬男男1981-05-61981-05-6计算机系计算机系00522170052217袁更旭袁更旭男男1980-12-81980-12-8计算机
13、系计算机系 例1:在SQL SERVER中建立如表3-1所示学生基本情况表。表3-1学生基本情况表第40页/共133页 例1:在SQL SERVER中建立如表3-1所示学生基本情况表。CREATE TABLE jbqk ( number char(8) PRIMARY KEY, name char(8) NOT NULL UNIQUE, sex char(2) NOT NULL CHECK (sex=男男 or , sex=女女), birthday datetime, department char(12), )第41页/共133页课程号课程号课程名课程名学时学时任课教师任课教师C201C2
14、01C C语言语言7272T002T002C505C505操作系统操作系统8080T001T001C506C506数据库应用数据库应用8484T002T002C508C508编译原理编译原理9696T003T003CREATE TABLE course ( c_number char(4) PRIMARY KEY, c_name char(20) NOT NULL, period decimal(3,0), t_number char(4) NOT NULL ) 例2:建立课程表(course)的命令是:第42页/共133页教师号教师号教师姓名教师姓名职职 称称T001T001温翠灵温翠灵讲讲
15、 师师T002T002陈陈 刚刚副教授副教授T003T003李建义李建义讲讲 师师T004T004康明威康明威教教 授授例3:建立教师表(teacher)的命令是: CREATE TABLE teacher ( t_number char(4) PRIMARY KEY, t_name char(8), title char(10) ) 第43页/共133页课程号课程号学学 号号成绩成绩C201C201002210200221027575C505C505005130900513099595C508C508005220100522019292C506C506005221700522178080 例
16、4:建立选课表(sle_course)的命令是: 第44页/共133页CREATE TABLE sle_course (c_number char(4) NOT NULL, number char(8) NOT NULL, score decimal(3,0) DEFAULT NULL, PRIMARY KEY(c_number, number) FOREIGN KEY(number) REFERENCES jbqk(number), FOREIGN KEY(c_number) REFERENCES course(c_number) ) 例4:建立选课表(sle_course)的命令是: 第4
17、5页/共133页 1添加新列命令: ALTER TABLE ADD , |ADD , 例5:下面命令在jbqk表中添加“score”列。 ALTER TABLE jbqk ADD score decimal(3,0); 第46页/共133页 2删除表中的列 ALTER TABLE DROP COLUMN , |DROP , 例6:下面命令在jbqk表中添加“成绩”列之后,再删除“score”列。 ALTER TABLE jbqk ADD 成绩 decimal(3,0); ALTER TABLE jbqk DROP COLUMN score;第47页/共133页DROP TABLE ; 例7:删
18、除刚才所建的jbqk表,使用如下命令格式: DROP TABLE jbqk; 第48页/共133页 索引是对数据库表中一个或多个列的值进行排序的结构。可以利用索引快速访问数据库表中的特定信息。第49页/共133页 1建立索引语句 CREATE UNIQUE INDEX ON 数据表名(列名次序,列名次序); 说明:索引可以建立在一列和多列之上,索引顺序可以是ASC(升序)或DESC(降序),缺省值是升序。UNIQUE表示每一个索引值对应唯一的数据记录。 第50页/共133页 例8:在学生基本情况表jbqk之上建立一个关于学生表的索引文件。索引文件名为“学生索引”,索引建立在学号之上,按学号降序
19、排序。 CREAT INDEX 学生索引 ON jbqk(name desc);第51页/共133页 2删除索引语句 DROP INDEX .; 注意:该命令不能删除由CREATE TABLE或者ALTER TABLE命令创建的主键和唯一性约束索引,也不能删除系统表中的索引。第52页/共133页 例9:删除例8创建的索引“学生索引”。程序如下: DROP INDEX jbqk.学生索引 第53页/共133页第54页/共133页 Select:查询数据SQL的核心是数据查询。对于数据库的查询操作是通过 SELECT 查询命令实现的,它的基本形式由 SELECTFROMWHERE 查询块组成,多个
20、查询块可以嵌套执行。第55页/共133页 SQL语言的查询语句(Select)一般格式是: SELECT A1,A2,An (投影运算) FROM R1,R2, Rm (笛卡尔积运算) WHERE F (F为谓词条件) 上面查询语句等价于关系代数表达式:)(21,21mAAAFRRRn 第56页/共133页n语句格式SELECT ALL|DISTINCT , FROM , WHERE GROUP BY HAVING ORDER BY ASC|DESC ; 查询语言(查询语言(QLQL)- - 查询数据查询数据第57页/共133页 1命令含义 从FROM子句指定的基本表或视图中,根据WHERE子
21、句的条件表达式查找出满足该条件的记录,按照SELECT子句指定的目标列表达式,选出元组中的属性值形成结果表。如果有GROUP BY子句,则将结果按“列名1”的值进行分组,该属性列值相等的元组为一个组;如果GROUP BY子句带有短语HAVING,则只有满足短语指定条件的分组才会输出。如果有ORDER BY子句,则结果表要按照的值进行升序和降序排列。第58页/共133页 1命令含义 SELECT ALL|DISTINCT实现的是对表的投影操作,WHERE 中实现的是选择操作。 第59页/共133页 2目标列表达式第60页/共133页n语句格式SELECT ALL|DISTINCT , FROM
22、, WHERE GROUP BY HAVING ORDER BY ASC|DESC ; 数据操作语言(数据操作语言(DMLDML)- - 查询数据查询数据第61页/共133页 2目标列表达式 列表达式可以是“列名1,列名2”的形式;如果FROM子句指定了多个表,则列名应是“表名.列名”的形式。第62页/共133页 2目标列表达式 列表达式可以使用SQL提供的聚集函数形成表达式,常用的函数如下: COUNT(*):统计记录条数 COUNT(列名):统计一列值的个数 SUM(列名):计算某一数值型列的值的总和 AVG(列名):计算某一数值型列的值的平均值 MAX(列名):计算某一数值型列的值的最大
23、值 MIN(列名):计算某一数值型列的值的最小值第63页/共133页 2目标列表达式 DISTINCT参数:表示在结果集中,查询出的内容相同的记录只留下一条。第64页/共133页 1选择表中的列例1:选择jbqk表中的所有列 第65页/共133页学学 号号姓姓 名名性别性别出生日期出生日期所所 在在 系系00221020022102王雪莲王雪莲女女1980-9-151980-9-15电电 子子 系系00513090051309白亚春白亚春男男1981-05-61981-05-6计算机系计算机系00522010052201陈陈 韬韬男男1981-05-61981-05-6计算机系计算机系0052
24、2170052217袁更旭袁更旭男男1980-12-81980-12-8计算机系计算机系教师号教师号教师姓名教师姓名职职 称称T001T001温翠灵温翠灵讲讲 师师T002T002陈陈 刚刚副教授副教授T003T003李建义李建义讲讲 师师T004T004康明威康明威教教 授授课程号课程号课程名课程名学时学时任课教师任课教师C201C201C C语言语言7272T002T002C505C505操作系统操作系统8080T001T001C506C506数据库应用数据库应用8484T002T002C508C508编译原理编译原理9696T003T003课程号课程号学学 号号成绩成绩C201C2010
25、02210200221027575C505C505005130900513099595C508C508005220100522019292C506C506005221700522178080学生基本情况表选课表教师表课程表第66页/共133页学学 号号number姓姓 名名name性别性别sex出生日期出生日期birthday所所 在在 系系department00221020022102王雪莲王雪莲女女1980-9-151980-9-15电电 子子 系系00513090051309白亚春白亚春男男1981-05-61981-05-6计算机系计算机系00522010052201陈陈 韬韬男男1
26、981-05-61981-05-6计算机系计算机系00522170052217袁更旭袁更旭男男1980-12-81980-12-8计算机系计算机系表3-1学生基本情况表(jbqk)第67页/共133页 1选择表中的列例1:选择jbqk表中的所有列 SELECT * FROM jbqk;第68页/共133页 1选择表中的列例2:选择jbqk表中的number、name、department列 SELECT number,name,department FROM jbqk;第69页/共133页 1选择表中的列例3:选择jbqk中所有各个系的名字,去掉重复行 SELECT DISTINCT depa
27、rtment FROM jbqk; 第70页/共133页 2选择表中的记录 选择表中的记录是通过WHERE子句实现的例4:选择jbqk中所有计算机系的学生。 SELECT * FROM jbqk WHERE department=计算机系第71页/共133页 3条件表达式的构成(WHERE子句) 见表3-2第72页/共133页查询查询条件条件运运 算算 符符说说 明明比比 较较, , =,=,字符串比较从左向字符串比较从左向右进行右进行确定确定范围范围BETWEEN ANDBETWEEN AND,NOT BETWEEN ANDNOT BETWEEN ANDBETWEENBETWEEN后是下后是
28、下限,限,ANDAND后是上限后是上限确定确定集合集合ININ,NOT INNOT IN检查一个属性值是检查一个属性值是否属于集合中的值否属于集合中的值字符字符匹配匹配LIKELIKE,NOT LIKENOT LIKE用于构造条件表达用于构造条件表达式中的字符匹配式中的字符匹配空空 值值IS NULLIS NULL,IS NOT IS NOT NULLNULL当属性值内容为空当属性值内容为空时,要用此运算符时,要用此运算符逻辑逻辑运算运算ANDAND,OROR,NOTNOT用于构造复合表达用于构造复合表达式式表3-2 WHERE子句常用的查询条件第73页/共133页课程号c_number课程名
29、c_name学时period任课教师t_numberC201C201C C语言语言7272T002T002C505C505操作系统操作系统8080T001T001C506C506数据库应用数据库应用8484T002T002C508C508编译原理编译原理9696T003T003课程号c_number学 号number成绩scoreC201C201002210200221027575C505C505005130900513099595C508C508005220100522019292C506C506005221700522178080课程表(course)选课表(sle_course)第74页
30、/共133页例5:查询考试成绩不及格学生的学号。 SELECT DISTINCT number FROM sle_course WHERE score 60; 例6:查询学时在6070之间的课程名称和学时。 SELECT c_name, period FROM course WHERE period BETWEEN 60 AND 70第75页/共133页例7:查询学时不在6070之间的课程名称和学时。 SELECT c_name, period FROM course WHERE period NOT BETWEEN 60 AND 70; 例8:假设当前的系统年份为2002,查询计算机系、 电
31、子系学生的学号、姓名、年龄。 SELECT number,name,2002-year(birthday) as age FROM jbqk WHERE department IN(计算机系,电子系);第76页/共133页例9:查询所有姓“王”的学生信息。 SELECT * FROM jbqk WHERE name LIKE 王%; 此例中,使用了谓词LIKE。在使用时,应注意下面两点:LIKE前的列名必须是字符串类型。可以使用通配符:_(下划线)表示任一单 个字符;%(百分号)表示任意长度字符。第77页/共133页 4查询中聚集函数的使用 聚集函数见表3-3第78页/共133页函数名称函数名
32、称函数功能函数功能COUNT(DISTINCT|ALL *)统计元组个数COUNT(DISTINCT|ALL)统计一列重值的个数SUM(DISTINCT|ALL)计算数值型一列值的总和AVG(DISTINCT|ALL)求一列值的平均值MAX(DISTINCT|ALL)求一列值的最大值MIN(DISTINCT|ALL)求一列值的最小值说明:DISTINCT:取消列中的重复值 ALL:为默认状态,表示不取消重复值。 表3-3 聚集函数一览表第79页/共133页例10:查询学生总人数。 SELECT COUNT(*) FROM jbqk; 例11:计算0052201学生的平均成绩。 SELECT A
33、VG(score) FROM jbqk WHERE number = 0052201; 第80页/共133页 5查询结果的分组与排序 GROUP BY子句将查询结果表按某一列或多列值分组,值相等的为一组。分组的目的是为了将集函数的作用对象细化,分组后集函数将作用在每一个组上,也就是说每个组都有一个函数值。第81页/共133页例12:查询选修了2门以上课程的学生学号,且查询 结果按照升序排列。 SELECT number FROM sle_course GROUP BY number HAVING COUNT(*) 2 ORDER BY number ASC; WHERE 与 HAVING 的区
34、别在于作用的对象不同。WHERE子句作用于基本表或视图,从中选择满足条件的记录;HAVING 短语作用于分组,从中选出满足条件的组。 第82页/共133页例13:查询所有选修课程的学生信息,包括所学 的课程名、授课教师和成绩。 SELECT jbqk.number, , course.c_name, sle_course.score, teacher.t_name FROM jbqk,course,sle_course,teacher WHERE jbqk.number=sle_course.number andsle_course.c_number=course.c_num
35、ber andcourse.t_number=teacher.t_number 第83页/共133页 在SQL语言中,一个SELECT FROM WHERE语句成为一个查询块。将一个查询块嵌套在另一个查询块的WHERE子句(或HAVING短语)的条件中的查询称为嵌套查询。处于内层的查询称为子查询。嵌套查询命令在执行时,每个子查询在上一级查询处理之前求解,即由里向外查。 第84页/共133页例14:查询选修了“数据库技术”课程的学生姓名。 SELECT FROM jbqk WHERE jbqk. number in( SELECT sle_course.number FROM
36、 sle_course WHERE sle_course.c_number in ( SELECT course.c_number FROM course WHERE course.c_name=数据库技术);第85页/共133页 在一些嵌套查询中WHERE之后可以使用ANY和ALL这两个谓词,ANY表示子查询结果中的某个值,而ALL表示子查询结果中的所有值。第86页/共133页谓词形式语 义谓词形式语 义ANY大于子查询结果中的某个值ALL大于子查询结果中的所有值ANY大于等于子查询结果中的某个值ALL大于等于子查询结果中的所有值ALL小于等于子查询结果中的所有值ALL等于子查询结果中的所有
37、值=ANY等于子查询结果中的某个值!=(或)ALL不等于子查询结果中的所有值!=(或) ANY不等于子查询结果中的某个值表3-4 谓词一览表第87页/共133页例15:查询所有课程成绩在95分以上的学生的 学号、姓名。 Select number,name From jbqk Where number=any( Select number From sle_course Where score=95)第88页/共133页第89页/共133页 DML主要用于数据更新操作,包括数据的插入(INSERT)、删除(DELETE)和修改(UPDATE)第90页/共133页 1.插入单行数据语句的一般格式
38、是: INSERT INTO ( , , ) VALUES ( , , , )例1:向学生基本情况表(jbqk)中插入一条记录。 INSERT INTO jbqk VALUES(0051101,王云丽,女,1981-12-18, 电子系,85); 省略列名列表时,表示插入完整新行。第91页/共133页例2:向教师表(teacher)中插入一条记录。 INSERT INTO teacher VALUES (T509,安志远,副教授); 注意:在SQL SERVER 2000 插入数据时在VALUES子句中必须将所有列值写出,否则会出现“插入错误:列名或所提供值的数目与表定义不匹配。”错误。第92
39、页/共133页 2. 插入多行数据语句的一般格式是: INSERT INTO 表名 ( , , ) SELECT 子句第93页/共133页 例3:生成学生临时成绩表fcourse,表中包括name,c_number,score。 INSERT INTO fcourse SELECT name, c_number,score FROM jbqk, sle_course WHERE jbqk.number= sle_course.number第94页/共133页 删除命令比较简单,删除是对整条记录操作,不能删除记录的部分属性。一次可以删除一条和若干条记录,甚至将整个表的内容删空,只保留表的结构定义
40、。第95页/共133页删除命令格式为: DELETE FROM WHERE 例4:删除jbqk表中学号为“0051101”的学生。 DELETE FROM jbqk WHERE number = 0051101第96页/共133页 注意: DROP TABLE : 删除后表不再存在 DELETE FROM : 删除后表依然存在,但为无记录的空表。第97页/共133页 修改数据的语句格式一般是: UPDATE SET = , = WHERE 第98页/共133页例5:将课程表(course)中所有课程的学时减少5学时 UPDATE course SET period = period - 5;例
41、6:将jbqk表中“袁更旭”同学的所在系改为“管理系” UPDATE jbqk SET department = 管理系 WHERE name = 袁更旭; 第99页/共133页第100页/共133页 视图是关系数据库系统提供给以多种角度观察数据库中数据的重要机制。它就象一个窗口,透过它可以看到数据库中用户感兴趣的数据及其变化。第101页/共133页 1. 视图是一种虚表,是逻辑表,不是物理存在的表。 2. 基本表中的数据发生变化,从视图中查询出的数据也随之改变。 3. 图中的数据是从现有的一个或多个表中提取出来的,可以屏蔽表中的某些信息,有利于数据库的安全性。第102页/共133页 4. 视
42、图在数据库中是作为查询来保存的,当引用一个查询时,DBMS就执行这个查询,然后将查询结果作为视图来用; 5. 一个基本表可以建立多个视图,一个视图 也可以在多个表上建立。 6. 拥有表的几乎所有操作。 7. 有利于应用程序的独立性、数据一致性。 第103页/共133页 1视图的建立 建立视图的语句格式: CREATE VIEW (,) AS WITH CHECK OPTION; 注:其中查询子句可以是任意复杂的SELECT 语句,但通常不允许含有ORDER BY和DISTINCT短语。第104页/共133页 1视图的建立 WITH CHECK OPTION子句是为了防止用户通过视图对数据进行增
43、加、删除、修改时,对不属于视图范围内的基本表数据进行误操作。加上该子句后,当对视图上的数据进行增、删、改时,DBMS会检查视图中定义 的条件,若不满足,则拒绝执行。第105页/共133页例1:建立所有计算机系学生信息(学号、姓名、 性别、出生日期、所在系)视图。 CREAT VIEW 计算机系 AS SELECT number,name,sex,birthday,department FROM jbqk WHERE department=计算机系第106页/共133页 2删除视图 删除视图语句格式: DROP VIEW ; 例2:删除上例建立的视图“计算机系”。 DROP VIEW 计算机系;
44、 第107页/共133页 1. 查询视图 当视图被定义之后,就可以象对基本表一样对视图进行查询了。例3:查询“计算机系”视图中年龄小于20岁的学生 SELECT * FROM 计算机系 WHERE 2002-year (birthday) 20;第108页/共133页 2更新视图 由于视图是不实际存储数据的虚表,因此对视图的更新,最终是通过转换为对基本表的更新进行的。 UPDATE 计算机系 SET department = 管理系 WHERE name = 袁更旭; 第109页/共133页 2更新视图 对视图内容的更新直接影响基本表。因此这是一个较复杂的问题,通常会加以限制。当视图来自多个基
45、本表时,通常只对视图做适当的修改(如对非主属性的修改),不允许做插入和删除数据的操作。第110页/共133页第111页/共133页 在数据库系统中实现安全性除了通过物理方法对数据库进行加密等方法外,主要是通过授予和检验权限的手段(DBA)。SQL有授权语句,通过该语句可以实现对数据库的使用控制。第112页/共133页 SQL语句通过GRANT语句向用户授予操作权限,GRANT语句的格式为: GRANT ,ON TO ,WITH GRANT OPTION; 说明:此授权语句是指将某作用在指定操作对象上的操作权限,授予指定的用户。第113页/共133页对象名对象名对象对象类型类型操操 作作 权权
46、限限属性列TABLESELECT,INSERT,UPDATE,DELETE,ALL PRIVILEGERS视 图TABLESELECT,INSERT,UPDATE,DELETE,ALL PRIVILEGERS基本表TABLESELECT,INSERT,UPDATE,DELETE,ALTER,INDEX,ALL PRIVILEGERS(所有权限)数据库DATABASECREATETAB(建表权限)表3-5 权限一览表第114页/共133页 如果指定WITH GRANT OPTION子句,则获得某种权限的用户可以把这种权限在授予其他用户。如没有指定该子句,获得授权的用户将不能传播权限。第115页/共133页例1:将查询jbqk表的权限授予用户sa。 GRANT SELECT ON TABLE jbqk TO sa;第116页/共13
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 进口业务合作合同协议
- 软件设备安装合同协议
- 解除公积金协议书模板
- 自装房合同协议书模板
- 寄小读者的试题及答案
- 融资开店协议书范本
- 自愿解除承包合同协议
- 茶坊销售协议书模板
- 董事合同书转让协议
- 艺术中心合伙合同协议
- 《甲烷吸附储存技术》课件
- 2025物业管理服务承包合同范本
- 企业所得税课件
- 2025年高考政治核心知识总结
- 工程款抵房协议合同模板
- 初中数学问题解决策略 特殊化教案2024-2025学年北师大版(2024)七年级数学下册
- 托管中心晚辅老师培训
- 兼职顾问服务合同范本
- 人教版(新教材)高中物理选择性必修2教学设计2:2 2 法拉第电磁感应定律教案
- 2024-2025学年人教版数学八年级下册期中押题重难点检测卷(含答案)
- 18 井冈翠竹 课件
评论
0/150
提交评论