SQL查询语句ppt课件.ppt_第1页
SQL查询语句ppt课件.ppt_第2页
SQL查询语句ppt课件.ppt_第3页
SQL查询语句ppt课件.ppt_第4页
SQL查询语句ppt课件.ppt_第5页
已阅读5页,还剩42页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

SQL查询语言举例 测试机数据 全部使用的是mobilehub2数据库数据 1 内容简介 一 单表查询二 多表查询三 圈子v1 2举例查询 2 一 单表查询 1 查询某张表的所有信息显示Select from表名例如 查询drupal group stat表的所有信息显示SELECT fromdrupal group stat 3 一 单表查询 2 查询某张表 符合条件的信息显示Select from表名where条件例如 查询drupal group stat表中圈子id为10004的圈子信息显示Select fromdrupal group statwheregroupid 10004 4 一 单表查询 or语句 3 查询某表中列名同时符合多个条件的信息 or语句 Select from表名Where条件1or条件2 例如 查询drupal group stat表中 圈子总人数为5或8的基本信息显示SELECT fromdrupal group statwheregroupusernum 5orgroupusernum 8 5 一 单表查询 and语句 4 查询某表中行名同时符合多个条件的信息 and语句 Select from表名Where条件1and条件2 例如 查询drupal group stat表中 圈子总人数为5 且圈子回复数为10的圈子基本信息SELECT fromdrupal group statwheregroupusernum 5andgroupreplynum 10 6 一 单表查询 like语句 5 查询表中某列包含某个字符 的信息Select from表名where列名like 例如 查询表drupal users用户昵称包含t的基本信息SELECT fromdrupal userswherenamelike t 7 一 单表查询 6 查询表中某列以某个字符 打头的基本信息Select from表名where列名like 例如 查询表drupal users用户昵称以t开头的基本信息SELECT fromdrupal userswherenamelike t 8 一 单表查询 like语句 7 查询表中某列以某个字符 结尾的基本信息Select from表名where列名like 例如 查询表drupal users用户昵称以t结尾的基本信息SELECT fromdrupal userswherenamelike t 9 一 单表查询 like语句 8 查询表中某列以某个字符 结尾且只有2个字符的基本信息Select from表名where列名like 例如 查询表drupal users用户昵称以t结尾 且只有2个字符的基本信息SELECT fromdrupal userswherenamelike t 综上可知 匹配串中 表示任意长度的字符串 表示任意单个字符 10 一 单表查询 count函数 9 查询某表中的总记录数selectcount from表名9 1查询某表中的总记录数 并把总记录数重命名为 总记录数 as语句 selectcount as总记录数from表名例如 查看表drupal group user group中总记录数 并对查询结果列名重命名selectcount as总记录数fromdrupal group user group 11 一 单表查询 group语句 10 查看某表中以某列分组后的信息Select from表名Groupby列名注意 groupby后面的列名信息显示必须包含在select查询结果中例如 1 查询drupal group user group 以用户id为分组的基本信息显示select fromdrupal group user groupgroupbyuserid 12 一 单表查询 groupby语句 2 查询用户id 圈子状态 用户所用圈子数 并按用户id分组selectuserid roleid count fromdrupal group user groupgroupbyuserid说明 分组后 按userid显示的组别只显示一个记录 并不是所有的记录 13 一 单表查询 orderby语句 11 查询某表中信息 查询结果总数倒序排列Select列名1 列名2 count from表名Groupby列名1Orderbycount desc注意 1 orderby语句必须跟在groupby语句后面使用 2 ASC表示升序 DESC表示降序 默认是升序 3 分组的目的是进一步细化聚合函数的作用对象例如 按用户id分组查看该用户所有的圈子总数 并按总数倒序selectuserid roleid count fromdrupal group user groupgroupbyuseridorderbycount desc 14 一 单表查询 having语句 12 按用户id分组查看用户所删除的圈子总数 并按总数倒序selectuserid roleid count as总数fromdrupal group user groupgroupbyuseridHAVING roleid 2 orderbycount 注意 1 having条件必须包含在已查询结果selelect语句中 having和Where都是查询条件 但是where优先级比having高 所用having是建立在where查询条件上的查询 2 having后面的括号要不要都可以 15 一 单表查询 sum函数 13 查询某表中某列总和数Selectsum 列名 from表名注意 1 sum所跟条件的列的属性必须输数值型的 2 函数后必须跟括号例如 查看单个圈子所有的回复数selectgroupid sum groupreplynum fromdrupal group statgroupbygroupid说明 查询结果非只有一个函数 sum等 的时候 必须使用groupby语句分组 16 一 单表查询 avg函数 14 查询某表中某列平均数Selectavg 列名 from表名注意 1 avg所跟条件的列的属性必须是数值型的 2 函数后必须跟括号 列名包含在括号中 3 不管查询的列属性是否为实数 返回的平均数是实数例如 查看所有圈子回复数的平均数selectavg groupreplynum fromdrupal group stat 17 一 单表查询 distinct语句 15 1查询表中圈子状态的信息selectroleidas圈子状态fromdrupal group user group15 2查询表中不同圈子状态的信息 去掉重复项的信息 selectdistinctroleidas圈子状态fromdrupal group user group 18 一 单表查询 max语句 16 查询某个表中 某列的最大值Selectmax 列名 from表名例如 查询最多的圈子人数selectmax groupusernum fromdrupal group stat注意 1 函数后面必须加括号 且函数后面括号内的列值属性必须为数值型 19 一 单表查询 min函数 16 查询某个表中 某列的最小值Selectmin 列名 from表名例如 查询最少的圈子人数信息selectmin groupusernum fromdrupal group stat注意 函数后面必须加括号 且函数后面括号内的列值属性必须为数值型 20 二 多表查询 简介 连接查询 若一个查询同时涉及两个或两个以上的表 则称为链接查询连接查询种类 笛卡尔积 等值连接 内连接 外连接 自然连接 嵌套查询 21 二 多表查询 笛卡尔积 笛卡尔积是把表中所有的记录作乘积操作 生成大量的结果 而通常结果中可用的值邮箱 笛卡尔积出现的原因多种多样 通常是由于连接条件缺失造成的 这个很少用例如 查询测试机表和表中的笛卡尔积记录select fromdrupal group user group drupal users 22 二 多表查询 多表连接之等值连接 等值连接又称简单连接或内连接 连接条件表示为 表名1 列名1 表名2 列名2或表1 INNER JOIN表2ON条件表达式 注意 1 当属性名在连接的两个表中是唯一的 则可省略表名 2 连条件中各属性的值应该是可比的 且字段名可以相同 也不可不同 3 jionon innerjionon例如 drupal users中的uid和表drupal group user group中的userid都是表示用户id的信息的 那么这2个表的等值连接语句如下 select fromdrupal group user group drupal userswheredrupal group user group userid drupal users uid或 select fromdrupal group user groupjoindrupal usersonuserid uid 23 二 多表查询 多表连接之等值连接 注意 1 多表连接中 记录筛选语句同样写在where语句中 2 查询结果列名不能有二义性 例如 表drupal group group的groupid和drupal group user group的groupid列名都标示圈子id信息 在这两个表中 如果查询结果中有groupid的显示 必须指明在那个表中的groupidselectdrupal group group groupidfromdrupal group group drupal group user groupwheredrupal group group groupid drupal group user group groupid 24 二 多表查询 2个以上的表连接 1 查找用户id为57555创建已删除的圈子id 圈子标题信息 其中groupstatus标示圈子状态 roleid标示用户对圈子的权限selectdrupal group group groupid grouptitlefromdrupal group user group drupal users drupal group groupwheredrupal users uid drupal group user group useridanddrupal group group groupid drupal group user group groupidanddrupal users uid 57555anddrupal group user group roleid 0andgroupstatus 2 25 二 多表查询 2个以上的表连接 也可写为 selectdrupal group group groupid grouptitlefromdrupal group user groupjoindrupal usersondrupal users uid drupal group user group useridJoindrupal group groupondrupal group group groupid drupal group user group groupidWheredrupal users uid 57555anddrupal group user group roleid 0andgroupstatus 2 26 二 多表查询 2个以上的表连接 2 查找用户id为57555创建已删除的圈子id 圈子标题 圈子删除时间信息 其中groupstatus标示圈子状态 roleid标示用户对圈子的权限 groupmodifytime标示圈子修改时间 selectdrupal group group groupid groupmodifytime grouptitlefromdrupal group user group drupal users drupal group groupwheredrupal users uid drupal group user group useridanddrupal group group groupid drupal group user group groupidanddrupal users uid 57555anddrupal group user group roleid 0andgroupstatus 2 27 二 多表查询 外连接之左外连接 左外连接 返回左表中所有的行和右表中满足条件的行 如果右表中未满足条件的列都显示为null语法格式 SELECT 列名 FROM表名1LEFTJOIN表名2ON WHERE条件 其中 1 where条件根据实际情况书写 可以有也没有 但是on后面的条件必须要有 而且on是对中间结果进行筛选 where是对最终结果筛选 on的优先级大于where 2 leftJOIN leftouterjoin 28 二 多表查询 外连接 外连接与普通连接的区别普通连接操作只输出满足连接条件的元组外连接操作以指定表为连接主体 将主体表中不满足连接条件的元组一并输出 29 二 多表查询 外连接之左外连接 例如 返回圈子用户表drupal users中所有的行 显示用户所创建的圈子信息select fromdrupal usersleftjoindrupal group user groupondrupal users uid drupal group user group userid 30 二 多表查询 外连接之右外连接 右外连接 返回右表中所有的行和右表中满足条件的行 如果左表中未满足条件的列都显示为null语法格式 SELECT 列名 FROM表名1rightJOIN表名2ON WHERE条件 其中 1 where条件根据实际情况书写 可以有也没有 但是on后面的条件必须要有 而且on是对中间结果进行筛选 where是对最终结果筛选 on的优先级大于where 2 rightJOIN rightouterjoin 31 二 多表查询 外连接之自然连接 自然连接是去掉重复列的等值连接SELECT 列名 FROM表名1NATURALJOIN表名2WHERE条件 例如 查询用户id为57555的用户创建已删除的圈子信息 select fromdrupal group user groupNATURALJOINdrupal group groupwhereuserid 57555anddrupal group user group roleid 0andgroupstatus 2注意 自然连接时 2个表中的字段属性并不是列名要相同 而且列的属性也要一致 否则会报错 32 二 多表查询 嵌套查询 嵌套查询概述引出子查询的谓词 33 二 多表查询 嵌套查询简介 嵌套查询 将一个查询块 select from where 嵌套在一个where或having子句的条件中 称为嵌套查询 其中外层查询称为主查询 内层查询称为子查询 且由内到外进行分析 子查询的结果作为主查询的查询条件 子查询限制 不能使用orderby分组语句 34 二 多表查询 嵌套查询之简单嵌套查询 1 简单嵌套查询例句 select单价表 客户 单价表 产品名 单价表 单价from单价表where单价表 产品名 select产品表 产品名from产品表where产品表 产品ID 102 5000 说明 查询得到单价表中满足产品名为产品表里产品id为102 5000的产品的相关信息 35 二 多表查询 嵌套查询之in谓词 2 带 in 的嵌套查询语句范例 select雇员表 雇员编号 雇员表 姓名 雇员表 职位 雇员表 薪水from雇员表where薪水in select薪水from雇员表where姓名 张三 说明 查询得到雇员表里满足薪水符合姓名为张三的薪水的所有雇员的相关信息 比如in 1000 1500 2000 表示薪水 1000或1500或2000的情况 注 此语句完成的查询薪水和张三相等的职员 也可以使用 notin 来进行相反的查询 36 二 多表查询 嵌套查询之any谓词 3 带 any 的嵌套查询语句范例 select雇员表 雇员编号 雇员表 姓名 雇员表 职务 雇员表 薪水from雇员表where薪水 any select薪水from雇员表where职务 工程师 说明 查询得到薪水比职务为工程师的薪水要高的职员信息 例如子查询结果为 2000 1500 1000 父查询的条件为 薪水 2000or薪水 1500or薪水 1000 37 二 多表查询 嵌套查询之some谓词 4 带 some 的嵌套查询语句范例 select雇员表 雇员编号 雇员表 姓名 雇员表 职务 雇员表 薪水from雇员表where薪水 some select薪水from雇员表where职务 工程师 说明 查询得到薪水和职务为工程师的薪水一样的职员信息 也就是和任意一个工程师的薪水相等的职员信息 例如子查询结果为 2000 1500 1000 父查询的条件为 薪水 2000or薪水 1500or薪水 1000 带 any 的嵌套查询和 some 的嵌套查询功能是一样的 早期的SQL仅仅允许使用 any 后来的版本为了和英语的 any 相区分 引入了 some 同时还保留了 any 关键词 38 二 多表查询 嵌套查询之all谓词 5 带 all 的嵌套查询语句范例 select雇员表 雇员编号 雇员表 姓名 雇员表 职务 雇员表 薪水from雇员表where薪水 all select薪水from雇员表where职务 工程师 说明 查询得到薪水比任一工程师薪水都要高的职员信息 例如子查询结果为 2000 1500 1000 父查询的条件为 薪水 2000and薪水 1500and薪水 1000 39 二 多表查询 嵌套查询之exists谓词 6 带 exists 的嵌套查询语句范例 select雇员表 雇员编号 雇员表 姓名 雇员表 职务 雇员表 薪水from雇员表 部门表whereexists select from雇员表where雇员表 部门编号 部门表 部门编号 说明 查询得到雇员表和部门表的部门编号相匹配的所有雇员信息 EXISTS谓词带有EXISTS谓词的子查询不返回任何数据 只产生逻辑真值 true 或逻辑假值 false 若内层查询结果不为空 则返回真值若内层查询结果为空 则返回假值由EXISTS引出的子查询 其目标列表达式通常都用 因为带EXISTS的子查询只返回真值或假值 给出列名无实际意义 40 二 多表查询 嵌套查询之union谓词 7 并操作 union 的嵌套查询语句范例 select部门编号from雇员表 union select部门编号from部门表 说明 并操作就是集合中并集的概念 属于集合A或集合B的元素的总和就是并集 注 该操作的嵌套查询要求属性具有相同的定义 包括类型和取值范围 相当等值连接中的or连接条件 41 二 多表查询 嵌套查询之intersect谓词 8 交操作 intersect 的嵌套查询语句范例 select部门编号from雇员表 intersect select部门编号from部门表 说明 交操作就是集合中交集的概念 属于集合A且属于集合B的元素的总和就是交集 注 该操作的嵌套查询要求属性具有相同的定义 包括类型和取值范围 相当于等值连接的and连接 42 二 多表查询 嵌套查询之minus谓词 9 差操作 minus 的嵌套查询语句范例 select部门编号from部门表 minus select部门编号from雇员表 说明 差操作就是集合中差集的概念 属于集合A 前一个子查询结果 且不属于集合B 后一个子查询结果 的元素的总和就是差集 注意 该操作的嵌套查询要求属性具有相同的定义 包括类型和取值范围 也可直接写 号 43 三 测试机数据查询圈子v1 2 1 单圈页 浏览量达到500 2000时的帖子标题显示selectgroupid topicid topictitle viewnum topicstatusfromdr

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论