python基础_mysql约束

Posted 含笑半步颠√

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python基础_mysql约束相关的知识,希望对你有一定的参考价值。

默认约束(default)

CREATE TABLE tb(
    id int default ‘a’ ,
    name varchar(20)
);

插入数据的时候,如果没有明确为字段赋值,
则自动赋予默认值

在没有设置默认值的情况下,默认值为NULL

 

非空约束(not null)

 

CREATE TABLE tb(
    id int not null,
    name varchar(20)
);

 

限制一个字段的值不能为空,
Insert的时候必须为该字段赋值
空字符不等于NULL

 

唯一约束(unique key)

CREATE TABLE tb(
    id int unique key,
    name varchar(20)
);

限制一个字段的值不重复,
该字段的数据不能出现重复的
确保字段中值的唯一

 

主键约束(primary key)

CREATE TABLE tb(
    id int primary key,
    name varchar(20)
);

通常每张表都需要一个主键来体现唯一性
每张表里面只能有一个主键
主键  =  非空 + 唯一

 

自增长约束(auto_increment)

CREATE TABLE tb(
    id int auto_increment,
    name varchar(20)
);

指定由哪个位置开始自增:

CREATE TABLE tb(
    id int auto_increment,
    name varchar(20)
)auto_increment=100;

自动编号,和主键组合使用,
一个表里面只能有一个自增长
auto_increment 要求用在主键上

 

外键约束(foreign key)

CREATE TABLE a(
    id_a int primary key,
    name varchar(20)
);

保持数据的一致性
我有的你一定有, 你没有的, 我绝对没有

CREATE TABLE b(
    id_b int primary key,
    name varchar(20),
    foreign key (id_b) references a(id_a)
);

1. B表中的id_b字段,只能添加 id_a中已有的数据。
2. A表中id_a  被参照的数据, 不能被修改和删除

 

那么到这里,约束就这些啦,我们写简单的表结构游戏;

    举例,学生表中有学号、姓名、学院,但学生还有些比如电话,家庭住址等比较私密的信息,这些信息不会放在学生表当中,会新建一个学生的详细信息表来存放。
    这时的学生表和学生的详细信息表两者的关系就是一对一的关系,因为一个学生只有一条详细信息。用主键加主键的方式来实现这种关系。

# 学生表(一对一字段)

create table student(
id int primary key auto_increment,
name varchar(20) not null
);

#  学生详细信息表(一对一字段)

create table student_datailes(
id_x int primary key,
sex varchar(20),
age int,
height int not null,
foreign key (id_x) references student(id)
);

通常情况下,学校中一个学院可以有很多的学生,而一个学生只属于某一个学院。
学院与学生之间的关系就是一对多的关系,通过外键关联来实现这种关系。

# 学院表(一对多字段关联)

create table department( 
   d_id int primary key auto_increment,      # 学院id
   d_name varchar(20) not null                        # 学院名
);

# 学生表(一对多字段关联)

create table student(
   s_id int primary key auto_increment,      # 学生id
   s_name varchar(20) not null,                     # 学生名字
   dept_id int not null,                       #  所属学院 id
   foreign key(dept_id) references department(d_id)   #外键
);

 

多对多关系(学生选课)

学生要报名选修课,一个学生可以报名多门课程,一个课程有很多的学生报名,那么学生表和课程表两者就形成了多对多关系。
对于多对多关系,需要创建中间表实现。

#建立课程表:

create table cours(
    cours_id int primary key auto_increment,
    cours_name varchar(20) not null 
);

# 选课表  (中间表)

create table select(
    s_id int,            #用来记录学生id
    cours_id int,       #用来记录 课程id
    primary key(s_id,cours_id),                # 联合主键 
    foreign key(s_id) references student(s_id),       #  关联学生id
    foreign key(cours_id) references cours(cours_id)  # 关联 课程id
);

 

 那么 现在 :学院表,学生表,课程表,选课表, 4张表已经关联在一起了,我们可以插入参数了。

以上做为学习总结,思路有点乱。

 















以上是关于python基础_mysql约束的主要内容,如果未能解决你的问题,请参考以下文章

基础入门_Python-模块和包.深入SQLAlchemy之列级别约束与表级别约束?

数据库部分(MySql)_4

Python学习_day43_mysql表操作2

python学习_day47_mysql数据库索引相关

MySQL学习之路 MySQL基础操作

MySQL基础(DDLDMLDQL)