数据库操作语言总共有 3 类:
顾名思义,INSERT 是用来插入(或添加)行到数据库表的,插入可以用几种方式使用:
- 插入完整的行
- 插入行的一部分
- 插入多行
- 插入某些查询的结果
4.1.1 普通方式
语法:
实例1:插入的值的类型要与列的类型一致或兼容INSERT INTO 表名(列名1,列名2,...,列名n) VALUES(值1,值2,...,值n);
实例2:字段不能为 null 的字段在插入时必须插入值,可以为 null 的字段如果插入 null,可以在对应的位置填入 nullINSERT INTO beauty(id,`name`,sex,borndate,phone,photo,boyfriend_id)VALUES (null,'王冰冰','女','1996-06-01',13097217207,null,22);
实例3:只写部分字段INSERT INTO beauty(id,`name`,sex,borndate,phone,photo,boyfriend_id)VALUES (15,'王大拿','女','1996-06-01',13097217207,null,22);
INSERT INTO beauty(id,`name`,sex,borndate,phone,boyfriend_id)VALUES (16,'李婷婷','女','1996-06-01',13097217207,22);
列数和值的个数必须一致
实例4:调换插入的值的顺序
INSERT INTO beauty(`name`,sex,id,phone)VALUES('蒋欣','女',17,13097217207)
实例5:可以省略列名,默认是所有列,而且列的顺序和表中列的顺序一致
INSERT INTO beautyVALUES (18,'王冰晶','女','1996-06-01',13097217207,null,22);
4.1.2 SET 方式
语法:
INSERT INTO 表名SET 列名1=值1,列名2=值2,...
实例:
# 第二种方式插入INSERT INTO beautySET id=19,`name`='刘涛',phone=999
4.1.3 两种方式对比
- 普通方式支持多行插入,SET 方式不支持
- 普通方式支持子查询插入,SET 方式不支持
4.2 UPDATE
4.2.1 修改单张表中的记录
语法:
UPDATE 表名SET 列1=新值1,列2=新值2,...,列n=新值nWHERE 筛选条件
实例1:修改 beauty 表中的姓唐的女生的电话为 13899999
UPDATE beautySET phone = '13899999'WHERE `name` LIKE '唐%';
实例2:修改boys表中id号为2的数据,名字改成张飞,魅力值为10
UPDATE boysSET boyName = '张飞',userCP=10WHERE id = 2;
4.2.1 修改多张表的记录【级联更新】
语法:
# sql92UPDATE 表1 别名,表2 别名SET 列1=值1,列2=值2,...WHERE 筛选条件# sql99update 表1 别名INNER|LEFT|RIGHT JOIN 表2 别名ON 连接条件SET 列1=值1,列2=值2WHERE 筛选条件
实例1:修改女朋友的电话号码为 114
UPDATE boys bLEFT JOIN beauty beON b.id=be.idSET phone = '114'WHERE boyName = '周杰伦';
实例2:将没有男朋友的女神的男朋友都改成张飞
UPDATE beauty beLEFT JOIN boys bon be.boyfriend_id = b.idSET be.boyfriend_id = 2WHERE b.id IS NULL
4.3 DELETE
方式一:delete 关键字
语法 1:删除单表中的数据
DELETE FROM 表名 WHERE 筛选条件
语法 2:删除多表中的数据
## sql92 语法DELETE 表1的别名,表2的别名FROM 表1 别名,表2 别名WHERE 连接条件AND 筛选条件##sql99语法DELETE 表的别名1,表的别名2 FROM 表1 别名INNER|LEFT|RIGHT JOIN 表2 别名ON 连接条件WHERE 筛选条件
如果不加筛选条件默认删除所有的数据
实例1:删除手机号以 9 结尾的女神的信息
DELETE FROM beautyWHERE phone LIKE '%9'
实例2:删除周杰伦的女朋友
DELETE be FROM beauty beLEFT JOIN boys bON be.boyfriend_id = b.idWHERE b.boyName = '周杰伦'
多表的删除,要确定删除的是那张表中的数据,所以 delete 后面要跟表的别名,可以跟多个,以确定是删除连接的表中的哪些表的数据要删除
方式二:truncate 关键字
语法:
TRUNCATE table 表名;
不能加筛选条件,默认删除表中的所有数据
实例1:删除表中的所有数据
TRUNCATE TABLE boys;
总结
- DELETE 可以加 WHERE 条件,TRUNCATE 不能加
- TRUNCATE 删除,效率高一点
- 加入要删除的表中有自增长列,如果用 DELETE 删除后,再插入数据,自增长列的值从断点开始;而 TRUNCATE 删除后,再插入数据,自增长列的值从 1 开始。
- TRUNCATE 删除不能回滚,DELETE 删除可以回滚
