DML语句
1.增INSERT
/*
insert into 表名
values (value1,value2,...valueN);
按照表的原有结构放入数据
*/
INSERT INTO dept
VALUES (60,'Tech','Mian Yang');
SELECT * FROM dept;
#执行的dml语句和ddl语句都是以事务的形式存在的,事务必须提交才能永久生效,可以回滚撤销操作
#mysql默认自动提交是开启的,关闭自动提交:
SET autocommit=0;
COMMIT; #提交
ROLLBACK; #回滚
#DDL语句都是自动提交的,并且不能关闭
/*
insert into 表名(列名1,列名2,……列名n)
values (value1,value2,...valueN);
按照自定义的列放入数据
*/
INSERT INTO emp(empno,ename,job,sal)
VALUES (8000,'xiaoming','HR',2500);
#未定义的列默认放入空值
SELECT * FROM emp;
#也可以使用null放入空值
INSERT INTO dept
VALUES (80,'Training',NULL);
#使用函数放入数据
INSERT INTO emp(empno,ename,job,hiredate,sal,deptno)
VALUES (8001,'xiaoqiang','TESTER',CURDATE(),3000,20);
#insert into 表名 select …… ; 将查询结果直接放入另一张表,拷贝数据
SELECT * FROM bonus;
INSERT INTO bonus
SELECT ename,job,sal,comm FROM emp
WHERE comm IS NOT NULL;
ROLLBACK;
#mysql允许一个insert语句同时放入多行数据
/*
insert into 表名
values (value1,value2,...valueN),(value1,value2,...valueN), (value1,value2,...valueN),...;
*/
2.改UPDATE
/*
update 表名
set 列名1=value1,列名2=value2,列名3=value3,……
[where ...];
*/
#如果不写where子句,会修改所有行的数据
UPDATE emp
SET sal=3000;
UPDATE emp
SET sal=1200
WHERE ename = 'SMITH';
SELECT * FROM emp;
#可以在已有数据的基础上进行修改
#30号部门表现不错,每人涨薪300
UPDATE emp
SET sal=sal+300
WHERE deptno=30;
ROLLBACK;
#在set和where后面,都可以使用子查询,但不能使用本表数据的子查询
3.删DELETE
/*
delete from 表名
[where ...];
*/
#如果不写where子句,会删除所有数据
DELETE FROM emp;
SELECT * FROM emp;
DELETE FROM emp
WHERE ename = 'SMITH';
【练习】
1.在EMP表中,增加一名员工,员工信息参照现有员工构造.
INSERT INTO emp
VALUES (8000,'xiaohong','TEACHER',NULL,CURDATE(),2000,NULL,40);
2.员工SMITH调动到SALES部门,请编写SQL语句更新员工信息.
UPDATE emp
SET deptno =
(SELECT deptno FROM dept WHERE dname = 'SALES')
WHERE ename = 'SMITH';
3.员工JAMES已经离职,请编写SQL语句更新数据库.
DELETE FROM emp
WHERE ename = 'JAMES';
网友评论