MySQL--约束

一、约束的概念:

①约束的作用与表中列上的规则,用于限制加入表的数据
②约束的存在保证了数据库中数据的正确性、有效性和完整性

二、约束分类:

约束名称描述关键字
非空约束保证列中所有数据不能有null数据NOT NULL
唯一约束保证列中所有数据各不相同UNIQUE
主键约束主键是一行数据的唯一标识,要求非空且唯一PRIMARY KEY
检查约束保证列中的值满足某一条件CHECK
默认约束保存数据时,未指定则采用默认值DEFAULT
外键约束外键用来让两个表的数据之间建立链接,保证数据的一致性和完整性FOREIGN KEY

注意:MySQL不支持检查约束

非空约束


1.创建表时添加非空约束:

CREATE TABLE 表名(
    列名 数据类型 NOT NULL [AUTO_INCREMENT],
    ...
);

AUTO_INCREMENT:当不指定值时自动增长(可写可不写)

 CREATE TABLE emp(
    -> id INT NOT NULL AUTO_INCREMENT,
    -> ename VARCHAR(50),
    -> joindate DATE,
    -> salary DOUBLE(7,2),
    -> bonus DOUBLE(7,2)
    -> );

 2.建完表后添加非空约束:

ALTER TABLE 表名 MODIFY 字段名 数据类型 NOT NULL;

ALTER TABLE emp MODIFY id INT NOT NULL;

 3.删除非空约束:

ALTER TABLE 表名 MODIFY 字段名 数据类型;

ALTER TABLE emp MODIFY id INT;

 唯一约束


1.创建表时添加唯一约束:

CREATE TABLE 表名(
    列名 数据类型 UNIQUE [AUTO_INCREMENT],
    ...
);

AUTO_INCREMENT:当不指定值时自动增长(可写可不写)

​CREATE TABLE emp(
   -> id INT,
   -> ename VARCHAR(50) UNIQUE,
   -> joindate DATE,
   -> salary DOUBLE(7,2),
   -> bonus DOUBLE(7,2)
   -> );

 2.建完表后添加唯一约束:

ALTER TABLE 表名 MODIFY 字段名 数据类型 UNIQUE;

ALTER TABLE emp MODIFY ename VARCHAR(50) UNIQUE;

3.删除唯一约束:

ALTER TABLE 表名 DROP INDEX 字段名;

ALTER TABLE emp DROP INDEX ename;

 主键约束


1.创建表时添加主键约束:

CREATE TABLE 表名(
    列名 数据类型 PRIMARY KEY  [AUTO_INCREMENT],
    ...
);

AUTO_INCREMENT:当不指定值时自动增长(可写可不写)

​CREATE TABLE emp(
   -> id INT PRIMARY KEY,
   -> ename VARCHAR(50),
   -> joindate DATE,
   -> salary DOUBLE(7,2),
   -> bonus DOUBLE(7,2)
   -> );

2.建完表后添加主键约束:

ALTER TABLE 表名 ADD PRIMARY KEY(字段名);

ALTER TABLE emp ADD PRIMARY KEY(id);

3.删除主键约束:

ALTER TABLE 表名 DROP PRIMARY KEY;

ALTER TABLE emp DROP PRIMARY KEY;

 默认约束


1.创建表是添加默认约束:

CREATE TABLE 表名(
    列名 数据类型 DEFAULY 默认值,
    ...
);

​​CREATE TABLE emp(
   -> id INT,
   -> ename VARCHAR(50) ,
   -> joindate DATE,
   -> salary DOUBLE(7,2),
   -> bonus DOUBLE(7,2) DEFAULY 0
   -> );

2.建完表后添加默认约束:

ALTER TABLE 表名 ALTER 列名 SET DEFAULT 默认值;

ALTER TABLE emp ALTER bonus SET DEFAULT 0;

3.删除默认约束:

ALTER TABLE 表名 ALTER 列名 DROP DEFAULT;

ALTER TABLE emp ALTER bonus DROP DEFAULT;

外键约束 


1.创建表时添加外键约束:

CREATE TABLE 表名(
    列名 数据类型,
    ...
    CONSTRAINT 外键名称 FOREIGN KEY(外键列名)    REFERENCES 主表(主表列名)
);

 CREATE TABLE dept(
    -> id INT,
    -> dept_name VARCHAR(50),
    -> dept_addr VARCHAR(100)
    -> );
ALTER TABLE dept ADD PRIMARY KEY(ID);
CREATE TABLE emp(
    -> id INT PRIMARY KEY,
    -> name VARCHAR(50),
    -> age INT,
    -> dept_id INT,
    -> CONSTRAINT kf_emp_dept FOREIGN KEY(dept_id) REFERENCES dept(id)
    -> );

 2.建完表后添加外键约束:

ALTER TABLE 表名 ADD CONSTRAINT 外键名称 FOREIGN KEY(外键列名) REFERNCES 主表名称(主表列名);

ALTER TABLE emp ADD CONSTRAINT kf_emp_dept FOREIGN KEY(dept_id) REFERENCES dept(id);

3.删除外键约束:

ALTER TABLE 表名 DROP FOREIGN KEY 外键名称;

ALTER TABLE emp DROP FOREIGN KEY kf_emp_dept;

 注意:

1.当非空和自动增长放在一起会变成主键的,那时候想去除自动增长和非空只要删除主机就可以了。

2.如果要连接两个表,要先建主表在减外表,不然会连接失败

数据库设计 


一、软件的研发步骤:

 

二、数据库设计概念: 

1.数据库设计就是根据业务系统的具体需求,结合我们所选用户的DBMS,为这个业务系统构造出最优的数据存储模型
2.建立数据库中的表结构以及表与表之间的关联关系的过程。
3.有哪些表?表里有哪些字段?表和表之间有什么关系?

三、数据库设计的步骤:

1.需要分析(数据是什么?数据具有哪些属性?数据与属性的特点是什么)
2.逻辑分析(通过ER图对数据库进行逻辑建模,不需要考虑我们所选用的数据库管理系统)
3.物理设计(根据数据库自身的特点把逻辑设计转换为物理设计)
4.维护设计(1.对新的需求进行建表;2.表优化)

四、表关系 :

1.一对一:
①例如:用户和用户详情
②一对一关系多用于表拆分,将一个实体中经常使用的字段方一张表,不经常使用的字段放另一张表,用于提升查询性能


2.一对多(多对一):
①例如:部门和员工
①一个部门对应多个员工,一个员工对应一个部门


3.多对多:
①例如:商品和订单
②一个商品对应多个订单,一个订单包含多个商品

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值