数据库理论基本
1、数据库中包含的名词
-》数据字典:描述数据的数据
name=sk
age=18
sk、18是数据
name、age也是数据
-》问:关于数据库的名词有哪些?
-》数据库管理系统DBMS
-》表table
-》列column
-》字段field
-》行row
-》范式:
第一范式:列的原子性
第二范式:不要重复
第三范式:引用其它表的主键信息
马子和,范国伟,雷宏斌,陈家辉
2、约束
-》问:包含哪些约束
主键约束primary key
唯一约束unique
外键约束foreign key
默认约束default
非空约束not null
检查约束check
3、基本操作
-》数据库的创建、分离、附加
-》关于列类型
-》文本类型:区分var前缀、n前缀
对于不带var的情况,表示不可变长度,如果赋的值不够指定位数,则末尾使用空格补齐
对于带var的情况,表示可变长度,如果赋的值不够指定位数,以实际赋的值为准
对于unicode这种编码格式
如果是带n的,则每个字符占2个字节
如果不带n的,则英文字符占1个字节,中文字节占两个字节
-》表的创建
1)做主键
2)做标识:由系统自己维护这个列的值
3)做非空约束
-》外键
对应关系:1对1,1对多,多对多
1对1的关系,这种数据存储到双方任一表里就可以
1对多的关系,将关系的数据存储到多的一方的表里
多对多的关系,单独建立一个表,用于存储关系
根据关系创建出来的列所存储的信息,需要满足第3NF
示例:部门-员工的关系是1:n
只要在员工表中建立了eDId这个列,就已经存储了部门与员工的关系
外键只是一个约束,保证数据的有效性
外键需要建立在关系列上
-》多对多练习
新建工作任务表Task:工作名称
经分析,员工表-任务表的对应关系是:m:n
-》关系也是一个数据,必须存储在表中
4、脚本一:DDL
-》create alter drop
-》database table column
-》约束关键字(见2)
5、脚本二:DML
-》insert into 表名(列名1,列名2,...) values(值1,值2,...)
-》update 表名 set 列名1=值1,列名2=值2,...[ where ...]
-》delete [from] 表名 [where ...]
注意:一般不使用物理删除,一旦删除不可恢复
建议使用逻辑删除,即为表加一个表示“是否删除”的bit类型的列
删除后,编号继续向后排,不会恢复到种子值
truncate table 表名:清空表,将所有数据删除的执行效率要比delete高
使用这种方法删除后,再插入数据时,标识会恢复到种子值
-》select
-》难理解的点:关系,外键约束