SQL 语法

本贴最后更新于 235 天前,其中的信息可能已经斗转星移

基础篇

全表查询

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;

  • SQL
    125 引用 • 376 回帖 • 3 关注

相关帖子

回帖

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...