MySQL零基础入门教程-8.1 表的连接\增删数据、表结构的增删改、字段约束(非空、唯一性、主键、外键、检查约束),基础+实战

news2024/11/7 22:21:44

教程来源:B站视频BV1Vy4y1z7EX

001-数据库概述_哔哩哔哩_bilibili

我听课收集整理的课程的完整笔记,供大家学习交流下载:夸克网盘分享

本文内容为完整笔记的第八篇的第一部分

目录

1、表怎么进行连接的

2、insert语句可以一次插入多条记录吗?可以的!

3、快速创建表?【了解内容】

4、将查询结果插入到一张表当中?insert相关的!!!【了解内容】

5、快速删除表中的数据?【truncate比较重要,必须掌握】

delete语句删除数据的原理?

truncate语句删除数据的原理?

大表非常大,上亿条记录????

6、对表结构的增删改?

7、约束(非常重要,五颗星*****)

7.1、什么是约束?

7.2、约束包括哪些?

7.3、非空约束:not null

7.4、唯一性约束:unique

7.5、主键约束(primary key,简称PK)非常重要五颗星*****

7.6、外键约束(foreign key,简称FK)非常重要五颗星


1、表怎么进行连接的P77-P143

  • 1、表怎么进行连接的

    • 从emp表中取ename,从dept表中取dname,没有条件限制最终查询结果是?

    • 加个条件是为了达到4选1,也是为了数据的有效性.

    • 加条件只是为了避免笛卡尔积现象,只是为了查询出有效的组合记录。
    • 匹配的次数一次都没有少,还是56次。
  • 2、insert语句可以一次插入多条记录吗?可以的!

    • 语法:insert into t_user(字段名1,字段名2)values(),(),(),()

  • 3、快速创建表?【了解内容】

    • 复制表结构和数据,可以用来复制或备份

  • 4、将查询结果插入到一张表当中?insert相关的!!!【了解内容】

    • 需要被插入的表和插入的表结构一致,很少用

  • 5、快速删除表中的数据?【truncate比较重要,必须掌握】

    • //删除dept bak表中的数据

    • delete语句删除数据的原理?

      • 表中的数据被删除了,但是这个数据在硬盘上的真实存储空间不会被释放!!!
      • 这种删除缺点是:删除效率比较低。
      • 这种删除优点是:支持回滚,后悔了可以再恢复数据!!!

    • truncate语句删除数据的原理?

      • 这种删除效率比较高,表被一次截断,物理删除。
      • 这种删除缺点:不支持回滚。
      • 这种删除优点:快速。
      • 用法:truncate table dept_bak;(这种操作属于DDL操作。)
    • 大表非常大,上亿条记录????

      • 删除的时候,使用delete,也许需要执行1个小时才能删除完!效率较低。
      • 可以选择使用truncate删除表中的数据。只需要不到1秒钟的时间就删除结束效率较高。但是使用truncate之前,必须仔细询问客户是否真的要删除,并警告删除之后不可恢复!
  • 6、对表结构的增删改?

    • 什么是对表结构的修改?
      • 添加一个字段,删除一个字段,修改一个字段!!!
      • 第一:在实际的开发中,需求一旦确定之后,表一旦设计好之后,很少的进行表结构的修改。因为开发进行中的时候,修改表结构,成本比较高。修改表的结构,对应的java代码就需要进行大量的修改。成本是比较高的。这个责任应该由设计人员来承担!
      • 第二:由于修改表结构的操作很少,所以我们不需要掌握,如果有一天真的要修改表结构,你可以使用工具!!!!
    • 修改表结构的操作是不需要写到java程序中的。实际上也不是java程序员的范畴。
    • 对表结构的修改需要使用:alter,属于DDL语句
    • DDL包括:create drop alter
  • 7、约束(非常重要,五颗星*****)

    • 7.1、什么是约束?

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

      • 非空约束:not null
      • 唯一性约束:unique
      • 主键约束:primary key(简称PK)
      • 外键约束:foreign key(简称FK)
      • 检查约束:check(mysql不支持,oracle支持)
      • 我们这里重点学习四个约束
        • not null
        • unique
        • primary key
        • foreign key
    • 7.3、非空约束:not null

      • 非空约束not null约束的字段不能为NULL。

      • //not null只有列级约束,没有表级约束!
    • 小插曲:sq1脚本文件
      • xxxx.sq1这种文件被称为sq1脚本文件
      • sq1脚本文件中编写了大量的sql语句.
      • 我们执行sq1脚本文件的时候,该文件中所有的sq1语句会全部执行!
      • 批量的执行sQL语句,可以使用sql脚本文件。
      • 在mysql当中怎么执行sql脚本呢?
      • mysql> source D:\course\03-MySQL\document\vip.sql你在实际的工作中,第一天到了公司,项目经理会给你一个xxx.sql文件,你执行这个脚本文件,你电脑上的数据库数据就有了!
    • 7.4、唯一性约束:unique

      • 唯一性约束unique约束的字段不能重复,但是可以为NULL.

