数据库原理10-第3章.ppt

上传人:za****8 文档编号:15635948 上传时间:2020-08-27 格式:PPT 页数:83 大小:643KB
返回 下载 相关 举报
数据库原理10-第3章.ppt_第1页
第1页 / 共83页
数据库原理10-第3章.ppt_第2页
第2页 / 共83页
数据库原理10-第3章.ppt_第3页
第3页 / 共83页
点击查看更多>>
资源描述
管理学院 信息管理系 肖 洁,数据库原理及应用,第3章 关系数据库的标准语言SQL,本章要点,SQL语言的相关数据类型、表达式与运算符的 定义及其使用方法; 使用SQL语言创建、撤销数据库及其数据库对 象的方法及技能; 使用SQL语言查询数据的基本技能及使用连 接、嵌套查询等复杂技术; SQL语言的数据更新技术; SQL语言的数据控制技术。,一、SQL 概述,(一)SQL的发展历程 1974年由Boyce和Chamherlin提出 1986年批准为美国标准 1987年规定为国际标准,“SQL86” 本章介绍“SQL92(SQL2)”标准,(二)SQL的组成与功能 1、数据定义语言(SQL DDL) 基本表、视图以及索引文件的定义、修改和删除。 2、数据操纵语言(SQL DML) 数据查询:数据的查询、统计、分组和排序。 数据更新:数据的插入、删除和修改。 3、数据控制语言(SQL DCL) 对基本表和视图的授权、完整性规则的描述和事务 控制语句。 4、嵌入式SQL,(三)SQL语言的特点 1、有自含式和嵌入式两种形式 2、语言简洁、易学易用 9个动词:CREATE,DROP,ALTER SELECT,INSERT,UPDATE,DELETE GRANT,REVOKE 3、高度非过程化 4、支持关系数据库三级模式结构 全体基本表构成了数据库的概念模式。 视图和部分基本表构成了数据库的外模式。 数据库的存储文件和索引文件构成了内模式。,(四)SQL基本知识 1、数据类型 (1)数值型 INT:(INTEGER)长整数 SMALLINT:短整数 REAL:浮点数 DOUBLE PRECISION:双精度浮点数 FLOAT(n):浮点数,精度至少为n位数字 NUMBERIC(p,q):定点数,DECIMAL(p,q) (2)字符型 CHAR(n):长度为n的定长字符串 VARCHAR(n):最大长度为n的变长字符串,(3)位串型 BIT(n):长度为n的二进制位串 BIT VARYING(n):最大长度为n的变长二进制位串 (4)日期型 DATE:日期,YYYY-MM-DD TIME:时间,HH:MM:SS (5)货币型、文本型、图像型等,表3-1 SQL Server 2008提供的数据类型,2、表达式与运算符 (1)比较运算符 =, !=, , , = (2)逻辑运算符 NOT:意义反转 AND:表示所有的查询条件都成立。 OR:表示至少有一个查询条件成立。 (3)算术运算符 , , *, /,(4)谓词 IS NULL 和 IS NOT NULL:用于判断字符串的值是否是空值。 BETWEENAND和 NOT BETWEENAND.:用于判断值是否在给定的两个值之间(包括边界值)。 IN:用于判断值是否属于指定的集合。 LIKE:用来进行字符串的匹配。 格式:NOT LIKE ESCAPE ,可使用通配符(任意长度的字符串)和_(任意单个字符),例: LIKE COM_cn_ ESCAPE ,通配符,下划线, (通配符 要匹配的字符) 示例:使用 运算符查找其地址中有四位邮政编码的所有 Adventure Works 雇员的 ID 和姓名。 SELECT e.EmployeeID, c.FirstName, c.LastName, a.PostalCode FROM HumanResources.Employee AS e INNER JOIN Person.Contact AS c ON e.ContactID = c.ContactID INNER JOIN HumanResources.EmployeeAddress AS ea ON e.EmployeeID = ea.EmployeeID INNER JOIN Person.Address AS a ON a.AddressID = ea.AddressID WHERE a.PostalCode LIKE 0-90-90-90-9;,(通配符 - 无需匹配的字符) 示例:使用 运算符在 Contact 表中查找所有名字以 Al 开头且第三个字母不是字母 a 的人 。 SELECT FirstName, LastName FROM Person.Contact WHERE FirstName LIKE Ala% ORDER BY FirstName;,EXISTS 和 NOT EXISTS:用于判断在指定的表中是否存在一行符合某种条件的数据。 格式: EXISTS(子查询) 当子查询结果为非空,返回True;否则,返回False。 UNIQUE:用于在指定的表中判断每一行是否是惟一的。 ALL和ANY:用于将某个值同另一数据集中的每个值相比较。,3、函数 (1)单行函数 对查询的表或视图的每一行返回一个结果行。 数值函数:接受数值,返回数值。 字符函数:接受字符,返回字符值或数值。 日期函数:返回DATE类型的值。 转换函数: 一种类型另一种类型 (2)统计函数 COUNT, SUM, MAX, MIN, AVG等。,4、语法规定与约定 (1)语句格式约定符号 :其中内容为必选项,不能为空; :其中内容为任选项; 或 |:必选其中之一项; ,n:表示前面的项可以重复多次。 (2)语法规定 SQL中数据项(列项、表和视图)的分割符为“,”; 字符串常数的定界符用单引号表示; SQL的关键字一般使用大写字母表示; SQL语句的结束符为“;” ; SQL采用格式化书写方式。,二、数据定义语言,DDL的功能:数据库、基本表、索引、视图及存储过程的 定义、修改和删除。 (一)数据库 1、创建数据库 语句格式: CREATE DATABASE ; 功能:定义数据库名和数据库的存储空间。 说明: (1)使用该语句的用户必须具有DBA的权限; (2)数据库的创建者被默认为该数据库的所有者; (3)要指定数据库名称、所占的存储空间和存放文件的位置。,分号可有可无,CREATE DATABASE database_name ON ,.n , ,.n LOG ON ,.n COLLATE collation_name FOR LOAD | FOR ATTACH := PRIMARY ( NAME = logical_file_name , FILENAME = os_file_name , SIZE = size , MAXSIZE = max_size | UNLIMITED , FILEGROWTH = growth_increment ) ,.n := FILEGROUP filegroup_name ,.n ,CREATE DATABASE 语句的基本语法格式,例: CREATE DATABASE Sales ON ( NAME=Sales_data, FILENAME=c:program filesmicrosoft sql server mssql10.mssqlservermssqldatasales_data.mdf, SIZE=10, MAXSIZE=50, FILEGROWTH=5 ) LOG ON ( NAME=Sales_log, FILENAME=c:program filesmicrosoft sql server mssql10.mssqlservermssqldatasales_log.ldf, SIZE=5MB, MAXSIZE=25MB, FILEGROWTH=5MB ),CREATE DATABASE TEST ON (NAME= TEST_data, FILENAME=C:Program FilesMicrosoft SQL Server MSSQL10.MSSQLSERVERMSSQLDATATEST_data.mdf, SIZE=5MB, MAXSIZE=20MB, FILEGROWTH=10% ) LOG ON (NAME=TEST_log, FILENAME=C:Program FilesMicrosoft SQL Server MSSQL10.MSSQLSERVERMSSQLDATATEST_log.ldf, SIZE=2MB, MAXSIZE=5MB, FILEGROWTH=1MB );,2、修改数据库 语句格式: ALTER DATABASE ; 功能: 增加或删除数据文件; 改变数据文件的大小和增长方式; 改变日志文件的大小和增长方式; 增加或删除日志文件; 增加或删除文件组。 说明: (1)该语句只有DBA或具有创建数据库权限的数据 库拥有者才有权使用; (2)该语句可以增加或删除数据库中的文件,也可 以修改数据库文件的属性。,ALTER DATABASE database_name ADD FILE ,n TO FILEGROUP filegroup_name /*在文件组中增加数据文件*/ | ADD LOG FILE ,n /*增加日志文件*/ | REMOVE FILE logical_file_name /*删除数据文件*/ | ADD FILEGROUP filegroup_name /*增加文件组*/ | REMOVE FILEGROUP filegroup_name /*删除文件组*/ | MODIFY FILE /*更改文件属性*/ | MODIFY NAME = new_dbname /*数据库更名*/ | MODIFY FILEGROUP filegroup_name READONLY | READWRITE | READ_ONLY | READ_WRITE | DEFAULT | NAME = new_filegroup_name /*更改文件组属性*/ | SET ,.n WITH /*设置数据库属性*/ | COLLATE collation_name /*指定数据库排序规则*/ ;,ALTER DATABASE 语句的基本语法格式,【例1】 假设已经创建了数据库TEST,它只有一个主数据文件,其逻辑文件名为TEST_data。要求:修改数据库TEST现有数据文件TEST_data的属性,将主数据文件的最大大小改为100MB,增长方式改为按每次5MB增长。 在“查询分析器”窗口中输入如下Transact-SQL语句: ALTER DATABASE TEST MODIFY FILE ( NAME = TEST_data, MAXSIZE =100MB, /*将主数据文件的最大大小改为100MB*/ FILEGROWTH = 5MB /*将主数据文件的增长方式改为按5MB增长*/ ),【例2】 先为数据库TEST增加数据文件TESTBAK。然后删除该数据文件。 ALTER DATABASE TEST ADD FILE ( NAME = TESTBAK, FILENAME = C:Program FilesMicrosoft SQL Server MSSQL10.MSSQLSERVERMSSQLDATATESTBAK.ndf, SIZE = 10MB, MAXSIZE = 50MB, FILEGROWTH = 5% ),通过查看数据库属性对话框中的文件属性来观察数据库“TEST”是否增加数据文件TESTBAK。 删除数据文件TESTBAK的命令如下: ALTER DATABASE TEST REMOVE FILE TESTBAK,【例3】 为数据库TEST添加一个日志文件。 ALTER DATABASE TEST ADD LOG FILE ( NAME = TEST_LOG2, FILENAME = C:Program FilesMicrosoft SQL Server MSSQL10.MSSQLSERVERMSSQLDATATEST_Log2.ldf, SIZE = 5MB, MAXSIZE =10 MB, FILEGROWTH = 1MB ),【例4】 从数据库TEST中删除一个日志文件,将日志文件TEST_LOG2删除。注意不能删除主日志文件。 将数据库TEST的名改为JUST_TEST。进行此操作时必须保证该数据库此时没有被其他任何用户使用。 在“查询分析器”窗口中输入如下Transact-SQL语句并执行: ALTER DATABASE TEST REMOVE FILE TEST_LOG2 ALTER DATABASE TEST MODIFY NAME = JUST_TEST,3、撤销数据库 语句格式: DROP DATABASE ,n; 功能:撤销指定的一个或多个数据库。 说明: (1)该语句只有DBA或具有创建数据库权限的数据库 拥有者才有权使用; (2)当数据库处于正在被使用或正在恢复等非正常状态 时,是不能被撤销的; (3)该语句执行后,系统将无法恢复被撤销的数据库; (4)数据库被撤销后,其中所有的数据及数据库对象、 所有的数据文件和日志文件都被删除,空间被释放。,(二)表 1、创建基本表 语句格式: CREATE TABLE ( , ); 功能:定义基本表的表名及其结构。 说明: (1)基本表可由一列(属性)或多列组成; (2)必须明确说明每一列的数据类型; (3)可同时定义与该表有关的完整性约束条件,被存入数据字典; (4)如完整性约束条件涉及到多个属性列,必须定义在表级上。 例3.2,2、完整性约束 用途:限制输入到基本表中的值的范围。 (1)PRIMARY KEY约束(主关键字约束) 功能:定义主关键字,保证主关键字的惟一性和非空性。 方法: PRIMARY KEY 直接写在列名及其类型之后; 例3.3 在相应列名及其类型后单独列出: CONSTRAINT PRIMARY KEY 例3.4 在列出基本表的所有列之后,附加一个声明: PRIMARY KEY(,n) 例3.5,(2)FOREIGN KEY约束(外部关键字约束) 功能:定义参照完整性,即维护两个基本表之间的一致性。 方法: 如果外部关键字只有一列,在列名及其类型之后直接用“REFERENCES”说明: REFERENCES () 在属性列表后面增加一个或几个外部关键字说明: FOREIGN KEY REFERENCES () 在相应列名及其类型后单独列出,并指定约束名: CONSTRAINT FOREIGN KEY REFERENCES () 例3.6,必须是主关键字,外部关键字,被参照表中的列名,(3)UNIQUE约束 功能:用来确保不受PRIMARY KEY约束的列上的数据的 惟一性。 方法:列级UNIQUE约束: CONSTRAINT UNIQUE 例3.7 表级UNIQUE约束: CONSTRAINT UNIQUE(,) 例3.8,(4)CHECK约束 功能:通过检查输入表列的数据的值来维护值域的完整性。 方法: CONSTRAINT CHECK() 例3.9 (5)NOT NULL 或 NULL 约束 功能:NOT NULL 约束不允许列值为空; NULL 约束允许列值为空。 练习:课后习题5(1),3、修改基本表 语句格式: ALTER TABLE ADD ,n DROP | COLUMN ,n ALTER COLUMN ,n ; 功能:修改指定基本表的结构。,说明: (1)ADD子句用于增加新列(不能定义为NOT NULL)和 新的完整性约束条件; 例3.10 (2)DROP 子句用于删除指定的完整性约束或指定的列; 例3.11 例3.12 (3)删除某一列时,只有当没有视图和约束引用该列时, 才能进行,否则将被拒绝; (4)ALTER COLUMN 子句用于修改原有的列的定义。,4、撤销基本表 语句格式: DROP TABLE ,n; 功能:撤销指定的基本表。 说明: (1)基本表一旦撤销,表中的数据以及在此表上建立的 索引和视图都将自动被删除,且无法恢复; (2)只有基本表的拥有者才可以使用此语句; (3)不能使用DROP撤销系统表。,(三)索引 1、索引的特点 一个索引就是一个指向表中数据的指针。 索引是SQL在基本表中列上建立的一种数据库对象, 也可称为索引文件,它和基本表是分开存储的。 2、索引的用途 提高数据查询的速度(快速定位) 保证数据的惟一性 加快表联接的速度,3、创建索引的原则 索引的创建和维护由DBA和DBMS完成。 是否创建索引取决于表的数据量大小和对查询的要求。 对于一个基本表,不要建立过多的索引。 避免使用索引的情况,4、索引的类型及选择 (1)单列索引:对基本表的某一单独的列进行索引 (2)惟一索引:不允许在表中插入任何相同的取值 (3)复合索引:针对两列或两个以上列建立的索引 选择: 经常在WHERE子句中用作过滤条件的列; 如果WHERE子句只用到了一个列,则选单列索引,否则,选复合索引。,5、索引的创建 语句格式: CREATE UNIQUECLUSTERED INDEX ON (,); 功能:为基本表创建索引。 说明: (1)次序可选ASC(升序,默认值)或DESC(降序); (2)UNIQUE表示该索引的每个索引值只对应惟一的数据记录; (3)CLUSTERED表示要建立的索引是聚集索引(它使基本表中数据的物理顺序与索引项的排列顺序一致); 例3.13,6、索引的撤销 语句格式: DROP INDEX ,n; 功能:在数据库中撤销指定的索引。 说明: (1)撤销索引时,系统会自动从数据字典中删除有关对 该索引的描述; (2)一次可以撤销一个或多个指定的索引。 例3.14,三、数据查询语言,(一)SELECT语句 语句格式: SELECT ALL | DISTINCT ,n FROM ,n WHERE GROUP BY HAVING ORDER BY ASC |DESC; 功能:从指定的基本表或视图中,选择满足条件的元组 数据,并对它们进行分组、统计、排序和投影, 形成查询结果集。,说明: (1)SELECT和FROM子句为必选子句,其他任选; (2)SELECT子句用于指明查询结果集的目标列, DISTINCT说明要去掉重复的元组,ALL表示所有满足 条件的元组; (3)FROM子句指明要查询的数据来自哪些基本表或视图; (4)WHERE子句通过条件表达式描述对基本表或视图中元 组的选择条件(过滤条件); (5)GROUP BY子句将结果集按的值进行分组,将 列值相等的元组分为一组,并且可以使用 HAVING短语来限定分组必须满足的条件 (6)ORDER BY子句是对结果集按的值的升序或降序 进行排序。,(二)单表查询 单表查询指在查询过程中只涉及一个表或视图的查询语句。 例3.23 例3.24 例3.25 例3.26,(三)联接查询 在查询过程中同时涉及多个基本表的查询语句。 1、联接条件及其联接查询执行过程 (1)联接条件及其一般格式 . 说明:联接查询中的联接条件通过WHERE子句表达。 (2)联接查询执行过程,2、等值与非等值联接查询 等值是指联接运算符为“”时的联接。 例3.27 3、自然联接查询 去除重复字段的联接。 例3.28 4、自身联接查询 例3.29,5、外部联接查询 查询结果集中保留那些不满足连接条件的元组。 左外部联接查询(*):保留联接条件左边基本表的所 有行,以及左边基本表在联接条件中右边基本表中没有匹配值的所有元组。 右外部联接查询:* 例3.30 6、无条件查询 笛卡尔积(无实际意义) 例3.31,(四)嵌套查询 将一个查询块(SELECT-FROM-WHERE语句)嵌套在 另一个查询块的WHERE子句或HAVING短语的条件中的 查询称为嵌套查询。 嵌套查询的执行顺序:由里往外。 例3.32,1、使用比较运算符的嵌套查询 当比较运算符后面的值需要通过查询才能得到,并且 能确切知道查询返回的是单值时。 例3.33,2、使用谓词的嵌套查询 (1)使用谓词IN的嵌套查询 例3.32 思考:查询条件可否不使用谓词进行构造? (2)使用谓词ANY(SOME)或ALL的嵌套查询 格式: ANY(SOME)或ALL 例3.34 例3.35 (3)使用谓词EXISTS的嵌套查询 格式: EXISTS 用于判断子查询结果是否存在。 例3.36 例3.37,(五)集合查询 集合查询操作符: UNION(并)、INTERSECT(交)、EXCEPT(差) 1、集合并操作 例3.38 2、集合交操作 例3.39 3、集合差操作 例3.40,(六)函数查询 函数查询:就是把基本表中的某一列的值经过函数运算 得到一个单一值的过程。 基本SQL函数: COUNT、SUM、AVG、MAX、MIN 例3.41 例3.42 例3.43 注:SQL中有GROUP BY子句,则语句中的函数为分组 统计函数;否则为全部结果集的统计函数。 例3.44 注:如条件中有SQL函数,则必须放在HAVING子句中。,视图是一个逻辑表,它本身不包含数据,不占物理 存储空间,所以也称为“虚表”。 1、视图的优点 简化用户操作 使用户能以多种角度看待同一数据 能够对机密数据提供安全保护 为数据库重构提供一定的逻辑独立性,四、视图,2、视图的创建 语句格式: CREATE VIEW (,) AS WITH CHECK OPTION; 功能:定义视图名和视图结构,并将得到的 元组作为视图的内容。 说明: (1)可以是任意复杂的SELECT语句; (2)WITH CHECK OPTION表示对视图进行UPDATE、INSERT和DELETE操作时满足中WHERE子句的条件表达式;,(3)组成视图的列名,或者全部指定或者全部省略; 以下三种情况,必须指定组成视图的所有列名: 目标列不是单纯的列名,而是SQL函数或列表达式。 子查询中使用了多个表或视图,并且目标列中含有相同的列名。 需要在视图中改用新的、更合适的列名。 (4)语句执行的结果,仅仅是将视图的定义信息存入数据字典,而定义中的语句并不执行。 例3.15,3、视图的撤销 语句格式: DROP VIEW ; 功能:从数据库中删除指定的视图。 说明: (1)只删除视图在数据字典中的定义信息,与之相关 联的视图应由用户自行逐一删除; (2)视图创建后,若基本表被删除,则该视图将失 效,需用户自行删除。,4、视图的查询 视图查询实际上是对基本表的查询。,视图定义中的 子查询,用户查询,等价的对基本表的查询,视图消解,例3.16,5、视图的更新 一般的DBS只允许对行列子集视图进行更新操作。 行列子集视图:是指从单个基本表导出,虽去掉了基 本表的某些行和列,但仍保留了主关键字的视图。 不支持以下几种情况的视图进行更新: (1)由两个以上基本表导出的视图; (2)视图的列来自列表达式函数; (3)视图中有分组子句或使用了DISTINCT短语; (4)视图定义中有嵌套查询,且内层查询中涉及了与 外层一样的导出该视图的基本表; (5)在一个不允许更新的视图上定义的视图。,存储过程:是指编译之后可以以一种可执行的形式永久 地存储在数据库中的SQL语句。 存储过程可以接受输入参数、向客户端返回表格或消 息,也可以通过调用数据定义语言(DDL)和数据操纵语言 (DML),返回输出参数。存储过程存放在服务器上,可以使 用T-SQL语言中的EXECUTE语句来运行存储过程。,五、存储过程,1、使用存储过程的好处 执行速度快 模块化的程序设计 减少网络通信量 保证系统的安全性,2、控制流程语句 (1)IFELSE语句 语句格式:,IF ELSE 条件表达式 ,语句功能:用来判断当某一条件成立时执行某段程序, 条件不成立时执行另一段程序。IFELSE可以嵌套使用。,【例】 DECLARE age int set age=22 IF age=17 PRINT NO ELSE PRINT YES,(2)BEGINEND语句 语句格式:,BEGIN END,语句功能:用来设置一个程序块。该程序块可以作为一 个单元来执行,BEGIN和END必须成对出现。,【例】 DECLARE age int set age=22 IF age=17 BEGIN PRINT NO PRINT AGE17 END,ELSE BEGIN PRINT YES PRINT AGE17 END,(3)CASE语句 语句格式:,CASE WHEN THEN WHEN THEN ELSE END,语句功能:将CASE后面的表达式与WHEN后面的表达 式依次做比较,若二者相等,则执行THEN后面的命令行; 若都不相等,将执行ELSE后面的命令行。,【例】 SELECT CASE 性别 WHEN 女 THEN F WHEN 男 THEN M END as sex,姓名 FROM 学生,(4)WHILECONTINUEBREAK语句 语句格式:,WHILE BEGIN BREAK CONTINUE 命令行或程序块 END,语句功能:WHILE语句在设置的条件表达式为真时, 会重复执行命令行或程序块;CONTINUE语句可以让程序跳 过CONTINUE语句之后的语句,回到WHILE循环的第一 行;BREAK语句则让程序完全跳出循环,结束WHILE循环 的执行。,【例】计算110的和。 DECLARE i int,s int set i=0 set s=0 WHILE i=10 BEGIN set s+=i set i+=1 END; PRINT s,(5)RETURN语句,【例】 IF LEN(varcharID)18 OR LEN(varcharID)15 RETURN PRINT Done,RETURN语句表示无条件终止查询、存储过程, RETURN后面的语句都不执行。,3、存储过程的创建 语句格式: CREATE PROCEDURE WITH RECOMPILE | ENCRYPTION | RECOMPILE , ENCRYPTION AS 功能:在数据库中创建存储过程。 说明: (1)选择RECOMPILE参数,表示每次执行存储过程时, 都要对其重新进行编译和优化; (2)选择ENCRYPTION参数,表示隐藏存储过程的文本。 例3.17,4、存储过程的执行 直接使用存储过程的名字对其进行调用执行。 例: A:使用带有复杂 SELECT 语句的简单过程 B:使用带有参数的简单过程,5、修改存储过程 语句格式: ALTER PROCEDURE WITH RECOMPILE | ENCRYPTION | RECOMPILE , ENCRYPTION AS 功能:修改数据库中指定的存储过程。 说明: (1)一般使用该语句的前提是不改变存储过程的使用许可 权和不改变其名字; (2)一次只能修改一个存储过程。,6、存储过程的撤销 语句格式: DROP PROCEDURE ,n 功能:在数据库中撤销指定的存储过程。 说明: (1)指要撤销的存储过程; (2)该语句一次可以从数据库中撤销一个或多个存储 过程。,7、使用系统存储过程 (1)sp_helpdb :显示服务器中所有数据 库的信息。 (2)sp_help:报告有关数据库对象的一般信息。 (3)sp_helptext:显示规则、默认值、未加密的存储 过程、用户定义函数、触发器或视图的文本信息。 (4)sp_rename:更改当前数据库中用户创建对象的 名称。,六、数据更新语言,(一)插入数据 1、插入单个元组 语句格式: INSERT INTO (,n) VALUES(,n); 功能:将一个新元组插入指定的基本表中。 说明: (1)VALUES子句中各常量的数据类型必须与INTO子句中对应列的 数据类型兼容,常量的数量必须与列数相匹配; (2)INTO子句中没有出现的列,新插入的元组在这些列上取空值; (3)若省略INTO子句中的列名,则新插入元组的每一列必须在VALUES子句中均有值对应; (4)如果基本表中存在定义为NOT NULL的列,则该列的值必须要出现在VALUES子句的常量列表中,否则出错。 例3.18,2、插入多个元组 语句格式: INSERT INTO (,n ) ; 功能:一次向基本表中插入多个元组。 说明: (1)SQL先处理,得到查询结果,再将结果插 入到所指的基本表中; (2)结果集合中的列数、列序和数据类型必须 与所指的基本表中相应各项匹配或兼容。 例3.19,(二)修改数据 语句格式: UPDATE SET =,=,n WHERE ; 功能:修改指定表中满足WHERE子句所指定条件的元组。 说明: (1)SET子句用于指定修改方法,用的值取代相 应 的列值,且一次可修改多个列的列值; (2)WHERE子句指出需要修改数据的元组应满足的条 件,如果省略WHERE子句,则修改全部元组; (3)WHERE子句中可以嵌套子查询。 例3.20 例3.21,(三)删除数据 语句格式: DELETE FROM WHERE ; 功能:删除指定表中满足WHERE子句条件的所有元组。 说明: (1)DELETE语句删除的是基本表中的数据,而不是表 的定义; (2)省略WHERE子句,表示删除全部元组; (3)WHERE子句中可以嵌套子查询。 例3.22,七、数据控制语言(DCL),完整性控制:数据库中数据的正确性与相容性。 并发控制:当多个用户并发地对数据库进行操作时,对 他们加以控制、协调,以保证并发操作正确 执行,并保持数据库的一致性。 恢复:当发生各种类型的故障,使数据库从不一致状态 恢复到一致状态的功能。 安全性控制:防止不合法使用所造成的数据泄漏和破坏。 主要措施:存取控制(授权、收权等命令),(一)数据控制方法 1、数据库操作权限 (1)隐含特权:系统内置权限 用户拥有的隐含特权与自己的身份有关 (2)系统特权:语句特权(数据定义语言) 创建或删除数据库、用户,删除或修改数据库对象等 (3)对象特权:数据库操作语言的语句权限 用户对基本表、视图、存储过程等对象的操作权限。,2、数据控制方法 (1)授权定义 由DBA和数据库对象的所有者进行授权定义(DCL) (2)存权处理 DBMS把授权结果编译后存入数据字典中。 数据字典:记录用户标识、基本表、视图和各表的 属性描述及系统授权情况。 (3)查权操作 用户提出操作请求时,系统在数据字典中查找该用 户的数据操作权限。,(二)数据控制语句 1、授予权限 语句格式: GRANT , ON TO , | PUBLIC WITH GRANT OPTION; 说明: 属性列和视图:SELECT、INSERT、UPDATE、DELETE、ALL PRIVILEGES 基本表: SELECT、INSERT、UPDATE、DELETE、ALTER、INDEX、ALL PRIVILEGES 数据库:CREATTAB 若指定了WITH GRANT OPTION,用户可再授予别人,例3.45,2、撤销权限 语句格式: REVOKE , ON FROM , | PUBLIC; 功能:将指定的用户对指定操作对象的指定操作权限撤销 说明: PUBLIC指数据库的所有用户; 撤销关于属性列的权限时,必须明确指出属性列名 当用户的某一种授权被撤销之后,若没有被再次授权,将不能再对数据进行曾经拥有的授权的操作。 例3.46,什么是角色? 角色是对权限的集中管理机制。 SQL Server 2008支持的角色: 服务器角色和数据库角色。,表3-2 SQL Server 2008提供的服务器角色,表3-3 SQL Server 2008提供的数据库角色,谢谢!,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!