




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、.,1,SQL 查询语言举例,-测试机数据(全部使用的是mobilehub2数据库数据),.,2,内容简介,一.单表查询 二.多表查询 三.圈子v1.2举例查询,.,3,一.单表查询,1. 查询某张表的所有信息显示 Select * from 表名 例如:查询drupal_group_stat表的所有信息显示 SELECT * from drupal_group_stat,.,4,一.单表查询,2.查询某张表,符合条件的信息显示 Select * from 表名 where 条件 例如:查询drupal_group_stat表中圈子id为10004的圈子信息显示 Select * from d
2、rupal_group_stat where groupid=10004,.,5,一.单表查询(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,.,6,一.单表查询(and 语句),4.查询某表中行名同时符合多个条件的信息(and语句) Select * from 表名 Where 条件
3、1 and 条件2 例如:查询drupal_group_stat表中,圈子总人数为5,且圈子回复数为10的圈子基本信息 SELECT * from drupal_group_stat where groupusernum=5 and groupreplynum=10,.,7,一.单表查询(like语句),5.查询表中某列包含某个字符*的信息 Select * from 表名 where 列名 like %*% 例如:查询表drupal_users用户昵称包含t的基本信息 SELECT * from drupal_users where name like %t%,.,8,一.单表查询,6.查询
4、表中某列以某个字符*打头的基本信息 Select *from 表名 where 列名 like *% 例如:查询表drupal_users用户昵称以t开头的基本信息 SELECT * from drupal_users where name like t%,.,9,一.单表查询(like语句),7.查询表中某列以某个字符*结尾的基本信息 Select *from 表名 where 列名 like %* 例如:查询表drupal_users用户昵称以t结尾的基本信息 SELECT * from drupal_users where name like %t,.,10,一.单表查询(like语句)
5、,8.查询表中某列以某个字符*结尾且只有2个字符的基本信息 Select *from 表名 where 列名 like _* 例如:查询表drupal_users用户昵称以t结尾,且只有2个字符的基本信息 SELECT * from drupal_users where name like _t 综上可知:匹配串中:%表示任意长度的字符串;_表示任意单个字符,.,11,一.单表查询(count 函数),9.查询某表中的总记录数 select count(*) from 表名 9.1查询某表中的总记录数,并把总记录数重命名为总记录数(as语句) select count(*) as 总记录数 f
6、rom 表名 例如:查看表drupal_group_user_group中总记录数,并对查询结果列名重命名 select count(*) as 总记录数 from drupal_group_user_group,.,12,一.单表查询(group语句),10.查看某表中以某列分组后的信息 Select * from 表名 Group by 列名 注意:group by 后面的列名信息显示必须包含在select 查询结果中 例如:1.查询drupal_group_user_group,以用户id为分组的基本信息显示 select * from drupal_group_user_group g
7、roup by userid,.,13,一.单表查询(group by语句),2.查询用户id,圈子状态,用户所用圈子数,并按用户id分组 select userid,roleid,count(*) from drupal_group_user_group group by userid 说明:分组后,按userid显示的组别只显示一个记录,并不是所有的记录,.,14,一.单表查询(order by语句),11.查询某表中信息,查询结果总数倒序排列 Select 列名1,列名2 ,count(*) from 表名 Group by 列名1 Order by count(*) desc 注意:1
8、.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,.,15,一.单表查询(having语句),12.按用户id分组查看用户所删除的圈子总数,并按总数倒序 select userid,roleid,count(*) as 总数 from
9、drupal_group_user_group group by userid HAVING(roleid=2) order by count(*) 注意:1.having条件必须包含在已查询结果selelect语句中,having和Where都是查询条件,但是where优先级比having高,所用having是建立在where查询条件上的查询;2.having后面的括号要不要都可以,.,16,一.单表查询(sum函数),13. 查询某表中某列总和数 Select sum(列名) from 表名 注意:1.sum所跟条件的列的属性必须输数值型的。2.函数后必须跟括号 例如:查看单个圈子所有的回
10、复数 select groupid,sum(groupreplynum ) from drupal_group_stat group by groupid 说明:查询结果非只有一个函数(sum等)的时候,必须使用group by语句分组,.,17,一.单表查询(avg函数),14. 查询某表中某列平均数 Select avg(列名) from 表名 注意:1.avg所跟条件的列的属性必须是数值型的。2.函数后必须跟括号,列名包含在括号中,3.不管查询的列属性是否为实数,返回的平均数是实数 例如:查看所有圈子回复数的平均数 select avg(groupreplynum ) from drup
11、al_group_stat,.,18,一.单表查询(distinct 语句),15.1查询表中圈子状态的信息 select roleid as 圈子状态 from drupal_group_user_group 15.2查询表中不同圈子状态的信息(去掉重复项的信息) select distinct roleid as 圈子状态 from drupal_group_user_group,.,19,一.单表查询(max 语句),16.查询某个表中,某列的最大值 Select max(列名) from 表名 例如:查询最多的圈子人数 select max(groupusernum) from dru
12、pal_group_stat 注意:1.函数后面必须加括号,且函数后面括号内的列值属性必须为数值型,.,20,一.单表查询(min函数),16.查询某个表中,某列的最小值 Select min(列名) from 表名 例如:查询最少的圈子人数信息 select min(groupusernum) from drupal_group_stat 注意:函数后面必须加括号,且函数后面括号内的列值属性必须为数值型,.,21,二.多表查询(简介),连接查询:若一个查询同时涉及两个或两个以上的表,则称为链接查询 连接查询种类 -笛卡尔积 -等值连接(内连接) -外连接 -自然连接 -嵌套查询,.,22,二
13、.多表查询(笛卡尔积),笛卡尔积是把表中所有的记录作乘积操作,生成大量的结果,而通常结果中可用的值邮箱。笛卡尔积出现的原因多种多样,通常是由于连接条件缺失造成的.这个很少用 例如:查询测试机表和表中的笛卡尔积记录 select * from drupal_group_user_group,drupal_users,.,23,二.多表查询(多表连接之等值连接),等值连接又称简单连接或内连接。连接条件表示为:表名1.列名1=表名2.列名2或 表1 INNER JOIN 表2 ON 条件表达式; 注意:1.当属性名在连接的两个表中是唯一的,则可省略表名;2.连条件中各属性的值应该是可比的,且字段名可
14、以相同,也不可不同;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,.,24,
15、二.多表查询(多表连接之等值连接),注意: 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
16、=drupal_group_user_group.groupid,.,25,二.多表查询(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_g
17、roup_group.groupid=drupal_group_user_group.groupid and drupal_users .uid=57555 and drupal_group_user_group.roleid=0 and groupstatus=2,.,26,二.多表查询(2个以上的表连接),也可写为: select drupal_group_group .groupid ,grouptitle from drupal_group_user_group join drupal_users on drupal_users .uid=drupal_group_user_group
18、.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,.,27,二.多表查询(2个以上的表连接),2.查找用户id为57555创建已删除的圈子id,圈子标题,圈子删除时间信息,其中groupstatus标示圈子状态,roleid标示用户对圈子的权限,groupmodifytime标示圈子修改时间
19、, 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
20、.roleid=0 and groupstatus=2,.,28,二.多表查询(外连接之左外连接),左外连接:返回左表中所有的行和右表中满足条件的行,如果右表中未满足条件的列都显示为null 语法格式: SELECT *|列名, FROM 表名1 LEFT JOIN 表名2 ON .WHERE条件 其中,1.where条件根据实际情况书写,可以有也没有,但是on后面的条件必须要有,而且on是对中间结果进行筛选,where是对最终结果筛选,on的优先级大于where;2. left JOIN =left outer join,.,29,二.多表查询(外连接),外连接与普通连接的区别 普通连接操作
21、只输出满足连接条件的元组 外连接操作以指定表为连接主体,将主体表中不满足连接条件的元组一并输出,.,30,二.多表查询(外连接之左外连接),例如:返回圈子用户表drupal_users中所有的行,显示用户所创建的圈子信息 select * from drupal_users left join drupal_group_user_group on drupal_users.uid=drupal_group_user_group.userid,.,31,二.多表查询(外连接之右外连接),右外连接:返回右表中所有的行和右表中满足条件的行,如果左表中未满足条件的列都显示为null 语法格式: SEL
22、ECT *|列名, FROM 表名1 right JOIN 表名2 ON .WHERE条件 其中,1.where条件根据实际情况书写,可以有也没有,但是on后面的条件必须要有,而且on是对中间结果进行筛选,where是对最终结果筛选,on的优先级大于where;2. right JOIN =right outer join,.,32,二.多表查询(外连接之自然连接),自然连接是去掉重复列的等值连接 SELECT *|列名, FROM 表名1 NATURAL JOIN 表名2 WHERE条件 例如:查询用户id为57555的用户创建已删除的圈子信息: select * from drupal_g
23、roup_user_group NATURAL JOIN drupal_group_group where userid=57555 and drupal_group_user_group.roleid=0 and groupstatus=2 注意:自然连接时,2个表中的字段属性并不是列名要相同,而且列的属性也要一致,否则会报错,.,33,二.多表查询(嵌套查询),嵌套查询概述 引出子查询的谓词,.,34,二.多表查询(嵌套查询简介),嵌套查询:将一个查询块(select-from-where)嵌套在一个where或having子句的条件中,称为嵌套查询。其中外层查询称为主查询,内层查询称为子
24、查询,且由内到外进行分析,子查询的结果作为主查询的查询条件. 子查询限制:不能使用order by分组语句,.,35,二.多表查询(嵌套查询之简单嵌套查询),1.简单嵌套查询 例句:select 单价表.客户, 单价表.产品名, 单价表.单价 from 单价表 where 单价表.产品名 = (select 产品表.产品名 from 产品表 where 产品表.产品ID = 102-5000) 说明:查询得到单价表中满足产品名为产品表里产品id为102-5000的产品的相关信息,.,36,二.多表查询(嵌套查询之in谓词),2.带【in】的嵌套查询 语句范例 : select 雇员表.雇员编号
25、, 雇员表.姓名, 雇员表.职位, 雇员表.薪水 from 雇员表 where 薪水 in (select 薪水 from 雇员表 where 姓名=张三) 说明: 查询得到雇员表里满足薪水符合姓名为张三的薪水的所有雇员的相关信息,比如 in(1000,1500,2000)表示薪水=1000或1500或2000的情况。注:此语句完成的查询薪水和张三相等的职员,也可以使用【not in】来进行相反的查询,.,37,二.多表查询(嵌套查询之any谓词),3.带【any】的嵌套查询 语句范例 : select 雇员表.雇员编号,雇员表.姓名, 雇员表.职务, 雇员表.薪水 from 雇员表 wher
26、e 薪水 any (select 薪水 from 雇员表 where 职务=工程师) 说明: 查询得到薪水比职务为工程师的薪水要高的职员信息。例如子查询结果为(2000,1500,1000),父查询的条件为薪水2000 or 薪水1500 or 薪水1000,.,38,二.多表查询(嵌套查询之some谓词),4.带【some】的嵌套查询 语句范例 : select 雇员表.雇员编号,雇员表.姓名, 雇员表.职务, 雇员表.薪水 from 雇员表 where 薪水= some (select 薪水 from 雇员表 where 职务=工程师) 说明: 查询得到薪水和职务为工程师的薪水一样的职员信
27、息,也就是和任意一个工程师的薪水相等的职员信息。例如子查询结果为(2000,1500,1000),父查询的条件为薪水=2000 or 薪水=1500 or 薪水=1000。 带【any】的嵌套查询和【some】的嵌套查询功能是一样的。早期的SQL仅仅允许使用【any】,后来的版本为了和英语的【any】相区分,引入了【some】,同时还保留了【any】关键词。,.,39,二.多表查询(嵌套查询之all谓词),5.带【all】的嵌套查询 语句范例 : select 雇员表.雇员编号,雇员表.姓名, 雇员表.职务, 雇员表.薪水 from 雇员表 where 薪水 all (select 薪水 fr
28、om 雇员表 where 职务=工程师) 说明: 查询得到薪水比任一工程师薪水都要高的职员信息。例如子查询结果为(2000,1500,1000),父查询的条件为薪水2000 and 薪水1500 and 薪水1000。,.,40,二.多表查询(嵌套查询之exists谓词),6.带【exists】的嵌套查询 语句范例 : select 雇员表.雇员编号, 雇员表.姓名, 雇员表.职务, 雇员表.薪水 from 雇员表, 部门表 where exists (select * from 雇员表 where 雇员表.部门编号 = 部门表.部门编号) 说明: 查询得到雇员表和部门表的部门编号相匹配的所有
29、雇员信息。 EXISTS谓词 带有EXISTS谓词的子查询不返回任何数据,只产生逻辑真值“true”或逻辑假值“false”。 若内层查询结果不为空,则返回真值 若内层查询结果为空,则返回假值 由EXISTS引出的子查询,其目标列表达式通常都用* ,因为带EXISTS的子查询只返回真值或假值,给出列名无实际意义,.,41,二.多表查询(嵌套查询之union谓词),7.并操作【union】的嵌套查询 语句范例 : (select 部门编号 from 雇员表) union (select 部门编号 from 部门表) 说明: 并操作就是集合中并集的概念。属于集合A或集合B的元素的总和就是并集。注:
30、该操作的嵌套查询要求属性具有相同的定义,包括类型和取值范围。 相当等值连接中的 or 连接条件,.,42,二.多表查询(嵌套查询之intersect谓词),8.交操作【intersect】的嵌套查询 语句范例 : (select 部门编号 from 雇员表) intersect (select 部门编号 from 部门表) 说明: 交操作就是集合中交集的概念。属于集合A且属于集合B的元素的总和就是交集。注:该操作的嵌套查询要求属性具有相同的定义,包括类型和取值范围。 相当于等值连接的and连接,.,43,二.多表查询(嵌套查询之minus谓词),9.差操作【minus】的嵌套查询 语句范例 : (select 部门编号 from 部门表) minus (select 部门编号 from 雇员表) 说明: 差操作就是集合中差集的概念。属于集合A(前一个子查询结果)且不属于集合B(后一个子查询结果)的元素的总和就是差集。 注意:该操作的嵌套查询要求属性具有相同的定义,包括类型和取值范围。 也可直接写-号,.,44,三.测试机数据查询圈子v1.2,1.单圈页,浏览量达到500-2000时的帖子标题显示 select groupid,topicid,topi
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 卫生管理考试的策略调整与更新动态分享试题及答案
- 粮食安全时政试题及答案
- 育婴师考试高效学习方法试题及答案
- 行业规范与母猪护理质量试题及答案
- 衛生管理证书考试常见试题及答案
- 电工技能证试题及答案
- 激光工程师资质考试复习方式考题试题及答案
- 激光技术发展中的挑战试题及答案
- 药剂类考试复习的基本原则及试题及答案
- 药店操作规程试题及答案
- 2025年03月四川成都农业科技中心公开招聘笔试历年典型考题(历年真题考点)解题思路附带答案详解
- 农村兄弟林地协议书
- 2024年郑州铁路职业技术学院单招职业技能测试题库必考题
- 2024北京房山区高一(下)期中数学试题及答案
- 【幼儿园绘本故事】神笔马良
- 2025年03月国家机关事务管理局所属事业单位公开招聘应届毕业生14人笔试历年典型考题(历年真题考点)解题思路附带答案详解
- 信息安全等级保护管理办法
- 《装配式生物安全实验室技术标准-》
- 体育热身活动课件
- 全过程工程咨询投标方案(技术方案)
- 旅拍店合伙人协议书范本
评论
0/150
提交评论