(我的创作纪念日)[MySQL]数据库原理7——喵喵期末不挂科

希望你开心,希望你健康,希望你幸福,希望你点赞!

最后的最后,关注喵,关注喵,关注喵,大大会看到更多有趣的博客哦!!!

喵喵喵,你对我真的很重要!

目录

​编辑

前言

数据约束和参照完整性

背景与要求

PRIMARY KEY约束

理解PRIMARY KEY约束

表的完整性约束

复合主键

小总结

修改表的主键

UNIQUE约束

创建UNIQUE约束

总结


前言

喵子回来了,冲冲冲!


数据约束和参照完整性

背景与要求

 在一个表中,通常需要某个字段或字段的组合唯一地标识一条记录,这就是主键约束。

  在一个表中,有时要求某些列值不能重复,但一个表只能有一个主键,这时可以设置UNIQUE进行约束。

  在关系数据库中,表与表之间数据是有关联的。例如,成绩表中的课程号要参照课程表的课程号,成绩表的学号要参照学生表中的学号。该怎样进行约束,使表与表之间的数据保证一致呢?

本任务要求学习者理解主键约束(PRIMARY KEY)、唯一性约束(UNIQUE外键参照完整性约束(FOREIGN KEY以及CHECK约束的含义。

  学习创建和修改约束的方法,掌握数据约束的实际应用。


PRIMARY KEY约束

理解PRIMARY KEY约束

  可指定一个字段,也可以指定二个及以上的字段作为复合主键,其值能唯一地标识表中的每一行,列不能取空值。

  主键约束能确保数据唯一,所以经常用来定义标志列。

  可以在创建表时创建主键,也可以对表中已有主键进行修改或者增加新的主键。

  设置主键通常有两种方式:表的完整性约束、列的完整性约束。


表的完整性约束

 举个例子

创建表course1,用表的完整性约束设置主键。  

mysql> CREATE TABLE IF NOT EXISTS course1

    (c_no char(4) NOT NULL,

    c_name char(10) DEFAULT NULL,

    t_no char(10) DEFAULT NULL,

  hours int(11) DEFAULT NULL,

    credit int(11) DEFAULT NULL,

    type varchar(10) DEFAULT NULL,

    PRIMARY KEY (c_no)

    )ENGINE=InnoDB DEFAULT  CHARSET=gb2312;

创建表course2,用列的完整性约束设置主键。

  mysql> CREATE TABLE IF NOT EXISTS course2

       (c_no char(4) NOT NULL  PRIMARY KEY,

   c_name char(10) DEFAULT NULL,

    d_no char(10) DEFAULT NULL,

    hours int(11) DEFAULT NULL,

    credit int(11) DEFAULT NULL,

  type varchar(10) DEFAULT NULL

    )ENGINE=InnoDB DEFAULT  CHARSET=gb2312;

复合主键

创建score1,用s_noc_no作为复合主键。

mysql> CREATE TABLE IF NOT EXISTS score1

    s_no char(8) NOT NULL,

    c_no char(4) NOT NULL,

  ccore float(5,1) DEFAULT NULL,

    PRIMARY KEY (s_no,C_no)

    )ENGINE=InnoDB DEFAULT CHARSET=gb2312

小总结

1)主键以是单一的字段,也以是多个字段的组合。

2)在score表中,一个学生一门课的成绩只能有一条记录,不能出现同一个学生同一门课多条记录,因此,必须设置s_noc_no为表score复合主键,以保证数据的唯一性。 另外,如果单独设置s_noc_no为主键,将出现一位学生(或一门课)只能录入一次成绩的情况。

3)当表中的主键为复合主键时,只能定义为表的完整性约束

4)作为表的完整性约束时,需要在语句最后加上一条PRIMARY KEYcol_name)语句,作为列的完整性约束时,只需在列定义的时候加上关键字PRIMARY KEY


修改表的主键

  修改表students的主键,删除原来主键,增加s_name为主键。

Mysql>ALTER TABLE students

  DROP PRIMARY KEY,

  ADD PRIMARY KEY (s_name );

