SQL查询语句.ppt

上传人:1595****071 文档编号:86288065 上传时间:2023-04-14 格式:PPT 页数:47 大小:110KB
返回 下载 相关 举报
SQL查询语句.ppt_第1页
第1页 / 共47页
SQL查询语句.ppt_第2页
第2页 / 共47页
点击查看更多>>
资源描述

《SQL查询语句.ppt》由会员分享,可在线阅读,更多相关《SQL查询语句.ppt(47页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、SQL查询语言举例查询语言举例-测试机数据(全部使用的是mobilehub2数据库数据)内容简介内容简介l一.单表查询l二.多表查询l三.圈子v1.2举例查询一一.单表查询单表查询l1.查询某张表的所有信息显示lSelect*from表名表名l例如:查询drupal_group_stat表的所有信息显示lSELECT*fromdrupal_group_stat一一.单表查询单表查询l2.查询某张表,符合条件的信息显示lSelect*from表名表名where条件条件l例如:查询drupal_group_stat表中圈子id为10004的圈子信息显示lSelect*fromdrupal_grou

2、p_statwheregroupid=10004一一.单表查询(单表查询(or语句)语句)l3.查询某表中列名列名同时符合多个条件的信息(or语句)lSelect*from表名表名Where条件条件1or条件条件2l例如:查询drupal_group_stat表中,圈子总人数为5或8的基本信息显示lSELECT*fromdrupal_group_statwheregroupusernum=5orgroupusernum=8一一.单表查询(单表查询(and语句)语句)l4.查询某表中行名行名同时符合多个条件的信息(and语句)lSelect*from表名表名Where条件条件1and条件条件2l

3、例如:查询drupal_group_stat表中,圈子总人数为5,且圈子回复数为10的圈子基本信息lSELECT*fromdrupal_group_statwheregroupusernum=5andgroupreplynum=10一一.单表查询(单表查询(like语句)语句)l5.查询表中某列包含某个字符*的信息lSelect*from表名表名where列名列名like%*%l例如:查询表drupal_users用户昵称包含t的基本信息lSELECT*fromdrupal_userswherenamelike%t%一一.单表查询单表查询l6.查询表中某列以某个字符*打头的基本信息lSelec

4、t*from表名表名where列名列名like*%l例如:查询表drupal_users用户昵称以t开头的基本信息lSELECT*fromdrupal_userswherenameliket%一一.单表查询(单表查询(like语句)语句)l7.查询表中某列以某个字符*结尾的基本信息lSelect*from表名表名where列名列名like%*l例如:查询表drupal_users用户昵称以t结尾的基本信息lSELECT*fromdrupal_userswherenamelike%t一一.单表查询(单表查询(like语句)语句)l8.查询表中某列以某个字符*结尾且只有2个字符的基本信息lSele

5、ct*from表名表名where列名列名like_*l例如:查询表drupal_users用户昵称以t结尾,且只有2个字符的基本信息lSELECT*fromdrupal_userswherenamelike_tl综上可知:匹配串中:%表示任意长度的字符串;_表示任意单个字符一一.单表查询(单表查询(count函数)函数)l9.查询某表中的总记录数lselectcount(*)from表名表名l9.1查询某表中的总记录数,并把总记录数重命名为总记录数(as语句)lselectcount(*)as总记录数from表名l例如:查看表drupal_group_user_group中总记录数,并对查询结

6、果列名重命名lselectcount(*)as总记录数fromdrupal_group_user_group一一.单表查询(单表查询(group语句)语句)l10.查看某表中以某列分组后的信息lSelect*from表名表名lGroupby列名列名l注意:groupby后面的列名信息显示必须包含在select查询结果中l例如:1.查询drupal_group_user_group,以用户id为分组的基本信息显示lselect*fromdrupal_group_user_grouplgroupbyuserid一一.单表查询(单表查询(groupby语句)语句)l2.查询用户id,圈子状态,用户所

7、用圈子数,并按用户id分组lselectuserid,roleid,count(*)fromdrupal_group_user_grouplgroupbyuseridl说明:分组后,按userid显示的组别只显示一个记录,并不是所有的记录一一.单表查询(单表查询(orderby语句)语句)l11.查询某表中信息,查询结果总数倒序排列lSelect列名1,列名2,count(*)from表名lGroupby列名1lOrderbycount(*)descl注意:1.orderby语句必须跟在groupby语句后面使用;2.ASC表示升序,DESC表示降序.默认是升序,3.分组的目的是进一步细化聚合

8、函数的作用对象l例如:按用户id分组查看该用户所有的圈子总数,并按总数倒序lselectuserid,roleid,count(*)fromdrupal_group_user_grouplgroupbyuseridlorderbycount(*)desc一一.单表查询(单表查询(having语句)语句)l12.按用户id分组查看用户所删除的圈子总数,并按总数倒序lselectuserid,roleid,count(*)as总数fromdrupal_group_user_grouplgroupbyuseridHAVING(roleid=2)lorderbycount(*)l注意:1.having

9、条件必须包含在已查询结果selelect语句中,having和Where都是查询条件,但是where优先级比having高,所用having是建立在where查询条件上的查询;2.having后面的括号要不要都可以一一.单表查询(单表查询(sum函数)函数)l13.查询某表中某列总和数lSelectsum(列名)from表名l注意:1.sum所跟条件的列的属性必须输数值型的。2.函数后必须跟括号l例如:查看单个圈子所有的回复数lselectgroupid,sum(groupreplynum)fromdrupal_group_statlgroupbygroupidll说明:查询结果非只有一个函数

10、(sum等)的时候,必须使用groupby语句分组l一一.单表查询(单表查询(avg函数)函数)l14.查询某表中某列平均数lSelectavg(列名)from表名l注意:1.avg所跟条件的列的属性必须是数值型的。2.函数后必须跟括号,列名包含在括号中,3.不管查询的列属性是否为实数,返回的平均数是实数l例如:查看所有圈子回复数的平均数lselectavg(groupreplynum)fromdrupal_group_statl一一.单表查询(单表查询(distinct语句)语句)l15.1查询表中圈子状态的信息lselectroleidas圈子状态fromdrupal_group_user

11、_groupl15.2查询表中不同圈子状态的信息(去掉重复项的信息)selectdistinctroleidas圈子状态fromdrupal_group_user_group一一.单表查询(单表查询(max语句)语句)l16.查询某个表中,某列的最大值lSelectmax(列名)(列名)from表名表名l例如:查询最多的圈子人数例如:查询最多的圈子人数lselectmax(groupusernum)fromdrupal_group_statl注意:注意:1.函数后面必须加括号,且函数后面括函数后面必须加括号,且函数后面括号内的列值属性必须为数值型号内的列值属性必须为数值型一一.单表查询(单表查

12、询(min函数)函数)l16.查询某个表中,某列的最小值lSelectmin(列名)(列名)from表名表名l例如:查询最少的圈子人数信息例如:查询最少的圈子人数信息lselectmin(groupusernum)fromdrupal_group_statl注意:函数后面必须加括号,且函数后面括号注意:函数后面必须加括号,且函数后面括号内的列值属性必须为数值型内的列值属性必须为数值型二二.多表查询(简介)多表查询(简介)l连接查询:若一个查询同时涉及两个或两个以上的表,则称为链接查询l连接查询种类-笛卡尔积-等值连接(内连接)-外连接-自然连接-嵌套查询二二.多表查询(笛卡尔积)多表查询(笛卡

13、尔积)l笛卡尔积是把表中所有的记录作乘积操作,生成大量的结果,而通常结果中可用的值邮箱。笛卡尔积出现的原因多种多样,通常是由于连接条件缺失造成的.这个很少用l例如:查询测试机表和表中的笛卡尔积记录lselect*fromdrupal_group_user_group,drupal_users二二.多表查询(多表连接之等值连接)多表查询(多表连接之等值连接)l等值连接又称简单连接或内连接。连接条件表示为:表名表名1.列名列名1=表名表名2.列名列名2或或表表1INNERJOIN表表2ON条件表达式条件表达式;l注意:1.当属性名在连接的两个表中是唯一的,则可省略表名;2.连条件中各属性的值应该是

14、可比的,且字段名可以相同,也不可不同;3.jionon=innerjiononl例如:drupal_users中的uid和表drupal_group_user_group中的userid都是表示用户id的信息的,那么这2个表的等值连接语句如下:lselect*fromdrupal_group_user_group,drupal_userswheredrupal_group_user_group.userid=drupal_users.uidl或:select*fromdrupal_group_user_groupjoindrupal_usersonuserid=uid二二.多表查询(多表连接之

15、等值连接)多表查询(多表连接之等值连接)l注意:l1.多表连接中,记录筛选语句同样写在where语句中,l2.查询结果列名列名不能有二义性,例如:l表drupal_group_group的groupid和drupal_group_user_group的groupid列名都标示圈子id信息,在这两个表中,如果查询结果中有groupid的显示,必须指明在那个表中的groupidlselectdrupal_group_group.groupidfromdrupal_group_group,drupal_group_user_groupwheredrupal_group_group.groupid=d

16、rupal_group_user_group.groupid二二.多表查询(多表查询(2个以上的表连接)个以上的表连接)l1.查找用户查找用户id为为57555创建已删除的圈子创建已删除的圈子id,圈子标题信息,其,圈子标题信息,其中中groupstatus标示圈子状态,roleid标示用户对圈子的权限lselectdrupal_group_group.groupid,grouptitlefromdrupal_group_user_group,drupal_users,drupal_group_grouplwheredrupal_users.uid=drupal_group_user_grou

17、p.useridlanddrupal_group_group.groupid=drupal_group_user_group.groupidlanddrupal_users.uid=57555landdrupal_group_user_group.roleid=0andgroupstatus=2二二.多表查询(多表查询(2个以上的表连接)个以上的表连接)l也可写为:也可写为:lselectdrupal_group_group.groupid,grouptitlefromdrupal_group_user_groupjoindrupal_usersondrupal_users.uid=drupa

18、l_group_user_group.useridlJoindrupal_group_groupondrupal_group_group.groupid=drupal_group_user_group.groupidlWheredrupal_users.uid=57555landdrupal_group_user_group.roleid=0andgroupstatus=2二二.多表查询(多表查询(2个以上的表连接)个以上的表连接)l2.查找用户查找用户id为为57555创建已删除的圈子创建已删除的圈子id,圈子标题,圈子删,圈子标题,圈子删除时间信息,除时间信息,其中groupstatus标

19、示圈子状态,roleid标示用户对圈子的权限,groupmodifytime标示圈子修改时间,lselectdrupal_group_group.groupid,groupmodifytime,grouptitlefromdrupal_group_user_group,drupal_users,drupal_group_grouplwheredrupal_users.uid=drupal_group_user_group.useridlanddrupal_group_group.groupid=drupal_group_user_group.groupidlanddrupal_users.ui

20、d=57555landdrupal_group_user_group.roleid=0andgroupstatus=2二二.多表查询(外连接之左外连接)多表查询(外连接之左外连接)l左外连接:返回左表中所有的行和右表中满足条件的行,如果右表中未满足条件的列都显示为null语法格式:SELECT*|列名,FROM表名1LEFTJOIN表名2ON.WHERE条件其中,1.where条件根据实际情况书写,可以有也没有,但是on后面的条件必须要有,而且on是对中间结果进行筛选,where是对最终结果筛选,on的优先级大于where;2.leftJOIN=leftouterjoin二二.多表查询(外连接

21、)多表查询(外连接)l外连接与普通连接的区别外连接与普通连接的区别普通连接操作只输出满足连接条件的元组普通连接操作只输出满足连接条件的元组外连接操作以指定表为连接主体,将主体表中不满外连接操作以指定表为连接主体,将主体表中不满足连接条件的元组一并输出足连接条件的元组一并输出二二.多表查询(外连接之左外连接)多表查询(外连接之左外连接)l例如:返回圈子用户表drupal_users中所有的行,显示用户所创建的圈子信息lselect*fromdrupal_usersleftjoindrupal_group_user_groupondrupal_users.uid=drupal_group_user

22、_group.userid二二.多表查询(外连接之右外连接)多表查询(外连接之右外连接)l右外连接:返回右表中所有的行和右表中满足条件的行,如果左表中未满足条件的列都显示为null语法格式:SELECT*|列名,FROM表名1rightJOIN表名2ON.WHERE条件其中,1.where条件根据实际情况书写,可以有也没有,但是on后面的条件必须要有,而且on是对中间结果进行筛选,where是对最终结果筛选,on的优先级大于where;2.rightJOIN=rightouterjoin二二.多表查询(外连接之自然连接)多表查询(外连接之自然连接)l自然连接是去掉重复列的等值连接lSELECT

23、*|列名,FROM表名1NATURALJOIN表名2WHERE条件l例如:查询用户id为57555的用户创建已删除的圈子信息:lselect*fromdrupal_group_user_groupNATURALJOINdrupal_group_grouplwhereuserid=57555anddrupal_group_user_group.roleid=0andgroupstatus=2l注意:自然连接时,2个表中的字段属性并不是列名要相同,而且列的属性也要一致,否则会报错二二.多表查询(嵌套查询)多表查询(嵌套查询)l嵌套查询概述嵌套查询概述l引出子查询的谓词引出子查询的谓词二二.多表查询

24、(嵌套查询简介)多表查询(嵌套查询简介)l嵌套查询:将一个查询块(select-from-where)嵌套在一个where或having子句的条件中,称为嵌套查询。其中外层查询称为主查询,内层查询称为子查询,且由内到外进行分析,子查询的结果作为主查询的查询条件.l子查询限制:不能使用orderby分组语句二二.多表查询(嵌套查询之简单嵌套查询)多表查询(嵌套查询之简单嵌套查询)1.简单嵌套查询例句:select单价表.客户,单价表.产品名,单价表.单价from单价表where单价表.产品名=(select产品表.产品名from产品表where产品表.产品ID=102-5000)说明:查询得到单

25、价表中满足产品名为产品表里产品id为102-5000的产品的相关信息二二.多表查询(嵌套查询之多表查询(嵌套查询之in谓词)谓词)l2.带【in】的嵌套查询l语句范例语句范例:lselect雇员表.雇员编号,雇员表.姓名,雇员表.职位,雇员表.薪水from雇员表where薪水in(select薪水from雇员表where姓名=张三)l说明:说明:l查询得到雇员表里满足薪水符合姓名为张三的薪水的所有雇员的相关信息,比如in(1000,1500,2000)表示薪水=1000或1500或2000的情况。注:此语句完成的查询薪水和张三相等的职员,也可以使用【notin】来进行相反的查询二二.多表查询(

26、嵌套查询之多表查询(嵌套查询之any谓词)谓词)l3.带【any】的嵌套查询l语句范例语句范例:lselect雇员表.雇员编号,雇员表.姓名,雇员表.职务,雇员表.薪水from雇员表where薪水any(select薪水from雇员表where职务=工程师)l说明:说明:l查询得到薪水比职务为工程师的薪水要高的职员信息。例如子查询结果为(2000,1500,1000),父查询的条件为薪水2000or薪水1500or薪水1000二二.多表查询(嵌套查询之多表查询(嵌套查询之some谓词)谓词)l4.带【some】的嵌套查询l语句范例语句范例:lselect雇员表.雇员编号,雇员表.姓名,雇员表.

27、职务,雇员表.薪水from雇员表where薪水=some(select薪水from雇员表where职务=工程师)l说明:说明:l查询得到薪水和职务为工程师的薪水一样一样的职员信息,也就是和任意一个工程师的薪水相等的职员信息。例如子查询结果为(2000,1500,1000),父查询的条件为薪水=2000or薪水=1500or薪水=1000。l带【any】的嵌套查询和【some】的嵌套查询功能是一样的。早期的SQL仅仅允许使用【any】,后来的版本为了和英语的【any】相区分,引入了【some】,同时还保留了【any】关键词。二二.多表查询(嵌套查询之多表查询(嵌套查询之all谓词)谓词)l5.带

28、【all】的嵌套查询l语句范例语句范例:lselect雇员表.雇员编号,雇员表.姓名,雇员表.职务,雇员表.薪水from雇员表where薪水all(select薪水from雇员表where职务=工程师)l说明:说明:l查询得到薪水比任一工程师薪水都要高的职员信息。例如子查询结果为(2000,1500,1000),父查询的条件为薪水2000and薪水1500and薪水1000。二二.多表查询(嵌套查询之多表查询(嵌套查询之exists谓词)谓词)l6.带【exists】的嵌套查询l语句范例语句范例:lselect雇员表.雇员编号,雇员表.姓名,雇员表.职务,雇员表.薪水from雇员表,部门表wh

29、ereexists(select*from雇员表where雇员表.部门编号=部门表.部门编号)l说明:说明:l查询得到雇员表和部门表的部门编号相匹配的所有雇员信息。EXISTS谓词带有EXISTS谓词的子查询不返回任何数据,只产生逻辑真值“true”或逻辑假值“false”。若内层查询结果不为空,则返回真值若内层查询结果为空,则返回假值由EXISTS引出的子查询,其目标列表达式通常都用*,因为带EXISTS的子查询只返回真值或假值,给出列名无实际意义二二.多表查询(嵌套查询之多表查询(嵌套查询之union谓词)谓词)l7.并操作【union】的嵌套查询l语句范例语句范例:l(select部门编

30、号from雇员表)union(select部门编号from部门表)l说明:说明:l并操作就是集合中并集的概念。属于集合A或集合B的元素的总和就是并集。注:该操作的嵌套查询要求属性具有相同的定义,包括类型和取值范围。l相当等值连接中的or连接条件二二.多表查询(嵌套查询之多表查询(嵌套查询之intersect谓词)谓词)l8.交操作【intersect】的嵌套查询l语句范例语句范例:l(select部门编号from雇员表)intersect(select部门编号from部门表)l说明:说明:l交交操作就是集合中交集的概念。属于集合A且属于集合B的元素的总和就是交集。注:该操作的嵌套查询要求属性具

31、有相同的定义,包括类型和取值范围。l相当于等值连接的and连接二二.多表查询(嵌套查询之多表查询(嵌套查询之minus谓词)谓词)l9.差操作【minus】的嵌套查询l语句范例语句范例:l(select部门编号from部门表)minus(select部门编号from雇员表)l说明:说明:l差差操作就是集合中差集的概念。属于集合A(前一个子查询结果)且不属于集合B(后一个子查询结果)的元素的总和就是差集。l注意:该操作的嵌套查询要求属性具有相同的定义,包括类型和取值范围。l也可直接写-号三三.测试机数据查询圈子测试机数据查询圈子v1.2l1.单圈页,浏览量达到500-2000时的帖子标题显示ls

32、electgroupid,topicid,topictitle,viewnum,topicstatusfromdrupal_group_topicwhereviewnumbetween500and2000andtopicstatus2lorderbygroupidl备注:如果没有指定排序的话,则查询的结果是无序的,且不同圈子符合条件的帖子存在未显示在一块的现象,其中topicstatus表示帖子状态,2表示帖子已删除三三.测试机数据查询圈子测试机数据查询圈子v1.2l举例:单个帖子评论数(不含发帖人回复)超过100时的帖子标题等相关信息显示l步骤1.先查询帖子非发帖人单帖回复数:先查询帖子非发

33、帖人单帖回复数:l非发帖人,且帖子未删除回复数,其中replystatus表示回帖状态,topicstatus表示主贴状态lselectcount(drupal_group_reply.replyid)非发帖人回复数,drupal_group_reply.topicid,ldrupal_group_topic.topicstatuslfromdrupal_group_topic,drupal_group_replywheredrupal_group_reply.topicid=drupal_group_topic.topicidandreplystatus2landtopicstatus2lg

34、roupbydrupal_group_reply.topicid三三.测试机数据查询圈子测试机数据查询圈子v1.2l步骤2:在已查询的结果上再次查询对应条件,即非发帖人回复大于100的帖子相关信息lselectcount(drupal_group_reply.replyid)非发帖人回复数,drupal_group_reply.topicid,topictitlel,drupal_group_topic.groupid,drupal_group_topic.topicstatuslfromdrupal_group_topic,drupal_group_replywheredrupal_group_reply.topicid=drupal_group_topic.topicidandreplystatus2landtopicstatus2lgroupbydrupal_group_reply.topicidhaving非发帖人回复数=100已经结束!谢谢

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

当前位置:首页 > 教育专区 > 教案示例

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

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