约束,修改表结构,添加删除约束
一、约束概述
1、约束保证数据的【完整性和一致性】
2、约束分为表级约束(针对多列)和列级约束(针对一列)
3、按功能分类包括:
· NOT NULL非空约束
· PRIMARY KEY主键约束
· UNIQUE KEY唯一约束
· DEFAULT默认约束
· FOREIGN KEY外键约束
二、FOREIGN KEY
0 保证数据一致性,和完整性。
1、参照表为子表,被参照表为父表
2、【语法】子表中单起一列:FOREIGN KEY 子表(外键列) REFERENCES 父表(参照列)
2、实现一对一或一对多关系
3、要求如图:
· 表:相同引擎InnoDB,不能临时表
· 列:【相同数据类型】,数字等长\同符号,字符长度可不同
· 列:必须创建索引,系统自动为外键列创建
子表中的外键会参照父表中的主键,新系统会自动创建索引。
外键约束参数操作
一、删除或更新父表数据,控制参数
1、语法:FOREIGN KEY 子表(外键列)REFERENCES 父表(参考列)【ON DELETE】 参数
2、参数
当父表删除和更新操作时:
· CASCADE:子表也删除和更新
· SET NULL:子表设置为NULL,但子表外键列不能设置为NOT NULL(矛盾)
· RESTRICT:拒绝对父表的删除或者更新操作。
· NO ACTION:标准SQL关键字,MYSQL中与RESTRICT相同
更新父表时候子表要进行的操作
表级约束与列级约束
1、对一个列创建的约束为列级约束
2、对多个列创建的约束为表级约束
3、列级约束既可以在列定义时声明,也可以在列定义后声明
4、表级约束只能在列定义后声明
5、并不是所有的约束都有表级约束,如NOT NULL、DEFAULT…
(三)约束以及修改数据表——修改列
1、添加单列:ALTER TABLE tbl_name ADD [COLUMN] col_name column_definition [FIRST | AFTER col_name]。若不添加具体位置,则默认添加到最后。
2、添加多列:ALTER TABLE tbl_name ADD [COLUMN] (col_name1 column_definition1,...)只能添加到末尾
3、删除列:ALTER TABLE tbl_name DROP [COLUMN] col_name1,...
4、多个操作:ALTER TABLE tbl_name DROP col_name1,ADD col_name2...
约束以及修改数据表——修改约束
1、添加主键约束:
ALTER TABLE tbl_name ADD [CONSTRAINT[symbol]] PRIMARY KEY[index_type] (col_name);
2、添加唯一约束
ALTER TABLE tbl_name ADD [CONSTRAINT[symbol]] UNIQUE KEY[index_type] (col_name1,col_name2...);
3、添加爱外键约束
ALTER TABLE tbl_name ADD [CONSTRAINT[symbol]] FOREIGN KEY [index_type](外键列) REFERENCES 父类(参考列);
4、添加/删除默认DEFAULT约束
ALTER TABLE tbl_name ALTER col_name SET DEFAULT literal / DROP DEFAULT;
constraint 是给起一个名字
添加和删除默认约束
约束以及修改数据表——删除约束
1、删除主键约束
ALTER TABLE tbl_name DROP PRIMARY KEY;
2、删除唯一约束
ALTER TABLE tbl_name DROP {INDEX|KEY} index_name(引索通过SHOW INDEXES tbl_name查看);
3、删除外键约束
ALTER TABLE tbl_name DROP FOREIGN KEY fk_symbol(约束名字:通过SHOW CREATE TABLE tbl_name查看);
删除主键约束
删除唯一约束,唯一约束有名字,可以从表结构中查看
删除外键约束
约束以及修改数据表——修改列定义和名称
***不要随意更改列名和表名:引用问题
1、修改列定义 (位置)
ALTER TABLE tbl_name 【MODIFY】 [COLUMN] col_name colum_definition [FIRST | AFTER col_name]
2、修改列名称(属性位置)CHANGE > MODIFY
ALTER TABLE tbl_name 【CHANGE】 [COLUMN] old_col_name new_col_name column_definition [FIRST | AFTER col_name]
3、数据表更名
· 方法1:ALTER TABLE tbl_name RENAME [TO|AS] new_tbl_name
· 方法2:RENAME TABLE tbl_name TO new_tbl_name[,tbl_name2 TO new_tbl_name2...]
约束,修改表结构,添加删除约束相关推荐
- 修改表结构添加外键约束,默认外键名
2019独角兽企业重金招聘Python工程师标准>>> 修改表结构添加外键约束,默认外键名 alter table SUPPLIER_INFO add foreign key (CR ...
- mysql修改字段结构_MySQL修改表结构及其添加删除修改字段功能
MySQL修改表结构添加删除修改字段 创建数据库CREATE DATABASE database_name 创建表CREATE TABLE `user` ( `id` int(11) unsigned ...
- 用SQL语句修改表结构和添加约束
目录 一.修改表结构 1.删除列 2.添加列 3.修改字段的数据类型 二.添加约束 1.主键约束 2.唯一性约束 3.check约束 4.非空约束(修改列的数据类型) 5.外键约束 6.删除约束 7. ...
- SQL Server修改表结构,添加约束
文章目录 修改表结构 1.修改字段数据类型 2.添加字段 3.删除字段 4.修改字段特征(约束) 1>添加标识列约束(IDENTITY) 2>添加主键约束(PRIMARY KEY) 3&g ...
- 数据库——MySQL(一)(数据库常用命令、数据类型、创建表与修改表结构、约束、约束修改添加)
MySQL数据库的概述: MySQL是一种开放源代码的关系型数据库管理系统(RDBMS),MySQL数据库系统使用最常用的数据库管理语言--结构化查询语言(SQL)进行数据库信息增.删.查.改管理 - ...
- oracle 建表字段设置,Oracle创建表、删除表、修改表(添加字段、修改字段、删除字段)语句总结...
关于Oracle创建表.删除表.修改表(添加字段.修改字段.删除字段)语句的简短总结. Oracle创建表: create table 表名 ( 字段名1 字段类型 默认值 是否为空 , 字段名2 字 ...
- mysql 主从 索引_Mysql繁忙主从库在线修改表结构与添加索引问题
本帖最后由 jan_1985 于 2014-1-15 13:28 编辑 Mysql繁忙主从库在线修改表结构与添加索引问题 一直以来,生产情况下都有修改索引和修改字段的需求,但是对锁表引起的访问不便是会 ...
- SQL外键约束多表查询级联删除子查询
文章目录 一.外键 1.创建外键约束 2.删除外键约束 3.外键约束提示 二.级联删除 三.多表查询 1.笛卡尔积 2.内连接查询 1.隐式内连接 2.显示内连接 3.外连接查询 1.左外连接 2.右 ...
- Oracle删除表、修改表(添加字段、修改字段、删除字段)语句总结
Oracle删除表.修改表(添加字段.修改字段.删除字段)语句总结 1.删除表: delete from 表名; delete删除数据是一条一条的删除数据,后面可以添加where条件,不删除表结构.注 ...
- mysql 表中添加唯一约束
mysql表中添加唯一约束 在做权限系统中,有一张表叫用户角色关系表(user_role_relation),这张表中有user_id 和role_id(建表语句如下). CREATE TABLE u ...
最新文章
- JSON反序列的问题原因查找
- Linux Kernel中spinlock的设计与实现
- Java中ArrayList和LinkedList区别 时间复杂度 与空间复杂度
- 【含义解析】%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %m%n
- 【bzoj3033】太鼓达人 DFS欧拉图
- 【设计模式 03】装饰模式——俄罗斯套娃?
- 【正则表达式】JavaScript的exec()和search()方法
- 案例1_公司简介(修改)
- Scikit-Learn与回归树
- 错误因为数据库正在使用,所以无法获得对数据库的独占访问权的解决方案(转)...
- c语言流程图生成器免费软件,c语言流程图生成器
- Graph Anomaly Detection with Deep Learning——基于属性图的节点异常检测
- Linux gcc编译程序时,-I(大写 i )、-L (大写 L)、-I(小写 L )的作用与区别
- synchronized关键词保证线程安全
- windows下手动修改/修复启动项
- infopath2007-2013直接连接数据源(Access或Sqlserver)设计表单模板
- 机器学习4种调参自动优化方法,第二款是我的最爱!
- linux tao环境 安装_菜鸟Linux 编译TAO2.0a的问题,求高手指导
- [转载] js 下获取子元素的方法 -- 李富生
- 使用layui做二级菜单,选父级必选子级