Mysql简介

一、什么是存储过程?有哪些优缺点?
存储过程是一些预编译的SQL语句。
更加直白的理解:存储过程是一个记录集,他是由一些T_SQL语句组成的代码块,这些T-SQL语句像一个方法一样实现一些功能(对单表或多表的增删改查),然后再给这个代码块取个名字。用的时候调这个功能就行了。
(1)存储过程是一个预编译的代码块,执行效率高
(2)一个存储过程代替大量T_SQL语句,可以降低网络通信量,提高通信速率
(3)可以一定程度上确保数据安全
二、什么是索引以及作用优缺点
索引是对数据库表中一个或多个列的值进行排序的结构,是可以帮助MySql高效获取数据的数据结构。
说白了索引就是加快索引表中数据的方法。数据库的索引类似于书籍的索引,在数据库中,索引也允许数据库程序迅速地找到表中的数据,而不必扫描整个数据库。

Mysql的索引类型:
(1)普通索引
(2)唯一索引
(3)主键索引
(4)全文索引
索引的优点:
1、索引加快了数据库的检索速度
2、索引降低了插入、删除、修改等维护任务的速度
3、唯一索引可以确保么一行数据的唯一性
4、通过使用索引,可以在查询的过程中使用优化隐藏器,提高系统的性能。
5、索引需要占物理和数据空间

什么是事务?
十事务是并发执行的基本单位。所谓的事务,它是一个操作序列,要么都执行,要么都不执行,
它是一个不可分割的工作单位。事务是数据库维护数据一致性的基本单位,在每个事务结束时,都能保持数据一致性。

数据库的悲观锁和乐观锁
乐观并发控制(乐观锁)和悲观并发控制(悲观锁)是并发控制主要采用的技术手段。

悲观锁:假定会发生并发冲突,屏蔽一切可能违反数据完整性的操作
乐观锁:假设不会发生并发冲突,只在提交操作时检查是否违反数据完整性。

drop、delete、truncate的区别
delete和truncate只删除表的数据不删除表的结构
速度,一般来说: drop> truncate >delete

delete语句是dml,这个操作会放到rollback segement中,事务提交之后才生效;如果有相应的trigger,执行的时候将被触发. truncate,drop是ddl, 操作立即生效,原数据不放到rollback segment中,不能回滚. 操作不触发trigger.

drop、delete与truncate分别在什么场景之下使用?
不再需要一张表的时候,用drop
想删除部分数据行时候,用delete,并且带上where子句
保留表而删除所有数据的时候用truncate

什么是视图?以及视图的使用场景有哪些?
视图是一种虚拟的表,具有和物理表相同的功能。可以对视图进行增,改,查,操作,试图通常是有一个表或者多个表的行或列的子集。对视图的修改不影响基本表。它使得我们获取数据更容易,相比多表查询。

数据库三大范式
第一范式(1NF):数据库表中的字段都是单一属性的,不可再分。这个单一属性由基本类型构成,包括整型、实数、字符型、逻辑型、日期型等。
第二范式(2NF):数据库表中不存在非关键字段对任一候选关键字段的部分函数依赖(部分函数依赖指的是存在组合关键字中的某些字段决定非关键字段的情况),也即所有非关键字段都完全依赖于任意一组候选关键字。

第三范式(3NF):在第二范式的基础上,数据表中如果不存在非关键字段对任一候选关键字段的传递函数依赖则符合第三范式。所谓传递函数依赖,指的是如 果存在"A → B → C"的决定关系,则C传递函数依赖于A。因此,满足第三范式的数据库表应该不存在如下依赖关系: 关键字段 → 非关键字段 x → 非关键字段y

varchar与char的区别
char是一种固定长度的类型,varchar则是一种可变长度的类型

什么是内联接、左外联接、右外联接?

内联接(Inner Join):匹配2张表中相关联的记录。
l 左外联接(Left Outer Join):除了匹配2张表中相关联的记录外,还会匹配左表中剩余的记录,右表中未匹配到的字段用NULL表示。
l 右外联接(Right Outer Join):除了匹配2张表中相关联的记录外,还会匹配右表中剩余的记录,左表中未匹配到的字段用NULL表示。
在判定左表和右表时,要根据表名出现在Outer Join的左右位置关系。

什么是游标?

游标实际上是一种能从包括多条数据记录的结果集中每次提取一条记录进行处理的机制。
游标的使用步骤:

  1. 定义游标:declare cursor 游标名称 for select查询语句 [for {readonly|update}]
  2. 打开游标:open cursor
  3. 从游标中操作数据:fetch… … current of cursor
  4. 关闭游标:close cursor

触发器的作用?
答:触发器是一中特殊的存储过程,主要是通过事件来触发而被执行的。它可以强化约束,来维护数据的完整性和一致性,可以跟踪数据库内的操作从而不允许未经许可的更新和变化。可以联级运算。如,某表上的触发器上包含对另一个表的数据操作,而该操作又会导致该表触发器被触发。

你可能感兴趣的:(数据库)