SQL查询语句

上传人:马*** 文档编号:243038328 上传时间:2024-09-14 格式:PPT 页数:47 大小:110KB
返回 下载 相关 举报
SQL查询语句_第1页
第1页 / 共47页
SQL查询语句_第2页
第2页 / 共47页
SQL查询语句_第3页
第3页 / 共47页
点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,SQL,查询语言举例,-,测试机数据(全部使用的是,mobilehub2,数据库数据),内容简介,一,.,单表查询,二,.,多表查询,三,.,圈子,v1.2,举例查询,一,.,单表查询,1.,查询某张表的所有信息显示,Select * from,表名,例如:查询,drupal_group_stat,表,的所有信息显示,SELECT * from,drupal_group_stat,一,.,单表查询,2.,查询某张表,符合条件的信息显示,Select * from,表名,where,条件,例如:查询,drupal_group_stat,表,中圈子,id,为,10004,的圈子信息显示,Select *,from,drupal_group_stat,where,groupid,=10004,一,.,单表查询(,or,语句),3.,查询某表中,列名,同时符合多个条件的信息(,or,语句),Select * from,表名,Where,条件,1 or,条件,2,例如:查询,drupal_group_stat,表,中,圈子总人数为,5,或,8,的基本信息显示,SELECT * from,drupal_group_stat,where,groupusernum,=5 or,groupusernum,=8,一,.,单表查询(,and,语句),4.,查询某表中,行名,同时符合多个条件的信息(,and,语句),Select * from,表名,Where,条件,1 and,条件,2,例如:查询,drupal_group_stat,表,中,圈子总人数为,5,,且圈子回复数为,10,的圈子基本信息,SELECT * from,drupal_group_stat,where,groupusernum,=5 and,groupreplynum,=10,一,.,单表查询(,like,语句),5.,查询表中某列包含某个字符*的信息,Select * from,表名,where,列名,like %*%,例如:查询表,drupal_users,用户昵称包含,t,的基本信息,SELECT * from,drupal_users,where name like %t%,一,.,单表查询,6.,查询表中某列以某个字符*打头的基本信息,Select *from,表名,where,列名,like *%,例如:查询表,drupal_users,用户昵称以,t,开头的基本信息,SELECT * from,drupal_users,where name like t%,一,.,单表查询(,like,语句),7.,查询表中某列以某个字符*结尾的基本信息,Select *from,表名,where,列名,like %*,例如:查询表,drupal_users,用户昵称以,t,结尾的基本信息,SELECT * from,drupal_users,where name like %t,一,.,单表查询(,like,语句),8.,查询表中某列以某个字符*结尾且只有,2,个字符的基本信息,Select *from,表名,where,列名,like _*,例如:查询表,drupal_users,用户昵称以,t,结尾,且只有,2,个字符的基本信息,SELECT * from,drupal_users,where name like _t,综上可知:匹配串中:,%,表示任意长度的字符串;,_,表示任意单个字符,一,.,单表查询(,count,函数),9.,查询某表中的总记录数,select count(*) from,表名,9.1,查询某表中的总记录数,并把总记录数重命名为总记录数(,as,语句),select count(*) as,总记录数,from,表名,例如:查看表,drupal_group_user_group,中总记录数,并对查询结果列名重命名,select count(*) as,总记录数,from,drupal_group_user_group,一,.,单表查询(,group,语句),10.,查看某表中以某列分组后的信息,Select * from,表名,Group by,列名,注意:,group by,后面的列名信息显示必须包含在,select,查询结果中,例如:,1.,查询,drupal_group_user_group,,以用户,id,为分组的基本信息显示,select * from,drupal_group_user_group,group by,userid,一,.,单表查询(,group by,语句),2.,查询用户,id,,圈子状态,用户所用圈子数,并按用户,id,分组,select,userid,roleid,count,(*) from,drupal_group_user_group,group by,userid,说明:分组后,按,userid,显示的组别只显示一个记录,并不是所有的记录,一,.,单表查询(,order by,语句),11.,查询某表中信息,查询结果总数倒序排列,Select,列名,1,,列名,2 ,count(*) from,表名,Group by,列名,1,Order by count(*),desc,注意:,1.order by,语句必须跟在,group by,语句后面使用;,2. ASC,表示升序,DESC,表示降序,.,默认是升序,,3.,分组的目的是进一步细化聚合函数的作用对象,例如:按用户,id,分组查看该用户所有的圈子总数,并按总数倒序,select,userid,roleid,count,(*) from,drupal_group_user_group,group by,userid,order by count(*),desc,一,.,单表查询(,having,语句),12.,按用户,id,分组查看用户所删除的圈子总数,并按总数倒序,select,userid,roleid,count,(*) as,总数,from,drupal_group_user_group,group by,userid,HAVING,(,roleid,=2,),order by count(*),注意:,1.having,条件必须包含在已查询结果,selelect,语句中,,having,和,Where,都是查询条件,但是,where,优先级比,having,高,所用,having,是建立在,where,查询条件上的查询;,2.having,后面的括号要不要都可以,一,.,单表查询(,sum,函数),13.,查询某表中某列总和数,Select sum,(列名),from,表名,注意:,1.sum,所跟条件的列的属性必须输数值型的。,2.,函数后必须跟括号,例如:查看单个圈子所有的回复数,select,groupid,sum(groupreplynum,) from,drupal_group_stat,group by,groupid,说明:查询结果非只有一个函数(,sum,等)的时候,必须使用,group by,语句分组,一,.,单表查询(,avg,函数),14.,查询某表中某列平均数,Select,avg,(列名),from,表名,注意:,1.avg,所跟条件的列的属性必须是数值型的。,2.,函数后必须跟括号,列名包含在括号中,,3.,不管查询的列属性是否为实数,返回的平均数是实数,例如:查看所有圈子回复数的平均数,select,avg(groupreplynum,) from,drupal_group_stat,一,.,单表查询(,distinct,语句),15.1,查询表中圈子状态的信息,select,roleid,as,圈子状态,from,drupal_group_user_group,15.2,查询表中不同圈子状态的信息(去掉重复项的信息),select,distinct,roleid,as,圈子状态,from,drupal_group_user_group,一,.,单表查询(,max,语句),16.,查询某个表中,某列的最大值,Select max,(列名),from,表名,例如:查询最多的圈子人数,select,max(groupusernum,) from,drupal_group_stat,注意:,1.,函数后面必须加括号,且函数后面括号内的列值属性必须为数值型,一,.,单表查询(,min,函数),16.,查询某个表中,某列的最小值,Select min,(列名),from,表名,例如:查询最少的圈子人数信息,select,min(groupusernum,) from,drupal_group_stat,注意:函数后面必须加括号,且函数后面括号内的列值属性必须为数值型,二,.,多表查询(简介),连接查询:若一个查询同时涉及两个或两个以上的表,则称为链接查询,连接查询种类,-,笛卡尔积,-,等值连接(内连接),-,外连接,-,自然连接,-,嵌套查询,二,.,多表查询(笛卡尔积),笛卡尔积是把表中所有的记录作乘积操作,生成大量的结果,而通常结果中可用的值邮箱。笛卡尔积出现的原因多种多样,通常是由于,连接条件,缺失造成的,.,这个很少用,例如:查询测试机表和表中的笛卡尔积记录,select * from,drupal_group_user_group,drupal_users,二,.,多表查询(多表连接之等值连接),等值连接又称简单连接或内连接。连接条件表示为:,表名,1.,列名,1=,表名,2.,列名,2,或 表,1 INNER JOIN,表,2 ON,条件表达式,;,注意:,1.,当属性名在连接的两个表中是唯一的,则可省略表名;,2.,连条件中各属性的值应该是可比的,且字段名可以相同,也不可不同;,3.jion on=inner,jion,on,例如:,drupal_users,中的,uid,和表,drupal_group_user_group,中的,userid,都是表示用户,id,的信息的,那么这,2,个表的等值连接语句如下:,select * from,drupal_group_user_group,drupal_users,where,drupal_group_user_group.userid,=,drupal_users.uid,或:,select * from,drupal_group_user_group,join,drupal_users,on,userid,=,uid,二,.,多表查询(多表连接之等值连接),注意:,1.,多表连接中,记录筛选语句同样写在,where,语句中,,2.,查询结果,列名,不能有二义性,例如:,表,drupal_group_group,的,groupid,和,drupal_group_user_group,的,groupid,列名都标示圈子,id,信息,在这两个表中,如果查询结果中有,groupid,的显示,必须指明在那个表中的,groupid,select,drupal_group_group.groupid,from,drupal_group_group,drupal_group_user_group,where,drupal_group_group.groupid,=,drupal_group_user_group.groupid,二,.,多表查询(,2,个以上的表连接),1.,查找用户,id,为,57555,创建已删除的圈子,id,,圈子标题信息,其中,groupstatus,标示圈子状态,,roleid,标示用户对圈子的权限,select,drupal_group_group,.,groupid,grouptitle,from,drupal_group_user_group,drupal_users,drupal_group_group,where,drupal_users,.,uid,=,drupal_group_user_group.userid,and,drupal_group_group.groupid,=,drupal_group_user_group.groupid,and,drupal_users,.,uid,=57555,and,drupal_group_user_group.roleid,=0 and,groupstatus,=2,二,.,多表查询(,2,个以上的表连接),也可写为:,select,drupal_group_group,.,groupid,grouptitle,from,drupal_group_user_group,join,drupal_users,on,drupal_users,.,uid,=,drupal_group_user_group.userid,Join,drupal_group_group,on,drupal_group_group.groupid,=,drupal_group_user_group.groupid,Where,drupal_users,.,uid,=57555,and,drupal_group_user_group.roleid,=0 and,groupstatus,=2,二,.,多表查询(,2,个以上的表连接),2.,查找用户,id,为,57555,创建已删除的圈子,id,,圈子标题,圈子删除时间信息,,其中,groupstatus,标示圈子状态,,roleid,标示用户对圈子的权限,,groupmodifytime,标示圈子修改时间,,select,drupal_group_group,.,groupid,groupmodifytime,grouptitle,from,drupal_group_user_group,drupal_users,drupal_group_group,where,drupal_users,.,uid,=,drupal_group_user_group.userid,and,drupal_group_group.groupid,=,drupal_group_user_group.groupid,and,drupal_users,.,uid,=57555,and,drupal_group_user_group.roleid,=0 and,groupstatus,=2,二,.,多表查询(外连接之左外连接),左外连接:返回左表中所有的行和右表中满足条件的行,,如果右表中未满足条件的列都显示为,null,语法格式:,SELECT *|,列名, FROM,表名,1,LEFT,JOIN,表名,2,ON,.,.,WHERE,条件,其中,,1.where,条件根据实际情况书写,可以有也没有,但是,on,后面的条件必须要有,而且,on,是对中间结果进行筛选,,where,是对最终结果筛选,,on,的优先级大于,where,;,2.,left JOIN,=left outer join,二,.,多表查询(外连接),外连接与普通连接的区别,普通连接操作只输出满足连接条件的元组,外连接操作以指定表为连接主体,将主体表中不满足连接条件的元组一并输出,二,.,多表查询(外连接之左外连接),例如:返回圈子用户表,drupal_users,中所有的行,显示用户所创建的圈子信息,select * from,drupal_users,left join,drupal_group_user_group,on,drupal_users.uid,=,drupal_group_user_group.userid,二,.,多表查询(外连接之右外连接),右外连接:返回右表中所有的行和右表中满足条件的行,,如果左表中未满足条件的列都显示为,null,语法格式:,SELECT *|,列名, FROM,表名,1,right JOIN,表名,2,ON,.,.,WHERE,条件,其中,,1.where,条件根据实际情况书写,可以有也没有,但是,on,后面的条件必须要有,而且,on,是对中间结果进行筛选,,where,是对最终结果筛选,,on,的优先级大于,where,;,2.,right JOIN,=right outer join,二,.,多表查询(外连接之自然连接),自然连接是去掉重复列的等值连接,SELECT *|,列名, FROM,表名,1,NATURAL JOIN,表名,2,WHERE,条件,例如:查询用户,id,为,57555,的用户创建已删除的圈子信息:,select * from,drupal_group_user_group,NATURAL JOIN,drupal_group_group,where,userid,=57555 and,drupal_group_user_group.roleid,=0 and,groupstatus,=2,注意:自然连接时,,2,个表中的字段属性并不是列名要相同,而且列的属性也要一致,否则会报错,二,.,多表查询(嵌套查询),嵌套查询概述,引出子查询的谓词,二,.,多表查询(嵌套查询简介),嵌套查询:将一个查询块(,select-from-where,)嵌套在一个,where,或,having,子句的条件中,称为嵌套查询。其中外层查询称为主查询,内层查询称为子查询,且由内到外进行分析,子查询的结果作为主查询的查询条件,.,子查询限制:不能使用,order by,分组语句,二,.,多表查询(嵌套查询之简单嵌套查询),1.,简单嵌套查询,例句:,select,单价表,.,客户,单价表,.,产品名,单价表,.,单价,from,单价表,where,单价表,.,产品名,= (select,产品表,.,产品名,from,产品表,where,产品表,.,产品,ID = 102-5000),说明:查询得到单价表中满足产品名为产品表里产品,id,为,102-5000,的产品的相关信息,二,.,多表查询(嵌套查询之,in,谓词),2.,带,【in】,的嵌套查询,语句范例,:,select,雇员表,.,雇员编号,雇员表,.,姓名,雇员表,.,职位,雇员表,.,薪水,from,雇员表,where,薪水,in (select,薪水,from,雇员表,where,姓名,=,张三,),说明:,查询得到雇员表里满足薪水符合姓名为张三的薪水的所有雇员的相关信息,比如,in,(,1000,,,1500,,,2000,)表示薪水,=1000,或,1500,或,2000,的情况。注:此语句完成的查询薪水和张三相等的职员,也可以使用,【not in】,来进行相反的查询,二,.,多表查询(嵌套查询之,any,谓词),3.,带,【any】,的嵌套查询,语句范例,:,select,雇员表,.,雇员编号,雇员表,.,姓名,雇员表,.,职务,雇员表,.,薪水,from,雇员表,where,薪水, any (select,薪水,from,雇员表,where,职务,=,工程师),说明:,查询得到薪水比职务为工程师的薪水要高的职员信息。例如子查询结果为(,2000,,,1500,,,1000,),父查询的条件为,薪水,2000 or,薪水,1500 or,薪水,1000,二,.,多表查询(嵌套查询之,some,谓词),4.,带,【some】,的嵌套查询,语句范例,:,select,雇员表,.,雇员编号,雇员表,.,姓名,雇员表,.,职务,雇员表,.,薪水,from,雇员表,where,薪水,= some (select,薪水,from,雇员表,where,职务,=,工程师),说明:,查询得到薪水和职务为工程师的薪水,一样,的职员信息,也就是和任意一个工程师的薪水相等的职员信息。例如子查询结果为(,2000,,,1500,,,1000,),父查询的条件为,薪水,=2000 or,薪水,=1500 or,薪水,=1000,。,带,【any】,的嵌套查询和,【some】,的嵌套查询功能是一样的。早期的,SQL,仅仅允许使用,【any】,,后来的版本为了和英语的,【any】,相区分,引入了,【some】,,同时还保留了,【any】,关键词。,二,.,多表查询(嵌套查询之,all,谓词),5.,带,【all】,的嵌套查询,语句范例,:,select,雇员表,.,雇员编号,雇员表,.,姓名,雇员表,.,职务,雇员表,.,薪水,from,雇员表,where,薪水, all (select,薪水,from,雇员表,where,职务,=,工程师),说明:,查询得到薪水比任一工程师薪水都要高的职员信息。例如子查询结果为(,2000,,,1500,,,1000,),父查询的条件为,薪水,2000 and,薪水,1500 and,薪水,1000,。,二,.,多表查询(嵌套查询之,exists,谓词),6.,带,【exists】,的嵌套查询,语句范例,:,select,雇员表,.,雇员编号,雇员表,.,姓名,雇员表,.,职务,雇员表,.,薪水,from,雇员表,部门表,where exists,(,select * from,雇员表,where,雇员表,.,部门编号,=,部门表,.,部门编号),说明:,查询得到雇员表和部门表的部门编号相匹配的所有雇员信息。,EXISTS,谓词,带有,EXISTS,谓词的子查询不返回任何数据,只产生逻辑真值“,true”,或逻辑假值“,false”,。,若内层查询结果不为空,则返回真值,若内层查询结果为空,则返回假值,由,EXISTS,引出的子查询,其目标列表达式通常都用* ,因为带,EXISTS,的子查询只返回真值或假值,给出列名无实际意义,二,.,多表查询(嵌套查询之,union,谓词),7.,并操作,【union】,的嵌套查询,语句范例,:,(,select,部门编号,from,雇员表),union,(,select,部门编号,from,部门表),说明:,并操作就是集合中并集的概念。属于集合,A,或集合,B,的元素的总和就是并集。注:该操作的嵌套查询要求属性具有相同的定义,包括类型和取值范围。,相当等值连接中的,or,连接条件,二,.,多表查询(嵌套查询之,intersect,谓词),8.,交操作,【intersect】,的嵌套查询,语句范例,:,(,select,部门编号,from,雇员表),intersect,(,select,部门编号,from,部门表),说明:,交,操作就是集合中交集的概念。属于集合,A,且属于集合,B,的元素的总和就是交集。注:该操作的嵌套查询要求属性具有相同的定义,包括类型和取值范围。,相当于等值连接的,and,连接,二,.,多表查询(嵌套查询之,minus,谓词),9.,差操作,【minus】,的嵌套查询,语句范例,:,(,select,部门编号,from,部门表),minus,(,select,部门编号,from,雇员表),说明:,差,操作就是集合中差集的概念。属于集合,A,(前一个子查询结果)且不属于集合,B,(后一个子查询结果)的元素的总和就是差集。,注意:该操作的嵌套查询要求属性具有相同的定义,包括类型和取值范围。,也可直接写,-,号,三,.,测试机数据查询圈子,v1.2,1.,单圈页,浏览量达到,500-2000,时的帖子标题显示,select,groupid,topicid,topictitle,viewnum,topicstatus,from,drupal_group_topic,where,viewnum,between 500 and 2000 and,topicstatus,2,order by,groupid,备注:如果没有指定排序的话,则查询的结果是无序的,且不同圈子符合条件的帖子存在未显示在一块的现象,其中,topicstatus,表示帖子状态,,2,表示帖子已删除,三,.,测试机数据查询圈子,v1.2,举例:单个帖子评论数,(,不含发帖人回复,),超过,100,时的帖子标题等相关信息显示,步骤,1.,先查询帖子非发帖人单帖回复数:,非发帖人,且帖子未删除回复数,其中,replystatus,表示回帖状态,,topicstatus,表示主贴状态,select,count(drupal_group_reply.replyid,),非发帖人回复数,drupal_group_reply.topicid,drupal_group_topic.topicstatus,from,drupal_group_topic,drupal_group_reply,where,drupal_group_reply.topicid,=,drupal_group_topic.topicid,and,replystatus,2,and,topicstatus,2,group by,drupal_group_reply.topicid,三,.,测试机数据查询圈子,v1.2,步骤,2,:在已查询的结果上再次查询对应条件,即非发帖人回复大于,100,的帖子相关信息,select,count(drupal_group_reply.replyid,),非发帖人回复数,drupal_group_reply.topicid,topictitle,drupal_group_topic.groupid,drupal_group_topic.topicstatus,from,drupal_group_topic,drupal_group_reply,where,drupal_group_reply.topicid,=,drupal_group_topic.topicid,and,replystatus,2,and,topicstatus,2,group by,drupal_group_reply.topicid,having,非发帖人回复数,=100,已经结束!谢谢,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 小学资料


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

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


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