目录
插入
删除
修改
数据库事务
事务的特征(ACID原则)
原子性
一致性
隔离性
持久性
事务隔离级别
读未提交
读已提交
可重复读
序列化
脏读
虚读
幻读
插入
insert into 表名 values();
要求插入数据的数量,类型要和定义的表结构一致
insert into dept values(50,'BIGDATA','hefei');
insert into dept values(60,'AI','hefei');
insert into dept values(70,'AIGC','beijing');
insert into 表名(列名) values (值...);
要求插入数据的数量顺序和表名后的列要一致
INSERT into emp(empno,ename,deptno) values(6868,'wzq',10);
insert into 表名(列名) select...
全量导入
create table dp as select * from dept where 1<>1;
这里创建了一个名为 dp
的新表,该表的数据是通过从 dept
表中选择满足 1<>1
条件的记录来获取的。然而,1<>1
这个条件永远为假,所以实际上不会从 dept
表中选择到任何记录,新创建的 dp
表将是一个空表。
create table dp as select* from dept where 10<>3
在这个语句中,10<>3的条件始终为真,所以它会从
dept表中选取所有的记录来创建新表
dp
如果不是全局导入,只需要导入第几行到第几行,可以使用limit
在 MySQL 中,LIMIT
子句的正确语法应该是
LIMIT offset, count
-- offset 表示偏移量(起始行数,从 0 开始计数)
-- count 表示要获取的行数。
比如上一步中我只需要导入3-5行的数据,即偏移量为2,行数3
create table dp as select* from dept where 10<>3 LIMIT 2,3;
增量导入
insert into dept(deptno,dname) select empno ,ename from emp;
删除
delete from 表名;
delete from 表名 where 条件
delete from emp where comm is null;
-- 这属于一种物理删除,删完之后理论上不能再找回,短时间内紧急联系网管
truncate table emp;
TRUNCATE TABLE emp;
是截断表 emp
的操作,会快速删除表中的所有数据,并重置表的相关属性,如自增主键的值等, 但它不会记录删除操作的日志,因此执行速度通常比 DELETE FROM emp;
更快。而 DELETE FROM
操作可以回滚(在支持事务的情况下)
修改
update 表名 set 列名=value,列名=value
update salgrade set losal=888,hisal=999;
这个操作会把losal列的值都改成888,hisal列的值都改成999
update 表名 set 列名=value,列名=value where 条件
update salgrade set losal = 666 ,hisal = 1888 where grade = 3;
数据库事务
数据库管理系统执行过程中的一个逻辑单位,由一个有限的数据库操作序列构成。
事务指的是数据库一种保护数据的方式。
事务一般由增删改操作自动调用,不同提交的时机也是不同的。mysql数据库默认执行增删改就会提交事务,我们可以设置为手动提交 begin 或者 start transaction;
事务的特征(ACID原则)
原子性
事务是操作数据的最小单元,不可以再分
一致性
事务提交之后,整个数据库所看到数据都是最新的数据,所有人看到的数据都是一致的
隔离性
别人无法访问到我们未提交的数据,而且一旦这个数据被我修改,别人也无法进行操作
持久性
事务一旦被提交,数据库就进入到一个全新的状态,数据再也不能返回到上一个状态
事务如何开启和提交?
事务隔离级别
根据数据库的不同用途,我们可以对数据库的事务进行级别的设置,级别设置的越高,数据越安全,但是效率越低
读未提交
我们可以读取到别人未提交的数据,有可能产生脏读的问题
读已提交
只能读取别人提交后的数据,不能达到可重复读,但是可以避免脏读,有可能产生虚读或者幻读的情况
可重复读
当数据被我查询之后,别人就不能修改这个数据了,说明在我查询的时候已经有事务操作到这些数据,查询都会开启事务,但是不能防止别人查询别的数据。
序列化
当前数据库只能存在一个事务,但我操作数据库的时候,别人是不能访问数据库的,这时对于用户来讲数据相当安全,一般在倒库的时候才会开启这种级别。
脏读
读取别人未提交的数据,这个数据是不安全的。
虚读
第一次读取的数据,第二次在读取的时候有可能被被人修改了。
幻读
第一次读取的数据,第二次多了一条或者少了一条。