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

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

时间:2024-09-09 09:49:21浏览次数:11  
标签:删除 外键 约束 键值 表中 增删 主键

教程来源: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.

标签:删除,外键,约束,键值,表中,增删,主键
From: https://blog.csdn.net/WangMing_X/article/details/142048819

相关文章

  • 【SQL数据库技术开发】第34课时-数据库SQL CHECK 约束
    SQL CHECK 约束SQLCHECK约束CHECK约束用于限制列中的值的范围。如果对单个列定义CHECK约束,那么该列只允许特定的值。如果对一个表定义CHECK约束,那么此约束会基于行中其他列的值在特定的列中对值进行限制。CREATETABLE时的SQLCHECK约束下面的SQL在"Per......
  • [MySQL表的增删改查-进阶]
    ......
  • sping boot 基于 RESTful 风格,模拟增删改查操作
    RESTful-> 增:post 删:delete 改: put查: getRESTful资源路径,一般以s复数结尾 以下是代码示例:packagecom.example.springboot.controller;importorg.springframework.web.bind.annotation.*;@RestControllerpublicclassHello{@RequestMappi......
  • Javaweb-约束案例
    createtableemp( idintPRIMARYKEYAUTO_INCREMENT, enamevarchar(50)notnullunique, joindatedatenotnull, salarydouble(7,2)notnull, bonusdouble(7,2)default0);insertintoemp(id,ename,joindate,salary,bonus)values(1,'张三',�......
  • mysql为什么不推荐uuid做主键?
    在MySQL中,不推荐使用UUID作为主键的主要原因还是性能问题,其次是可读性差和浪费存储空间。性能问题:UUID是128位的字符串,通常被表示为32个字符的十六进制数。相比自增的整数(如AUTO_INCREMENT),UUID更大,占用的存储空间也更多,这会增加索引大小,导致查询变慢,尤其是在大表中。无序......
  • Vivado 时序约束篇
    简介    本章节针对大部分情况下的信号做时序约束分析    正所谓无设计不仿真,其实也可以说无设计不约束,正因为设计工程有约束的存在才可以保证设计的代码稳定性和可靠性高。    本文就vivado给出的原语约束进行总结。    打开Vivado,找到约......
  • 自增主键去哪了?---一次开发过程中的思考
    前情提要:最近新接了一个需求,需要去创建两张表,其中有一张表需要根据业务id和业务类型建立唯一索引,对数据唯一性进行约束。因为涉及到业务嘛,表结构就进行缩略了表结构示例如下:CREATETABLE`example_table`(`id`bigint(20)unsignedNOTNULLAUTO_INCREMENTCOMMENT'......
  • 6.1.数据结构-c/c++模拟实现堆上篇(向下,上调整算法,建堆,增删数据)
    目录一.堆(Heap)的基本介绍二.堆的常用操作(以小根堆为例)三.实现代码3.1堆结构定义3.2向下调整算法*3.3初始化堆*3.4销毁堆3.4向上调整算法* 3.5插入数据3.6删除数据3.7返回堆顶数据四.下篇内容1.堆排序2.TopK问题一.堆(Heap)的基本介绍    ......
  • 16、DB-DML语言(数据操作语言)-增删改-删除(delete from)(truncate)(drop)
    delete格式:DELETEFROM`表名`WHERE条件 --删除数据1、--删除指定数据DELETEFROM`student`WHEREid=110058 --清空表数据--truncate`表`TRUNCATE`student`--delete`表`不建议使用DELETE`student`  delete与truncate的区别:·相......
  • MybatisPlus 主键策略之type=IdType.ASSIGN_ID等详解
    雪花算法(雪花)是微博开源的分布式ID生成算法其核心思想就是:使用一个64位的长型的数字作为全局唯一ID,主要介绍了MybatisPlus 主键策略(type=IdType.ASSIGN_ID等详解),需要的朋友可以参考下: 我们可以通过@TableId注解的 类型属性来设置主键id的增长策略,一共有几个多个主键策略,......