MySQL和数据库系列文章目录
【MySQL和数据库】MySQL & database 第一章:数据库的安装与卸载
【MySQL和数据库】MySQL & database 第二章:数据库与MySQL的基本概述
【MySQL和数据库】MySQL & database 第三章:DQL学习(主要是记录的查询)
【MySQL和数据库】MySQL & database 第四章:DML学习(主要是对记录的增删改)
【MySQL和数据库】MySQL & database 第五章:DDL学习(主要是对库、表、字段的增删改)
【MySQL和数据库】MySQL & database 第六章:TCL学习(主要是针对事务的控制)
【MySQL和数据库】MySQL & database 第七章:视图的学习
【MySQL和数据库】MySQL & database 第八章:MySQL中的变量
【MySQL和数据库】MySQL & database 第九章:存储过程的学习
【MySQL和数据库】MySQL & database 第十章:函数的学习
【MySQL和数据库】MySQL & database 第十一章:流程控制结构
插入
-
语法:
insert into 表名(列名1,...) value (值1,...);
-
特点:
- 插入的值的类型要与列的类型一致或兼容;
- 可以为空的字段,可以不用选择列名作为插入值,或者用 null 填充;
- 不可以为空的字段,必须作为插入值;
- 列的顺序可以调换,但是列数和值的个数必须一致,且位置一致;
- 可以不写插入的列名,默认插入所有列,而且列的顺序与表中字段的顺序一致;
-
第二种语法:
insert into 表名 set 字段名1 = 插入值1, 字段名2 = 插入值2,...;
-
两种语法的区别
-
value 语法可以支持一次插入多行,set 语法不支持;
#例子 insert into 表名(字段1, 字段2) value (值a1, 值a2), (值b1,值b2);
-
value 语法支持子查询,set 语法不支持;
#例子 insert into 表名(字段1,字段2) value ( select 字段a, 字段b from 表名b );
-
修改
-
修改单表的语法:
update 表名 #Ⅰ set 字段1 = 新值1, 字段2 = 新值2 #Ⅲ where 筛选条件; #Ⅱ
-
修改多表的语法:
#sql92语法 update 表1 别名1, 表2 别名2 set 字段 = 新值,... where 连接条件 and 筛选条件; #sql99语法 update 表1 别名1 连接类型 join 表2 别名2 on 连接条件 set 字段 = 新值 where 筛选条件;
删除
-
方式一:delete
-
语法:
#单表的删除 delete from 表名 where 筛选条件; #多表的删除 delete 别名1, 别名2 from 表名1 别名1 连接类型 join 表名2 别名2 on 连接条件 where 筛选条件;
-
特点:
- 单表删除中,不能给表名起别名;
- 多表删除中,delete 后面如果两个表的别名都在,则会删除两个表的对应记录,
如果只有一个别名,则只会删除对应表的对应记录;
-
方式二:truncate
-
语法:
truncate table 表名;
-
特点:
- 清空所有记录;
-
区别:
- delete 可以加 where 条件,truncate 不能加;
- 假如要删除的表中有自增长列,
如果用 delete 删除后,再插入数据,自增长列的值从断点开始,
而 truncate 删除后,再插入数据,自增长列的值从1开始; - truncate 删除没有返回值,delete 删除有返回值;
- truncate 删除不能回滚,delete 删除可以回滚;