主键和外键的联系和区别
主键约束相当于 唯一约束 + 非空约束 的组合,其值能唯一地标识表中的每一行。主键约束列不允许重复,也不允许出现空值,每个表最多只允许一个主键。
外键(FK)是用于建立或加强两个表数据之间的链接的一列或多列,用于保证两个表之间的参照完整性,被參照的表称之为父表(parent table),创建外键的表称之为子表(child table)。子表中的外键关联了父表中的主键。
简述什么是视图、视图的作用,及基表和视图之间数据更新的关系
视图是一个虚拟表,是sql的查询结果,其内容由查询定义。同真实的表一样,视图包含一系列带有名称的列和行数据,视图并不在数据库中以存储的数据值集形式存在,在使用视图时动态生成。
视图作用:为了安全考虑,其次可使复杂的查询易于理解和使用。
视图的数据变化会影响到基表,基表的数据变化也会影响到视图。
简述什么是索引,以及索引的优缺点
数据库索引好比是一本书前面的目录,能加快数据库的查询速度,减少全表扫描。索引是对数据库表中一个或多个列的值进行排序的结构。
优点
- 大大加快数据的检索速度;
- 创建唯一性索引,保证数据库表中每一行数据的唯一性;
- 加速表和表之间的连接;
- 在使用分组和排序子句进行数据检索时,可以显著减少查询中分组和排序的时间。
缺点
- 索引需要占物理空间。
- 当对表中的数据进行增加、删除和修改的时候,索引也要动态的维护,降低了数据的维护速度。
简述内连接、外连接、等值连接、非等值连接之间的关系
- 内连接:在叉集的基础上返回满足条件的行
- 左外连接:在等值连接的基础上返回左表不满足条件的行,右侧用null代替。
- 右外连接:在等值连接的基础上返回左表不满足条件的行,左侧用null代替。
- 等值连接:和内连接执行效率和执行结果一样,只是书写方式不一样。
- 非等值连接:取左表或右表的部分行数据然后两两相交形成叉集。
简述事务如何开始的,遇到什么情况下事务会结束
在 MySQL 命令行的默认设置下,事务都是自动提交的,即执行了sql语句后系统自动COMMIT 操作,因此要显式地开启一个事务务须使用命令 BEGIN 或 START TRANSACTION,或者执行命令 SET AUTOCOMMIT=0,用来禁止使用当前会话的自动提交。事务开始于上一个事务结束后执行的第一个DML语句。
事务结束于下面的任一种情况的发生:
- 执行了COMMIT 或者ROLLBACK命令
- 隐式提交(单个的DDL或DCL语句)或自动提交
- 用户退出
- 系统崩溃