接上篇文章 MySQL基础——DDL语言学习
DML语言学习
- Data Manipulation Language 数据操纵语言
- 主要包括表记录的插入(INSERT)、更新(UPDATE)、删除(DELETE),是开发人员日常使用最频繁的操作
1. 插入数据
可以插入的方式有:插入完整的记录、插入记录的一部分、插入多条记录、插入另一个查询的结果
- 语法:
# 单行插入
INSERT INTO 表名 (字段名1, 字段名2, ...) VALUES (值1, 值2, ...);
# 多行插入
INSERT INTO 表名 (字段名1, 字段名2, ...) VALUES (值1, ...), (值1, ...), ...;
注意:
- 使用该语句时,字段和值一一对应,类型、约束必须匹配
- 数值型的值,不用单引号;非数值型的值,要用单引号引起来
- 字段顺序无要求,只要对应就可以
1、正常插入
- 案例:
INSERT INTO stuinfo (stuid, stuname, stugender, email, age)
VALUES (1, '张无忌', '男', 'shediao@163.com', 18);
# 查询
SELECT * FROM stuinfo;
2、省略部分字段和值
- 案例
INSERT INTO stuinfo (stuid, stuname, email)
VALUES (002, '张翠山', 'wudang@163.com');
# 查询
SELECT * FROM stuinfo;
如果不给出相应字段名和值,若有默认值,则显示默认值;如果没有默认值且允许为空时,显示NULL;如果没有默认值且不允许为空,则会报错
3、省略字段列表
- 案例
INSERT INTO stuinfo VALUES (003, '张三丰', '男', 'quanzhen@163.com', 88)
# 查询
SELECT * FROM stuinfo;
如果省略字段列表,则默认为所有字段,按默认顺序进行对应VALUES
4、多个记录的同时插入
- 案例
INSERT INTO stuinfo VALUES (004, '小昭', '女', 'xz@163.com', 19),
(005, '赵敏', '女', 'zm@163.cm', 18);
# 查询
SELECT * FROM stuinfo;
5、 自增长列
自增长列必须要求设置在一个键上,比如主键或唯一键;自增长列要求数据类型为数值型;一个表至多有一个自增长列
- 语法
CREATE TABLE 表名 (
字段名 INT PRIMARY KEY AUTO_INCREMENT,
...
);
- 案例:实现gradeID的自增长
CREATE TABLE gradeinfo (
gradeID INT PRIMARY KEY AUTO_INCREMENT,
gradeName VARCHAR(20)
);
# 插入多行记录
INSERT INTO gradeinfo(gradename) VALUES('一年级'), ('二年级'), ('三年级');
# 查询
SELECT * FROM gradeinfo;
2. 删除数据
语法:
DELETE FROM 表名 [WHERE 筛选条件];
- 如果没有WHERE子句,DELETE语句就会删除表中的所有记录
案例 1:删除gradeID为1的记录
DELETE FROM gradeinfo WHERE gradeID = 1
案例 2:删除所有记录
DELETE FROM gradeinfo
如果想删除表中的所有记录,还可以使用TRUNCATE TABLE
语句,直接删除原来的表,并重新创建一个表,语法如下:
TRUNCATE TABLE 表名; # 不支持 WHERE 子句
注意:
TRUNCATE
直接删除表而不删除记录,因此执行速度比DELETE
快- 如果删除带有自增长列的表,使用
DELETE
删除后,重新插入数据,记录从断点处开始,而使用TRUNCATE
删除后,记录从1开始 - 使用
TRUNCATE
删除数据,不返回受影响的行数
3. 更新数据
语法
UPDATE 表名 SET 字段名 1 = 更新值 1, ... [WHERE 更新的条件]
如果忽略WHERE,将更新表中所有的行
案例:
UPDATE gradeinfo SET gradeID = 4, gradeName = '五年级' WHERE gradeID = 1;