数据库约束

在构造数据库的时候,为了对表中的数据进行进一步的限制,保证数据的正确性有效性完整性。这种限制就叫做约束。

数据库约束

约束种类 

  • PRIMARY KEY: 主键
  • UNIQUE: 唯一
  • NOT NULL: 非空
  • FOREIGN KEY: 外键
  • 检查约束(用户自定义约束)  MySQL不支持

主键

(1)主键的作用

用来唯一标识一条记录每个表都应该有一个主键,并且每个表只能有一个主键。 有些记录的 name,age,score 字段的值都一样时,那么就没法区分这些数据,造成数据库的记录不唯一,这样就不方便管理数据

哪个字段应该作为表的主键?  

通常不用业务字段作为主键,单独给每张表设计一个id的字段,把id作为主键。主键是给数据库和程序使用的,不是给最终的客户使用的。所以主键有没有含义没有关系,只要不重复,非空就行。

(2)创建主键

PRIMARY KEY 主键的特点

  • 主键必须包含唯一的值
  • 主键列不能包含NULL值

用语句进行添加主键的方式有三种:①在定义字段的同时进行定义主键 ②在表的构造的最后加上定义主键语句③用修改表的方式添加主键

-- 方式1
create table tb3(
id int primary key,
name varchar(100),
age int);

-- 方式2
create table tb4(
id int,
name varchar(100),
age int,
primary key(id)
);

-- 方式3
create table tb5(
id int,
name varchar(100),
age int
);
alter table tb5 add constraint primary key(id);
-- 这种方法可以在constraint关键字后面给主键起一个别名。只不过现在还用不上

如果是用navicat的话可以直接右键选择设计表,箭头所指处点击即可

添加主键后,主键字段不能够写入null或者重复

insert into tb3 values(
1,'Tom',12),
(2,'Jerry',10);
insert into tb3 values (null,'Jack',20);
-- [Err] 1048 - Column 'id' cannot be null

insert into tb3 values (1,'Jack',20);
-- [Err] 1062 - Duplicate entry '1' for key 'PRIMARY'

(3)删除主键

alter table tb3 drop primary key;

navicat 可以再点击上个图片箭头所指处。

(4)主键自增

-- 方式1:在主键定义后面直接加上关键字 auto_increment
create table tb6(
id int primary key auto_increment,
name varchar(100),
age int);

-- 方式2:修改表的方式添加自增策略
create table tb7(
id int primary key,
name varchar(100),
age int);
alter table tb7 modify id int auto_increment;

在navicat上面点击:

默认的是以1开始的:

insert into tb7 (name,age) values ('Tom',12);
-- 这里没有进行对主键的赋值,证明这里有了默认值,之前没有自动增长的时候这样写会报错

-- 修改自动增长默认起始值
alter table tb7 auto_increment = 10;

(5)截断表

截断表是指对表中数据进行大量删除等的操作的时候,表中的自动增长默认值会以什么形式改变。

这里大概有两类:

delete from 表名  (删除表中所有元素):如果之前最后一个使用的主键自动增长默认值为5,那么会从6接着开始

truncate 表名 (摧毁表,删除数据以及所有构造):默认值自动回1


唯一

 表示这个列中元素不能重复

-- 创建的同时进行指定
create table tb5(
id int,
name varchar(100) unique,
age int);

-- 用修改表的方式进行指定
create table tb5(
id int,
name varchar(100),
age int);
alter table tb5 add constraint unique(name);


非空

表示这个列中元素不能为空(null)

-- 方式1
create table tb6(
id int,
name varchar(100),
age int not null
);

-- 方式2
create table tb6(
id int,
name varchar(100),
age int
);
alter table tb6 modify name varchar(100) not null;

 


默认值

在没有自定义元素的值的时候设置一个默认值

-- 创建方式
create table tb7(
id int,
name varchar(100) default '老王',
age int 
);
-- 添加一条数据,不写入name
insert into tb7(id,age) values (3,12);

 


外键

这个在下一篇中讲解会更会清楚。。。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值