基础篇
全表查询
select * from student
选择查询
select name,age from student
多个字段中间要用逗号隔开
设置字段别名-as(可省略)
select name as 学生姓名,age 学生年龄 from student
as 也可以省略不写
常量和运算
select name,score,score * 2 as double_score from student;
条件查询-where
select name,score from student where name='鱼皮'
条件查询的运算符有 =
、!=
、>
、<
多条件逻辑运算 and
、or
、not
范围查询可以使用 BETWEEN...and...
运算,例如
select name,score from student where score between 60 and 90
条件查询中还可以使用 IS NULL
和 IS NOT NULL
来筛选为空和不为空的记录,例如
select name,age,score from student where age is not null
模糊查询可以使用 like
和 not like
来进行模糊筛选,并可以使用 %
表示任意长度的任意字符串,可以使用 _
表示任意单个字符,例如
select name,score from student where name not like '%李%'
select name,score from student where name like '%李%' or score>500
去重数据-distinct
distinct
后面加字段返回去重后的所有该字段,disctinct
后面加多字段中间用逗号分隔, 列出所有组合
select distinct class_id,exam_num from student
排序-order by
order by 字段1 [升序/降序], 字段2 [升序/降序], ...
ASC
表示升序,DESC
表示降序
select name,age,score from student order by score desc,age asc
截断和偏移-limt
-- LIMIT 后只跟一个整数,表示要截断的数据条数(一次获取几条)
select task_name, due_date from tasks limit 2;
-- LIMIT 后跟 2 个整数,依次表示从第几条数据开始(索引是从0开始)、一次获取几条
select task_name, due_date from tasks limit 2, 2;
例如
-- 从名为 student 的数据表中选择学生姓名(name)和年龄(age),按照年龄从小到大排序,从第 2 条数据开始、截取 3 个学生的信息。
select name,age from student order by age asc limit 1,3
条件分支-case when
CASE WHEN (条件1) THEN 结果1
WHEN (条件2) THEN 结果2
...
ELSE 其他结果 END
例如,
SELECT
name,
CASE
WHEN (age > 60) THEN '老同学'
WHEN (age > 20) THEN '年轻'
ELSE '小同学'
END AS age_level
FROM
student
ORDER BY
name asc;
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于