/* MySQL进阶13
常见六大约束: 1.not null 非空2.default :默认值,用于保证该字段的默认值 ; 比如年龄:1900-10-103.primary key : 主键,用于保证该字段的值具有唯一性,并且非空4.unique : 唯一约束,保证该字段的值可以为空,具有唯一性5.check : 检查约束[mysql不支持,不报错,没有实际效果]6.foreign key : 外键约束; 用于限制两个表的关系, 用于保证该字段的值必须来自于主表的关联列的值;在从表中添加外键约束,用于引用主表中的某列的值;比如: 学生表的专业编号,员工表的部门编号,员工表的工种编号;
添加约束的时机:1.创建表时2.修改表时----------
约束的添加分类:列级约束  : 六大约束语法上都支持,但外键没有效果!! 表级约束  : 除了非空,默认, 其他的都支持!语法 : constraint 约束名 约束类型(字段名)
主键和唯一:都可以组合!#二. 修改表的时候添加列级约束alter table 表名  modify column 字段名 字段类型 新类型;添加表级约束alter table 表名  add [constraint 约束名]  约束类型(字段名) [外键的引用];#********添加表名#    alter table 表名  add column 字段名 字段类型;
*/CREATE TABLE 表名(字段名 字段类型 列级约束,字段名 字段类型,表级约束
);#一: 创建表时添加约束
CREATE DATABASE students;    #1.添加列级约束
USE students;
CREATE TABLE stuinfo(id INT PRIMARY KEY,  #主键stuName VARCHAR(20) NOT NULL, #非空gender CHAR(1) CHECK(gender IN ('男','女')),   #检查约束seat INT UNIQUE, #唯一age INT DEFAULT 18  , #默认约束majorId INT  REFERENCES major(id) #设置为外键
);
DESC stuinfo;
CREATE TABLE major(id INT PRIMARY KEY,majorName VARCHAR(20)
);#2 添加表级约束
DROP TABLE IF EXISTS stuinfo;
CREATE TABLE stuinfo(id INT ,  #主键stuName VARCHAR(20), #非空gender CHAR(1),   #检查约束seat INT, #唯一age INT , #默认约束majorid INT,CONSTRAINT pk PRIMARY KEY(id), #设置主键CONSTRAINT uq    UNIQUE(seat), #唯一键CONSTRAINT ck CHECK(gender ='男' OR gender ='女'), #检查CONSTRAINT fk_stuinfo_major FOREIGN KEY(majorid) REFERENCES major(id) #外键
);
SHOW INDEX FROM stuinfo;#组合写法,更常用! 主键和唯一:都可以组合!
DROP TABLE IF EXISTS stuinfo;
CREATE TABLE stuinfo(id INT ,  #主键stuName VARCHAR(20), #非空gender CHAR(1),   #检查约束seat INT, #唯一age INT , #默认约束majorid INT,PRIMARY KEY(id,stuName), #设置主键UNIQUE(seat), #唯一键CHECK(gender ='男' OR gender ='女'), #检查CONSTRAINT fk_stuinfo_major FOREIGN KEY(majorid) REFERENCES major(id) #外键
);#二. 修改表的时候添加约束
DROP TABLE IF EXISTS stuinfo;
CREATE TABLE stuinfo(id INT , stuName VARCHAR(20),gender CHAR(1),  seat INT, age INT , majorid INT);
DESC stuinfo;#1.添加非空约束
ALTER TABLE stuinfo MODIFY COLUMN stuname VARCHAR(20) NOT NULL;#2 添加默认约束
ALTER TABLE stuinfo MODIFY COLUMN age INT DEFAULT 18;#3添加主键: 1)列级约束
ALTER TABLE stuinfo MODIFY COLUMN id INT PRIMARY KEY;#2) 表级约束
ALTER TABLE stuinfo ADD PRIMARY KEY(id);#4.添加唯一#1.列级约束
ALTER TABLE stuinfo MODIFY COLUMN seat INT UNIQUE;#2) 表级约束
ALTER TABLE stuinfo ADD UNIQUE(id);#5.添加外键
ALTER TABLE stuinfo ADD FOREIGN KEY(majorid) REFERENCES major(id);
ALTER TABLE stuinfo ADD CONSTRAINT fk_stuinfo_major FOREIGN KEY(majorid) REFERENCES major(id);#三 .删除约束#1.删除非空约束
ALTER TABLE stuinfo MODIFY COLUMN stuname VARCHAR(20) NULL;
#2 删除默认约束
ALTER TABLE stuinfo MODIFY COLUMN age INT;
#3删除主键
ALTER TABLE stuinfo DROP PRIMARY KEY;
#4删除唯一
ALTER TABLE stuinfo DROP INDEX seat;
#5.删除外键
ALTER TABLE stuinfo DROP FOREIGN KEY fk_stuinfo_major;DESC stuinfo;

转载于:https://www.cnblogs.com/zhazhaacmer/p/9872081.html

