精通sql结构化查询语言详解

上传人:mg****85 文档编号:35016791 上传时间:2018-03-06 格式:DOC 页数:17 大小:2.75MB
返回 下载 相关 举报
精通sql结构化查询语言详解_第1页
第1页 / 共17页
精通sql结构化查询语言详解_第2页
第2页 / 共17页
精通sql结构化查询语言详解_第3页
第3页 / 共17页
精通sql结构化查询语言详解_第4页
第4页 / 共17页
精通sql结构化查询语言详解_第5页
第5页 / 共17页
点击查看更多>>
资源描述

《精通sql结构化查询语言详解》由会员分享,可在线阅读,更多相关《精通sql结构化查询语言详解(17页珍藏版)》请在金锄头文库上搜索。

1、关系:是汇集在表结构中的行和列的集合,每个关系由一个或多个属性组成 关系,属性和数组这 3 个术语在涉及到关系模型时使用,SQL 在描述这些术语时,使用的 是表,列和行 联系指实体间对应关系 三范式: 1. 每一列都是不可分的基本数据项,同一列中不能有多个值,每一行只包含一个实例的 信息,简言之,就是无重复的列 2. 属性完全依赖于主关键字, 3. 一个数据表中不包含已在其它表中已包含的非主关键字信息 SQL 组成 1. 数据定义语言(Data Definition Language) ,用于创建,修改,删除数据库对象,SQL 关键字包括 CREATE,ALTER,DROP 2. 数据查询语言

2、(Data Query Language ) ,用于检索数据,主要 SQL 关键字为 SELECT 3. 数据操纵语言(Data Manipulation Language) ,用于增,删,改数据库对象中的数据, 主要 SQL 关键字 INSERT,UPDATE 和 REVOKE 4. 数据控制语言(Data Control Language) ,用于控制用户对数据库的访问,主要 SQL 关 键字 GRANT,DENY 和 REVOKE 5. 其它语言要素,事务控制,程序化语言 = 表 = 创建表 增加列 删除列:有默认值,作为主键不能被删除,具有非空约束的列可以被删除 处理办法:先删除约束,

3、再删除列修改列:TEXT,IMAGE ,NTEXT ,TIMESTAMP ,索引的一部分,是 PRIMARY KEY 或 FOREIGN KEY ,有缺省值,有 CHECK ,UNIQUE 时不能改变其类型 重命名表 重命名列 = 数据库 = 创建数据库 创建区分大小写的列(sql server 默认不区分大小写) = 索引 = 索引:一个表的存储是由两部分存放的,一部分用来存储表的数据页面,另一部分存储索 引页面,索引就存放在索引页面上。通常,索引面页相对于数据页面来说小得多,当进行 数据检索时,系统先搜索索引页面,从中找到所需要数据的指针,再通过指针从数据页面 中读取数据 簇索引:簇索引与

4、数据是混为一体的 非簇索引:非簇索引具有与表的数据完全分离的结构,由于非簇索引使用索引页存储,因 此比簇索引需要更多的空间,且检索效率低 创建索引 索引改名和删除= 完整性控制 = 完整性约束分 3 种类型: 1. 与表有关的约束:是在创建有的语句中定义的一种约束,在定义列同时定义该约束称 为列约束;在列定义之后,单独定义多个列的约束称为表约束 上面在 name 列后面的是列约束,最后一行是表约束,它们都可以实施 primary key , foreign key ,unique,check 约束,除此之外,列约束还可以实施 not null 约束,也可以 这样实现 如果希望删除主表中数据时同

5、时删除子表中相关数据时可采用 2. 域约束( 只能使用 check 约束) :域可以代替数据类型使用,如 但是在 sql server 中不支持 create domain ,不过可以通过给列设置 check 约束实现 3. 断言( 只能使用 check 约束) :sql server2k 不支持 4. sql server 中的完整性控制,包括规则,缺省值,触发器 规则是对表中的列或自定义数据类型的限制,规则是单独存储的,与表对象无关,即 表 删除不会对规则产生影响,一个规则可应用多个列,一个列最多只能应用一个规则缺省值:性质同上 = 查询 = 自然连接,自动判断相同的列,匹配连接(不灵活,

6、不能指定匹配列) CASE WHEN 语句左外连接 = 内连接 + 左边表中不匹配的行 右外连接 = 内连接 + 右边表中不匹配的行 全外连接 = 内连接 + 左边表中不匹配的行 + 右边表中不匹配的行 不管是哪种连接,DBMS 总是一次执行两个表的联合,因此为了在单一查询中连接个或 以上表,就需要进行多次连接,如:查询所有教师的姓名,所在系,开设的课程名以及选 修这门课的学生姓名和成绩。总是把前面的结果和后面的表进行连接 交叉连接等同于 from 后的表用逗号隔开,都是返回两个表中所有行的迪卡尔积 UNION 可用于合并查询结果,自动消除重复行,如果不希望消除重复,必须使用 UNION AL

7、L 可查不同表中的数据,但列数,类型要匹配,还可以对最后的结果进行排序(列的序号也 可) 注意:多表进行 UNION 运算时, (A UNION ALL B )UNION C 和 A UNION ALL(B UNION C )结果可能不同,括号可改变连接顺序UNION JOIN 把来自一个源表中的行与另一个源表中的行联合起来,生成的结果中包括第 一个表中的所有行和列和另一个表中的所有行和列。缺少的属性值用 NULL 表示(SQL SERVER 不支持) ROLLUP 运算符,对分组进行扩展 CUBE 运算符,对分组进行扩展EXISTS 子查询:用来测试集合是否为空,它总与子查询一起使用,而且只

