文章中所有操作均是在 MySQL 5.7 版本下进行的
1 示例表创建
单独的解释语句规则并不是太直观,辅以示例更好理解。
-- 引入Oracle中scott用户下的一个表用来示例,尽量保证大部分数据类型都有
drop table if exists tbl_emp;
create table tbl_emp(
empno int primary key comment '员工号',
ename varchar(50) not null comment '员工姓名',
job varchar(50) not null comment '工作职位',
mgr int comment '上司编号',
hiredate datetime not null comment '入职日期',
sal decimal(7,2) not null comment '工资',
comm decimal(7,2) comment '奖金',
deptno int not null comment '部门编号'
) comment '员工表';
2 插入数据(insert)
-- 插入数据的语法
insert into 表名 (字段1, 字段2, 字段3......) values (值1, 值2, 值3.......);
字段个数和值个数要一致
字段类型和值数据类型一致或兼容
字段可以为空的情况下,可以不用插入值,或用null填充
不可以为空的字段必须插入数据
字段可以省略,默认是所有字段,并且顺序和表中的存储顺序一致
-- 示例
-- 字段个数和值个数要一致,且字段类型和值类型一致
insert into tbl_emp (empno, ename, job, mgr, hiredate, sal, comm, deptno) values (1001, '张三', '普通职员', '1003', '2012-11-02 09:12:22', 1200, 300.40, 10);
-- 可以为空的字段可以不用插入数据,字段和值要一一对应
insert into tbl_emp (empno, ename, job, mgr, hiredate, sal, deptno) values (1002, '李四', '普通职员', '1003', '2012-11-03 11:12:22', 1200, 10);
-- 可以为空的字段可以用null填充,字段和值要一一对应
insert into tbl_emp (empno, ename, job, mgr, hiredate, sal, deptno) values (1003, '王五', '普通职员', null, '2009-02-03 11:55:22', 1200, 10);
-- 字段可以省略,默认是所有字段,并且顺序和表中的存储顺序一致
insert into tbl_emp values (1004, '赵六', '普通职员', '1003', '2014-04-02 07:12:22', 1200, null, 10);
3 修改数据(update)
-- 修改数据的语法
update 表名 set 字段1 = 值1, 字段2 = 值2 ... where 条件;
update 表名 set 字段1 = 值1, 字段2 = 值2 ...;
如果没有where条件,表中的数据涉及到的字段将全部修改
修改数据一般需要利用where进行指定数据修改
-- 示例
-- 修改1002员工的职位和工资
update tbl_emp set job = '销售员', sal = 2000 where empno = 1002;
-- 修改1004员工的姓名
update tbl_emp set ename = '赵六六' where empno = 1004;
-- 如果不进行where筛选,数据全部修改
update tbl_emp set deptno = 20;
4 删除数据(delete)
-- 删除数据的语法
delete from 表名 where 条件;
delete from 表名;
如果没有where条件,将删除表中的所有数据
删除数据一般需要利用where进行指定数据删除
-- 示例
-- 删除1001员工
delete from tbl_emp where empno = 1001;
-- 删除工资是1200员工
delete from tbl_emp where sal = 1200;
/*
如果不进行where筛选,数据全部删除,谨慎
delete from tbl_emp;
*/
另外删除数据命令:truncate table 表名;
truncate和delete虽然都是删除表的数据,区别在于delete操作可以一条一条删除记录的,配合事务和回滚可以找回数据,如果有自增长(auto_increment)不会重置。truncate则是直接删除整个表,再重新创建一个一模一样的新表,表的以前设置的约束、触发器、索引等等吧都会删除,自增长(auto_increment)也会被重置,且数据也无法找回。
truncate table 表名 更需要慎用
结语
数据库表的数据的插入(insert),修改(update),删除(delete)是表中数据最基本的操作,且这些操作的细节不是很复杂,很好掌握。