




已阅读5页,还剩31页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第7章基本SQL语句 Transact SQL语言是Microsoft为SQLServer开发的一种标准化SQL语言的实现 也是SQLServer的核心 不过 Transact SQL并非严格按照标准化SQL语言实现 而是对标准化SQL语言进行了一定程度上的裁剪和拓展 本章主要介绍Transact SQL语言的基本语句 7 1Transact SQL语言 Transact SQL语言是对标准SQL语言的实现 不过 由于不同的数据库系统 厂商实现的SQL语言并不相同 这就导致了数据库的具体SQL语言间存在一定程度上的差异 所以 用户在使用SQL语言时 一定要明确特定SQL语言的特殊性 而且应尽量使用标准化SQL语句 而不要去使用那些特殊性的SQL语句 7 2数据定义语言 Transact SQL语言是一种数据定义语言 所谓数据定义语言 是指用于定义数据格式的语言 这里所说的数据格式是存储数据的结构以及所存储数据项之间的关系 数据格式定义包括创建格式 删除格式 更改格式 而对应的语句分别为CEATE语句 DROP语句 ALTER语句 REVOKE语句是处理权限的主要语句 CEATE语句 DROP语句 ALTER语句和REVOKE等语句并不是一个语句 而是一组语句 7 2 1CREATE语句 创建数据库 CREATE语句主要用于数据定义 包括定义数据的格式 以及其他属性 其中 数据定义的格式和属性限制了插入数据库中的数据的格式 所以 在数据库设计时 数据定义阶段的工作很重要 为了做好数据定义工作 在定义数据结构前 用户需要对企业的常用数据的格式进行分析 7 2 2DROP语句 删除数据库 在SQLServer里 DROP语句和CREATE语句是对应的 二者甚至在形式和数目上都很相同 如CREATEDATABASE语句对应于DROPDATABASE语句 不过 DROP语句一般都是较为简单的 不像CREATE语句那样具有复杂的语法结构 一般情况下 DROP语句的格式如下 DROP对象对象名 7 2 3ALTER语句 修改数据库 从ALTER语句的含义来看 ALTER语句是很友好的 因为ALTER语句能够在定义对象后 对对象进行修改 不过 实际的情况却并不如想象中那么好 在对象设计阶段 可以使用ALTER修改 但是在现实工作中 用户最好不要使用ALTER语句 该语句可能造成数据的丢失或数据精度的降低 7 2 4REVOKE语句 安全性语句 上面介绍的语句都是关于数据库对象的 这里的REVOKE语句则是关于安全性的 REVOKE语句 GRANT语句以及DENY等语句定义了对象的权限 关于权限 将在后文中叙述 这里只是强调说明权限也是数据定义的一部分 7 3数据操纵语言 在使用数据定义语言 DDL 定义了数据存储的格式和位置后 用户就可以使用数据操纵语言 DML 来操作定义的对象 数据操纵语言主要包括数据查询与数据更新 其中 数据查询主要是SELECT 而数据更新则包括插入 INSERT语句 更新 UPDATE语句 删除 DELETE语句 这四类语句可以简称为 查增改删 7 3 1SELECT语句 查询数据 所有基于数据库的应用系统都会使用SELECT语句从数据库中提取数据 并将获得的数据按用户的要求输出给用户 根据用户使用具体SELECT语句的不同 数据库从不同角度向用户展示数据库中的数据 SELECT语句执行后 将返回一组记录 而这组记录就是记录集 结果集 不过 SELECT语句是很复杂的 7 3 2INSERT语句 插入数据 在SQLServer中 INSERT语句负责向数据库中插入记录 在获取一条新的记录后 就需要使用INSERT语句向数据库插入一个新行 记录 7 3 3UPDATE语句 更新数据 在使用INSERT语句向数据库中插入数据后 数据就保存到了数据库中 不过 如果外界数据发生变化 就需要对数据库中的数据进行更新 在SQLServer中 主要使用UPDATE语句更新数据库中的数据 特别是更新部分字段 与INSERT不同 这里并不插入新行 记录 而是修改原行 记录 7 3 4Delete语句 删除数据 如果表中的数据不再使用或已经备份完毕 那么为了释放服务器的资源 就需要及时删除表中的数据 7 4其他常用语句 上面介绍了SELECT INSERT UPDATE DELETE等语句的基本形式 下面将介绍一些常用的子句 这些子句在与上述4个语句配合使用时 可以实现更加强大的数据操作功能 1 带WHERE子句的SELECT语句2 带WHERE子句的UPDATE语句3 带WHERE子句的DELETE语句 7 4 1WHERE子句 给出条件语句 在SQLServer中 WHERE子句可以用于SELECT语句 DELETE语句 UPDATE语句中 1 带WHERE子句的SELECT语句2 带WHERE子句的UPDATE语句3 带WHERE子句的DELETE语句 7 4 2带AND关键字的WHERE子句 在介绍AND关键字之前 需要介绍一下布尔表达式 所谓布尔表达式是指表达式的各成分由关系连接符连接 而且表达式的值为TRUE或FALSE 其中 用于连接布尔表达式的连接词有NOT 非 AND 积 OR 和 3个 这里将以AND为例 介绍这3个连接词 7 4 3GROUPBY子句 分组语句 GROUPBY子句具有符合ISO的语法和不符合ISO的语法两种结构 在一条SELECT语句中只能使用一种语法样式 在这里 用户使用符合ISO的语法 因为不符合ISO语法的目的是为了实现向后兼容 这里仅介绍符合ISO的语法 如下 1 不带WHERE子句仅含GROUPBY子句的SELECT语句2 带WHERE子句和GROUPBY子句的SELECT语句 7 4 4HAVING子句 分组条件 HAVING子句通常在GROUPBY子句中使用 如果不使用GROUPBY子句 那么HAVING的行为与WHERE子句一样 不过 这种方式不推荐使用 因为有很多限制 HAVING子句的所有列都必须出现在SELECT语句的列表中 具体HAVING子句的用法大致分为以下几种情况 1 带HAVING子句而不带WHERE子句的SELECT语句2 带HAVING子句和WHERE子句的SELECT语句 7 4 5ORDERBY子句 排序语句 ORDERBY子句用在指定SELECT语句返回的结果集后 主要用于对结果集进行排序 在默认情况下 由SELECT语句返回结果集中的记录是按照表中记录的物理顺序排列的 7 4 6TOP子句 查看前几条记录 TOP表达式可用在SELECT INSERT UPDATE和DELETE语句中 不过 TOP表达式主要用于SELECT语句中 其表达式语法结构如下 TOP Expression PERCENT WITHTIES 7 4 7DISTINCT子句 去掉重复记录 提到关键字DISTINCT 就不得不提到关键字ALL ALL是指结果集中可以包含重复行 而且它是默认值 而关键字DISTINCT可从SELECT语句的结果集中消除重复的行 不过 如果没有指定DISTINCT 将返回所有行 包括重复的行 7 4 8BETWEEN子句 指定范围条件 在SQLServer中 BETWEEN子句是较为重要的字句 用于指定一个范围条件 其语法结构如下 test ExpressionBETWEENBEGIN ExpressionANDEND Expression其实 该子句相当于数学中的两个不等式 BEGIN Expression test Expression END Expression 7 4 9模糊查询LIKE子句 上面介绍WHERE子句时 说到了字符串比较的问题 不过 那种字符串比较主要是 等关系运算符连接 在某种程度上 这些运算符都可以说是字符串的精确比较 在Transact SQL中 还提供了LIKE子句用于字符串的模糊比较 即模糊匹配 7 4 10IN子句 值包含在列表中 在SQLServer中 IN语句主要用于确定指定列的值在子查询或列表中 IN语句的语法结构如下 test ExpressionIN subquery Expression n 7 4 11NOTIN子句 值不包含在列表中 当然 IN语句与LIKE语句一样 也可以和NOT语句配合使用 NOT语句将IN语句的值取反 即如果IN语句为TRUE 那么NOTIN子句则为FALSE 这里之所以单独列出NOTIN 是因为用户经常用到NOTIN 便于用户查询本书 7 4 12COMPUTE子句 用于生成统计信息 COMPUTE子句用于生成统计信息 并将统计信息显示在结果集的后面 COMPUTE子句的语法结构如下 COMPUTE AVG COUNT MAX MIN STDEV STDEVP VAR VARP SUM Expression n BYExpression n 7 4 13COMPUTEBY子句 计算统计信息 COMPUTEBY子句与COMPUTE子句类似 也可能在未来版本中删除 所以不建议使用 如果使用COMPUTEBY 那么必须使用ORDERBY子句 表达式的列必须与在ORDERBY中的列相同或是其子集 并且顺序相同 例如 如果ORDERBY子句为ORDERBYa b c 那么COMPUTE子句的可用形式如下 COMPUTEBYa b c COMPUTEBYa b COMPUTEBYa 7 4 14列的别名 前面的许多示例都用到了列的别名 而且在前面介绍其他类型时 笔者也介绍了列的别名类型 其实 列的别名在SELECT语句中经常用到 其中 列的别名类型主要由AS和 来命名 基于前面的介绍 下面将给出一个在查询中使用列别名的示例 如下SQL语句将查询数据库database demo的表 并使用别名显示查询到的字段 7 5关系连接 在SELECT语句涉及到多个表时 可以用子查询解决 SQLServer还提供了一组关键字来处理多个表的查询 这组关键字组成了关系连接的核心 所谓关系连接 就是连接查询 这是一种不同于子查询使用多个表的查询方式 可以说 前面介绍的SQL语句都是基础语句 在工作中较少用到那样简单的语句 连接查询是最常用 最重要的查询方式 7 5 1连接查询介绍 既然两个表可以用于连接查询 那么两个表必须要有联系 两个表之间存在相同意义的列 7 5 2笛卡尔乘积 上面介绍连接查询时提到过 SQLServer将参与连接查询的表的所有记录进行组合并形成笛卡尔积 交叉连接 根据上面介绍的连接查询的执行步骤 用户不难了解生成和实现笛卡尔积的方法 在连接查询中 将WHERE子句 GROUPBY子句 ORDERBY子句以及SELECT语句中的聚合函数等都省略 直接使用表中的记录组合形成笛卡尔积 7 5 3内部连接 内部连接 INNERJOIN 是相对于外部链接而言的 内部连接用来组合两个或多个表的记录 通常 内部连接按照连接条件 从生成的结果集中删除在其他表中没有被匹配的记录 根据内部连接使用比较方式的不同 内部连接可以分为等值连接 自然连接 不等连接 7 5 4使用表别名 表的别名是连接查询中经常用到的处理表的方法 将表名定义为一个简单的别名 解决了编写SQL语句时语句过长的问题 其中 表别名的规则与前面介绍的列的别名相同 这里仅给出一个简单的SQL示例 USEdatabase demoGOSELECTtb1 FROMtable 1AStb1 7 5 5外部连接 前面介绍的连接查询都是返回满足条件的记录 在工作中 用户可能遇到这种情况 即显示某一个表的全部内容 包括不符合连接条件的记录 这个时候就需要用到外部连接 其可以使不符合条件的记录也出现在结果中 7 5 6自连接 这里介绍的自连接是连接查询的一个特例 所谓自连接 就是表与自身的连接 是内部连接的一种 自连接可以使用户同时操作同一个表的不同行 它使用较少 但是很重要 自连接适用于如下场景 某班级学生表student中包含了该班学生今年选修的课程以及课程分数 现在 需要查看同一个学生的不同学科的成绩 7 5 7联合查询 在Transact SQL中 还有一类查询 叫联合查询
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 谐音课件教学课件
- 2025年度光伏发电设备场地租赁安全规范合同
- 2025年度能源勘探劳务派遣与环境保护合同
- 2025年度体育馆场地租赁及赛事宣传推广服务合同
- 2025电子商务跨境支付与结算合作服务合同
- 2025版全新船舶买卖居间责任合同下载
- 2025年新型云计算平台服务器采购合作协议
- 2025版茶山种植项目承包合同范本下载
- 2025代持房产合同监督与合规审查服务协议
- 2025年二手车鉴定评估买卖合同
- GB/T 16927.1-2011高电压试验技术第1部分:一般定义及试验要求
- 2020年上海市中考英语试卷(含答案)
- 村级卫生室院感管理要求
- 员工自愿不交社保协议书模板(5篇)
- OECD税收协定范本中英对照文本
- 浙教版九上科学前三章难题易错题精选题(含答案)
- Unit 1 Reading and Thinking 教学设计-高中英语人教版(2019)必修第三册
- 仪表安装规范以及验收
- 《观潮》课件.ppt2
- 人教版(PEP)小学英语_3~6年级_单词表(带有音标)
- 地下连续墙施工质量控制要点(北京17号线)
评论
0/150
提交评论