8、要子查询中至 少返回一个值,则 EXISTS 判式的值为 TRUE,否则为 FALSE UNIQUE 子查询:用来测试子查询的结果表是否存在重复行,若没有重复行,则返回 TRUE,否则返回 FALSE,NOT UNIQUE 正好相反,不过 SQL SERVER 不支持 子查询的执行要依赖于上一层查询行的当前值,这种子查询称为相关子查询,如 EXISTS = 存储过程与函数 = 存储过程的优点:允许组件式编程,较快的执行速度,减少网络流量,安全 常用流程控制语句:DECLARE 用来定义一个局部变量,可用 SELECT 语句赋值,这个变量必须以开头,跟 着一个标识符,如下: 全局变量:冠以 的变

9、量,由系统定义,常见的有 error :当事务成功后,其值为 0,否则为由系统产生的,最近的一个错误号(服务器: 消息 后面的值) textsize :select 语句返回的 text 或 image 数据的字节数 GOTO lable 无条件转到用户定义的标号处 RETURN int_value :无条件的退出一个查询或一个过程,其中可选整数表达式返回给调 用者一个状态值 WAITFOR :用来定义某天中的一个时刻,执行一个语句块 print 显示最长 255 个字符的消息函数 :只能返回单一值或表,此外,函数不能执行增删改操作 标量型函数 内联表值型函数多声明表值型函数 位非运算 :要求

10、一个负数的二进制表示方式,可以先求出它的原码,然后每位取反得出它 的反码,反码再加 1 得出补码 如:假设还是以 8 位二进制来表示带符号的整数 -56 的原码是:00111000 那么它的反码是:11000111 补码为:11000111+1=11001000 得出,-56 在计算机内部是用 11001000 这串二进制来表示的= 触发器 = 触发器是一种特殊的存储过程,它在表的数据变化时发生作用,触发器可以维护数据完整 性 与存储过程的区别:存储过程通过其它程序启动运行,而触发器由一个事件来启动运行, 并且不能接收参数 SQL 支持三种类型的触发器:INSERT,DELETE ,UPDAT

11、E。当向表中插入数据,更新数 据或删除数据时,触发器就被调用,通过给表定义一个或多个触发器,可以指定哪个数据 修改时,可以激发触发器 执行环境:包括一到两个称为测试表的虚表,用于保存目标表更新,插入和删除的数据信 息。 用户不能直接修改测试表中的数据,但能在 SELECT 语句中使用这些表来检测 INSERT,DELETE 和 UPDATE 的结果,各种类型触发器用到的测试表如下: Inserted 表存入了 INSERT 和 UPDATE 语句中的副本。在 INSERT 或 UPDATE 语句的 执行中,这些新行同时被加到 Inserted 表和 trigger 表中。Inserted 表中

12、的行是 trigger 表 中新行的副本 也就是更新和插入操作中,把新行同时复制到原表和 Inserted 表中 Deleted 表存放了 Delete 和 Update 语句中相关行的副本。在 DELETE 或 UPDATE 语 句的执行中,这些相关行从 trigger 表中移到了 Deleted 表中。一般情况下,这两张表 中无共同行 也就是更新和删除操作中,把原表中删除的行剪切到 deleted 表中 一个 UPDATE 效果上等价于一个 DELETE 再接着一个 INSERT。首先“旧”行被复制 到 deleted 表中,然后新行被复制到 trigger 表和 inserted 表中

13、INSERT 触发器DELETE 触发器 UPDATE 触发器 INSTEAD OF 触发器 仅执行触发器本身,而不执行具体的 SQL 语句(INSTEAD OF 的意思)= 事务控制与并发处理 = 事务的特性 1原子性:指事务全有或全无的性质。也就是说,事务就作为一个工作单元,事务处 理完成后,所有的工作要么都在数据库中保留下来,要么完全回滚,全部不保留 2一致性:事务完成或撤消后,应处理一致的状态,即事务中任何数据的变化符合数 据定义的规则。另外,数据结束后,数据库内所有结构都必须正确。 3隔离性:多个事务同时进行,它们之间应该互不干扰,事务过程中暂时不一致的数 据不能被其它事务应用,直到

14、数据再次一致 4永久性:一旦事务引发了变化,事务提交以后,所做的工作就被永久的保存下来, 即使硬件和应用程序发生错误,这些数据也会可靠一致 SQL 中使用事务的一般过程如为:首先通过 SET TRANSACTION 设置事务的属性(主要 用于并发控制) ,再由 START TRANSACTION 语句开始事务。事务结束可以有两种方式: 由 COMMIT 语句提交事务和由 ROLLBACK 语句回滚事务 COMMIT 提交事务:该语句将成功地结束当前事务,并永久的保存事务中对于数据库的所 有改变。而在未提交事务以前,这些改变是暂时的,一般情况下,在其他事务中不能看到 本事务中对数据库的修改 RO

15、LLBACK 回滚事务:该语句也结束当前事务,但他当撤消该事务所做的全部工作,即 事务中对于数据库的任何修改都将无效,回滚一般是指回到事务开始时的状态,但也可以 在事务中设置保存点,然后回到事务指定的保存点。保存点和 ROLLBACK 语句一起使用, 可使当前事务进行部分回滚 在 SQL:1999 定义中,事务即可以隐式开始,也可以显式开始,所谓隐式开始就是当执行某些 SQL 语句时,事务自动开始,即这些语句必须在事务中执行。而显式事务就是通过 START TRANSACTION 语句来开始事务 SQL SERVER 中有 3 种开始事务的方式:隐式,显式,自动提交(缺省) 自动提交:是指对于用户发出

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 科普知识

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号