MySQL基础(二)(约束以及修改数据表)
一,约束以及修改数据表
约束的作用?1.约束保证数据的完整性、一致性;2.约束分为表级约束、列级约束;3.约束类型包括:NOT NULL(非空约束)、PRIMARY KEY(主键约束)、UNIQUE KEY(唯一约束)、DEFAULT(默认约束)、FOREIGN KEY(外键约束);
列级约束:只针对某一个字段;表级约束:针对两个或两个以上的字段;
1.外键约束的要求解析
外键约束作用:1.保持数据一致性、完整性;2.实现一对一或一对多关系;(这是也把MySQL称之为“关系型”数据库的一个根本性原因)
外键约束的要求:1. ;2.
;2. ;3.
;3.

 ;4.外键列和参照列必须创建索引,如果外键列不存在索引的话,MySQL将自动创建索引;
;4.外键列和参照列必须创建索引,如果外键列不存在索引的话,MySQL将自动创建索引;
子表:具有外键列的表;父表:字表所参照的表;外键列:加过外键关键词的列;参照列:外键列所参照的列;
查看数据表的属性命令:SHOW CREATE TABLE tb_name,从下图中可以看到,数据表provinces的存储引擎为:InnoDB

下图展示子表(users)、父表(provinces)具体的创建过程,其中子表中的pid为外键列,父表中的id为参照列,英文reference的意思为“参照”
 
 
查看数据表的索引命令:SHOW INDEXES FROM tb_name,命令结尾加‘\G’,可以将命令执行结果以网格的形式展示,从下图中可以看到,id字段上已经创建了索引,这是因为创建主键的时候会自动创建索引;而子表users中存在两个索引,pid字段上存在索引这也证明了‘‘如果外键列不存在索引的话,MySQL将自动创建索引” 
   
 
2.外键约束的参照操作
 ;
;
 ;
;

注意:插入记录时,必须先在父表中插入记录,才能在子表中插入记录
 
 
 
  
 
删除记录命令:DELETE FROM tb_name WHERE 【字段名】=【字段值】,从上图中可以看出,创建子表users1时在字段“pid”中加入关键字“ON DELETE CASCADE”;从父表中的“id”字段删除'3',子表users1中的“pid”字段值为‘3’的记录自动被删除;
注意:关于外键约束,在实际的开发过程中,很少使用“物理”的外键约束,一般都使用“逻辑”的外键约束,因为“物理”的外键约束只有InnoDB一种存储引擎支持,Mysiam引擎则不支持;反过来说,如果想创建的数据表的存储引擎为Mysiam,是不可能使用外键约束的,所以说在实际的开发过程中,不去定义“物理”的外键约束,所谓的“逻辑”外键指的就是:在定义两张表的结构的时候,按照存在着某种结构的方式去定义,但是不去使用“FOREIGN KEY”。
3.表级约束与列级约束
表级约束:对一个数据列建立的约束;列级约束:对多个数据列建立的约束;在实际开发中,列级约束用的较多。
列级约束既可以在列定义时声明,也可以在列定义后声明;表级约束只能在列定义后声明
注意:主键约束、唯一约束、外键约束可以存在表级约束和列级约束,DEFAULT约束、NOT NULL约束只能存在列级约束。
4.修改数据表--添加/删除列
4.1,添加单列命令: 
  ;其中,如果不使用【FIRST|AFTER col_name】,新添加的列默认在列表中的最下面;使用FIRST,新添加的列默认在列表中的最上面;使用AFTER col_name,添加在某一列之后。
;其中,如果不使用【FIRST|AFTER col_name】,新添加的列默认在列表中的最下面;使用FIRST,新添加的列默认在列表中的最上面;使用AFTER col_name,添加在某一列之后。
 
 
4.2,添加多列命令:
 添加的多列只能添加到列表中的最下面
 添加的多列只能添加到列表中的最下面
4.3,删除列命令: ,也可以一次命令删除多列:ALTER TABLE tbl_name DROP col_name,DROP col_name,在删除列的同时再新增列也是可以的,命令中用','隔开,如:ALTER TABLE tbl_name DROP col_name,ADD  col_name col_definition;
,也可以一次命令删除多列:ALTER TABLE tbl_name DROP col_name,DROP col_name,在删除列的同时再新增列也是可以的,命令中用','隔开,如:ALTER TABLE tbl_name DROP col_name,ADD  col_name col_definition;

5.修改数据表--添加约束
5.1,添加主键约束: 

 
  
 
5.2,添加唯一约束:


 
  
          
 
  
 
5.3,添加外键约束:


5.4,添加/删除默认约束: 

 
  
 
6.修改数据表--删除约束
6.1,删除主键约束: ,因为任何一张数据表只有一个主键,所以不需要指定主键的名称
,因为任何一张数据表只有一个主键,所以不需要指定主键的名称
6.2,删除唯一约束: ,index_name:索引名
,index_name:索引名
查看索引名命令:SHOW INDEX FROM tbl_name\G;
6.3,删除外键约束:
查看外键约束名称可用命令:SHOW CREATE TABLE tbl_name;

7.修改数据表--修改列定义和更名数据表
7.1,修改列定义:



