MySQL的增删改查3(数据库约束,表的设计)

文章详细介绍了数据库中的各种约束,包括NOTNULL、UNIQUE、DEFAULT、PRIMARYKEY和FOREIGNKEY,以及它们在创建表时的作用。此外,还讨论了表设计中的关系类型,如一对一、一对多和多对多关系,并给出了示例来说明如何通过主外键建立这些关系。
摘要由CSDN通过智能技术生成

目录

1.数据库约束

1.1约束类型

1.2.NULL约束

1.3UNIQUE:唯一约束

1.4DEFAULT:默认值约束

1.5PRIMARY KEY:主键约束

1.6FOREIGN KEY:外键约束

2.表的设计

2.1一对一关系

2.2一对多关系 

2.3多对多关系


1.数据库约束

1.1约束类型

NOT NULL - 指示某列不能存储 NULL 值。

UNIQUE - 保证某列的每行必须有唯一的值。

DEFAULT - 规定没有给列赋值时的默认值。

PRIMARY KEY - NOT NULL 和 UNIQUE 的结合。确保某列(或两个列多个列的结合)有唯一标 识,有助于更容易更快速地找到表中的一个特定的记录。

FOREIGN KEY - 保证一个表中的数据匹配另一个表中的值的参照完整性。

CHECK - 保证列中的值符合指定的条件。对于MySQL数据库,对CHECK子句进行分析,但是忽略 CHECK子句。

1.2.NULL约束

CREATE TABLE student1 (
   id INT NOT NULL,
   sn INT,
   name VARCHAR(20),
   qq_mail VARCHAR(20)
);

1.3UNIQUE:唯一约束

指定列唯一约束列的值,在列中是唯一,相当于身份证号

CREATE TABLE student1(
   id INT NOT NULL,
   sn INT UNIQUE,
   name VARCHAR(20),
   qq_mail VARCHAR(20)
);

1.4DEFAULT:默认值约束

CREATE TABLE student1 (
   id INT NOT NULL,
   sn INT UNIQUE,
   name VARCHAR(20) DEFAULT 'unkown',
   qq_mail VARCHAR(20)
);

1.5PRIMARY KEY:主键约束

具备非空和唯一的特性

CREATE TABLE student1 (
   id INT PRIMARY KEY auto_increment,
   sn INT UNIQUE,
   name VARCHAR(20) DEFAULT 'unkown',
   qq_mail VARCHAR(20)
);

写入数据时,只要满足非空唯一即可,不指定主键的值时,自增主键会自动完成自增操作,新写入的值时以当前最大值+1。

一个表中只能有一个主键,不能有多个,但是可以用多个列合并成一个主键(复合主键),多个列组成的组合是不能重复的。

1.6FOREIGN KEY:外键约束

主外键关系是两个表之间的关系

CREATE TABLE classes (
 id INT PRIMARY KEY auto_increment,
 name VARCHAR(20),
 `desc` VARCHAR(100)
);
CREATE TABLE student1 (
   id INT PRIMARY KEY auto_increment,
   sn INT UNIQUE,
   name VARCHAR(20) DEFAULT 'unkown',
   qq_mail VARCHAR(20),
 classes_id int,
 FOREIGN KEY (classes_id) REFERENCES classes(id)
);

删除主表数据时,必须先把子表中关联数据删除掉

2.表的设计

2.1一对一关系

用一张表把所有字段全部包含起来

按义务把相关的字段拆分出两张表,再为两张表建立主外键关系

2.2一对多关系 

对于多的一方,可以和主表建立主外键关系 

2.3多对多关系

对于多对多关系,可以新建一张关系记录每条数据的关联关系 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小李(写代码版)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值