数据库中的约束

目录

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)

);

相关推荐
Yeats_Liao3 小时前
Navicat 导出表结构后运行查询失败ERROR 1064 (42000): You have an error in your SQL syntax;
数据库·sql
Zda天天爱打卡9 小时前
【趣学SQL】第二章:高级查询技巧 2.2 子查询的高级用法——SQL世界的“俄罗斯套娃“艺术
数据库·sql
苏-言10 小时前
MyBatis最佳实践:动态 SQL
数据库·sql·mybatis
Amd79418 小时前
深入探讨存储过程的创建与应用:提高数据库管理效率的关键工具
sql·性能优化·数据安全·存储过程·数据库管理·业务逻辑·创建存储过程
MrZhangBaby21 小时前
SQL-leetcode—1158. 市场分析 I
java·sql·leetcode
摘星怪sec1 天前
【漏洞复现】|方正畅享全媒体新闻采编系统reportCenter.do/screen.do存在SQL注入
数据库·sql·web安全·媒体·漏洞复现
十二同学啊1 天前
JSqlParser:Java SQL 解析利器
java·开发语言·sql
莫名有雪1 天前
BUUCTF_Web([RCTF2015]EasySQL)二次注入+报错注入
sql
m0_748237051 天前
sql实战解析-sum()over(partition by xx order by xx)
数据库·sql
羊小猪~~1 天前
MYSQL学习笔记(四):多表关系、多表查询(交叉连接、内连接、外连接、自连接)、七种JSONS、集合
数据库·笔记·后端·sql·学习·mysql·考研