创建、修改、删除表
1、表的概念
表的三要素:表名、属性、记录。
2、关系型数据库建表规范
主键 :由一种属性或多种属性组成。
第一范式(1NF):属性必需具有原子性。
第二范式(2NF):包含1NF,表必须有一个主键,表中所有非主属性必须完全依赖
于主键,不可只依赖主键的一部分。
(注:当主键有多个属性时,才会出现不符合2NF的情况)
第三范式(3NF):包含2NF,表中所有属性必须直接依赖主键,表中所有非主属性之间
不可存在依赖关系。
BCNF :包含3NF,主键中各个属性之间不可存在依赖关系。
(注:当主键有多个属性时,才会出现不符合BCNF的情况)
3、不符合见建表规范案例和解决方案
不符合1NF :拆分属性,把属性拆分成多个属性。
不符合2NF :分表,把部分依赖主键的非主属性分到其他的表中
不符合3NF :分表 + 外键,把有依赖关系的非主属性分到另一个表中,建立外键。
不符合BCNF :分表,把有依赖关系的主属性分到另一个表中。
4、创建表
CREATE TABLE 表名( 属性名 数据类型 [完整性约束条件],
属性名 数据类型 [完整性约束条件],
... ...
属性名 数据类型 [完整性约束条件]
[各种修饰条件,如主键、外键、索引]);
完整性约束条件 | |
约束条件 | 说明 |
PRIMARY KEY | 属性的主键,唯一标识表中每条信息 |
FOREIGN KEY | 属性的外键,唯一标识两个表之间的依赖关系 |
NOT NULL | 属性不能为空 |
UNIQUE | 属性值是唯一的 |
AUTO_INCREMENT | 属性值自增(MySQL特色) |
DEFAULT | 属性设置默认值 |
4.1主键
1]单字段主键
属性名 数据类型 PRIMARY KEY
2]多字段主键
PRIMARY KEY(属性1, 属性2, 属性3 ... ...)
4.2外键
一个表的某几个属性为另一个表的主键,则这几个属性称之为外键。
拥有外键的表为子表,另一个表为父表。
CONSTRAINT 外键别名 FOREIGN KEY(外键属性1,外键属性2,... ...)
REFERENCES 父表名(父表主键);
4.3非空约束
属性名 属性类型 NOT NULL
4.4表的唯一性约束
属性名 属性类型 UNIQUE
注:也就是说该属性的每个元素都是唯一的,各不相同。
4.5自增属性约束
属性名 属性类型 AUTO_INCREMENT
注:表只能有一个自增属性,且表的自增属性必须是主键的一部分。
4.6属性的默认值
属性名 属性类型 DEFAULT 默认值。
5、查看表结构
DESCRIBE 表名; 或 DESC 表名;
6、 查看表的详细定义(创建表的create语句,可以看到完整性约束条件)
SHOW CREATE TABLE 表名 \G;
‘\G’表示格式化输出
7、 修改表名
ALTER TABLE 旧表名 RENAME [TO] 新表名;
8、 修改表中属性类型
ALTER TABLE 表名 MODIFY 属性名 属性类型;
9、 修改属性名、属性类型
ALTER TABLE 表名 CHANGE旧属性名 新属性名 新属性类型;
10、在已有表中添加新属性
ALTER TABLE 表名 ADD 属性名 属性类型 [完整性约束条件] [FIRST | AFTER 已有属性];
FIRST表示字段插入到表头。
AFTER 已有属性 表示字段插入到表中[已有属性]的后面。
11、删除表中属性
ALTER TABLE 表名 DROP 属性名;
12、 修改字段的排列位置(把已有属性1的位置放在已有属性2的 <前|后> )
ALTER TABLE 表名 MODIFY 已有属性1 数据类型 FIRST|AFTER 已有属性2;
13、 更改表的存储引擎
ALTER TABLE 表名 ENGINE=存储引擎名;
14、 删除表的外键约束
ALTER TABLE 表名 DROP FOREIGN 外键约束名;
15、 删除表
DROP TABLE 表名;
(注:如果是被其他外键关联的父表,则需先删除外键)