-
mysql中的约束类型
约束是一种限制,它通过对表的行或列的数据做出限制,来确保表的数据的完整性、唯一性。
MYSQL中,常用的几种约束:
-
primary key 主键
主键约束相当于 唯一约束 + 非空约束 的组合,主键约束列不允许重复,也不允许出现空值。
每个表最多只允许一个主键,建立主键约束可以在列级别创建,也可以在表级别创建。
当创建主键的约束时,系统默认会在所在的列和列组合上建立对应的唯一索引。
-- 基本使用 create table user( id int primary key, name varchar(20) ); -- 删除主键约束 alter table user drop primary key; -- 添加主键约束 alter table user add primary key(id,name); -- 修改主键约束 alter table user modify id int primary key;
-
foreign key外键
外键约束是保证一个或两个表之间的参照完整性,外键是构建于一个表的两个字段或是两个表的两个字段之间的参照关系
-- 基本使用 -- 主表 create table type( id int primary key, type varchar(20) ); -- 副表 create table tag( id int primary key, name varchar(20), type_id int, foreign key (type_id) references type(id) ); -- 多列外键组合,必须用表级别约束语法 -- 主表 create table classes( id int, name varchar(20), number int, primary key(name,number) ); -- 副表 create table student( id int auto_increment primary key, name varchar(20), classes_name varchar(20), classes_number int, /*表级别联合外键*/ foreign key(classes_name, classes_number) references classes(name, number) ); -- 删除外键约束 alter table student drop foreign key student_id; -- 增加外键约束 alter table student add foreign key(classes_name, classes_number) references classes(name, number);
-
unique唯一
唯一约束是指定table的列或列组合不能重复,保证数据的唯一性。
唯一约束不允许出现重复的值,但是可以为多个null。
同一个表可以有多个唯一约束,多个列组合的约束。
在创建唯一约束时,如果不给唯一约束名称,就默认和列名相同。
唯一约束不仅可以在一个表内创建,而且可以同时多表创建组合唯一约束。
-- 创建表时设置,表示用户名、密码不能重复 create table user( id int not null , name varchar(20), password varchar(10), unique(name,password) ); -- 添加唯一约束 alter table user add unique (name, password); -- 修改唯一约束 alter table user modify name varchar(25) unique; -- 删除约束 alter table user drop index name;
-
not null非空
非空约束 not null 与 默认值 default
非空约束用于确保当前列的值不为空值,非空约束只能出现在表对象的列上。
Null类型特征:
所有的类型的值都可以是null,包括int、float 等数据类型
-- 创建table表,ID 为非空约束,name 为非空约束 且默认值为abc create table user( id int not null, name varchar(255) not null default 'abc', sex char null ); -- 增加非空约束 alter table user modify sex varchar(2) not null; -- 取消非空约束 alter table user modify sex varchar(2) null; -- 取消非空约束,增加默认值 alter table user modify sex varchar(2) default 'abc' null;
-
auto_increment自增
create table user( id int auto_increment primary key, name varchar(255) not null , sex char null );
-
default默认值
create table user( id int auto_increment primary key, name varchar(255) not null , sex varchar(2) default '男' );
最新更新
nodejs爬虫
Python正则表达式完全指南
爬取豆瓣Top250图书数据
shp 地图文件批量添加字段
爬虫小试牛刀(爬取学校通知公告)
【python基础】函数-初识函数
【python基础】函数-返回值
HTTP请求:requests模块基础使用必知必会
Python初学者友好丨详解参数传递类型
如何有效管理爬虫流量?
SQL SERVER中递归
2个场景实例讲解GaussDB(DWS)基表统计信息估
常用的 SQL Server 关键字及其含义
动手分析SQL Server中的事务中使用的锁
openGauss内核分析:SQL by pass & 经典执行
一招教你如何高效批量导入与更新数据
天天写SQL,这些神奇的特性你知道吗?
openGauss内核分析:执行计划生成
[IM002]Navicat ODBC驱动器管理器 未发现数据
初入Sql Server 之 存储过程的简单使用
这是目前我见过最好的跨域解决方案!
减少回流与重绘
减少回流与重绘
如何使用KrpanoToolJS在浏览器切图
performance.now() 与 Date.now() 对比
一款纯 JS 实现的轻量化图片编辑器
关于开发 VS Code 插件遇到的 workbench.scm.
前端设计模式——观察者模式
前端设计模式——中介者模式
创建型-原型模式