1. 按指定列名查询
USE
要使用的数据库
-
SELECT
要查询的列,跟*
表示查询所有列,后跟
TOP n
表示只显示结果的前n项,TOP n PERCENT
获取结果集的前百分之n后跟
DISTINCT
可去除重复结果,但是大大降低查询效率 -
FROM
要查询的表
2.按条件查询
2.1. 关键字用法
WHERE
语句应当在 ORDER BY
语句之前使用
2.2.运算符
BETWEEN
运算符包含开始值和结束值IN
和EXIST
相似,当子表较小时用IN
,反之用EXIST
2.3.日期比较
SQL Sever默认的日期格式为 ‘月/日/年’
如:2004年3月16日之后出生
WHERE birth>'03/16/2004'
2.4.与 like
运算符混用的通配符
2.4.1. %
包含
2.4.2. _
代表任意一个字符
WHERE Cname LIKE '_文_'
严格筛选中间一个字是文的三字名的学生
2.4.3. []
范围
2.5. 转义字符
SQL Sever使用 ESCAPE
关键字定义转义字符
LIKE '%5#%' ESCAPE '#'
定义了转义字符
#
,如此一来紧跟#
后面的%
就变为普通字符,而不是通配符
3. 排序查询的顺序
3.1 设置排序方向且多列排序
ORDER BY
默认升序排列;后跟关键字ASC
指定升序,DESC
指定降序
USE ShopDB
SELECT *
FROM Customer
ORDER BY Cno DESC,Cname ASC
示例中会先按Cno降序排列,如果值相等,那么相等的这些又按照Cname升序排列(比如先按总分排列,总分一样的看谁英语低谁排前面🤣)
3.2 按照字段位置排序
字段名太难写或者是表达式,那么 ORDER BY n ,表示SELECT后的第n个字段
USE ShopDB
SELECT Cno,Cname,DATEDIFF(year,birthday,getdate())年龄
FROM dbo.customer
ORDER BY 3 DESC,Address ASC
查询全体客户的客户账号,姓名和年龄并按年龄降序排列,同一年龄的客户,按家庭地址升序排列。
DATEDIFF(时间单位,开始时间,结束时间)
此函数可以返回两段之间的时间
3.3 仅显示前3行数据
SELECT TOP 3 name 姓名, birth 生日
FROM stu
ORDER BY birth
查询生日最大的前五名学生,且列名是中文