文章目录
- SQL语法格式
- 单表查询
- 1.基础查询
- 2.条件查询
- 3.模糊查询
- 4.统计查询
- 5.分组查询
SQL语法格式
SELECT [all | DISTINCT] <目标列表达式> [别名] [,<目标列表达式> [别名]]...
FROM <表名或视图名> [别名] [,<表名或视图名> [别名]]... | (<SELECT语句>) [AS] <别名>
[WHERE <条件表达式>]
[GROUP BY <列名1> [HAVING <条件表达式>]]
[ORDER BY <列名2> [AES|DESC]]
单表查询
1.基础查询
1. 查询表中的所有数据,返回所有信息
语法格式:
SELECT * FROM <表名或视图名>
使用示例:返回student表的所有信息
select * from student
2. 查询表中的所有数据,返回部分信息
语法格式:
SELECT <需要返回的属性列1> [,<需要返回的属性列2>]... FROM <表名或视图名>
使用示例:返回student表的学号、姓名、性别信息
select StuNo,StuName,Sex from student
3. 查询表中的所有数据,返回部分信息,改变标题显示
语法格式:
SELECT <需要返回的属性列1> 别名1 [,<需要返回的属性列2> 别名2]... FROM <表名或视图名>
使用示例:返回student表的学号、姓名、性别信息,并以学号、姓名、性别作为标题
select StuNo 学号,StuName 姓名,Sex 性别
from student
4. 查询表中前N条数据
语法格式:
SELECT TOP N <目标列表达式> FROM <表名或视图名>
使用示例:返回student表前5条数据
select TOP 5 *
from student
5. 查询表中前N%调数据
语法格式:
SELECT TOP N PERCENT <目标列表达式> FROM <表名或视图名>
使用示例:返回student表前10%的数据
select TOP 10 percent
from student
6. 查询表中数据,消除重复行
语法格式:
SELECT DISTINCT <需要消除重复行的目标列表达式> FROM <表名或视图名>
--使用distinct来消除重复数据
使用示例:返回student表中的班级编号,并消除相同的班级编号
select distinct ClassID
from student
7. 查询表中数据,并进行排序
语法格式:
SELECT <目标列表达式>
FROM <表名或视图名>
ORDER BY [ASC|DESC]
--ASC 为升序排序,如果不直接写明,则默认情况下认为是升序排序
--DESC为降序排序
使用示例:返回student表的所有信息,并按照学号进行降序排序
select *
from student
order by StuNo desc
2.条件查询
1. 比较条件查询
语法格式:
SELECT <目标列表达式>
FROM <表名或视图名>
WHERE <比较条件表达式>
比较条件有:
= 等于
> 大于
< 小于
>= 大于等于
<= 小于等于
!=或<> 不等于
!> 不大于
!< 不小于
使用示例:查询学生年龄小于20岁的学生
select *
from student
where Age < 20
2. 范围条件查询
语法格式:
SELECT <目标列表达式>
FROM <表名或视图名>
WHERE <范围条件表达式>
范围条件有:
BETWEEN AND 在指定范围内,包括指定范围的上限和下限
NOT BETWEEN AND 不在指定范围内,不包括指定范围的上限和下限
使用示例:查询学生年龄在18-24岁的学生(包括18岁和24岁)
select *
from student
where Age between 18 and 24
3. 集合条件查询
语法格式:
SELECT <目标列表达式>
FROM <表名或视图名>
WHERE <集合条件表达式>
集合条件有:
IN 在指定集合内
NOT IN 不在指定集合内
使用示例:查询所在班级ID为1903和1905的学生
select *
from student
where ClassID IN(1903,1905)
4. 空值条件查询
语法格式:
SELECT <目标列表达式>
FROM <表名或视图名>
WHERE <空值·条件表达式>
空值条件有:
IS NULL 是空值
IS NOT NULL 不是空值
使用示例:查询没有年龄的学生信息
select *
from student
where Age is null
5. 逻辑条件查询
语法格式:
SELECT <目标列表达式>
FROM <表名或视图名>
WHERE <逻辑条件表达式>
逻辑条件有:
AND 与逻辑,两个或多个条件同时满足时返回查询结果
OR 或逻辑,任何一个条件满足时返回查询结果
NOT 非逻辑,不满足条件时返回查询结果
使用示例:查询年龄为20岁且所在班级编号为1903的学生信息
select *
from student
where Age=20 and ClassID=1903
3.模糊查询
通配符 | 含义 | 示例 |
% | 表示0个或0个以上的任意字符 | ‘A%’:匹配以A开头的任意字符串; ‘%A’:匹配以A结尾的任意字符串; ‘A%B’:匹配以A开头,以B结尾的任意字符串; ‘%AB%’:匹配包含AB的任意字符串 |
_(下划线) | 表示任意一个字符 | ‘_A’:匹配以A结尾的并且长度为2个字符的字符串 |
[ ] | 表示方括号内列出的任意单个字符 | ‘[A-K]%’:匹配以A到K中的任意一个字符开头的字符串 |
[ ^ ] | 表示不在方括号内列出的任意单个字符 | ‘[^A-K]%’:匹配不是以A到K中的任意一个字符开头的字符串 |
语法格式:
SELECT <目标列表达式>
FROM <表名或视图名>
WHERE <模糊条件表达式>
--模糊条件使用LIKE或NOT LIKE进行查找
使用示例:查询姓张的学生信息
select *
from student
where StuName like '张%'
4.统计查询
常见聚合函数
函数名 | 功能 |
COUNT | 统计列值或者记录的个数,COUNT(列名)统计列值个数;COUNT(*)统计记录条数 |
SUM | 计算列值的总和,该列值的数据类型必须为数值型 |
AVG | 计算列值的平均值,该列值的数据类型必须为数值型 |
MAX | 计算列值中的最大值 |
MIN | 计算列值中的最小值 |
语法格式:
SELECT <含有统计函数的目标列表达式>
FROM <表名或视图名>
WHERE <查询条件表达式>
使用示例:查询student表的总记录数
select count(*)
from student
使用示例:查询student表中学生的平均年龄
select avg(Age) 平均年龄
from student
5.分组查询
语法格式:
SELECT <目标列表达式>
FROM <表名或视图名>
[WHERE <查询条件表达式>]
GROUP BY <进行分组的列名>
[HAVING <条件表达式>]
--WHERE子句是在分组前过滤数据
--HAVING子句是在分组后过滤数据,通常与GROUP BY子句一起用来筛选结果集内的组
使用示例:查询student表中每个班的人数
select count(*)
from student
group by ClassID