CRUD 即增加(Create)、查询(Retrieve)、更新(Update)、删除(Delete)四个单词的首字母缩写。
语法
INSERT [INTO] table_name
[(column [, column] ...)]
VALUES (value_list) [, (value_list)] ...
value_list: value, [, value] .。。案例: 先创建一个学生表:
create table student (
-> id int,
-> name varchar(10),
-> point decimal(4,1)
-> );insert into student (id,name,point) values(1,'张三',95),(2,'李四',95.5);
此时学生表里面就出现了两行数据。

可以通过省略写表名的方法来实现全列插入,也可以不完全插入、指定列插入。但是不可以用通配符*来代表全列。

没有被插入的列的值默认为null。
语法:
SELECT
[DISTINCT] {* | {column [, column] ...}
[FROM table_name]
[WHERE ...]
[ORDER BY column [ASC | DESC], ...]
LIMIT ...
我们可以用这种方法导入一个sql文件并且运行它。 如果大家想要跟我使用一样的案例,可以去我的码云找到这个文件的源码: 码云链接直达
通常情况下不建议使用 * 进行全列查询 – 1. 查询的列越多,意味着需要传输的数据量越大; – 2. 可能会影响到索引的使用。(索引待后面课程讲解) 全列查询从某种意义来说是一个比较危险的操作。


给一个常数:

在原来列的值的基础上加上一个常数

列与列之间也可以进行运算:

可以使用as关键字给表达式起一个别名 语法:
SELECT column [AS] alias_name [...] FROM table_name;具体操作如下:

补充别名相关的性质: 1.省略as:

2.字符串可以不加’ ’

3.如果字符串中间有空格,必须加’ ’

语法:
select distinct 列名 from 表名
数学成绩里有两个98分

如果使用distinct查询就会发现这时候只剩下了一个98分。

注意:只有完全相同的两个数据才会被去重,像上面这种情况:只有数学成绩是重复的其他的都不是重复的,这时候不会被去重。

就算插入了一个孙行者,跟孙悟空成绩一摸一样,也不可以被去重。
语法:
-- ASC 为升序(从小到大)
-- DESC 为降序(从大到小)
-- 默认为 ASC
SELECT ... FROM table_name [WHERE ...]
ORDER BY column [ASC|DESC], [...]


插入两个数据之后进行比较会发现,null在最上面,比负数还要靠上面,视为比任意数都要小。

null与任意数相加还是null

注意:上面这种写法是错误的,因为系统将后面order by 那里的‘总分’看作了一个字符常量,排序无效。要想如此做,应该用到反引号:``。



还可以一个升序一个降序。
比较运算符:

逻辑运算符:

**注:

图中的语句执行顺序为2314 在执行where时还没执行select后面的句子,系统不知道使用了别名,所以会报错
基本查询:


and 和 or:

使用起来与其他语言没啥区别。 但是and的优先级比or更大,所以使用时会出现下面的情况:

范围查询:

模糊查询:
xx%匹配任意多个字符 xx_匹配严格的一个字符

null的查询:

除此以外还可以使用 <=>来判断是否为Null。 但是不可以使用=。

语法:
-- 起始下标为 0
-- 从 0 开始,筛选 n 条结果
SELECT ... FROM table_name [WHERE ...] [ORDER BY ...] LIMIT n;
-- 从 s 开始,筛选 n 条结果
SELECT ... FROM table_name [WHERE ...] [ORDER BY ...] LIMIT s, n;
-- 从 s 开始,筛选 n 条结果,比第二种用法更明确,建议使用
SELECT ... FROM table_name [WHERE ...] [ORDER BY ...] LIMIT n OFFSET s;
基本用法:

每页包含多少个数据,意味着偏移量为多少。 我们就用这个表来实现一下分页。

最开始的时候设置偏移量为0,后面依次 + 2。 或者偏移量 = (第几次 - 1)*2。
语法:
UPDATE table_name SET column = expr [, column = expr ...]
[WHERE ...] [ORDER BY ...] [LIMIT ...]
从上面这段代码可以看出: 一次性可以更新符合要求的多条数据 与更新之后的数据相同的数据,只会匹配,不算做更改过。
练习: 将总成绩倒数前三的 3 位同学的数学成绩减去 30 分

语法:
DELETE FROM table_name [WHERE ...] [ORDER BY ...] [LIMIT ...]删除孙悟空的所有成绩:

通过where条件匹配了两条数据,所以删除了两条数据。
删除英语成绩倒数前三的考试成绩:


SQL 的 CRUD 操作是数据库基础,包含新增、查询、更新和删除四大核心功能。新增(Create)通过 INSERT 语句实现,可指定列或全列插入,未插入列默认为 NULL,且不支持用 * 代表全列,同时支持批量插入多条数据。查询(Retrieve)依赖 SELECT 语句,全列查询因可能增加数据传输和影响索引不建议常用;可指定列查询,也能对字段用表达式计算,并用 AS(可省略)起别名,字符串别名无空格可省引号、有空格需加引号;DISTINCT 仅对完全相同的数据去重;ORDER BY 默认升序,NULL 视为最小值,可按表达式、别名或多字段排序,优先级按书写顺序;WHERE 条件查询支持比较和逻辑运算符,且 AND 优先级高于 OR,需注意条件中不能用别名;LIMIT 用于分页,起始下标为 0,可指定起始位置和获取数量。更新(Update)用 UPDATE 语句,能批量更新符合条件的数据,可结合 WHERE、ORDER BY、LIMIT 精准定位范围。删除(Delete)通过 DELETE 语句实现,同样可借助 WHERE、ORDER BY、LIMIT 指定删除范围,实现精准删除。