(SQL)数据查询

本文介绍了SQL数据查询的基本操作,包括查询所有字段、按条件筛选、使用特殊关系运算符如IN、IS NULL以及BETWEEN,以及进行模糊匹配。此外,还讲解了如何通过ORDER BY子句对查询结果进行升序或降序排序。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、简单查询

1.查询所有字段

SELECT * FROM 表名
--查询所有学生的信息
SELECT * FROM student
  1. 查询指定字段(可视为投影运算)
SELECT 字段列表(逗号隔开) FROM 表名
--查询班级、姓名、学号信息
SELECT sclass,snumb,sname FROM student
  1. 去除重复信息
SELECT DISTINCT 字段名 FROM 表名

关键字DISTINCT用于去重

--查询有哪些班级
SELECT DISTINCT sclass FROM student 
  1. 根据现有值计算新值

设有数据表book,有6个字段bnumb,bname,author,press,pdate,price

--查询图书打9折后的价格
SELECT bnumb,bname,author,press,pdate,price*0.9 FROM book

也可以用关键字AS为字段重命名

SELECT bnumb,bname,author,press,pdate,price*0.9 AS discount 
FROM book

也可以用关键字INTO将查询结果插入新表,INTO后面为新表名

SELECT bnumb AS '书号',bname AS '书名',author AS '作者',press AS '出版社',pdate AS '出版日期',price*0.9 AS discount 
INTO discount
FROM book

二、按条件查询

--一般格式
SELECT <列名列表>
FROM <表名>
WHERE <条件>

条件:关系运算符、逻辑运算符连接起来的表达式;关系运算符可以连接数值、字符串、日期等类型的数据或表达式。

--查询航天班的学生信息
SELECT * FROM student 
WHERE sclass = '航天'

--查询年龄在2022岁之间的学生信息
SELECT * FROM student
WHERE sage<=22 AND sage>=20

--查询年龄不在2022岁之间的学生信息
SELECT * FROM student
WHERE NOT (sage<=22 AND sage>=20)

SELECT * FROM student
WHERE sage NOT BETWEEN 18 AND 20

--查询航天班年龄在2022岁之间的学生信息
SELECT * FROM student
WHERE sclass = '航天' AND sage<=22 AND sage>=20

三、使用特殊关系运算符查询

IN 在集合中

NOT IN 不在集合中

--查询籍贯是陕西、河南的学生
SELECT * FROM student
WHERE province IN('陕西','河南')

IS NULL 是空

IS NOT NULL 非空

--查询没填电话号码的学生
SELECT * FROM student
WHERE stel IS NULL

BETWEEN 起始值 AND 终止值 :在两值之间

NOT BETWEEN 起始值 AND 终止值:不在两值之间

注:

① 区间是闭区间

② 两值的类型可以是数值、字符串或日期型

③ 日期做终止值时,不包括终止值那一天

--查询年龄在20到22岁之间的学生信息
SELECT * FROM student
WHERE sage BETWEEN 18 AND 20

LIKE 字符串

NOT LIKE 字符串

利用通配符实现模糊匹配

% :匹配0个或多个任意字符

_ :匹配一个任意字符

[] :匹配集合中的任意一个字符

[^] :不匹配集合中任一个字符

--查询姓"陈"的同学的信息
SELECT * FROM student
WHERE sname LIKE '陈%'

--查询名字中含有”雨“字同学的信息
SELECT * FROM student
WHERE sname LIKE '%雨%'

--查询姓“郑”的,且名字为两个字的同学的信息
SELECT * FROM student
WHERE sname LIKE '郑_'

--查询姓“赵、钱、孙、李的同学的信息
SELECT * FROM student
WHERE sname LIKE '[赵钱孙李]%'

--查询不是姓“赵、钱、孙、李的同学的信息
SELECT * FROM student
WHERE sname LIKE '[^赵钱孙李]%'

四、对查询结果进行排序

使用ORDER BY子句

--一般格式
SELECT <列名列表> FROM <表名>
[WHERE 条件]
ORDER BY <字段名1> [ASC|DESC], <字段名2> [ASC|DESC] ...

ASC表示按字段值升序排列(ascend),默认升序

DESC表示按字段值降序排列(descend)

--查询航天班的学生的姓名、年龄、按年龄从小到大排序(升序)
SELECT sanme,sage FROM student 
WHERE sclass = '航天'
ORDER BY sage

--查询航天班的学生信息按年龄从大到小排序,年龄相同按学号升序排序
SELECT * FROM student 
WHERE sclass = '航天'
ORDER BY sage DESC, snumb ASC

参考资料:SQL Server数据库技术(Coursera)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值