name字段虽然被unique约束了,但是可以为NULL.

      • 新需求:name和email两个字段联合起来具有唯一性!!!!
        • 两个字段各自唯一,不符合需求

//约束直接添加到列后面的,叫做列级约束。

        • 怎么创建这样的表,才能符合新需求呢?

//约束没有添加在列的后面,这种约束被称为表级约束.

        • 什么时候使用表级约束呢?
          • 需要给多个字段联合起来添加某一个约束的时候,需要使用表级约束。
      • unique和not nul1可以联合吗?
        • 在mysql当中,如果一个字段同时被not nullunique约束的话,该字段自动变成主键字段(primary)。(注意:oracle中不一样!)

    • 7.5、主键约束(primary key,简称PK)非常重要五颗星*****

      • 主键约束的相关术语?
        • 主键约束:就是一种约束。
        • 主键字段:该字段上添加了主键约束,这样的字段叫做:主键字段
        • 主键值:主键字段中的每一个值都叫做:主键值。
      • 什么是主键?有啥用?
        • 主键值是每一行记录的唯一标识。
        • 主键值是每一行记录的身份证号!!!
      • 记住:任何一张表都应该有主键,没有主键,表无效!!
      • 主键的特征:not null + unique(主键值不能是NULL,同时也不能重复!)
      • 怎么给一张表添加主键约束呢?

//列级约束

      • 可以这样添加主键吗,使用表级约束?

表级约束

      • 一个字段做主键:单一主键!!!
      • 多个字段联合起来做主键:复合主键!!!
      • 不建议使用:复合主键。建议使用单一主键!

      • 一个表中主键约束能加两个吗?

      • 主键值建议使用:
        • int bigint char等类型。
        • 不建议使用:varchar来做主键。
        • 主键值一般都是数字,一般都是定长的!
      • 主键除了:单一主键和复合主键之外,还可以这样进行分类?
        • 自然主键:主键值是一个自然数,和业务没关系。
        • 业务主键:主键值和业务紧密关联,例如拿银行卡账号做主键值。这就是业务主键!
      • 在实际开发中使用业务主键多,还是使用自然主键多一些?
        • 自然主键使用比较多,因为主键只要做到不重复就行,不需要有意义。
        • 业务主键不好,因为主键一旦和业务挂钩,那么当业务发生变动的时候,可能会影响到主键值,所以业务主键不建议使用。尽量使用自然主键。
      • 在mysql当中,有一种机制,可以帮助我们自动维护一个主键值?

    • 7.6、外键约束(foreign key,简称FK)非常重要五颗星

      • 外键约束涉及到的相关术语:
        • 外键约束:一种约束(foreign key)
        • 外键字段:该字段上添加了外键约束
        • 外键值:外键字段当中的每一个值。
      • 业务背景:
        • 请设计数据库表,来描述“班级和学生"的信息?
        • 第一种方案:班级和学生存储在一张表中???

        • 第二种方案:班级一张表、学生一张表??

        • 注意:
          • t_class是父表
          • t_student是子表
          • 删除表的顺序?先删子,再删父。
          • 创建表的顺序?先创建父,再创建子。
          • 删除数据的顺序?先删子,再删父。
          • 插入数据的顺序?先插入父,再插入子。
        • 方案二执行语句

          • 思考:子表中的外键引用的父表中的某个字段,被引用的这个字段必须是主键吗?
            • 不一定是主键,但至少具有unique约束。
          • 测试:外键可以为NULL吗?
            • 外键值可以为NULL.

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

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

相关文章

深入探索 Ubuntu:从基础到高级应用

本文深入探讨了 Ubuntu 操作系统,涵盖了其起源与发展、安装与配置、软件管理、系统优化、网络配置、安全防护以及在不同领域的应用等多个方面。 在起源与发展部分,介绍了 Ubuntu 于 2004 年创立的背景以及其版本的演进。安装与配置环节详细阐述了系统安…

SprinBoot+Vue药房管理系统的设计与实现

目录 1 项目介绍2 项目截图3 核心代码3.1 Controller3.2 Service3.3 Dao3.4 application.yml3.5 SpringbootApplication3.5 Vue 4 数据库表设计5 文档参考6 计算机毕设选题推荐7 源码获取 1 项目介绍 博主个人介绍:CSDN认证博客专家,CSDN平台Java领域优质…

R语言论文插图模板第10期—正负柱状图

在之前的文章中,分享了R语言各式柱状图的绘制模板: 进一步,再来分享一种特殊的柱状图:正负柱状图。 先来看一下成品效果: 特别提示:本期内容『数据代码』已上传资源群中,加群的朋友请自行下载。…

改进三极管搭建的简易电流源特性

目录 一、用三极管搭建简易电流源的缺点二、改进电流源特性 一、用三极管搭建简易电流源的缺点 此前文章《用三极管搭建电流源》的电路是存在缺陷的,温度变化和Early效应会影响电路的性能和稳定性。主要表现如下: 基极-发射极之间的压降会随着温度的变化…

AI性能评估工具 | 安兔兔AI大模型评测 v1.0.0.1095