7.2,修改列名称:

CHANGE关键字既可以修改列名称,也可以修改列定义,所以CHANGE比MODIFY更常用;

7.3,数据表更名:

注音:尽量少使用数据列、数据表的更名,因为表名或列名曾经被引用的情况下,可能会导致某些视图或存储过程无法工作的情况;
知识点汇总

MySQL基础(二)(约束以及修改数据表)的更多相关文章
- MySQL数据库基础(二)(约束以及修改数据表)
		一,约束以及修改数据表 约束的作用?1.约束保证数据的完整性.一致性:2.约束分为表级约束.列级约束:3.约束类型包括:NOT NULL(非空约束).PRIMARY KEY(主键约束).UNIQUE ... 
- MYSQL中约束及修改数据表
		MYSQL中约束及修改数据表 28:约束约束保证数据的完整性和一致性约束分为表级约束和列级约束约束类型包括: NOT NULL(非空约束) PRIMARY KEY(主键约束) UNI ... 
- mysql之约束以及修改数据表
		数据约束的分类: ———————————————————————————————————————————————————— 外键约束的要求解析: //在my文件中的这句话代表着搜索引擎,如果不是的就需 ... 
- MySQL(三) —— 约束以及修改数据表
		约束: 1. 约束保证数据的完整性和一致性: 2. 约束分为表级约束和列级约束: 3. 约束类型包括:NOT NULL, PRIMARY KEY, UNIQUE KEY, DEFAULT, FOREI ... 
- MySQL约束和修改数据表知识集结
		一.约束 划分标准:功能.数据列的数目 功能: (1)NOT NULL(非空约束) (2)PRIMARY KEY(主键约束) (3)UNIQUE(唯一约束) (4)DEFAULT(默认约束) (5)F ... 
- MySQL--3约束和修改数据表总结
- mysql开启远程登陆(修改数据表和授权两种方法)
		一.确认防火墙没有阻止3306端口(一般服务器默认会屏蔽掉) windows防火墙例外设置方法 控制面板(右上角选择查看方式为大图标)---防火墙---高级设置---高级设置---出站规则---最右边 ... 
- MySQL入门第一天——概述、数据表与约束操作
		一.概述 1.安装 初学MySQL,我们下载msi的安装版:http://dev.mysql.com/downloads/file.php?id=457403 安装的过程文字简述可以参考之前随笔:ht ... 
- 数据库之mysql篇(3)—— mysql创建/修改数据表/操作表数据
		创建数据表:create table 数据表名 1.创建表规范 create table 表名( 列名 数据类型 是否为空 自动排序/默认值 主键/外键/唯一键, 列名 数据类型 ... 
随机推荐
- call , apply的this指向实现原理并自己实现封装
			实现this指向原理 var value = 'value' var obj = { value: 'obj' } function func() { console.log(this.value) ... 
- 微信小程序 setData 如何修改动态数据?
			最近这段时间在写微信小程序,有一个页面需要动态修改 data 中的数据,而这里似乎是个坑. 1.正常修改 正常修改很简单,当触发 change 事件时,数据和页面都会同时发生改变.这个也不用多说,很简 ... 
- 2019年上半年收集到的人工智能LSTM干货文章
			2019年上半年收集到的人工智能LSTM干货文章 门控神经网络:LSTM 和 GRU 简要说明 LSTM-CNN-Attention算法系列之一:LSTM提取时间特征 对时间序列分类的LSTM全卷积网 ... 
- iOS 多线程知识梳理
			#iOS多线程知识梳理 ##线程进程基础概念 ###进程 进程是指在系统中正在运行的一个应用程序每个进程之间是独立的,每个进程均运行在其专用且受保护的内存空间内 ###线程 1个进程要想执行任务,必须 ... 
- Oracle有哪些诊断事件
			作者:eygle | [转载请注出处]链接:https://www.eygle.com/archives/2004/12/oracle_diagnostics_events_list.html 经常有 ... 
- C/S与B/S架构
			目录 软件开发架构 C/S架构 数据放在服务端和客户端的利弊: B/S架构 软件开发架构 开发软件,必须要开发一套 客户端 和 服务端 服务端与客户端的作用 服务端:24小时不间断提供服务 客户端:享 ... 
- [视频教程] redis中的bit运用统计用户在线天数
			位运算在redis中非常的方便使用,并且理由利用这个可以实现很多特殊的功能.这也迫使我去研究更多的redis提供的函数,只有研究的多,思路才能够更加开放.今天我就对strings下面的几个函数进行了测 ... 
- 在execCommand formatBlock 'p'标签里增加class或id或css style?
			<script> function CssFnctn() { document.execCommand('formatblock', false, 'p') va ... 
- 爬虫 xpath 获取方式
			回顾 bs4 实例化bs对象,将页面源码数据加载到该对象中 定位标签:find('name',class_='xxx') findall() select() 将标签中的文本内容获取 string t ... 
- Python ord & chr
			ord & chr ord: 返回单个 Unicode 字符编码的整数 chr: 给一个 Unicode 编码,返回一个字符 (0 ~ 1,114,111) (ASCII 与 Unicode ... 