注:如果原主键已被引用为外键,将出错。


UNIQUE约束

 理解UNIQUE约束(唯一性约束)

  UNIQUE约束(唯一性约束)又称替代键

  替代键是没有被选作主键的候选键

  替代键像主键一样,是表的一列或一组列,它们的值在任何时候都是唯一的。

  可以为主键之外的其他字段设置UNIQUE约束。 


创建UNIQUE约束

TEST数据库中,创建一个表employees, 只含employeeidnamesexeducation,用列的完整性约束的方式将Name设为主键,用表的完整性约束的方式将employeeid设为替换键。

mysql> create table employees

    (employeeid char(6) not null,

    name char(10) not null primary key,

  sex tinyint(1),

    education char(4),

    UNIQUE(employeeid));

或者,可以作为列的完整性约束直接在字段后面设置唯一性。    


总结

数据库记的东西蛮多的

记住就好了!


希望你开心,希望你健康,希望你幸福,希望你点赞!

最后的最后,关注喵,关注喵,关注喵,大大会看到更多有趣的博客哦!!!

喵喵喵,你对我真的很重要!

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

代理模式(结构型模式)

目录 1、概述 2、结构 2.1、角色分类 2.2、类图 3、静态代理 3.1、案例类图 3.2、案例代码 4、JDK 动态代理 4.1、案例代码 4.2、底层原理 4.3、执行流程说明 5、CGLib 动态代理 5.1、案例代码 6、三种代理的对比 6.1、JDK代理和CGLib代理 6.2、动态代理和静态…

大模型(Large Models):探索人工智能领域的新边界

🌟文章目录 🌟大模型的定义与特点🌟模型架构🌟大模型的训练策略🌟大模型的优化方法🌟大模型的应用案例 随着人工智能技术的飞速发展,大模型(Large Models)成为了引领深度…

使用ROCm的HIP API向量加法程序

一、向量加法程序 Radeon Open Compute (ROCm) 是一个开源平台,用于加速高性能计算 (HPC) 和机器学习应用程序。它支持包括GPUs在内的多种硬件,并提供HIP (Heterogeneous-compute Interface for Portability) 作为CUDA代码的便捷转换工具。为了提供一个…

广佛站点导航助手小程序产品使用说明书

一、产品简介 广佛站点导航助手小程序是一款专为广佛地区用户设计的地铁导航工具。通过获取用户的实时位置信息,小程序能够迅速定位并展示离用户最近的三个地铁站点。用户可以通过本小程序轻松查找地铁站点,规划出行路线,提高出行效率。 二、…

SDK-0.7.8-Release-实体管理 - ApiHug-Release

🤗 ApiHug {Postman|Swagger|Api...} 快↑ 准√ 省↓ GitHub - apihug/apihug.com: All abou the Apihug apihug.com: 有爱,有温度,有质量,有信任ApiHug - API design Copilot - IntelliJ IDEs Plugin | Marketplace 更多精彩…

Linux:环境基础开发工具使用

文章目录 前言1.Linux下的软件安装1.1 什么是软件包1.2 如何安装软件1.3 如何卸载软件 2.vim2.1 vim的基本概念2.2 vim的基本操作2.3 vim正常模式命令集2.4 vim末行模式命令集2.5 vim的操作总结 3.Linux下的编译器:gcc3.1 gcc的使用3.2 gcc是如何工作的3.2.1 预处理…

Micromamba 安装与使用

文章目录 一、安装 MicromambaWindows安装使用 Micromamba 一、安装 Micromamba Micromamba 是一个静态链接的 C 可执行文件,在 Windows 上就是一个 micromamba.exe 文件,下载下来就直接可以用,甚至都不需要专门安装。唯一需要做的就是设置 …

Python编程的十大好用工具!

Python一直以来都是程序员们的首选编程语言之一,其灵活性和功能强大的库使其成为解决各种问题的理想选择。在本文中,我们将介绍Python编程的终极十大工具,这些工具可以帮助您在各种领域取得成功,无论您是初学者还是经验丰富的开发…

python数据分析学什么东西

