2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > mysql 约束基本概念 主键约束 外键约束

mysql 约束基本概念 主键约束 外键约束

时间:2023-11-21 13:27:16

相关推荐

mysql 约束基本概念  主键约束 外键约束

constraint 约束数据(对表中数据的限制条件)

四种条件约束:非空 唯一性 主键约束 外键约束

非空约束(not null)约束的字段不能为空值,必须赋具体的数据

CREATE TABLE t_user (

id INT (4),

NAME VARCHAR(32)NOT NULL,

class BIGINT(1000)

);

这里的ID不可以是空值

唯一性约束(unique)约束的字段具有唯一性,不可重复列级约束

CREATE TABLE t_user (

id INT (4)unique,

NAME VARCHAR(32) ,

class BIGINT(1000)

);

表级约束(多个字段联合进行约束)

CREATE TABLE t_user (

id INT (4)

NAME VARCHAR(32) ,

class BIGINT(1000)

unique(id,name)

//多个字段的联合唯一性约束 constraint 表名 _ 字段名 _约束字段名

);

非空性约束与联合性唯一约束的联合应用(既不能重复且唯一使用)

CREATE TABLE t_stu(

NO INT (4) NOT NULL UNIQUE

NAME VARCHAR(128)

);

主键约束

primary ky(pk)

主键约束 主键字段 主键值

表中某个字段被添加主键约束后,该字段被称为主键字段,主键字段中出现的每一个数据都称为主键值

主见约束的作用;

添加主见约束的字段既不能为空,也不能重复。。。。效果与not null unique 相同,但是默认添加了一个"索引 -----index"(

提高了检索效率)

一张表应该有主键,主键的值不能修改,及时两个数据完全相同但是他们的主键值不同,也认为他们是不同索引

根据个数分类,单一主键和复合主键

列级写法

CREATE TABLE t_stu(

NO INT (4)PRIMARY KEY

NAME VARCHAR(32) NOT NULL

);

表级写法

CREATE TABLE t_stu(

NO INT (4),

NAME VARCHAR(32) NOT NULL

PRIMARY KEY(id)

);

对于复合主键,只要有一个字段值不同就认为不符合

2.根据业务逻辑分为:自然主键和业务主键

自然主键:若是一个自然数,则这个自然数和业务没有任何关系

业务主键:主键值和当前的业务紧密相关,

mysql自动生成主键值AUTO_INCREMENT

mysql提供一个自增数字auto_increment,默认从1开始自增。

CREATE TABLE t_students(

id INT (4) PRIMARY KEYAUTO_INCREMENT,

NAME VARCHAR(32) NOT NULL

);

外键约束(foreign key)(外键在同一个表中可以有多个

外键约束,外键字段,外键值:

单一外键:给一个字段添加外键约束

DROP TABLE IF exits t_class;

CREATE TABLE t_class (

cno INT(4) PRIMARY KEY,

cname VARCHAR(32)

);

DROP TABLE IF exits t_stdent;

CREATE TABLE t_student(

sno INT(4)PRIMARY KEY AUTO_INCREMENT,

sname INT (4),

classno INT(4),

CONSTRAINT t_stdent_class_fk FOREIGN KEY(classno) REFERENCES t_class(cno)

);

首先避免了数据冗余,其次添加了外键约束

以上的表中产生了父子关系,先有父的数据,才有子 ,创建表时应该先创建父表数据再创建字表数据。

外键字段可以为null,外键为空的数据称为孤儿数据

被应用字段必须具有唯一性约束,

外键约束应该注意:

分成两张表来存储,可以减少数据的冗余

典型的一对多的关系,在多的一方要添加外键

SELECT s.sname,c,cnameFROM t_studentJOIN t_classON o = c.classno;查询学生做对应的班级名称。

级联更新与级联删除(在外键约束的基础之上来使用)

在外键约束后面添加关键字(谨慎使用

级联删除:

alter table t_student add constraint t_student_classno_fk foreign key(classno) reference t_class(cno);

级联更新:

alter table t_student add constraint t_student_classno_fk foreign key(classno) reference t_class(cno) on update cascade;(及时更新与之相关的数据)

复合外键:给多个字段添加外键约束

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。