约束
概念:
约束是作用在表中列上的规则,用于限制加入表中的数据
约束的存在保证了数据库中数据的正确性、有效性和完整性
非空约束
保证列中所有数据不能为null not null
唯一约束
保证列中所有数据各不相同 unique
主键约束
主键是一行数据的唯一标识,要求非空且唯一 unique+not null=primary key
检查约束(mysql不支持)
保证列中的值满足某一条件 check
默认约束
保存数据时,未指定值则采用默认值 default
不给值时是默认值,若给null则为null,null也是值
外键约束
外键是用来让两个表的数据之间建立连接,保证数据的一致性和完整性 foreign key 使表之间有物理连接
先创建主表(约束的表)如下面的部门表
-- 部门表
create table dept(
id int PRIMARY KEY auto_crement,
dep_name varchar(20),
addr varchar(20)
);
-- 员工表
create table emp(
id int PRIMARY KEY auto_crement,
name VARCHAR(20),
age int,
dept_id int ,
FOREIGN KEY(dept_id) references dept(id);
);
** 添加约束**
-- 建表时添加
create table 表名(
列名 数据类型,
.....,
[constraint] [外键名称] foreign key(外键列名) references 主表(主表列名)
);
-- 建表后添加外键约束
alter table 表名 add constraint 外键名称 foreign key (外键字段) references 主表名称(主表列名);
删除约束
alter table 表名 drop foreign key 外键名称;
练习
create table emp(
id int ,#员工id,主键且自增长
ename varchar(50),#员工姓名,非空且唯一
joindate date ,#入职时间,非空
salary double(7,2),#工资非空
bonus double(7,2)#非空,默认为0
);
结果
create table emp(
id int PRIMARY KEY auto_increment,#员工id,主键且自增长
ename varchar(50) NOT NULL UNION,#员工姓名,非空且唯一
joindate date NOT NULL,#入职时间,非空
salary double(7,2)NOT NULL,#工资非空
bonus double(7,2) DEFAULT(0)#非空,默认为0
);
也可以在建完表之后添加约束
添加约束
alter table 表名 modify 字段名 数据类型 约束;
删除约束
alter table 表名 modify 字段名 数据类型;
数据库设计
软件研发步骤
可行性研究 需求分析 软件设计 编码 测试 安装与维护
数据库设计概念
数据库就是根据业务系统的具体需求,结合我们所选的DBMS,为这个业务系统构造出最优的数据存储模型
建立数据库中的表结构以及表与表之间的关联关系的过程
有哪些表?表里有哪些字段?表与表之间的关系?
数据库设计步骤
(1)需求分析(数据是什么?数据有哪些属性?数据与属性的特点是什么?)
(2)逻辑分析(通过ER图对数据库进行逻辑建模)
(3)物理设计(根据数据库自身的特点把逻辑设计转换为物理设计)
(4)维护设计(1.对新的需求进行建表2.表优化)
表关系
一对一:可由由一张表拆分而来,可用外键 unique实现
一对多:用外键实现
多对多:通过建立第三张中间表,中间表至少包含两个外键,分别关联两方主键