MySQL_Ch6
1、数据操作语句(DML)
1)新增数据
- 方式1:给全表所有属性插入数据
基本格式
: insert into 表名 values(值1,值2,…)
- values中的值要与表中列的顺序一致
insert into emp1 values(1100,'haha','HR',
7788,'2000-10-10', 3000,300,30);
- 方式2:给部分属性插入数据,需要给出选定的列,
后面的值要与选定的列顺序一致
基本格式
:insert into 表名(列1,列2,…) values(值1,值2,…)
insert into emp1(empno,ename) values(1222, 'xixi');
递增约束
insert into temp(name) values('xixi');
- 一个软件系统中,关于数据库部分的信息迷
- 一般有一个预存信息,例如用户注册信息,管理员
- 网页 模拟注册登录过程
- 1)检测用户名是否重复、邮箱是否重复
select * from user where ename = ?;
-
- 2)填入基本信息实现数据插入
动态sql语句
- 2)填入基本信息实现数据插入
insert into user(name,age,birthday,tel) values(?,?);
-
- 3.1)直接跳转到首页
#首页显示用户基本信息,例如会员编号、昵称等等
- 3.1)直接跳转到首页
select last_insert_id();
select * from user where id = ?;
-
- 3.2)直接跳转到登录页面
-
- 3.3)输入用户名和者密码
select * from user where username = ? and password = ?;
-
- 3.4)转到首页
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区别:
- DDL 默认是直接提交数据库
- DML 在mysql中是默认自动提交数据库,但是可以修改设置,使其变为手动提交
截断表
格式:truncate table 表名
truncate table emp1; – 清空emp1的数据,表的结构还在
delelte , truncate , drop 区别
:
- delete 是DML语句,删除表中数据,表结构还在,而且记录每条数据的日志,数据可以恢复的
- truncate 是DDL语句,清空表中的数据,仅记录该操作的日志,数据是不可恢复的
- drop是DDL语句,直接删掉表,表结构不存在,不可恢复的
-
注:
大多数数据库都有自动备份功能binlog
切换自动提交功能
set 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;-- 关闭安全更新模式