数据库中的约束

目录

1、什么是约束?

2、约束包括哪些?

[3、非空约束 not null](#3、非空约束 not null)

[4、唯一性约束 unique](#4、唯一性约束 unique)

[5、主键约束(primary key,简称pK)](#5、主键约束(primary key,简称pK))


1、什么是约束?

约束对应的英语单词:constraint

在创建表的时候,我们可以给表中的字段加上一些约束,来保证这个表中数据的完整性、有效性!!!

约束的作用就是为了保证:表中的数据有效!!

2、约束包括哪些?

非空约束:not null

唯一性约束:unique

主键约束:primary key(简称pK)

外键约束:foreign key(简称FK)

检查约束:check(mysql不支持,oracle支持)

3、非空约束 not null

非空约束 not null 约束的字段不能为NULL。

drop table if exists t vip;

create table t_vip(

id int,

name varchar (255) not null

);

insert into t vip(id,name) values(1, 'zhangsan') ;

insert into t vip(id,name) values(2,'lisi');

insert into t vip(id) values (3) ;

xxxx.sql这种文件被称为sql脚本文件。sql脚本文件中编写了大量的sql语句。我们执行sql脚本文件的时候,该文件中所有的sql语句会全部执行!批量的执行SQL语句,可以使用sql脚本文件。在mysql当中怎么执行sql脚本呢? source D: \course\03-MysQL\document\vip.sql

4、唯一性约束 unique

唯一性约束unique约束的字段不能重复,但是可以为NULL。

drop table if exists t_vip

create table t vip(

id int,

name varchar (255)unique,

email varchar(255)

);

新需求:name和email两个字段联合起来具有唯一性!!!!

create table t_vip(

id int,

name varchar (255) ,

email varchar(255),

unique (name,email) //约束没有添加在列的后面,这种约束被称为表级约束。

);

需要给多个字段联合起来添加某一个约束的时候,就要使用表级约束。

unique 和not null怎么联合

create table t_vip(

id int,

name varchar (255) not null unique

);

在mysql当中,如果一个字段同时被not null和unique约束的话,该字段自动变成主键字段。(注意:oracle中不一样!)

5、主键约束(primary key,简称pK)

主键约束的相关术语

主键约束:就是一种约束。

主键字段:该字段上添加了主键约束,这样的字段叫做:主键字段

主键值:主键字段中的每一个值都叫做:主键值。

什么是主键?有啥用?

主键值是每一行记录的唯一标识。

主键值是每一行记录的身份证号!!!

注:任何一张表都应该有主键,没有主键,表无效!!主键不能为空也不能重复

create table t_vip(

id int primary key,

name varchar (255)

);

表级约束主要是给多个字段联合起来添加约束?

//id和name联合起来做主键:复合主键!!!

create table t_vip(

id int,

name varchar (255) ,

email varchar (255),

primary key(id,name)

);

一张表,主键约束只能添加1个。

**主键值建议使用:**int big int char等类型。不建议使用:varchar来做主键。主键值一般都是数字,一般都是定长的!

主键除了:单一主键和复合主键之外,还可以这样进行分类?

自然主键:主键值是一个自然数,和业务没关

业务主键:主键值和业务紧密关联,例如拿银行卡账号做主键值。这就是业务主键!

在实际开发中使用业务主键多,还是使用自然主键多一些?

自然主键使用比较多,因为主键只要做到不重复就行,不需要有意义。业务主键不好,

因为主键一旦和业务挂钩,那么当业务发生变动的时候,可能会影响到主键值,所以业务主 键不建议使用。尽量使用自然主键。

在mysql当中,有一种机制,可以帮助我们自动维护一个主键值?

create table t_vip(

id int primary key auto_increment,//auto_increment表示自增,从1开始,以1递增

name varchar(255)

);

相关推荐
Csvn2 小时前
📊 SQL 入门 Day 12: 窗口函数基础
后端·sql
安_3 小时前
MySQL SQL 调优完整指南
数据库·sql·mysql
Lethehong8 小时前
【金仓数据库征文】AI 直连国产数据库——KES MCP Server 自然语言查库与 SQL 调优实战
数据库·人工智能·sql·金仓数据库征文
阿里云大数据AI技术16 小时前
EMR Serverless Spark AI Function 的双维降本实践
人工智能·sql·spark
jnrjian1 天前
psql 执行多个 sql 文件
数据库·sql
long3161 天前
PostgreSQL 学习资料大全:从入门到精通
java·数据库·sql·postgresql
阳光九叶草LXGZXJ1 天前
达梦数据库-报错-11-cmd 13 validate error
linux·运维·数据库·sql·学习
染指11101 天前
72.高级RAG-sql检索器
python·sql·mysql·llama·llamaindex·高级rag
long3161 天前
PostgreSQL 学习资料 · 入门 / 练习 / 精通 / 扩展
java·数据结构·数据库·spring boot·sql·postgresql·数据库开发
阳光九叶草LXGZXJ1 天前
达梦数据库-报错-12-[-7184]:对象定义[XXX]被修改,版本检查失败
linux·运维·服务器·数据库·sql·学习