欧易

欧易(OKX)

国内用户最喜爱的合约交易所

火币

火币(HTX )

全球知名的比特币交易所

币安

币安(Binance)

全球用户最多的交易所

数据库的基础知识都有哪些

2022-10-09 14:54:15 537

摘要:数据库是程序员在学习后端编程开发技术的时候需要重点掌握的一个编程能力,而今天我们就一起来了解一下,数据库的基础知识都有哪些。1、基本sql语句select * from table where 条件insert int table (字段)...

数据库是程序员在学习后端编程开发技术的时候需要重点掌握的一个编程能力,而今天我们就一起来了解一下,数据库的基础知识都有哪些。

1、基本sql语句

select * from table where 条件

insert int table (字段) values (值)

update table set 字段名=字段值 where 条件

delete from table where 条件

create table tablename (字段)

drop table tablename

grant(为用户授予系统权限)

revoke(收回系统权限)

2、delete、truncate、drop的区别

同:delete和truncate都可以删除一个表中的数据,而drop是直接删除这个表(包括结构和数据)。

不同:a、truncate和drop是DDL(数据定义语言),它会被隐式的提交,一旦执行将不能回滚。delete操作则是每次从表中删除一行数据,同时将删除的操作以日志的形式保存,以便将来回滚操作。

b、用delete操作后,被删除的数据占用的内存空间还在,还可以恢复。而用truncate和drop操作删除数据以后,被删除的数据会立即释放占用的存储空间,被删除的数据不能恢复。

c、速度drop > truncate > delete

3、内连接和外连接的区别

内连接只显示符合连接条件的记录,可能造成信息丢失

外连接除了显示符合连接条件的记录外,还显示表中的记录

select fieldlist from table1 inner join table2 on table1.column = table2.column

4、什么是事务,什么是ACID

事务是指满足ACID特性的一组操作,可以通过commit提交一个事务,也可以通过rollback进行回滚。

A-原子性-事务是一个不可分割的整体

C-一致性-一个事务执行前后,数据库数据必须保持一致性的状态

I-隔离性-一个事务所做的修改在终提交以前,对其他事务是不可见的

D-持久性-一旦事务提交,其所做的修改将会永远保存到数据库。及时系统崩溃,事务执行的结果也不能丢失。

5、什么是存储过程

将为了完成特定功能的SQL语句集进行编译优化后,存储在数据库服务器中,用户通过指定存储过程的名字调用执行。

其实存储过程就是对一系列SQL操作的批处理

每次只能给一个变量赋值,不支持集合的操作

好处:代码封装,保证安全性/代码复用/预先编译,因此性能高

6、并发一致性问题(针对事务的隔离性)

丢失修改-T1先修改,T2随后修改,T2的修改覆盖了T1的修改。

读脏数据-T1修改一个数据,T2随后读取这个数据。如果T1撤销了这次修改,那么T2读取的数据是脏数据。

不可重复读-T2读取一个数据,T1对该数据做修改。如果T2再次读这个数据,此时读取的结果和一次读取的结果不同。

幻读-T1读取某个范围的数据,T2在这个范围内插入新的数据,T1再次读取这个范围的数据,此时读取的结果和一次读 取的结果不同。

7、封锁实现并发控制

封锁粒度-行级锁和表级锁

封锁类型-a、读写锁

排它锁--写锁--X锁

共享锁--读锁--S锁

b、意向锁

解决表锁与之前可能存在的行锁冲突,避免为了判断表是否存在行锁而去扫描全表的系统消耗。

意向锁在原来X/S锁上引入了IX/IS,IX/IS是表锁,用来表示一个事务想要在表中的某个数据行上加X/S锁。

数据库判断冲突:原来 step1:判断表是否已被其他事务用表锁锁表

step2:判断表中的每一行是否已被行锁锁住。

现在 step1:同上 step2:发现表上有意向共享锁,说明表中有些行被共享行锁锁 住了,因此,事务B申请表的写锁会被阻塞。

封锁协议-一级封锁协议--事务T要修改数据A时必须加X锁,直到T结束才释放锁。

二级封锁协议--在一级的基础上,要求读取数据A时必须加S锁,读取完马上释放S锁。

三级封锁协议--在二级的基础上,要求读取数据A时必须加S锁,直到事务结束了才能释放S锁。

两段锁协议-加锁和解锁分为两个阶段执行

MySQL的InnoDB存储引擎采用两段锁协议,会根据隔离级别在需要的时候自动加锁,并且所有的锁都是在同 一时刻被释放,这被称为隐式锁定。

8、事务隔离级别实现并发一致性问题

未提交读--事务中的修改,即使没有提交,对其它事务也是可见的。

提交读--一个事务只能读取已经提交的事务所做的修改。

可重复读--保证在同一个事务中多次读取同样数据的结果是一样的。

可串行化--强制事务串行执行,需要加锁实现,而其它隔离级别通常不需要。

版权声明:本站所有文章皆是来自互联网,如内容侵权可以联系我们( 微信:bisheco )删除!
友情链接
币圈社群欧易官网