sql-第09章 数据查询

三葉Leaves Author

1. 按指定列名查询

  • USE 要使用的数据库
  • SELECT 要查询的列,跟*表示查询所有列,

    后跟 TOP n 表示只显示结果的前n项, TOP n PERCENT 获取结果集的前百分之n

    后跟 DISTINCT 可去除重复结果,但是大大降低查询效率

  • FROM 要查询的表


2.按条件查询

2.1. 关键字用法

WHERE 语句应当在 ORDER BY 语句之前使用

2.2.运算符

  1. BETWEEN 运算符包含开始值和结束值
  2. INEXIST 相似,当子表较小时用 IN ,反之用 EXIST

2.3.日期比较

SQL Sever默认的日期格式为 ‘月/日/年’

如:2004年3月16日之后出生

1
WHERE birth>'03/16/2004'

2.4.与 like 运算符混用的通配符

2.4.1. % 包含

2.4.2. _ 代表任意一个字符

1
WHERE Cname LIKE '_文_'

严格筛选中间一个字是文的三字名的学生

2.4.3. [] 范围

2.5. 转义字符

SQL Sever使用 ESCAPE 关键字定义转义字符

1
LIKE '%5#%' ESCAPE '#'

定义了转义字符 # ,如此一来紧跟 # 后面的 % 就变为普通字符,而不是通配符


3. 排序查询的顺序

3.1 设置排序方向且多列排序

  • ORDER BY 默认升序排列;后跟关键字ASC 指定升序, DESC 指定降序
1
2
3
4
USE ShopDB
SELECT *
FROM Customer
ORDER BY Cno DESC,Cname ASC

示例中会先按Cno降序排列,如果值相等,那么相等的这些又按照Cname升序排列(比如先按总分排列,总分一样的看谁英语低谁排前面🤣)

3.2 按照字段位置排序

字段名太难写或者是表达式,那么 ORDER BY n ,表示SELECT后的第n个字段

1
2
3
4
USE ShopDB
SELECT Cno,Cname,DATEDIFF(year,birthday,getdate())年龄
FROM dbo.customer
ORDER BY 3 DESC,Address ASC

查询全体客户的客户账号,姓名和年龄并按年龄降序排列,同一年龄的客户,按家庭地址升序排列。

1
DATEDIFF(时间单位,开始时间,结束时间)

此函数可以返回两段之间的时间

3.3 仅显示前3行数据

1
2
3
SELECT TOP 3 name 姓名, birth 生日
FROM stu
ORDER BY birth

查询生日最大的前五名学生,且列名是中文

  • 标题: sql-第09章 数据查询
  • 作者: 三葉Leaves
  • 创建于 : 2024-05-06 00:00:00
  • 更新于 : 2024-11-21 16:56:20
  • 链接: https://leavesblog.netlify.app/1d05b2c06d78/
  • 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
评论