查询所有列

基本语法:SELECT 列名1, 列名2, ...FROM 表名;使用 * 号查询表中的所有列

SELECT * FROM student;
💡
使用 * 会查询表中的所有列,但在生产环境中建议明确指定需要的列名,这样可以提高查询效率

查询指定列

只查询需要的特定列

SELECT name, age, department FROM student;

这个查询只会返回student表中的name、age和grade三列数据

使用列别名

使用AS关键字为列指定别名

SELECT name AS 姓名, age AS 年龄, department AS 院系 FROM student;

使用别名可以让查询结果更易读,AS关键字可以省略

去重查询

使用DISTINCT关键字去除重复数据

SELECT DISTINCT department FROM student;

这个查询会返回所有不重复的院系值

查询结果限制

使用LIMIT关键字限制查询结果数量,如果只想返回第一行或者一定数量的行,我们需要使用limit关键词,不同数据库关键词不同,sqlserver使用top,oracle使用rownum,比如默认返回结果前5条:指定从哪儿开始以及检索的行数,有的数据库支持offset,这样可以方便的实现分页查询。比如SELECT * FROM student LIMIT 5 OFFSET 3;

SELECT * FROM student LIMIT 5;

这个查询会返回查询结果按默认排序的前五条数据

WHERE子句

使用WHERE子句过滤查询结果

SELECT * FROM student WHERE age > 20;

这个查询会返回所有年龄大于20的学生记录

比较运算符

常用的比较运算符

运算符 说明 示例
= 等于 age = 20
!= 不等于 grade != '大一'
> 大于 score > 90
< 小于 age < 25
>= 大于等于 score >= 60
<= 小于等于 age <= 30

逻辑运算符

使用AND、OR、NOT组合多个条件

-- AND:所有条件都必须满足
SELECT * FROM student WHERE age > 18 AND department = '计算机系';
-- OR:满足任一条件即可
SELECT * FROM student WHERE department = '数学系' OR department = '计算机系';
-- NOT:取反
SELECT * FROM student WHERE NOT department = '信息系';

BETWEEN范围查询

查询某个范围内的数据

SELECT * FROM student WHERE age BETWEEN 18 AND 22;

等价于:WHERE age >= 18 AND age <= 22

IN列表查询

查询在指定列表中的数据

SELECT * FROM student WHERE department IN ('计算机系', '数学系', '信息系');

等价于:WHERE department = '计算机系' OR department = '数学系' OR department = '信息系'

LIKE模糊查询

使用通配符进行模糊匹配

-- % 表示任意多个字符
SELECT * FROM student WHERE name LIKE '张%';
-- _ 表示单个字符
SELECT * FROM student WHERE name LIKE '李_';
💡
% 匹配零个或多个字符,_ 匹配单个字符

NULL值判断

判断字段是否为空

-- 查询为空的记录
SELECT * FROM student WHERE email IS NULL;
-- 查询不为空的记录
SELECT * FROM student WHERE email IS NOT NULL;
⚠️
不能使用 = NULL 或 != NULL,必须使用 IS NULL 或 IS NOT NULL

按照某个属性排序

使用 ORDER BY对结果中的某个属性排序,同样可以按照列的位置排序,同样的查询使用SELECT * FROM student ORDER BY 3 DESC;

SELECT * FROM student ORDER BY age;

这个查询结果按照age这个字段排序返回

按照多个属性排序

使用 ORDER BY对结果中的多个属性排序

SELECT * FROM student ORDER BY age,sex;

同时可以按照多个列排序,获取所有学生信息按照年龄排序,如果年龄相同按照性别进行排序

选择顺序还是逆序排序

排序可以按照正序,或者逆序,分别用asc和desc关键词来处理。

SELECT * FROM student ORDER BY age DESC;

年龄按照从大到小排序