python 解方程 加入约束条件_python-day41--约束条件

本文详细介绍了数据库中的约束条件,包括 PRIMARY KEY、FOREIGN KEY、NOT NULL、UNIQUE KEY 和 AUTO_INCREMENT,以及它们在数据完整性和一致性中的作用。通过实例展示了如何在创建表时设置这些约束,并解释了它们在数据插入和更新时的影响。此外,还讨论了 DEFAULT 和 UNSIGNED 等属性,以及 NOT NULL 和 DEFAULT 的组合使用。
摘要由CSDN通过智能技术生成

一 、介绍

约束条件与数据类型的宽度一样,都是可选参数

作用:用于保证数据的完整性和一致性

主要分为:

PRIMARY KEY (PK) 标识该字段为该表的主键,可以唯一的标识记录

FOREIGN KEY (FK) 标识该字段为该表的外键

NOT NULL 标识该字段不能为空

UNIQUE KEY (UK) 标识该字段的值是唯一的

AUTO_INCREMENT 标识该字段的值自动增长(整数类型,而且为主键)

DEFAULT 为该字段设置默认值

UNSIGNED 无符号

ZEROFILL 使用0填充

说明:

1. 是否允许为空,默认NULL,可设置NOT NULL,字段不允许为空,必须赋值2. 字段是否有默认值,缺省的默认值是NULL,如果插入记录时不给字段赋值,此字段使用默认值

sex enum('male','female') not null default 'male'age int unsigned NOT NULL default20必须为正值(无符号) 不允许为空 默认是203. 是否是key

主键 primary key

外键 foreign key

索引 (index,unique...)

二、 not null与default

是否可空,null表示空,非字符串

not null - 不可空

null - 可空

默认值,创建列时可以指定默认值,当插入数据时如果未主动设置,则自动添加默认值

create table tb1(

nid int not null defalut 2,

num int not null

)

==================not null====================mysql> create table t1(id int); #id字段默认可以插入空

mysql>desc t1;+-------+---------+------+-----+---------+-------+

| Field | Type | Null | Key | Default | Extra |

+-------+---------+------+-----+---------+-------+

| id | int(11) | YES | | NULL | |

+-------+---------+------+-----+---------+-------+mysql> insert into t1 values(); #可以插入空

mysql> create table t2(id int not null); #设置字段id不为空

mysql>desc t2;+-------+---------+------+-----+---------+-------+

| Field | Type | Null | Key | Default | Extra |

+-------+---------+------+-----+---------+-------+

| id | int(11) | NO | | NULL | |

+-------+---------+------+-----+---------+-------+mysql> insert into t2 values(); #不能插入空

ERROR 1364 (HY000): Field 'id' doesn't have a default value

==================default====================

#设置id字段有默认值后,则无论id字段是null还是not null,都可以插入空,插入空默认填入default指定的默认值

mysql> create table t3(id int default 1);

mysql> alter table t3 modify id int not null default 1;==================综合练习====================mysql>create table student(-> name varchar(20) notnull,-> age int(3) unsigned not null default 18,-> sex enum('male','female') default 'male',-> hobby set('play','study','read','music') default 'play,music'

->);

mysql>desc student;+-------+------------------------------------+------+-----+------------+-------+

| Field | Type | Null | Key | Default | Extra |

+-------+------------------------------------+------+-----+------------+-------+

| name | varchar(20) | NO | | NULL | |

| age | int(3) unsigned | NO | | 18 | |

| sex | enum('male','female') | YES | | male | |

| hobby | set('play','study','read','music') | YES | | play,music | |

+-------+------------------------------------+------+-----+------------+-------+mysql> insert into student(name) values('egon');

mysql> select * fromstudent;+------+-----+------+------------+

| name | age | sex | hobby |

+------+-----+------+------------+

| egon | 18 | male | play,music |

+------+-----+------+------------+

验证

三、 unique

============设置唯一约束 UNIQUE===============方法一:

create table department1(

id int,

name varchar(20) unique,

comment varchar(100)

);

方法二:

create table department2(

id int,

name varchar(20),

comment varchar(100),

constraint uk_name unique(name)

);

mysql> insert into department1 values(1,'IT','技术');

Query OK,1 row affected (0.00sec)

mysql> insert into department1 values(1,'IT','技术');

ERROR1062 (23000): Duplicate entry 'IT' for key 'name'

View Code

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值