文章目录

  • 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