第五章 MySQL对数据的基本操作
5.1 数据操纵语言:INSERT语句
建议写上字段的声明。如果不写字段声明,MySQL还要去表中查询,降低效率。
INSERT INTO t_dept(deptno, dname, loc)
VALUES (60, "后勤部","北京"), (70, "保安部","北京");
# 向技术部中插入一名员工(要子查询技术部的部门编号)
INSERT INTO t_emp
(empno,ename,job,mgr,hiredate,sal,comm,deptno)
VALUES(7845,"刘娜","SALESMAN",7944,"1988-12-20",2000,NULL,
(SELECT deptno FROM t_dept WHERE dname="技术部"));
INSERT INTO t_emp
SET empno=8002,ename="JACK",job="SALESMAN",mgr=8000,
hiredate="1985-3-14",sal=2500,comm=NULL,deptno=50;
INTO关键字也是可以省略的
INSERT t_emp
SET empno=8002,ename="JACK",job="SALESMAN",mgr=8000,
hiredate="1985-3-14",sal=2500,comm=NULL,deptno=50;
5.2 数据操纵语言:UPDATE语句
- WHERE:有条件修改,不加条件则是全表修改
- ORDER BY:保证不会发生冲突(比如修改员工编号,从大的开始+1,没有比最大的更大的,所以不会发生冲突)
执行顺序:
- UPDATE 2. WHERE 3. ORDER BY 4. LIMIT 5. SET
# 把每个员工的编号和上司的编号+1
UPDATE t_emp SET empno=empno+1, mgr=mgr+1
ORDER BY empno DESC;
# 把月收入前三名的员工底薪减100元
UPDATE t_emp
SET sal = sal - 100
ORDER BY sal + IFNULL(comm, 0) DESC
LIMIT 3;
SET后面修改的字段可以是不同表的字段
# 把ALLEN调往RESEARCH部门,职务调整为ANALYST
UPDATE t_emp e JOIN t_dept d
SET e.deptno=d.deptno, e.job="ANALYST",d.loc="北京"
WHERE e.ename="ALLEN" AND d.dname="RESEARCH";
5.3 数据操纵语言:DELETE语句
IGNORE是忽略外键约束