1、数据操作语句(DML)
1)新增数据
基本格式
: insert into 表名 values(值1,值2,…)insert into emp1 values(1100,'haha','HR', 7788,'2000-10-10', 3000,300,30);
后面的值要与选定的列顺序一致
基本格式
:insert into 表名(列1,列2,…) values(值1,值2,…)insert into emp1(empno,ename) values(1222, 'xixi');
insert into temp(name) values('xixi');
select * from user where ename = ?;
动态sql语句
insert into user(name,age,birthday,tel) values(?,?);
select last_insert_id(); select * from user where id = ?;
select * from user where username = ? and password = ?;
2)修改数据(更新数据)
update 基本格式
:
update 表名 set 列1 = 值1,列2 = 值2,列3 = 值3... [where 条件] # where可以省略,但是实际中一定要有
update emp1 set mgr = '7777' where empno = 1100; -- 弊端:修改全部的数据
3)删除数据
#基本格式:delete from 表名 [where 条件]
delete from emp1;-- 全表数据清空 数据可恢复的
delete from emp1 where empno = 1100;
– 删除后原有表中的主键递增是不会受到影响
– DDL与DML区别:
格式:truncate table 表名
truncate table emp1; – 清空emp1的数据,表的结构还在
delelte , truncate , drop 区别
:
注:
大多数数据库都有自动备份功能binlogset autocommit = off;#关闭自动提交功能 on # mysql开发环境造成的
– 复制emp表
create table emp2 select * from emp;
1、向emp2中新增一个员工信息,要求每列都有值,值任意
insert into emp2 values(1001,'heihei','CLERK',null,sysdate(),1800,null,40); # sysdate() 系统时间函数,填入的数据会与设置的格式匹配
2、新增一个员工,员工编号是1100,姓名张三,月薪2000,部门20
insert into emp2(empno,ename,sal,deptno) values(1100,'张三',2000,20);
3、将张三的职位更新为CLERK,入职日期更新为2020-11-17
update emp2 set job = 'CLERK',hiredate = '2020-11-17' where ename = '张三';
4、为30号部门所有的员工涨薪,增长幅度是200
update emp2 set sal = sal + 200 where deptno = 30;
5、删除员工scott
delete from emp2 where ename = 'SCOTT';
6、为部门SALES的员工涨薪,幅度200
update emp2 set sal = sal + 200 where deptno = (select deptno from dept where dname = 'SALES');
7、为与SMITH同一个部门的员工涨薪200
update emp2 set sal = sal + 200 where deptno = (select deptno from dept where ename = 'SMITH');
set sql_safe_updates = 0;-- 关闭安全更新模式