MySQL(五)数据的增加操作
curd的解释: 代表创建(Create)、更新(Update)、读取(Retrieve)和删除(Delete)
创建职员表用于测试
-- 创建职员表
CREATE TABLE employee(
empno int auto_increment primary key comment '人物编号',
empname VARCHAR(10) comment '人物名称',
nickname varchar(20) comment '昵称',
job VARCHAR(9) comment '工作岗位',
mgr int comment '上级编号',
hirdate DATE comment '入伙时间',
salary int comment '薪水待遇',
comm int comment '奖金',
deptno int comment '所属部门' );
-- 创建部门表
CREATE TABLE department (
deptno int auto_increment primary key comment '部门编号',
deptname varchar(50) comment '部门名称',
location varchar(100) comment '部门地点' );
一 INSERT 增加数据
-- 完整格式
INSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE]
[INTO] tbl_name [(col_name,...)]
VALUES ({expr | DEFAULT},...),(...),...
[ ON DUPLICATE KEY UPDATE col_name=expr, ... ]
-- 常用格式
INSERT INTO 表名(字段1,字段2....) vlaues(...),(...)
1 单行插入
- 全列插入:值的顺序与表中字段的顺序对应
-- 格式
insert into 表名 values(...)
-- 实例
INSERT INTO department VALUES(10, '中央', '梁山本部');
INSERT INTO department VALUES(20, '近卫', '梁山本部');
INSERT INTO department VALUES(21, '军委1部', '梁山本部');
INSERT INTO department VALUES(22, '军委2部', '梁山本部');
- 部分列插入:值的顺序与给出的列顺序对应
-- 格式
insert into 表名(列1,...) values(值1,...)
-- 实例
INSERT INTO department(deptno, deptname, location) VALUES(50, '后勤部', '梁山本部');
INSERT INTO department(deptno, deptname, location) VALUES(60, '军情部', '梁山本部');
INSERT INTO department(deptno, deptname, location) VALUES(70, '迎宾部', '梁山本部');
INSERT INTO department(deptno, deptname, location) VALUES(80, '刑罚部', '梁山本部');
2 多行插入
-- 全列插入
insert into 表名 values(...),(...)...;
-- 指定列插入
insert into 表名(列1,...) values(值1,...),(值2...)...
-- 实例
INSERT INTO employee VALUES
(1, '宋江', '天魁星·及时雨', '头领', null,'2015-11-8', 800, 200000, 1),
(2, '卢俊义', '天罡星·玉麒麟','卢俊义', 1,'2018-4-6', 800, 100000, 1),
(3, '吴用', '天机星·智多星', '头领', 1,'2012-8-10', 800, 100000, 1),
(21, '关胜', '天勇星·大刀','五虎上将', 1,'2017-4-6', 20000, 2000, 20);
3 通过查询增加数据
项目在操作过程中,表中的数据会随时发生变化,在某些时刻我们需要对表中的所有数据转移到表结构
一模一 样的其他表中,此时,查询并插入数据的语法就变得非常重要了
- 复制表结构创建历史表
-- 创建历史表:复制表结构,注意~如果不写where false条件,表中的数据也会被复制到历史 表
CREATE TABLE dept_copy SELECT * FROM department WHERE 1=2;
-- 如果不写条件,那么会将表结构和数据一起复制
- 查询的⽅式将当前表中的数据迁移到历史表
-- 数据迁移
INSERT INTO dept_copy SELECT * FROM department;