(1)使用VALUES
*一次只能向表中插入一条数据
INSERT INTO 表名 VALUES (value1,value2,....);
INSERT INTO 表名(column1 [, column2, …, columnn]) VALUES (value1 [,value2, …, valuen]);
INSERT INTO table_name VALUES (value1 [,value2, …, valuen]), (value1 [,value2, …, valuen]), …… (value1 [,value2, …, valuen]);
INSERT INTO table_name(column1 [, column2, …, columnn]) VALUES (value1 [,value2, …, valuen]), (value1 [,value2, …, valuen]), …… (value1 [,value2, …, valuen]);
(2)将查询结果插入到表中
INSERT INTO 目标表名 (tar_column1 [, tar_column2, …, tar_columnn]) SELECT (src_column1 [, src_column2, …, src_columnn]) FROM 源表名 [WHERE condition]
例如:
INSERT INTO emp2 SELECT * FROM employees WHERE department_id = 90;
INSERT INTO sales_reps(id, name, salary, commission_pct) SELECT employee_id, last_name, salary, commission_pct FROM employees WHERE job_id LIKE '%REP%';
*可以一次更新多条数据。
*如果需要回滚数据,需要保证在DML前,进行设置:SET AUTOCOMMIT = FALSE;
UPDATE table_name SET column1=value1, column2=value2, … , column=valuen [WHERE condition]
*如果省略 WHERE 子句,则表中的所有数据都将被更新
DELETE FROM table_name [WHERE ];
*table_name指定要执行删除操作的表;“[WHERE ]”为可选参数,指定删除条件,如果没有WHERE子句,DELETE语句将删除表中的所有记录。
4.MySQL8新特性:计算列
*计算列:某一列的值是通过别的列计算得来的
例如:
定义数据表tb1,然后定义字段id、字段a、字段b和字段c,其中字段c为计算列,用于计算a+b的 值。 首先创建测试表tb1,语句如下:
CREATE TABLE tb1( id INT, a INT, b INT, c INT GENERATED ALWAYS AS (a + b) VIRTUAL );