赞
踩
1.最基本的SQL查询语句
2.条件查询
3.高级查询
4.分组查询
1.连接查询(联接查询)内连接语法
2.外连接
3.合并结果集
目录
一、单表查询
1.最基本的SQL查询语句
特点:SQL语言是一种非过程化的结构查询语句;
语法:SELECT *|{字段名1,字段名2,字段名3,......}FROM 表名
例:查询TBL_Bookinfo 表所有图书的索取号,标准编号,书名,并用中文显示列名
select bookid as 索取号 ,isbn as 标准编号 ,bookname as 书名 from library00.tbl_bookkinfo;
2.条件查询
语法:
主语句:SELECT [DISTINCT] *|{字段名1,字段名2,字段名3,......}FROM 表名
子语句:[WHERE 条件表达式1]
[GROUP BY 字段名 [HAVING 条件表达式2 ]]
[ORDER BY 字段名 [ASC|DESC]]
[LIMIT [OFFSET,]记录数];
=用于相等比较
>表示大于比较
<表示小于比较
>=表示大于等于比较
<=表示小于等于比较
<>、!表示不等于比较
【例1】在 TBL _ Bookinfo 表中查询所有"清华大学出版社"出版的书
select * from TBL _ Bookinfo where Publisher ="清华大学出版社"
【例2】在 TBL _ Bookinfo 表查询95年及95年以后出版的书
select * from TBL _ Bookinfo where PublishDate >='1995-1-1';
运算符
AND :逻辑与,操作数全部为真,则结果为1,否则为0
OR :逻辑或,操作数中只要有一个为真,则结果为1,否则为0
NOT :逻辑非,操作数为0,则结果为1,操作数为1,则结果为0
【例3】查询不是"清华大学出版社"出版的书。
select * from TBL Bookinfo where not Publisher ="清华大学出版社";
【例4】查询所有"清华大学出版社"或"电子工业出版社"出版的书
- select * from TBL Bookinfo
- where Publisher ='清华大学出版社' or Publisher ='电子工业出版社';
【例5】在 TBL _ Bookinfo 表查询页数在200至400之间、同时出版社为"清华大学
出版社"的书
- select · from TBL _ Bookinfo
- where Pagecount >=200 and Pagecount <=400 and Publisher ='清华大学出版社'
运算符
BETWEENAND ..AND...:在指定的闭区间范围内
NOT BETwEEN ...AND... :不在指定的闭区间范围内
一般用于数值和日期型数据
注意: between .. an 是包含边界的
【例6】从 TBL Bookinfo 表中检索1990年年出版的图书信息。
- select * from TBL _ Bookinfo
- where PublishDate between '1990-0-01-01' and '1990-12-31;
IN 关键字
函数名
INO :在给定的集合内
NOT INO :不在给定的集合内
【例7】从 TBL _ Bookinfo 表中检索出索取号为'TB11/46',' TG /71',TG38-62/12'的图书信息。
select · from TBL _ Bookinfo
where BookID in ('TB11/46', TG /71,TG38-62/12');
#等价于
select * from TBL _ Bookinfo
where BooklD ='TB11/46' or BooklD = TG /71' or BookID ='TG38-62/12';
3.高级查询
实际应用中,出于对数据的分析需求,有时需要去除查询记录中重复的数据。可使用 DISTINCT (去重复值子句)去除重复记录(消除重复行,只保留一条)。
语法: DISTINCT 字段名1[,字段名2]..
【例1】在 TBL _ Bookinfo 表中检索所有的出版社
select Publisher from TBL _ Bookinfo ; select distinct Publisher from TBL _ Bookinfo ;
在项目开发时,为了使查询的数据结果满足用户的要求,通常使用 ORDER BY (排序子句)对查询出的数据进行上升或下降的排序。
SQL 提供了两种排序的方式,分别为单字段排序和多字段排序。
单字段排序(单重排序)
语法: ORDER BY 字段名[ ASC | DESC ]
说明: ASC 升序, DESC 降序,缺省值为升序
【例2】按出版日期的升序检索 TBL _ Bookinfo 表的记录
select * from TBL _ Bookinfo order by PublishDate asc ;
多字段排序(多重排序)
语法: ORDER BY 字段名1[ ASC | DESC ][,字段名2[ ASC | DESC ]].
说明:多字段排序首先按照第一字段值排序,当第一字段的值相同时,再按照第二字段值进行排序,依次类推。
【例4】按出版社的降序和出版日期的升序检索 TBL _ Bookinfo 表的记录
select * from TBL Bookinfo order by Publisher desc , PublishDate asc ;
【例1】查询借阅表中第6-10行记录。
select * from TBL Borrowlnfo limit 5,5;
【例2】从 TBL _ Bookinfo 表中检索出最厚的三本书的书名、出版社及页数。
- select BookName , Publisher , PageCount
- from TBL Bookinfo
- order by PageCount desc
- limit 3;-- limit 0,3
4.分组查询
HAVING 子句
统计筛选:对查询的数据分组时,可以利用 HAVING (条件子句)根据条件进行数据筛选,它与前面学习过的 WHERE (条件子句)功能相同,但是在实际运用时两者有一定的区别。
语法如下:
SELECT [ DISTINCT ]字段列表 FROM 数据表名
[ WHERE 条件表达式]
GROUP BY 字段名[ ASC | DESC ][...]
HAVING 条件表达式;
【例3】从 TBL _ Bookinfo 表查询出各出版社的图书册数在2册以上的图书册数。
1.分组统计
- select publisher , count (*) from T8L Bookinfo
- group by publisher ;
2.分组统计筛选
- select publisher , count (*) from TBL _ Bookinfo
- group by publisher having count (*)>2;
GROUP BY 多重分组
多字段分组统计:按某个字段进行分组后,对已经分组的数据进行再次分组的操作。
语法: GROUP BY 字段名1[ ASC | DESC ][,字段名2[ ASC | DESC ]…]
说明:查询出的数据首先按照字段1进行分组(排序),再将字段1值相同的结果按照字段2进行分组(排序),依次类推。
【例1】从 TBL _ User 表中统计各班的人数
select class 班级, count (*)人数 from tbl _ user group by class ;
【例2】从 TBL _ User 表中统计男女生人数
select sex 性别, count (*)人数 from tbl _ user group by sex ;
二、多表查询
多表查询的三种方式
根据两个表或多个表的列之间的关系,从这些表中查询数据。
指用一条 SELECT 语句作为另一条 SELECT 语句的一部分所构成的查询。
指将多个查询结果集合并成一个结果集。
1、连接查询(联接查询)内连接语法
内连接是最常见的连接查询,它根据匹配条件(连接条件)返回第一个表与第二个表所有匹配成功的记录,语法如下:
- SELECT 输出项
- FROM 表1[ INNER ] JOIN 表2 ON 表2.公共列=表1.公
- 共列;
ON 用于指定内连接的连接条件。在不设置 ON 时,与交叉连接等价。升级到三表查询,语法如下:
- SELECT 输出项
- FROM 表1
- [ INNER ] JOIN 表2 ON 表2.公共列=表1.公共列
- [ INNER ] JOIN 表 ON 表3.公共列=表1|2.公共列;
【例1】查询出页数大于200页的图书索取号,书名,出版社,类别名
- select a . BookID , a . BookName , a . Publisher , b . ClassName
- from TBL Bookinfo as a inner
- kClass as b
- on a . ClassID = b . ClassID
- where a . PageCount >200;
【例2】查询尚未归还的借阅信息(包括:书名、借书时间、读者名)
- select bo . BookName , br . BorrowDate , u . UserName
- from TBL _ Borrowinfo as br
- inner join TBL _ Bookinfo as bo
- on br . BooklD = bo . BookID
- inner join TBL User as u on br . UserlD = u . UserlD where br . isReturned =0
外连接
关键字: LEFT [ OUTER ] JOIN ON
说明:关键字左侧的表的所有数据均显示,关键字右侧的表匹配内容显示
无对应内容使用 NULL 填充
【例1】使用左外连接
- SELECT f .*,O.*
- FROM fruit f LEFT JOIN origin o ON f . oid = o . oid
关键字: RIGHT [ OUTER ] JOIN ON
说明:关键字右侧的表的所有数据均显示,关键字左侧的表匹配内容显示
无对应内容使用 NULL 填充
【例2】使用右外连接
- SELECT f .*,0.*
- FROM fruit f RIGHT JOIN origin o ON f . oid = o . oid
2、子查询
一条 SELECT 语句嵌套在另一条语句内部,即为子查询。它可以嵌套在 SELECT 、 DELETE 、 INSERT INTO 、 CREATE TALBE 语句中;
(1)子查询按出现的位置分类: where 子查询、 from 子查询
where 子查询:子查询作为查询条件
from 子查询:子查询作为表
(2)通常情况下, where 子查询的语句都可以写成连接查询的语句
子查询作为查询条件
1.标量子查询:子查询返回的结果是一个数据(惟一值),即一行一列。
语法: SELECT 主查询 WHERE 字段名=(标量子查询)#或其他比较运算符
2.列子查询:子查询返回的结果是一个字段符合条件的所有数据,即一列多行(集合)。
语法: SELECT 主查询 WHERE 字段名 in (列子查询)#或 not in ()
3.行子查询*:子查询的结果是一条包含多个字段的记录,即一行多列。
语法: SELECT 主查询 WHERE (指定字段名1,指定字段名2,…)=(行子查询)
子查询作为表
表子查询( FROM 子查询)*:子查询的返回结果用于 FROM 数据源,它是一个符合二维表结构的数据,可以是一行一列、一列多行、一行多列或多行多列。
语法: SELECT 输出项 FROM ( SELECT 子查询)[ AS ]别名
【例1】显示各出版社最厚的图书出版社、页数、书名
主语句
select Publisher , PageCount , bookname from LIBRARYO0.TBL BookInfo
子查询
- select Publisher , MAX ( PageCount ) from LIBRARY00.TBL Bookinfo
- group by Publisher
删除使用子查询
【例2】删除"韦天华"的所有借书记录。
- delete from LIBRARYOO . TBL Borrowinfo
- where userid in ( select userid from LIBRARYO0.TBL_ User where UserName ='韦天华')
3、合并结果集
联合查询是多表查询的一种方式,在保证多个 SELECT 语句的查询字段数相同情况下,合并多个查询的结果。 UNION 是实现联合查询的关键字。 UNION 运算符:把多个 SELECT 语句的返回结果组合到一个结果集中。
SELECT 查询语句1
UNION [ ALL ]
SELECT 查询语句2
【例1】在 TBL Bookinfo 表中查询所有"清华大学出版社"或"电子工业出
版社"出版的书
#使用组合条件
- SELECT bookname , author , publisher
- FROM TBL Bookinfo
- WHERE Publisher ='清华大学出版社' OR Publisher ='电子工业出版社';
#使用 UNION
- SELECT bookName , author , publisher
- FROM TBLBookinfoWHEREPublisher
- UNION
- SELECT bookName , author , publisher
- FROM TBL Bookinfo WHERE Publisher =* FIE ;
【例2】查询图书信息表中最厚五本书及最薄的五本书
#使用 union
- ( SELECT * FROM tbl bookinfo ORDER BY pagecount DESC LIMIT 5) UNION
- ( SELECT * FROM tbI bookinfo ORDER BY pagecount ASC LIMIT 5);
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。