1、插入数据
方式1:使用VALUES添加
情况1:为表的所有字段按默认顺序插入数据
INSERT INTO 表名 VALUES (value1,value2,....);
注意点:
值列表中需要为表的每一个字段指定值,并且值的顺序必须和数据表中字段定义时的顺序相同。
举例:
#先简单创建一个departments表 CREATE TABLE IF NOT EXISTS departments( dep_id INT PRIMARY KEY, #部门id dep_name VARCHAR(30), #部门name man_id INT, #部门管理者id loc_id INT #部门地址id );
INSERT INTO departments VALUES (70, 'Pub', 100, 1700);
INSERT INTO departments VALUES (100, 'Finance', NULL, NULL);
情况2:为表的指定字段插入数据
INSERT INTO 表名(column1 [, column2, …, columnn]) VALUES (value1 [,value2, …, valuen]);
为表的指定字段插入数据,就是在INSERT语句中只向部分字段中插入值,而其他字段的值为表定义时的默认值。
举例:
INSERT INTO departments(dep_id , dep_name) VALUES (80, 'IT');
情况3:同时插入多条记录
语法格式:
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]);
举例:
INSERT INTO departments(dep_id , dep_name) VALUES (101,'A'), (102,'B'), (103,'C');
一个同时插入多行记录的INSERT语句等同于多个单行插入的INSERT语句,但是多行的INSERT语句在处理过程中效率更高。因为MySQL执行单条INSERT语句插入多行数据比使用多条INSERT语句快,所以在插入多条记录时最好选择使用单条INSERT语句的方式插入。
方式2:将查询结果插入到表中
语法格式:
INSERT INTO 表名 (tar_column1 [, tar_column2, …, tar_columnn]) SELECT (src_column1 [, src_column2, …, src_columnn]) FROM 源表名 [WHERE condition]
举例:
#将employees表中部门id是90的所有信息插入到emp表中 INSERT INTO emp SELECT * FROM employees WHERE department_id = 90;
#将employees表中,job_id含有REP的employee_id, last_name, salary, commission_pct #插入到sales_reps表中,分别对应字段id, name, salary, commission_pct INSERT INTO sales_reps(id, name, salary, commission_pct) SELECT employee_id, last_name, salary, commission_pct FROM employees WHERE job_id LIKE '%REP%';
2、修改数据
语法格式:
UPDATE table_name SET column1=value1, column2=value2, … , column=valuen [WHERE condition]
举例:
#把employees表中id是113的department_id改为70 UPDATE employees SET department_id = 70 WHERE employee_id = 113;
需要注意的是,如果省略 WHERE 子句,则表中的所有数据都将被更新。
#把copy_emp表中部门id是110的所有信息进行修改 UPDATE copy_emp SET department_id = 110;
3、删除数据
语法格式:
DELETE FROM 表名[WHERE <condition>];
举例:
DELETE FROM departments WHERE department_name = 'Finance';
没有where筛选条件会删除所有的记录
DELETE FROM copy_emp;