目录:
一.新增数据
二.查询数据
三.修改数据
四.删除数据
引言:CRUD 即增加(Create)、查询(Retrieve)、更新(Update)、删除(Delete)四个单词的首字母缩写
一.新增数据
1.单行数据 + 全列插入:
-- 插入两条记录,value_list 数量必须和定义表的列的数量及顺序一致 INSERT INTO student VALUES (100, 10000, '唐三藏', NULL); INSERT INTO student VALUES (101, 10001, '孙悟空', '11111');
2.多行数据 + 指定列插入:
-- 插入两条记录,value_list 数量必须和指定列数量及顺序一致 INSERT INTO student (id, sn, name) VALUES (102, 20001, '曹孟德'),
二.查询数据
1.语法:
SELECT {* | 列名...} [FROM 表名] [WHERE ...] [ORDER BY column [ASC | DESC], ...]
2.全列查询:
注意:
通常情况下不建议使用 * 进行全列查询 首先 查询的列越多,意味着需要传输的数据量越大; 其次 可能会影响到索引的使用
例如这里我们查询一下:student表中 id > 2的学生:
![]()
3.指定列查询:
指定列的顺序不需要按定义表的顺序来,这里我们查name和mail;
4.查询字段为表达式:
4.1 表达式不包含字段:
4.2 表达式包含一个字段:
4.3 表达式包含多个字段:
5 别名:
为查询结果中的列指定别名,表示返回的结果集中,以别名作为该列的名称
这里as关键字可以省略
6.去重:
使用DISTINCT关键字对score列数据进行去重:
7.排序:ORDER BY:
SELECT ... FROM 表名 [WHERE ...] ORDER BY 列名 [ASC || DESC]
ASC升序, DESC降序
注意:
7.1. 没有 ORDER BY 子句的查询,返回的顺序是未定义的,永远不要依赖这个顺序
7.2. NULL 数据排序,视为比任何值都小,升序出现在最上面,降序出现在最下面
7.3. 使用表达式排序:
7.3. 使用别名排序:
8.条件查询:WHERE:
比较运算符 运算符 说明 >, >=, <, <= 大于,大于等于,小于,小于等于 = 等于,NULL 不安全,例如 NULL = NULL 的结果是 NULL <=> 等于,NULL 安全,例如 NULL NULL 的结果是 TRUE(1) !=, <> 不等于 BETWEEN a0 AND a1 范围匹配,[a0, a1],如果 a0 <= value <= a1,返回 TRUE(1) IN (option, ...) 如果是 option 中的任意一个,返回 TRUE(1) IS NULL 是 NULL IS NOT NULL 不是 NULL LIKE 模糊匹配。% 表示任意多个(包括 0 个)任意字符;_ 表示任意一个字符
逻辑运算符:
注:
1. Where条件可以使用表达式,但不能使用别名。
(因为SQL查询语句,先执行from-->where-->select,最后是order by)
2. AND的优先级高于OR,在同时使用时,需要使用小括号()包裹优先执行的部分
8.2范围查询:
BETWEEN ... AND,
查询分数在30到50的成绩
8.3模糊查询:LIKE
% 匹配任意多个(包括 0 个)字符:查询带' 孙' 字的同学
匹配严格的一个任意字符:查询 "_悟_"
9.分页查询(limit):
语法:
从 0 开始,筛选 n 条结果:
SELECT ... FROM 表名 [WHERE ...] [ORDER BY ...] LIMIT n;
![]()
从 s 开始,筛选 n 条结果:
SELECT ... FROM 表名 [WHERE ...] [ORDER BY ...] LIMIT s, n
从 s 开始,筛选 n 条结果,比第二种用法更明确,建议使用
SELECT ... FROM 表名 [WHERE ...] [ORDER BY ...] LIMIT n OFFSET s;
三.修改数据
1.语法:
UPDATE 表名 SET 列名 [WHERE ...] [ORDER BY ...] [LIMIT ...]
例子:将孙悟空同学的数学成绩变更为 99 分
四.删除数据
语法:
DELETE FROM 表名 [WHERE ...] [ORDER BY ...] [LIMIT ...]
例子:删除孙悟空同学的考试成绩