安兔兔AI大模型评测是一款性能评估软件,专注于对设备在CPU、GPU及专属AI加速器上的AI处理能力进行全方位测试与评估。该软件精确评估设备的AI计算能力,助力用户深入理解设备在执行AI任务时的表现。 借助评测数据,用户能够清晰地掌握设备的AI…

【机器学习导引】ch2-模型评估与选择

文章目录 经验误差与过拟合 (Empirical error &overfitting)1. **均方误差(Mean Squared Error, MSE)**2. **均方根误差(Root Mean Squared Error, RMSE)**3. **平均绝对误差(Mean Absolute…

虚拟存储器“大观”,讲解核心逻辑知识和408大题方法

虚拟存储器 写在前面:虚拟存储器(Virtual Memory)是计算机系统中用于管理内存的一种技术,它通过虚拟地址空间为进程提供比物理内存更大的地址空间,同时实现内存保护和进程隔离。 在408整个体系中计组和操作系统都有涉…

飞书项目管理使用攻略

文章目录 项目管理项目管理的方法和工具项目管理方法:项目管理工具 飞书项目管理平台 创建空间需求管理缺陷管理人员排期飞书也可以创建敏捷开发管理. 项目管理 项目管理是指在项目活动中运用专门的知识、技能、工具和方法,使项目能够在有限资源限定条件…

自动化立体仓库定义及使用范围

导语 大家好,我是社长,老K。专注分享智能制造和智能仓储物流等内容。 新书《智能物流系统构成与技术实践》人俱乐部 这份文件是关于自动化立体仓库的定义、发展、组成、技术性能、应用领域、供货方式以及设计步骤的详细介绍。以下是核心内容的概要&#…

基于Qt的自定制WPS

前言 正文 项目实现:项目实现了文件的新建,打开,保存,另存为,以及字体的设置,字体加粗,字体倾斜,字体颜色,还有对齐方式等功能 项目效果: ​ 项目地址&…

企业微信应用消息收发实施记录

一、前置配置 1.1 进入我的企业页面,记录下企业ID。 1.2 创建企微应用,记录下应用的 AgentId 和 Secret。 1.3 设置应用的企业可信IP,将服务器公网 IP 填入即可。 1.4 设置应用接收消息API 填入服务器 API 地址,并记录下随机获取…

PAT甲级-1012 The Best Rank

题目 题目大意 学生有C、M、E三个成绩,A是这三个成绩的平均值。要求对每个学生的C、M、E、A分别排名,取这4项的最高排名为最优排名。如果一个学生有多项排名一样,按照A > C > M > E的优先级输出最优排名。 输入给出学生人数和查询…

派遣函数-编写一个更通用的派遣函数

前面介绍的派遣函数处理过于简单,下面带领读者对派遣函数一步步进行扩充。首先介绍一个重要数据结构--IO_STACK LOCATION,即I/O堆栈,这个数据结构和IRP紧密相连。 在前面,曾经介绍过驱动程序的层次结构。驱动对象会创建一个个的设备对象, 并将…

前端单独实现 vue 动态路由

前端单独实现 vue 动态路由 Vue 动态路由权限是指在 Vue 应用程序中,根据用户的权限动态生成和控制路由的行为。这意味着不是所有的路由都在应用启动时就被硬编码到路由配置中,而是根据用户的权限信息,在运行时动态地决定哪些路由应该被加载…

3. 轴指令(omron 机器自动化控制器)——>MC_PowerMC_MoveJog

机器自动化控制器——第三章 轴指令 1 MC_Power变量▶输入变量▶输出变量▶输入输出变量 功能说明▶时序图▶重启运动指令▶多重启动运动指令▶错误代码 MC_MoveJog变量▶输入变量▶输出变量▶输入输出变量 功能说明▶时序图▶重启运动指令▶多重启动运动指令▶异常 MC_Power …

从0书写一个softmax分类 李沐pytorch实战

输出维度 在softmax 分类中 我们输出与类别一样多。 数据集有10个类别,所以网络输出维度为10。 初始化权重和偏置 torch.norma 生成一个均值为 0,标准差为0.01,一个形状为size(num_inputs, num_outputs)的张量偏置生成一个num_outputs 10 的一维张量&a…

1265:【例9.9】最长公共子序列 动态规划

题目链接 题目: 思路 最长-最值问题、重叠子问题、最优结构-前面序列的公共序列最优值是后续序列的子问题、无后效性也满足 确定状态、变量:序列是没有要求要连续,因此只能用长度为i的串a分别和长度为(1-j)串b去找最值…

【Linux】:信号与信号产生

朋友们、伙计们,我们又见面了,本期来给大家带来信号和信号的产生相关代码和知识点,如果看完之后对你有一定的启发,那么请留下你的三连,祝大家心想事成! C 语 言 专 栏:C语言:从入门到…

HarmonyOS开发实战( Beta5.0)日历切换案例实践详解

鸿蒙HarmonyOS开发往期必看: HarmonyOS NEXT应用开发性能实践总结 最新版!“非常详细的” 鸿蒙HarmonyOS Next应用开发学习路线!(从零基础入门到精通) 介绍 本示例介绍使用Swiper实现自定义日历月视图和周视图左右滑…