当前位置: 首页 > news >正文

Mysql基础(四)——约束与表关系

一、约束条件分类

1、非空约束:保证字段的值不能为空:

team_name VARCHAR(20) NOT NULL;

2、默认约束:保证字段即使字段不插入数据,也会有一个默认值:

team_name VARCHAR(20) DEFAULT '无名队';

3、主键约束:保证数据不为空,且唯一:

id INT PRIMARY KEY AUTO_INCREMENT;

PRIMARY KEY:主键

AUTO_INCREMENT:因为主键的缘故,所以id不能重复。但有时候会忘记哪些id的序号排到哪里了,所以,我们设置自增。(在最后的id序号值,+1)

项目开发中,一般来说,每一张表都会设置一个id,并且设置为主键。 

4、外键约束:限制两张表之间的关系,一张表的外键必须是另一张表的主键,可以为空: 

FOREIGN KEY (team_id) REFERENCES teams(id);

在创建表时,在括号里面另起一行写代码。 

students表中,有team_id字段,这个【team_id】字段,对应teams表当中的【id】字段。 

 让team_id,关联到id。

二、表关系分类:

1、一对多关系:小组对学生。

如,一个小组对应多个学生,一个学生只能在一个小组。

2、多对多关系:学生对老师。

一个学生选择多个老师的课程,一个老师教多个学生。

(1)学生表:

create table students(
	id int,
	student_name varchar(20),
	sex char(1),
	age int,
	achievement double(5,2),
	team_id int,
	graduation_date date
);

(2)老师表:

create table teachers(
	id INT PRIMARY KEY AUTO_INCREMENT,
	teacher_name VARCHAR(20)
);

(3)老师对学生表:

create table teacher_to_student(
    id int primary key auto_increment,
    teacher_id int,
    student_id int,
    foreign key(teacher_id) references teachers(id),
    foreign key(student_id) references students(id)
);

(4)插入数据:

insert into teacher_to_student(teacher_id,student_id) values(1,2);

3、一对一关系:

并不常见,因为大部分的一对一关系,其实可以放在同一张表中存储。

可能情况:隔离表的部分数据,为了隐藏;或者是作为临时数据,定期清空。

相关文章:

  • 聚苯乙烯微球表面原位接枝含糖聚合物/pH响应性磁性聚苯乙烯基多孔微球制备方法
  • Curator使用手册
  • x86汇编_MUL/IMUL乘法指令_笔记52
  • CSP-J1 CSP-S1第1轮 初赛 如何拿到好成绩(60分及以上)
  • Package | 解决Could NOT find GLEW (missing: GLEW_INCLUDE_DIRS GLEW_LIBRARIES)
  • Maven的配置与安装
  • 阿里云 OSS
  • MacOS 12 Monterey根目录无法创建目录
  • 【牛客网-公司真题-前端入门篇】——百度2021校招Web前端研发工程师笔试卷(第一批)
  • 【Android控件】HorizontalScrollView的基础使用记录(滚动条自定义)
  • 盘点下常用的接口测试工具,有几个你肯定没用过
  • 成都市级科技计划项目验收公告、专精特新“小巨人”奖励申报等
  • 磁珠法RNA pull down试剂盒、蛋白质-核酸相互作用
  • GC 垃圾回收机制
  • C语言排序代码汇总测试
  • 【译】React性能工程(下) -- 深入研究React性能调试
  • android 一些 utils
  • C语言笔记(第一章:C语言编程)
  • httpie使用详解
  • java架构面试锦集:开源框架+并发+数据结构+大企必备面试题
  • js算法-归并排序(merge_sort)
  • MaxCompute访问TableStore(OTS) 数据
  • opencv python Meanshift 和 Camshift
  • Python_OOP
  • sessionStorage和localStorage
  • 构造函数(constructor)与原型链(prototype)关系
  • 精彩代码 vue.js
  • 聚簇索引和非聚簇索引
  • 每个JavaScript开发人员应阅读的书【1】 - JavaScript: The Good Parts
  • 如何优雅的使用vue+Dcloud(Hbuild)开发混合app
  • 实战|智能家居行业移动应用性能分析
  • 限制Java线程池运行线程以及等待线程数量的策略
  • 用Node EJS写一个爬虫脚本每天定时给心爱的她发一封暖心邮件
  • No resource identifier found for attribute,RxJava之zip操作符
  • 机器人开始自主学习,是人类福祉,还是定时炸弹? ...
  • ​io --- 处理流的核心工具​
  • #多叉树深度遍历_结合深度学习的视频编码方法--帧内预测
  • (1)(1.19) TeraRanger One/EVO测距仪
  • (10)STL算法之搜索(二) 二分查找
  • (12)Hive调优——count distinct去重优化
  • (2015)JS ES6 必知的十个 特性
  • (2022 CVPR) Unbiased Teacher v2
  • (c语言版)滑动窗口 给定一个字符串,只包含字母和数字,按要求找出字符串中的最长(连续)子串的长度
  • (读书笔记)Javascript高级程序设计---ECMAScript基础
  • (二)Linux——Linux常用指令
  • (二)Pytorch快速搭建神经网络模型实现气温预测回归(代码+详细注解)
  • (附源码)spring boot智能服药提醒app 毕业设计 102151
  • (三十五)大数据实战——Superset可视化平台搭建
  • (数据结构)顺序表的定义
  • (四)Tiki-taka算法(TTA)求解无人机三维路径规划研究(MATLAB)
  • (一一四)第九章编程练习
  • (译) 函数式 JS #1:简介
  • (原)记一次CentOS7 磁盘空间大小异常的解决过程
  • *** 2003
  • ./mysql.server: 没有那个文件或目录_Linux下安装MySQL出现“ls: /var/lib/mysql/*.pid: 没有那个文件或目录”...