数据库复习

本文深入解析数据库操作核心,涵盖delete、truncate与drop的区别,事务的ACID特性,以及视图、存储过程、游标等高级概念。同时,详述了DDL、DML、DCL、DQL四大语言的应用场景与技巧。

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

数据库复习

关键概念辨析

1. delete VS truncate VS drop

关键词删除啥特性所属类别能否回滚举例
delete数据一行一行地删操作语言delete from table 表名
truncate数据所有行一起删定义语言不能truncate table 表名
drop数据+定义全表一锅端定义语言不能drop table 表名

就强度来说:DROP > TRUNCATE > DELETE

2. 关于事务

要么完全执行,要么完全不执行的一组SQL语句

可以在事务中间设置保留点,以实现部分回滚

2.1 事务的4大性质:ACID
  • 原子性:事务中的所有操作,要么全部完成要么不完成,不会卡在中间环节。如果事务执行中发生错误,就会回滚到事务开始前的状态。

  • 一致性:仅事务开始前状态和结束状态对外可见,中间状态不可见

  • 隔离性:事务之间不能相互干扰。事务隔离分为不同级别,包括读未提交(Read uncommitted)、读提交(read committed)、可重复读(repeatable read)和串行化(Serializable)。

  • 持久性:事务处理结束后,对数据的修改就是永久的

2.2 关于提交
  • 显式提交:用COMMIT命令完成
  • 隐式提交:用SQL命令间接完成的提交为隐式提交,如: ALTER,AUDIT,COMMENT,CONNECT,CREATE,DISCONNECT,DROP, EXIT,GRANT,NOAUDIT,QUIT,REVOKE,RENAME。
  • 自动提交:若把AUTOCOMMIT设置为ON,则在插入、修改、删除语句执行后, 系统将自动进行提交,这就是自动提交

3. 常用概念

视图view:虚拟的表,本身不包含数据,使用时再检索

/*在select句头上加一句*/
creat view 视图名 as 
select......

存储过程procedure:类似函数

游标:方便从查询结果中循环取数据

/*在select句头上加一句*/
declare 游标名 cursor for
select......

约束:要在定义表时定义,如主键(primary key)、外键(references)、检查约束

/*定义表时加约束*/
create table 表名
(字段1 数据类型 NOT NULL PARIMARY KEY,
 字段2 数据类型 NOT NULL REFERENCES 其他表名(该表主键字段名),
 字段3 数据类型 NOT NULL check(字段3 > 0))
 
/*后来再加的约束*/
alter table 表名 
add constraint primary key (字段名)
add constraint references 其他表名(字段名)
add constraint check (字段条件)

索引:数据库保存一份按索引排过序的列表

触发器:仅与单个表相关,与insert、update、delete语句相关联

DDL数据定义语言(create/drop/alter/rename)

1. 操作数据库

create database if not exists 数据库名

drop database if exists 数据库名

2. 操作数据库表

用来创建、修改、删除各种对象——表、视图、索引、触发器、存储过程等

如 create table/view/index/trigger/

2.1 添加字段
alter table 表名 add 字段 数据类型  --末尾加 first = 添加到第一列;末尾加 after 字段名 = 添加到该列后面
2.2 删除字段
alter table 表名 drop 字段名
2.3 修改字段(名称、类型、长度、约束描述等 )
alter table 表名 modify 字段名 新数据类型  --改数据类型

alter table 表名 change 旧字段名 新字段名 新数据类型
2.4 修改表名
rename table 旧表名 to 新表名
2.5 删除表
drop table 表名

DML数据操纵语言(insert/update/delete)

1. INSERT

1.1 插入
insert into (字段1, 字段2, 字段3......) values(字段1, 字段2, 字段3......), (字段1, 字段2, 字段3......)

insert into  (字段1, 字段2, 字段3......) select (字段1, 字段2, 字段3......) from 表名
1.2 复制表
create table 新表名 as select * from 旧表名

2. UPDATE(必须带where条件,不然不知道改哪里)

update 表名 set1=,2=where 条件 

3. DELETE(必须带where条件)

delete from 表名 where 条件 

DCL 数据控制语言(grant/rollback/commit)

控制关于数据库的权限,控制事务等

DQL数据查询语言(select)

易错点:
  1. where子句中不能使用聚集函数,但having子句中可以
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值