前言 大家好,小编为大家解答python数据分析重点要学什么的问题。很多人还不知道python数据分析需要什么基础,现在让我们一起来看看吧! 数据分析人人都有必要掌握一点,哪怕只是思维也行。下面探讨Python数据分析需要学习的知识范…

JavaScript-2.对话框、函数、数组、Date、DOM

对话框 window对象封装了三个对话框用于与用户交互 提示框:alert(title);确认框:confirm(title);输入框:prompt(title); 确认框 包含两个按钮“确认”/“取消”,点击确定时,返回值为true // 确认框 var bool con…

微服务项目——谷粒商城

文章目录 一、项目简介(一)完整的微服务架构详细解释——微服务划分图(二)电商模式1.B2B 模式2.B2C 模式3.C2B 模式4.C2C 模式5.o2o 模式2.谷粒商城 (三)项目技术&特色(四)项目前…

Transformer 结构浅析

Transformer 结构浅析 文章目录 Transformer 结构浅析Transformer 网络结构编码器位置编码多头注意力层Add&NormFeed Forward 解码器带掩码的多头注意力层多头注意力层 预测 Transformer 网络结构 Transformer模型的网络结构如图,且transformer结构主要分为两部…

Linux使用docker安装RocketMQ并登录管理界面

Linux使用docker安装RocketMQ并登录管理界面 1、创建 /opt/rocketmq/docker-compose.yml和/opt/rocketmq/broker.conf两个配置文件 2、docker-compose.yml,并配置管理页面端口为8090 version: 3.5 services:rmqnamesrv:image: foxiswho/rocketmq:servercontainer_…

“栈”顶到底是高地址还是低地址?

栈的增长方向永远是从杯底到杯顶,所以对于栈来说上面是栈底下面是栈顶,而对于堆来说,上面是堆顶下面是堆底。栈是连续分配内存的,如果给一个数组或对象分配内存,栈会选择还没分配的最小的内存地址给数组,在…

20240327-1-评测指标面试题

评测指标面试题 metric主要用来评测机器学习模型的好坏程度,不同的任务应该选择不同的评价指标,分类,回归和排序问题应该选择不同的评价函数. 不同的问题应该不同对待,即使都是分类问题也不应该唯评价函数论,不同问题不同分析. 回归(Regression) 平均绝对误差(MAE) 平均绝对…

Android 车载应用开发概述

前言 介绍 Android 车载应用开发 文章目录 前言一、Android Automotive OS 概述二、Android Automotive OS 架构三、常见的车载应用1、系统应用1)SystemUI是什么开发工作 2)Launcher是什么开发工作 3)Settings是什么开发工作 4)多…

使用UDP实现TCP的功能,会带来什么好处?

比较孤陋寡闻,只知道QUIC TCPQUIC握手延迟TCP需要三次握手TLS握手三次握手TLS握手放在一起,实现0RTT头阻塞问题TCP丢失保文,会影响所有的应用数据包基于UDP封装传输层Stream,Stream内部保序,Stream之间不存在相互影响…

实时智能应答3D数字人搭建2

先看效果: 3d数字人讲黑洞 根据艾媒咨询数据,2021年,中国虚拟人核心产业规模达到62.2亿元,带动市场规模达到1074.9亿元;2025年,这一数据预计将达到480.6亿元与6402.7亿元,同比增长迅猛。数字人可…

C语言:指针详解(1)

目录 一、内存和地址 1.内存 2.究竟该如何理解编址 二、指针变量和地址 1.取地址操作符(&) 2.解引用操作符(*) 3.指针变量的大小 三、指针变量类型的意义 1.指针的解引用 2.指针-整数 3.void*指针 四、const修饰指针 1.const修饰变量 2.const修饰指针变量 五…

C语言 | Leetcode C语言题解之第19题删除链表的倒数第N个结点

题目: 题解: struct ListNode* removeNthFromEnd(struct ListNode* head, int n) {struct ListNode* dummy malloc(sizeof(struct ListNode));dummy->val 0, dummy->next head;struct ListNode* first head;struct ListNode* second dummy;f…