MySQL进阶13--常见六大约束: 非空/默认/主键/唯一约束/检查约束/外键约束--表级约束 / 列级约束...相关推荐

  1. 约束,MySQL约束,非空默认值,主键外键唯一自增,完整详细可收藏

    文章目录 1. 约束(constraint)概述 2. 非空约束 3. 唯一性约束 4. PRIMARY KEY 约束 5. 自增列:AUTO_INCREMENT 6. FOREIGN KEY 约束 ...

  2. 数据库字段设置为非空默认值

    为什么数据库要设置默认值呢?因为我们希望在插入数据时,有意或无意间被忽略的字段能够交由MySQL按我们事先预想的方式处理,例如一些默认正常状态码.用户插入数据时候尚未设置的文本字段,诸如此类. 假设s ...

  3. mysql 引擎 外键_mysql的事物,外键,与常用引擎

    ### part1 时间类型 date YYYY-MM-DD 年月日 (出现日期) time HH:MM:SS 时分秒 (竞赛时间) year YYYY 年份值 (红酒年份 82年矿泉水) datet ...

  4. Mysql中外键作用以及Navicat建立外键失败总结

    本文摘自参考三篇文章,从这篇文章中将了解到外键作用以及navicat建立外键常见错误解决,帮助读者更加深刻了解外键. 文章目录 一.外键的作用 二. 不设置外键行不行? 三.那到底使不使用外键? 四. ...

  5. MySQL中的主键、唯一键、外键对比

    一.主键 主键:每张表中只能有一个字段(复合主键可以有多个字段)使用此属性,用来唯一约束该字段中的数据,不能重复 1.增加主键: 在创建表的时候,直接在字段后,添加primary key关键字 CRE ...

  6. mysql 外键有啥用途_Mysql外键是什么?有哪些用处?(图文+视频)

    本篇文章主要给大家介绍mysql外键是什么以及mysql数据库中的外键的作用. 首先大家要简单了解下什么mysql? MySQL是一个关系型数据库管理系统,也是最流行的关系型数据库管理系统之一,在 W ...

  7. 约束——非空约束和唯一性约束

    1.什么是约束? 约束对应的英语单词:constraint 在创建表的时候,我们可以给表中的字段加上一些约束,来保证这个表中数据的 完整性.有效性!!!约束的作用就是为了保证:表中的数据有效!! 1. ...

  8. [JavaWeb-MySQL]约束(非空约束,唯一约束,主键约束,外键约束_级联操作)

    约束 * 概念: 对表中的数据进行限定,保证数据的正确性.有效性和完整性. * 分类:1. 主键约束:primary key2. 非空约束:not null3. 唯一约束:unique4. 外键约束: ...

  9. oracle去除检查非空,oracle 主键,非空,检查,唯一,默认,外键约束

    --首先添加主键约束 alter table student add constraint PK_student_sno primary key(sno) --删除约束 alter table stu ...

  10. mysql外键约束查询语句_MySQL数据库 : 查询语句,连接查询及外键约束

    查询指定字段        select 字段1,字段2 from 表名; 消除重复行(重复指的是结果集中的所有完全重复行)             select distinct 字段1,字段2.. ...

最新文章

  1. ZigZag 与 反ZigZag编码
  2. jquery的实时触发事件(textarea实时获取中文个数)
  3. 离线轻量级大数据平台Spark之MLib机器学习库Word2Vec实例
  4. FastReport4.6程序员手册_翻译 转
  5. 【蓝桥杯省赛】冲刺练习题【循环】倒计时【15】天
  6. c#语言float转换int,C#Float表达式:将结果float转换为int时的奇怪行为
  7. 深度学习笔记(6) 实践层面(一)
  8. 教师节快乐:删了库之后,不要着急跑路
  9. 从源码深入理解Spring IoC 注解
  10. MapXtreme2004 连接oracle spatial的问题
  11. canny边缘检测_每日习题-图像处理-Canny边缘检测(2020.4.15)
  12. google font 字体下载方式
  13. Web前端开发工程师常用技术网站整理
  14. 你好旧时光,斗罗大陆,红楼梦词云词频分析(动词形容词名词)
  15. win10 DOS命令操作
  16. 毕业4年年薪200万是怎样的一种体验?
  17. 不了解外贸装箱,这一篇够够的
  18. 使用leaflet仿原神提瓦特大地图制作日记
  19. 首页 干货教程 大数据动向 大数据应用 数据可视化 数据分析 投资并购 企业专区 注册 登录 随机森林入门攻略(内含R、Python代码)
  20. 关于调用高德地图路径规划清除问题解决方案【js】

热门文章

  1. web安全day16:人人都要懂的OSI和TCP/IP协议簇
  2. 九、K8s deployment相关操作
  3. 浅议组播(一文看懂组播)
  4. 【ActiveMQ】消息生产者自动注入报错:Could not autowire. No beans of #39;JmsMessagingTemplate#39; type found...
  5. Android 用户可以直接在搜索页面上安装 app 了
  6. codeforces 665A Buses Between Cities
  7. 用C语言写一个函数返回参数二进制中1的个数
  8. Android动态加载字节码
  9. ANDROID 中设计模式的採用--结构型模式
  10. JBOSS EAP6.2.0的下载安装、环境变量配置以及部署