数据库基础笔记(MySQL)4 —— 基础约束
约束
我们可以给表中的字段加上一些约束,来保证表中的数据是有效的
按约束的功能分类
- 非空约束 : not null
- 唯一性约束 : unique
- 主键约束 : primary key
- 外键约束 : foreign key
- 默认值约束 :default
- 检查约束 : check ( MySQL 不支持,Oracle 支持 )
可以多个约束对一个字段使用
例:create table table_1 ( id int , name char ( 5 ) not null unique ) ;
非空约束 ( not null )
其约束的字段不能为 NULL ,当插入数据时,若该字段为 NULL ,则会报错
例:create table table_1 ( id int , name char ( 5 ) not null ) ;
唯一性约束 ( unique )
其约束的字段不能重复,但可以有多个 NULL
例:create table table_1 ( id int unique , name char ( 5 ) ) ;
主键约束 ( primary key )( 很重要 )
( 主键字段 即添加了主键约束的字段,主键值 即主键字段上的值 )
- 给某个字段添加主键约束之后,该字段既不能为0,也不能重复,相当于 not null + unique 的效果
- 主键值是当前行数据的唯一标识,即如果表中的两行数据是完全相同的,但只要主键值不同,即可认为是完全不同的数据
- 每张表都有且只有一个主键约束!!! 如果一张表没有主键约束,则该表是无效的,主键虽然只能有一个,但可以由多个字段联合组成
- 如果只有一个字段组成的主键,称为单一主键,如果由多个字段组成,则称为复合主键
例:
create table table_1 ( id int primary key , name char ( 5 ) ) ;
create table table_1 ( id int , name char ( 5 ) , primary key ( id, name ) ) ;
自增主键 ( auto_increment )
只适用于整数类型主键,自增从 1 开始
例:create table table_1 ( id int primary key auto_increment , name char ( 5 ) ) ;
外键约束 ( foreign key )
( 外键字段 即添加了外键约束的字段,外键值 即外键字段上的值 )
- 外键约束用来在两个表之间建立连接
- 外键可以有一个或者多个,外键不是自身表的主键,但是关联的是其他表主键( 其实不一定是主键,只要有unique约束即可,但一般都是主键 )
- 一个表的外键可以为空,但如果不为空值,则每一个外键值必须等于另一个表的主键值中的某个值
- 主表( 父表 )即关联中主键所在表,从表 ( 子表 )即关联中外键所在表
- 删除表与数据的顺序是先主再从,添加表或数据的顺序是先从再主
例:create table table_1 ( id int , name char ( 5 ) , foreign key ( name ) references table_2 ( name_1 ) );
( references 即是参考的意思 )
默认值约束 ( default )
如果不指定默认值,则默认值为 NULL
例:create table table_1 ( id int , name char ( 5 ) default ‘ candy ’ ) ;
按约束的位置分类
- 列级约束 ( 对于一个字段 )
- 表级约束 ( 对于一个或多个字段 )
在创建表的时候添加列级约束只支持:默认约束,非空约束,主键约束,唯一性约束
在添加表级约束只支持:主键约束,唯一性约束,外键约束
列级约束
直接添加在一个字段后面的约束,相当于只对这个字段生效
例:create table table_1 ( id int , name char ( 5 ) default ‘ candy ’ ) ;
表级约束
单独写,对其中包括的字段都生效
例:create table table_1 ( id int , name char ( 5 ) , unique ( id, name ) ) ;
( 相当于 id 与 name 联合起来唯一 )
对于约束的操作
添加约束
- alter table 表名 modify 字段名 数据类型 约束; ( 修改字段属性的时候加上约束 )
- alter table 表名 change 旧字段名 新字段名 数据类型 约束; ( 修改字段名字的时候加上约束 )
- alter table 表名 add 字段1 数据类型 约束, 字段2 数据类型 约束 … ;( 添加字段的时候加上约束 )
- create table 表名 ( 字段1 数据类型 约束 ,字段2 数据类型 约束 … ) ;
create table 表名 ( 字段1 数据类型,字段2 数据类型 … 约束 (字段1 , 字段2 ) ) ;
(建表时添加约束)
删除约束
- alter table 表名 modify 字段名 数据类型 ;( 修改字段属性时不加上约束 )
- alter table 表名 change 旧字段名 新字段名 数据类型 ; ( 修改字段名的时候不加上约束 )
数据库基础笔记(MySQL)4 —— 基础约束相关推荐
- 【数据库基础】01_数据库概述与MySQL语法基础
1. 数据库应用 1.1 概述 1.1.1 什么是数据库 简而言之,就是存储数据,管理数据的仓库. 数据库的好处 持久化数据到本地. 可以实现结构化查询,方便管理. DB:数据库(database): ...
- 数据库设计笔记——MySQL基础知识(四)
概述 关系型数据库--由表来存储相关的数据,MySQL,SQL Server,Oracle等都是关系型数据库: 元数据:用于集成并管理数据. MySQL数据库 用户数据库:用户根据需求创建数据库 系统 ...
- 数据库简介与 Mysql 服务基础
文章目录 前言 一.数据库系统发展史 二.数据库基本概念 三.主流数据库介绍 四.数据库类型 1. 关系型数据库 2. 非关系型数据库 3. 时序数据库 TSD 五.Mysql 数据库 1. MySQ ...
- Python基础笔记_Day01_计算机基础知识和Python开发环境搭建
Day01_计算机基础知识和Python开发环境搭建 目录 01.01_计算机基础知识(计算机概述)(了解) 01.02_计算机基础知识(软件开发和计算机语言概述)(了解) 01.03_计算机基础知识 ...
- 数据库学习笔记—MySQL技术nei幕—第一章—MySQL体系结构和存储引擎
数据库和实例 数据库和实例很容易混淆,如果要更加深入地理解MySQL,将这两个概念区分开来是必不可少的. 数据库是物理操作系统文件或其他形式文件类型的集合.就比如在MySQL数据库中,数据库文件可以是 ...
- 免费python基础笔记_python的基础练习笔记
由于之前有学习过的python的缘故,这次的基础练习算是对知识的巩固的加深,在练习的过程中还是出现一些丢失符号的低级错误,不过动过改正加深了自己的影响,对函数的理解也更加深刻.总的来说虽然是复习,但收 ...
- mysql数据库学号数据类型_数据库学习笔记——MySQL数据类型
一.数据类型: 1.整型(xxxint) 2.浮点型(float和double) 3.定点数(decimal) 4.字符串(char,varchar,xxxtext) 5.二进制数据(xxxBlob) ...
- python语言基础笔记_Python语言 基础知识笔记
背景知识 Python2 的默认编码是 ascii,Python3 的默认编码是 utf-8 输入输出 Python2 提供了 input,raw_input,print 等用于输入输出,但在 Pyt ...
- java编程基础笔记_Java编程基础阶段笔记 day01 Java语言概述
常用的DOS命令 dir : 列出当前目录下的文件以及文件夹 md : 创建目录 rd : 删除目录 cd : 进入指定目录 cd.. : 退回到上一级目录 cd\: ...
- JavaScript基础笔记集合(转)
JavaScript基础笔记集合 JavaScript基础笔记集合 js简介 js是脚本语言.浏览器是逐行的读取代码,而传统编程会在执行前进行编译 js存放的位置 html脚本必须放在< ...
最新文章
- 传感器可以让智能手机测量生命体征
- java BASE64流 输出图片。
- 王者荣耀连接不上服务器最新赛季排名,王者荣耀新赛季连掉三段 初期不能打排位是有原因的...
- Linux命令中正则表达式的运用
- day44-前端知识之HTML内容
- Jdk动态代理 底层源码分析
- Asp.Net把word文件转换为html文件
- linux 内核模块 proc,Linux 内核模块 proc文件系统.pdf
- erlang rebar 配置mysql_Centos6.4安装erlang并配置mysql数据库
- 将公司的主要项目从eclipse迁移到android studio for mac环境(1)
- 【译】EntityFramework6与EntityFrameworkCore的区别
- 计算机中用于描述音乐乐曲并,计算机中用于描述音乐乐曲并由声卡合成出音乐来的语言(规范)为。...
- 八、软考·系统架构师——架构设计
- SAP -Posting only Possible in Periods YYYY/MM YYYY/MM in company 1000
- 基于nexus搭建golang代码下载代理缓存私服
- 100个软硬件都要懂的示波器基础知识
- 域乎X蚂蚁链:打造新购物模式?
- 我读经典管理书籍《管理的实践》有感
- android系统关机广播,Android开机广播和关机广播
- vue打包时报错 Error: No PostCSS Config found in 的解决方法
热门文章
- JavaWeb项目实现文件下载
- 抢红包要当心!钱盾反诈平台专家揭秘3类假红包骗局
- GBK和UTF-8之间的战争,websphere6.1乱码解决方案
- 【原创】ASP.NET C# 盗取中国银行汇率表
- java queue size_Java中的PriorityQueue size() 方法 - Break易站
- python selenium xpath_python+selenium十四:xpath和contains模糊匹配
- 你是如何自学 Python 的?
- oracle io profile,ORACLE 中 PROFILE的管理
- winform 界面 xml化_FlinkSQL 1.11 on Zeppelin平台化实践
- 管理数百个Kubernetes集群需要什么?