Python 40 数据库-约束

约束

1、什么是约束 ?

除了数据类型以外额外添加的约束

 

2、为什么要使用约束 ?

为了保证数据的合法性 完整性

 

分类:

1、not null 非空约束,数据不能为空-------------------create table student (id ind,name char(10) not null);

2、default  默认值约束   可以指定字段的默认值--------create table user (id ind,name char(10) not null,sex char(1) default "woman");

3、unique   唯一性约束  该字段的值不能重复,unique其实是一种索引索引是一种数据结构 用于提高查询效率,可以为空,一张表中可以有多个唯一约束

 

单列唯一约束---------------------create table t5(idcard char(18) unique);    

多列联合唯一约束---------------create table t6(idcard char(18),phonenumber char(11),unique(idcard,phonenumber));

 

4、primary key  (******)称之为主键约束,

用于唯一标识表中一条记录,该字段只要是惟一的,并且不为空即可,也就是说,从约束的角度来看主键约束和非空约束,唯一约束没有区别,

它们之间的区别是,

唯一约束是一种索引,必然存在硬盘上的某个文件中,是物理层面(实实在在存在的数据)

primary key 是一种逻辑意义上的数据 (实际上不存在)

换句话说,主键就是由唯一约束和非空约束组成的约束,就像 一男一女,可以组成夫妻,但是夫妻只是一种称呼,不实际存在

 

语法:

create table stu (stuid int primary key,name char(3));    

create table t7(id int unique not null,name char(3));

 

有主键和没有主键的区别

1.无法区分两个相同记录,比如班级里有两个人名字相同

2.有主键则意味有这索引,效率更高

3.可以建立关联关系

 

多列联合主键---------------create table t8(idcard char(18),phonenumber char(11),primary key(idcard,phonenumber));

 

要不要主键?

必须的,每个表都应该有主键 哪怕不用唯一标识 也应该考虑提升效率,主键的字段名 几乎都叫id    

同一个表中可以不可以有多个主键?    

不可以,没有任何意义,主键的类型需要设置为整型,当然别的也行!建议你别这么干!

 

5、auto_increment ******    

中文:自动增长    

作用:通常搭配主键字段使用,可以自动为你的数据分配逐渐    

分配的方式是,添加一条就自动加1  计数从1开始

 

语法: ******    

create table t9(id int primary key auto_increment,name char(3));

 

如果主键是自动增长  你可以跳过这个字段 也可以为它插入null  都可以,修改自动增长的起始位置  **     alter table t9 auto_increment = 7;

注意: 自动增长 只能用于整型

 

6、foreign key ******

posted @ 2018-09-13 19:59  温暖你的心  阅读(140)  评论(0编辑  收藏  举报