数据库
- 事务
四大特征ACID①原子性:事务是最小的执行单位,不允许分割,要么不做要么都做完。
②一致性:事务操作之后,数据前后保持一致状态。
③隔离性:指一个事务的内部操作对别的事务是是隔离的,并发的事务之间互不干扰。
④持久性:指一个事务一旦提交,它对数据库中的数据的改变就应该是永久性的。
脏读:比如A事务修改了某数据,但是没提交,B事务读取了这个数据,A事务发生回滚,B事务读的这个就是脏数据。
不可重复读:在同一个事务内,两次相同的查询返回了不同的结果。如何A读取一个数据,期间B修改了,A再次读取就不一样。
幻读:事务不独立执行会产生的现象。:A事务将数据库中所有数据都删除,B事务又插入了一个数据,导致删除后发现还有一个数据。
数据库隔离级别?读未提交,可能发生、脏读、不可重复度、幻读 读提交,可以避免脏读
可重复度,可避免脏读、不可重复度 串行化,可避免脏读、不可重复度、幻读
- 数据库都有什么锁?
按照锁的级别分有表级锁、页级锁、行级锁,表级锁的开销最小,不会出现死锁。
其他有悲观锁、乐观锁、共享锁、排他锁、意向锁、行锁。
- 数据库的左连接和右连接的区别?
left join(左联接) 返回包括左表中的所有记录和右表中联结字段相等的记录
right join(右联接) 返回包括右表中的所有记录和左表中联结字段相等的记录
inner join(等值连接,内连接) 只返回两个表中连接字段相等的行
full join (全外连接):返回左右表中所有的记录和左右表中连接字段相等的记录。
- 数据库索引?
数据库索引分为:普通索引、唯一索引、全文索引、空间索引、单列索引、多列索引
优点:①能够加快数据的检索速度②唯一性索引可以保证每一行数据的唯一性③加速表与表之间的连接 缺点:①创建索引需要消耗时间②创建索引需要消耗物理空间③维护数据库也要维护索引
数据库的底层索引是用B树和B+树实现的,但是为什么使用的是它们,为什么不用红黑树?
B+Tree的内部节点存key,叶子节点存value,这样可以更快的缩小查找范围,提升sql的查询效率红黑树等数据结构也可以用来实现索引,但是文件系统以及数据库系统普遍采用B-Tree/B+Tree作为索引结构.这是因为:索引本身也很大,因此索引往往是以索引文件的形式存储在磁盘上.所以,索引查找的过程就会产生磁盘的I/O操作,相比于内存存取,I/O存取消耗要高几个数量级,所以索引的优劣最重要的指标就是在查找过程中的磁盘I/O存取次数.
- delete、truncate、drop的区别?
①delete是删除某行数据,truncate是清空表、drop是删除表②delete可以回滚、truncate和drop不能回滚③执行速度上drop>truncate>delete
- 数据库的优化方法?
八种①使用索引,使用外键,使用锁,使用事务②选合适的字段属性,优化查询语句,使用连接代替子查询③使用联合代替临时表
7.order by和group by的区别
①order by 对字段进行排序,默认的为升序ASC,降序是DESC. ②group by是分组查询,一般和聚合函数同时使用
8.视图和表的区别
①视图是编译好的sql语言,表不是②视图没有实际物理记录,而表有③视图是窗口,表是内容
④视图是虚表,表是实表
9.什么是存储过程?
存储过程是一系列特点sql语言的集合,而且是已经编译过的可以直接运行,使用它能大大方便对数据库进行操作 优点:执行效率高、安全性高、存储本地减少网络通讯,缺点可移植性差
10.SQL语言有哪些功能?
①数据查询DQL select②数据定义DDLcreate、drop③数据操纵DML insert、update、delete④DCL数据控制grant、revoke
11.什么是触发器(trigger)?
触发器是由某个事件来触发某个操作,事件包括insert语句、update语句、delete语句,当数据库执行这些语句就会激发相应的操作 作用:①它可以强化约束,来维护数据的完整性②写入数据前可以检验和转换
12.什么是游标?
游标实际上是存储过程中的操作,用来读取数据的。游标充当指针的作用。包括声明游标、打开游标、使用游标和关闭游标。处理之前,变量之后
13.like %和-的区别?
like有两种通配符 % -,%可以匹配多个字符,-只能匹配1个
14.聚簇索引和非聚簇索引?
聚集索引表记录的排列顺序和索引的排列顺序一致,所以查询效率快,非聚集索引指定了表中记录的逻辑顺序,但是记录的物理和索引不一定一致
15.mysql存储引擎?
inInnoDB、MyISAM的区别?、
innoDB支持事务,myisam不支持,innodb支持外键,myisam不支持,innodb使用聚簇索引,myisam使用非聚簇索引
16.什么是死锁?
两个进程因互相等待资源而引发的一种无限等待过程叫死锁。
17悲观锁和乐观锁?
悲观锁认为数据每时每刻都在变动,一个事务拿到悲观锁后,其他任何事务都不能对该数据进行修改。乐观锁认为数据的变动不会太频繁。因此,它允许多个事务同时对数据进行修改。
18.数据库完整性约束?
实体完整性、参照完整性、用户定义的完整性
19.
聚合函数
1.count() 所有记录数bai2.count(*)所有非null记录数3.avg() 某一列du平均值
4.min() 某一列最zhi小值5.max() 某一列最大值6.sum() 某一列总和
20.