IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> sql之约束 -> 正文阅读

[大数据]sql之约束

专栏目录请点击

列级约束

列级约束一般在定义列的时候就直接把约束定义上

CREATE TABLE studentinfo (
	id INT PRIMARY KEY, # 主键
	stuName VARCHAR(20) NOT NULL, # 非空约束
	gender CHAR(1) CHECK(gender="男" OR gender="女"), # 检查
	age INT DEFAULT 18, # 默认约束
	majorId INT REFERENCES magor(id) # 外键
)

DESC studentinfo;

通过desc我们可以看到相关的表结构

在这里插入图片描述
或者使用SHOW INDEX FROM studentinfo;来查看所有的索引,包括主键、外键、唯一值

表级约束

表级约束需要在表的所有的字段下面定义约束,语法如下

[CONSTRAINT 约束名] 约束类型(字段名)

如上的表格,可以也可以用一下定义

CREATE TABLE studentinfo (
	id INT, # 主键
	stuName VARCHAR(20), # 非空约束
	gender CHAR(1) , # 检查
	age INT DEFAULT 18, # 默认约束
	majorId INT  # 外键
	
	CONSTRAINT pk PRIMARY KEY(id), # 主键
	CONSTRAINT uq UNIQUE(stuName), # 唯一
	CONSTRAINT ck CHECK(gender="男" OR gender="女") # 检查
	CONSTRAINT fk_student_major FOREIGN KEY(majorId) REFERENCES major(id) # 外键
)

主键与唯一键

类型保证唯一性是否允许为空数量是否允许组合
主键??最多有一个可以,但不推荐
唯一键??可以有多个可以,但不推荐

外键

  1. 在从表中设置外键关系
  2. 从表的外键列的类型和主表的关联列额类型要求一致或者兼容,名称无要求
  3. 主表的关联列必须是一个key(一般是主键或者唯一)
  4. 插入数据的时候要先插入主表在插入从表,删除数据的时候,要先删除从表,在删除主表

标识列

标识列又称自增长列,可以不用手动插入值,系统提供默认的序列值

特点

  1. 标识列不一定和主键搭配,但是要求是一个key
  2. 一个表最多有一个标识列
  3. 标识列的类型只能是数值
  4. 标识列可以通过SET auto_increment_incremenet=2;来设置步长

创建表时

在创建表的时候设置标识列

CREATE TABLE studentinfo (
	id INT PRIMARY KEY AUTO_INCREMENT, # 主键
	// ...
)

修改表时

修改

ALTER TABLE studentinfo MODIFY COLUMN id INT PRIMARY KEY AUTO_INCREMENT;

删除

也相当于修改列

ALTER TABLE studentinfo MODIFY COLUMN id INT PRIMARY KEY;

约束的增删

修改表时添加

  1. 添加主键约束
ALTER TABLE tbl_name ADD [CONSTRAINT [symbol]] PRIMARY KEY [index_type] (index_col_name)

CONSTRAINT是可以添加,也可以不添加。如果添加的话,表示为约束起名字的意思。

ALTER TABLE user2 ADD CONSTRAINT pk_user2_id PRIMARY KEY(id);
  1. 添加唯一约束
ALTER TABLE tbl_name ADD [CONSTRAINT [symbol]] UNIQUE [INDEX|KEY] [index_name] [index_type](index_col_name,)
ALTER TABLE user2 ADD UNIQUE(username);
  1. 添加外键约束
ALTER TABLE tbl_name ADD [CONSTRAINT [symbol]] FOREIGN KEY [index_name] (index_col_name,) reference_definition
ALTER TABLE user2 ADD foregin KEY(pid) REFERENCES provinces(id);
  1. 添加默认约束
ALTER TABLE tbl_name ADD [CONSTRAINT [symbol]] FOREIGN KEY [index_name] (index_col_name,) reference_definition
ALTER TABLE user2 ALTER age SET DEFAULT 15;

修改表时删除

  1. 删除非空约束
ALTER TABLE studentinfo MODIFY COLUMN stuName VARCHAR(20) NULL;
  1. 删除默认约束
ALTER TABLE studentinfo MODIFY COLUMN age INT;
  1. 删除主键
ALTER TABLE studentinfo DROP PRIMARY KEY;
  1. 删除唯一
ALTER TABLE studentinfo DROP INDEX `name`;
  1. 删除外键
ALTER TABLE studentinfo DROP FOREIGN KEY;
  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-09-24 21:03:44  更:2022-09-24 21:07:25 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 9:34:32-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码