MySQL 建表 及其 表的约束类型

news2024/12/30 3:05:24

目录

步骤:

1、选择数据库(mydb--自定义数据库) 

 2、建立班级表

3、建立学生表

4、增加约束+删除约束

 增添约束:

 删除约束:


以班级表和学生表为例说明表的约束类型

步骤:

1、选择数据库(mydb--自定义数据库) 

 2、建立班级表

命令如下:

create table class(

    class_id int primary key auto_increment comment '班级编号',

    class_name varchar(50) not null

    )auto_increment=1001;

在其中插入数据

insert into class values(null,'电子信息工程01');

查看插入结果: 

select *from class;

 再插入一个数据

 

  

说明:

auto_increment:自增

        默认从0开始自增1

        这里设置了起始的位置:10001

primary key:主键

        一个表中只允许一个主键

        从功能上看相当于非空且唯一

not null:非空约束

        确保字段值不允许为空
        所有数据类型的值都可以是NULL

3、建立学生表

 命令如下

create table student( stu_id int primary key auto_increment comment'学号',

                                stu_name varchar (30) not null comment '姓名',

                                stu_age tinyint check (stu_age >= 18 ) comment'年龄',

                                stu_gender char(1) default  'M' check (stu_gender in ('M','F')) comment'性别',

                                stu_addr varchar(200) unique,

                                stu_class int references class(class_id)

                                )auto_increment =10001;

 desc student 查看表结构

插入表数据:

 insert into student values(null,'z1',20,null,'hunan',10001);

查看表数据:

 select *from student;

check:检查约束

        如例子中约束了age的取值为18以上,约束gender为男或女

default:默认值约束

        可以使用default关键字设置每一个字段的默认值。

        如例子中若gender插入数据时未指定取值,则默认gender为‘M’

unique:唯一约束

        唯一性约束条件确保所在的字段或者字段组合不出现重复值
        唯一性约束条件的字段允许出现多个NULL
        同一张表内可建多个唯一约束
        唯一约束可由多列组合而成

references:外键约束

        外键是构建于一个表的两个字段或者两个表的两个字段之间的关系
        外键确保了相关的两个字段的两个关系:
        子(从)表外键列的值必须在主表参照列值的范围内,或者为空(也可以加非空约束,强制不允许为空)。
        当主表的记录被子表参照时,主表记录不允许被删除。
        外键参照的只能是主表主键或者唯一键,保证子表记录可以准确定位到被参照的记录。

        如例子中主表为class;子表为student。

4、增加约束+删除约束

 新建一个student1表(不含任何约束)

 增添约束:

alter table student1 add constraint student_id_pk primary key(stu_id);

alter table student1 modify stu_name varchar(30) not null;

alter table student1 add constraint student1_chk_1 check(stu_age >= 18);

alter table student1 modify stu_gender char(1) default 'M';

alter table student1 add constraint student1_chk_2 check(stu_gender in ('M','F'));

alter table student1 add constraint student1_addr_key unique key(stu_addr);

alter table student1 add constraint student1_class_id_fk foreign key(stu_class) references class
(class_id);

 删除约束

alter table student1 drop primary key;(删除PRIMARY KEY约束)

alter table student1 modify stu_name char null;(删除NOT NULL约束)

alter table student1 drop index stu_addr;(删除UNIQUE约束)

alter table student1 drop foreign key student1_class_id_fk;(删除FOREIGN KEY约束)

alter table student1 drop constraint student1_class_id_fk;(删除FOREIGN KEY约束)

alter table student1 drop check student1_chk_1; (删除CHECK约束)

alter table student1 drop check student1_chk_2; (删除CHECK约束)

alter table student1 modify stu_gender char(1);  (删除DEFAULT约束)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/860482.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

联发科:2023年7月合并营收317.63亿元新台币,环比下降 16.8%

据联发科公布,2023年7月合并营收为317.63亿元新台币(折合人民币约72.1亿元),环比下降16.8%,同比下降22.3%。而联发科前七个月的累计合并营收为2255.5亿元新台币(折合人民币约512亿元)&#xff0…

整理mongodb文档:改

个人博客 整理mongodb文档:改 求关注,求批评,求进步 文章概叙 本文主要讲的是mongodb的updateOne以及updateMany,主要还是在shell下进行操作,也讲解下主要的参数upsert以及更新的参数。 数据准备 本次需要准备的数据不是很多…

数据库线程池可用线程分析

1.事情的起源 项目在跑的过程中,突然间报没有可用的连接数。这个时候,服务进程还在,但是只要涉及到数据库的操作都会报错。 2.排查的思路 事件发生后,我们重启服务,监控的Connections数是258个,某台机器…

【VSCode】查看二进制文件

1.安装插件Hex Editor 2.打开二进制文件 3.执行Hex Editor命令

day21-110.平衡二叉树

110.平衡二叉树 力扣题目链接 给定一个二叉树,判断它是否是高度平衡的二叉树。 本题中,一棵高度平衡二叉树定义为:一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过1。 示例 1: 给定二叉树 [3,9,20,null,null,15,7] 返回 true …

衡量七个方面,看敌我两方,谁胜算多大?安志强趣讲《孙子兵法》第4讲

衡量七个方面,看敌我两方,谁胜算多大?【安志强趣讲《孙子兵法》第4讲】 【原文】 故校之以计,而索其情。 【注释】 校:jiao,校量、比较的意思。 索:一种解释为探索、搜索,一种解释为…

试用redis的GEO实现附近商户案例

