1. 定义:数据操作语言:对表中数据的增删改:insert、delete、update
2. 用法:
-
插入数据:INSERT INTO
-
功能:用于向数据表中插入数据
-
理解:类似于向excel表格中插入数据
-
语法一:插入多行数据:insert ... value
-
INSERT INTO [ 数据库.] 数据表[(列名)] VALUES ( COL1.1, CUL2.1, ... , CULn.1 ), ( COL1.2, CUL2.2, ... , CULn.2 ), .... ... ... ... ... ... ... ( COL1.m, CUL2.m, ... , CULn.m );
-
注意1:表名后的列名可以省略不写,但是values中的值必须与表中所有的字段顺序一致
-
示例1:
-
# 创建一个 学生表(Student) CREATE TABLE Student ( s_id VARCHAR(20), s_name VARCHAR(20) NOT NULL, s_birth VARCHAR(20) NOT NULL, s_sex VARCHAR(10) NOT NULL, PRIMARY KEY(s_id) ); # 向学生表中插入数据,使用 INSERT INTO 表名 VALUES 方法 INSERT INTO Student VALUES ('01', '赵雷', '1990-01-01', '男'), ('02', '钱电', '1990-12-21', '男'), ('03', '孙风', '1990-05-20', '男'), ('04', '李云', '1990-08-06', '男'), ('05', '周梅', '1991-12-01', '女'), ('06', '吴兰', '1992-03-01', '女'), ('07', '郑竹', '1989-07-01', '女'), ('08', '王菊', '1990-01-20', '女');
-
注意2:表名后的列名如果不省略,那么values后面的值只要与列名一一对应即可,可以不写所有的列名,没写的列为null
-
示例2:
-
# 创建一个 课程表(Course) CREATE TABLE Course ( c_id VARCHAR(20), c_name VARCHAR(20), t_id VARCHAR(20), PRIMARY KEY(c_id) ); # 向学生表中插入数据,使用 INSERT INTO 表名(列名) VALUES 方法 INSERT INTO Course(c_id, c_name) VALUES('01', '语文'), ('02', '数学'); INSERT INTO Course(c_id, t_id) VALUES('03', '03');
-
语法二:插入单行数据:insert ... set
-
INSERT INTO [ 数据库.] 数据表 SET COL1 = value1, COL2 = value2, ...... ;
-
示例:
-
# 创建一个 教师表(Teacher) CREATE TABLE Teacher ( t_id VARCHAR(20), t_name VARCHAR(20) NOT NULL DEFAULT '', PRIMARY KEY(t_id) ); # 向学生表中插入数据,使用 SET 方法 INSERT INTO Teacher SET t_id = '01', t_name = '张三'; INSERT INTO Teacher SET t_id = '02', t_name = '李四'; INSERT INTO Teacher SET t_id = '03', t_name = '王五';
-
注意:插入数据insert的set方法仅适合于单条数据插入,相对values对于多条数据的插入效率要差一些。
-
语法3:保存查询数据insert:select
-
INSERT INTO [ 数据库.] 数据表 SELECT ……
-
功能:将一条查询语句的结果保存写入一张表中
-
-
删除数据:DELETE
-
功能:根据条件删除数据表特定的行
-
理解:删除数据表中的数据
-
语法:
-
DELETE FROM [ 数据库.]数据表 [WHERE 条件]
-
示例:
-
-- 删除 Teacher 表中的所有数据 DELETE FROM Teacher ; -- 删除 Student 表中所有男生的数据 DELETE FROM Student WHERE s_sex = '男';
-
-
更新数据:UPDATE
-
功能:根据条件修改数据表特定的列
-
理解:修改数据表中的数据
-
语法:
-
UPDATE [ 数据库.]数据表 SET col1 = value1, col2 = value2, ... [WHERE 条件];
-
示例:
-
# 更新 Course 表中数据 UPDATE Course SET c_id = '01' , c_name = '数学' , t_id = '02'; # 更新 Course 表中数据, 使用 WHERE 方法 UPDATE Course SET c_name = '英语' WHERE c_id = '03';
-
-
插入更新:REPLACE
- 功能:如果主键存在就更新,如果不存在就插入。
- 理解:如果有一张表拥有主键,我想写入一条学生的数据,但是我不知道这个学生的信息是否已经存在了,可以使用replace,其功能可以视为update + insert
- 语法:
-
REPLACE [ 数据库.]数据表[(列名)] VALUES (单行数据的内容), (单行数据的内容) …… ;
- 示例:
-
# 已知,我们已经有一张学生表,并向其中插入数据: INSERT INTO Student VALUES ('01', '赵雷', '1990-01-01', '男'), ('02', '钱电', '1990-12-21', '男'), ('03', '孙风', '1990-05-20', '男'), ('04', '李云', '1990-08-06', '男'); # 如果前提我们不知道某个学生的信息是否存在,需求是如果存在就更新信息,如果不存在就插入信息 -- 此时我们不知道 ('03', '孙风', '1990-05-20', '男') 这条信息是否存在,如果使用 insert 方法 INSERT INTO Score VALUES ('01', '01', 80); -- 此时显然行不通,使用update插入一条不存在的数据 ('05', '周梅', '1991-12-01', '女') 显然也行不通,此时需要用到 replace 方法: REPLACE INTO db_test_bigdata01.tb_student09 VALUES ('05', '周梅', '1991-12-01', '女'), ('06', '吴兰', '1992-03-01', '女'), ('07', '郑竹', '1989-07-01', '女'), ('08', '王菊', '1990-01-20', '女');