DML语言
数据的插入
单行插入
insert into table1 (列名) values (列值);
insert into table1 (列名) set (列值);
多行插入
inset into table1 (列名) values (列值),(列值);
注:
- 列名和列值的数量要相同而且一 一对应,不能为null的列都要给值
- 列名可以隐去,这样相当所有列都赋值,如果可以为null要显性给null值,那么可以使用NULL
- 对于字符好日期型,值要给单引号,数值则不用
数据的修改
单个表
update table1 set 列名a = 列值a,列名b = 列值b where 条件列式;
多表
(一定要连接条件,不然你的条件列式如果只关于一个表只能限制一个表,那么另一个表可能会成为全表修改,如果用and则表示要两个条件成立,会修改)
update table1 as a,table2 as b set a.列名a=列值a1,a.列名b = 列值a2
where 连接条件 and 条件列式
数据的删除
单个表
delete from table where 条件列式
多表
delete a,b from table1 as a,table2 as b where 连接列式 and 条件列式
truncate table ;
- 不可以where条件
- 这个删除不可以回滚
- 效率高
- 全表数据删除
- 不能删除多个表
DDL 语言
库的管理
删除库
drop tablebase if exists 库名
创建库
create tablebase if not exists 库名
常规创建
drop tablebase if exists 库名
create tablebase 库名
表的管理
表的创建
删除表
drop table if exists 表名
创建表
create table if not exists 表名
常规创建
drop table if exitsts 表名
create table 表名
表的修改
– 修改列结构
alter table 表名 modify 列名 类型 约束 备注
– 修改列名
alter table 表名 modify 列名 新列名 类型 约束 备注
– 修改表名
alter table 表名 rename to 新表名
表的删除
drop table if exists 表名
表的复制
– 复制table2的结构到table
create table like table2;
–复制table2 的结构和数据到table(也可以是部分结构和数据)
- 先查询然后进行创建
create table select * from table2 where 条件列;
DCL 语言
事务
ACID特性
A: 原子性 : 事务里面的事件要么全部执行成功要么全部执行失败,保持完整性,不可能部分执行;
C: 一致性:事务进行修改前后数据要是完整的,即没有凭空产生或缺失的数据量;要保证数据修改都有来源
I: 隔离性:事务和事务之间要互不影响
D:持久性:事务提交成功后是持久化在数据库的,即是永久影响数据的,除非回滚
事务开启和关闭
set autocommit = 0; // 关闭自动提交
start transaction; // 开启新事务
commit; //提交
rollback; // 回滚
为设置事务级别并发下产生的问题
脏读: 事务读取到了另一个事务未提交的数据
不可重复读: 一个事务在内部事件两次读同一数据不一样;这是由于被其他事务修改
幻读:一个事务读取数据,发现条数修改了或为
隔离级别
为了在多个事务并发处理数据的时候保证数据的安全,所以设置隔离级别
隔离级别
read uncommitted 读未提交
read committed 读提交
repeatable read 可重复读
serializable 串行化
隔离级别查看和修改
select @@tx_isolation;
set @@tx_isolatin = read uncommitted;
set transaction isolation set read committed;
set global transaction isolation set serializable;