黑马点评 GEO 就是 Geolocation 的简写形式,代表地理坐标。 Redis 在 3.2 版本中加入了对 GEO 的支持,允许存储地理坐标信息,帮助我们根据经纬度来检索数据。 常见的命令有: GEOADD:添加一个地理空间信息&#xff…

数据结构入门:队列

目录 文章目录 前言 1.队列 1.1 队列的概念及结构 1.2 队列的实现 1.2.1 队列的定义 1.2.2队列的初始化 1.2.3 入队 1.2.4 判空 1.2.5 出队 1.2.6 队头队尾数据 1.2.7 队列长度 1.2.8 队列销毁 总结 前言 队列,作为一种重要的数据结构,在计算机科学中扮演…

“大数据杀熟”,原来是这样的

前几天和朋友去看电影,票是各自买的,买了票才发现自己比朋友买的票贵。一问才知道,朋友是新注册的账号,价格比我的便宜不少。 这就让我想起来之前看到的一个词“大数据杀熟”。 说现在一些互联网平台和商家已经成佛了&#xff0…

时序预测 | MATLAB实现EEMD-LSTM、LSTM集合经验模态分解结合长短期记忆神经网络时间序列预测对比

时序预测 | MATLAB实现EEMD-LSTM、LSTM集合经验模态分解结合长短期记忆神经网络时间序列预测对比 目录 时序预测 | MATLAB实现EEMD-LSTM、LSTM集合经验模态分解结合长短期记忆神经网络时间序列预测对比效果一览基本介绍模型搭建程序设计参考资料 效果一览 基本介绍 时序预测 | …

css中的var函数

css中的var函数 假设我们在css文件存在多个相同颜色值,当css文件越来越大的时候,想要改颜色就要手动在每个旧颜色上修改,这样维护工作非常难进行。 但是我们可以使用变量来存储值,这样可以在整个css样式表中重复使用&#xff0c…

halo --- 上传图片服务器错误

文章目录 问题定位过程1、查看日志 报错的是数据库操作异常2、再次上传一张小一点的图片3、检查nginx的配置文件 原因解决 问题 上传图片时,报错服务器错误(包括上传附件、博客文章插入图片、上传相册) 定位过程 1、查看日志 报错的是数据库…

GEE学习04-

0 回顾 之前学习的内容可以概括为: conda activate gee cd /d e:/geelearn jupyter lab可以在prompt中chrlc停止当前打开的jupyter lab. import ee #ee.Authenticate() import geemap geemap.set_proxy(port 1080) map geemap.Map() map1、视频课学习 之后跟着…

前端技术Vue学习笔记--003

前端技术Vue学习笔记 文章目录 前端技术Vue学习笔记1、Vue生命周期和生命周期的四个阶段1.1、Vue生命周期1.2、生命周期的四个阶段1.3、Vue生命周期函数<font colorred>&#xff08;钩子函数&#xff09; 2、小黑记账本&#xff08;案例&#xff09;3、工程化开发和脚手架…

python-02(入门基础篇2——基本常见语法)

python-02&#xff08;入门基础篇2——基本常见语法&#xff09; 1. 逻辑判断词1.1 布尔类型1.1.1 python为False的情况 1.2 逻辑判断词 not 2. for 语句2.1 语法结构2.2 例子2.2.1 例子1——循环迭代字符串2.2.2 例子2——进行数值循环2.2.2.1 简单循环&#xff08;结合range函…

从Spring源码看创建对象的过程

从Spring源码看创建对象的过程 Spring对于程序员set注入的属性叫做属性的填充、对于set注入之后的处理&#xff08;包括BeanPostProcessor的处理、初始化方法的处理&#xff09;叫做初始化。 研读AbstractBeanFactory类中的doGetBean()方法 doGetBean()方法首先完成的工作是…

MySQL高级-锁+mysql的主从关系(详解02)

目录 1.锁 1.1.Mysql锁问题 1.1.1.锁概述 1.1.2.锁分类 1.1.3.Mysql 锁 1.2.MyISAM 表锁 1.2.1.如何加表锁 1.2.2.读锁案例 1.2.3.写锁案例 1.3.InnoDB 行锁 支持事务 1.3.1.行锁介绍 1.3.2.背景知识 1.3.3.InnoDB 的行锁模式 1.3.4.案例准备工作 innodb 支持事务…

虚幻引擎游戏开发过程中,游戏鼠标如何双击判定?

UE虚幻引擎对于游戏开发者来说都不陌生&#xff0c;市面上有47%主机游戏使用虚幻引擎开发游戏。作为是一款游戏的核心动力&#xff0c;它的功能十分完善&#xff0c;囊括了场景制作、灯光渲染、动作镜头、粒子特效、材质蓝图等。本文介绍了虚幻引擎游戏开发过程中游戏鼠标双击判…

计算机网络实验4:HTTP、DNS协议分析

文章目录 1. 主要教学内容2. HTTP协议3. HTTP分析实验【实验目的】【实验原理】【实验内容】【实验思考】 4. HTTP分析实验可能遇到的问题4.1 捕捉不到http报文4.2 百度是使用HTTPS协议进行传输4.3 Wireshark获得数据太多如何筛选4.4 http报文字段含义不清楚General&#xff08…

spring boot 集成 jetcache【基础篇:@Cached、@CreateCache、@CacheRefresh】

手打不易&#xff0c;如果转摘&#xff0c;请注明出处&#xff01; 注明原文&#xff1a;https://zhangxiaofan.blog.csdn.net/article/details/129832925 目录 前言 版本 配置通用说明 项目结构 代码 启动类 实体类 基础使用——增删改查&#xff08;Cached、CacheInv…