第四章-DML,DDL和DCL语言

本文详细介绍了SQL语言中数据操作语言(DML)和数据定义语言(DDL)的使用方法,包括数据的插入、修改、删除,以及表和库的创建、修改、删除等操作。同时,还讲解了事务处理和隔离级别的概念及其在数据库操作中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值