IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> 数据库约束与表的设计 -> 正文阅读

[大数据]数据库约束与表的设计

数据库约束

not null —>非空约束

创建表时,指定某列不为空(null)

举例

创建学生表结构,并指定id不为空;


mysql> create table student(
    -> id int not null,
    -> sn int,
    -> name varchar(20)
    -> );

在这里插入图片描述
指定为非空约束后,就不能再插入空(null)了,否则报错;
在这里插入图片描述

unique ---->唯一约束

指定某列是唯一的,不重复的

举例

创建学生表结构,指定id不为空,学号唯一;


mysql> create table student(
    -> id int not null,
    -> sn int unique,
    -> name varchar(20)
    -> );

在这里插入图片描述
指定唯一约束后,就不能添加重复数据在表中,否则就会报错;
在这里插入图片描述

default ---->默认值约束

指定插入数据时,某列为空就默认为unkown:

举例

设置:name列为空时,使用默认值unknown


mysql> create table student(
    -> id int not null,
    -> sn int unique,
    -> name varchar(20) default 'unknown'
    -> );

在这里插入图片描述
注意

  • 插入四条数据,空字符串(' ')和空(null)的显示是不一样的哦~
mysql> insert into student values
    -> (1,1001,null),
    -> (2,1002,'小花')-> (3,1003,''),
    -> (4,1004,'小猪');

查询结果在这里插入图片描述

  • 插入时,只有不指定该字段,才能显示以默认值的形式插入,如果指定,哪怕是null,也会真实的插入,如上所示;

mysql> insert into student (id,sn) values(7,1008);

查询结果

在这里插入图片描述

primary key—>主键约束

not null 和 unique 的结合体,确保某列(多列)有唯一标识,便于查询、删除、修改数据

举例

创建学生表结构,id设为主键;

mysql> create table student(
    -> id int  primary key,
    -> sn int unique,
    -> name varchar(20) default 'unknown'
    -> );

在这里插入图片描述

对于整数类型的主键,常常搭配 auto_increme 来使用; 表示从1开始自增,但插入数据时,不要指定主键字段

场景

创建课程表,id为整形数字的主键,如下所示:

mysql> create table course(
    -> id int  primary key auto_increment,
    -> name varchar(20)
    -> );

插入数据,但不要指定主键字段

mysql> insert into course(name) values
    -> ('高等数学'),
    -> ('大学英语'),
    -> ('智能控制');

查询结果:
在这里插入图片描述

foreign key---->外键约束

foreign key :用于关联其他表的主键或唯一键;
语法
foreign key (本表字段名) references (关联表的表名)(关联的字段名)

举例

  1. 创建班级表classesid为主键;
  2. 创建学生表student,一个学生对应一个班级,一个班级对应多个学生,使用id为主键,classes_id为外键,关联班级表id
mysql> create table classes(
    -> id int primary key auto_increment,
    -> name varchar(20)
    -> );
Query OK, 0 rows affected (0.01 sec)

mysql>
mysql> drop table if exists student;
Query OK, 0 rows affected (0.00 sec)

mysql> create table student(
    -> id int  primary key auto_increment,
    -> sn int unique,
    -> name varchar(20)  default 'unknown',
    -> classes_id int,
    -> foreign key (classes_id) references classes(id)
    -> );

插入数据

  • (1) 插入班级信息

在这里插入图片描述
查询结果在这里插入图片描述

  • (2)插入学生信息
mysql> insert into student (sn,name,classes_id) values
    -> (1001,'李宁',1),
    -> (1002,'张伟',1),
    -> (1003,'乔丹',2);

查询结果

李宁、张伟均在计算机1班,乔丹在计算机2班;在这里插入图片描述

表的设计

一对一

  • 一个人对应一个身份证信息

在这里插入图片描述

一对多

  • 一个班级拥有多个学生

在这里插入图片描述

多对多

  • 一个学生,要修多门课程

在这里插入图片描述
注意

  • 表的直接关系只有:1对1 、1对多;
  • 多对多的关系,是中间表产生的中间关系

举例

班级表、学生表、考试成绩表,总共有三张表,在考试的场景发生后,就有学生和课程多对多的对应关系了!

  • 考试成绩表

在这里插入图片描述

  • 课程表

在这里插入图片描述

  • 班级表
    在这里插入图片描述

在这里插入图片描述

插入数据

mysql> insert into score  values
    -> (null,59,8,1),
    -> (null,70,8,2),
    -> (null,87,9,2),
    -> (null,69,10,1),
    -> (null,99,8,1);

结果查询在这里插入图片描述

内容总结

约束类型说明
not null表示某列不能存储 null 值
unique保证某列的每行必须有唯一的值
default规定没有给列赋值时的默认值
primary keynot null 和unique 的结合
foreign key保证一个表中的数据匹配另一个表中的值的参照完整性
  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-12-10 11:07:42  更:2021-12-10 11:08:33 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 10:45:21-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码