1.主键和外键有什么区别?

主键(主码) :主键用于唯一标识一个元组,不能有重复,不允许为空。一个表只能有一个主键。
外键(外码) :外键用来和其他表建立联系用,外键是另一表的主键,外键是可以有重复的,可以是空值。一个表可以有多个外键。

2.E-R图也称实体-联系图(Entity Relationship Diagram)

提供了表示实体类型、属性和联系的方法,用来描述现实世界的概念模型。关系模型

3.数据库范式了解吗?

1NF(第一范式)

属性(对应于表中的字段)不能再被分割,也就是这个字段只能是一个值,不能再分为多个其他的字段了。1NF是所有关系型数据库的最基本要求 ,也就是说关系型数据库中创建的表一定满足第一范式。

2NF(第二范式)

2NF在1NF的基础之上,消除了非主属性对于码的部分函数依赖。如下图所示,展示了第一范式到第二范式的过渡。第二范式在第一范式的基础上增加了一个列,这个列称为主键,非主属性都依赖于主键。

pacemaker mysql主主 mysql主码_pacemaker mysql主主


3NF(第三范式)

3NF在2NF的基础之上,消除了非主属性对于码的传递函数依赖 。符合3NF要求的数据库设计,基本上解决了数据冗余过大,插入异常,修改异常,删除异常的问题。比如在关系R(学号 ,姓名, 系名,系主任)中,学号 → 系名,系名 → 系主任,所以存在非主属性系主任对于学号的传递函数依赖,所以该表的设计,不符合3NF的要求。

总结:

1NF:属性不可再分。

2NF:1NF的基础之上,消除了非主属性对于码的部分函数依赖。

3NF:3NF在2NF的基础之上,消除了非主属性对于码的传递函数依赖 。

4.什么是存储过程与触发器区别  ?

我们可以把存储过程看成是一些 SQL 语句的集合,中间加了点逻辑控制语句。
两者唯一区别是触发器不能用execute语句调用,而是执行用户tranct-sql语句自动执行触发。触发器是在一个修改了指定表的数据时执行存储过程。触发器主要是通过事件执行触发而被被执行,而存储过程是通过存储过程名称名字而直接调用。
存储过程是必须由用户或者应用程序调用执行,触发器是在进行一系列操作时触发器才执行。

5.drop、delete与truncate区别?

用法不同
drop(丢弃数据): drop table 表名 ,直接将表都删除掉,在删除表的时候使用。
truncate (清空数据) : truncate table 表名 ,只删除表中的数据,在清空表中数据的时候使用。
delete(删除数据) : delete from 表名 where 列名=值,删除某一列的数据,如果不加 where 子句和truncate table 表名作用类似。
truncate 和不带 where 子句的 delete、以及 drop 都会删除表内的数据,但是 truncate 和 delete 只删除数据不删除表的结构(定义),执行drop语句,此表的结构也会删除,也就是执行 drop 之后对应的表不复存在。
执行速度不同
一般来说:drop>truncate>delete

6.DML 语句和 DDL 语句区别:

DML 是数据库操作语言(Data Manipulation Language)的缩写,是指对数据库中表记录的操作,主要包括表记录的插入(insert)、更新(update)、删除(delete)和查询(select),是开发人员日常使用最频繁的操作。
DDL (Data Definition Language)是数据定义语言的缩写,简单来说,就是对数据库内部的对象进行创建、删除、修改的操作语言。