SQL Server 2012 数据查询一 单表查询(基础查询、条件查询、模糊查询、统计查询、分组查询)

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章