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

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

时间:2024-09-27 10:27:53浏览次数:3  
标签:删除 外键 约束 编辑 键值 增删 主键


教程来源:B站视频BV1Vy4y1z7EX

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

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

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

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

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

1、表怎么进行连接的

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

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

编辑

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

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

编辑

  • 加条件只是为了避免笛卡尔积现象,只是为了查询出有效的组合记录。
  • 匹配的次数一次都没有少,还是56次。

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

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

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

编辑

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

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

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

编辑

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

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

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

编辑

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

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

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

编辑

delete语句删除数据的原理?

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

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

编辑

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。

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

编辑

  • //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.

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

编辑

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

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

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

编辑

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

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

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

编辑

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

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

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

编辑

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

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

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

编辑

//列级约束

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

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

编辑

表级约束

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

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

编辑

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

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

编辑

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

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

编辑

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

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

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

编辑

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

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

编辑

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

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

编辑

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


标签:删除,外键,约束,编辑,键值,增删,主键
From: https://blog.51cto.com/u_17026129/12126862

相关文章

  • hibernate 自定义表名与列名 - 增删改查分页 - 兼容Mysql和Oracle
    1.新增service,先组装SQLimportlombok.extern.slf4j.Slf4j;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.beans.factory.annotation.Value;importorg.springframework.data.domain.Page;importorg.springframework.stereo......
  • 最小割解决广义差分约束问题
    描述该做法解决了一类“广义差分约束”问题(当然名字是我自己取的),除了可以解决常见的求解\(A_1+c_1\geqA_2,A_2+c_2\geqA_3\dots\)问题外,还可以求解形如“如果\(A_1\geqc_1\),那么\(A_2\geqc_2\)”这样涉及条件逻辑运算的问题。另外,变量的取值还可以带权,即\(A_i\)取值\(......
  • 差分约束
    差分约束系统参考博客:oiwiki博客园差分约束系统定义差分约束系统是一种特殊的\(n\)元一次不等式组,它包含\(n\)个变量\(x_1,x_2,\dots,x_n\)以及\(m\)个约束条件,每个约束条件是由两个其中的变量做差构成的,形如\(x_i-x_j\leqc_k\),其中\(1\leqi,j\leqn,......
  • MYSQL-约束
    1-limit语句limit的作用是限制查询记录的条数格式如下select*from表名limitoffset,row_count;举例select*fromtablelimit 1,4;这里的1指的是从第二行数据开始,1就是索引(索引从0开始),4指的是查询记录条数,也就是从第二条(行)开始,一共查询四条记录,到第五条(行)如......
  • 达梦空格填充导致违反唯一约束问题排查及处理
    在oracle迁移到达梦过程中,创建主键提示违法唯一约束。如下所示:用户反馈没有重复数据原因是达梦空格填充模式参数(BLANK_PAD_MODE)为0 , 查询语句将忽略字符串的后缀空格,由于大部分其他都已经迁移过去,只有个别表报错,不能重新初始化实例,需要将有问题的数据查找出来删除查找重......
  • 制管行业:APS排程应对钢卷分条与模具约束挑战
    五金制造行业是工业领域的重要组成部分,小到螺丝、螺母大到复杂机械制造,五金制造产品应用范围每年广泛,为机械制造、汽车制造、电子工业、建筑等众多行业提供基础零部件。随着市场个性化需求和交期要求的提高,越来越多的五金制造企业开始难以应对市场带来的挑战,不少企业开始向市场寻求......
  • http增删改查四种请求方式操纵数据库
    注意:在manage.py项目入口文件中的路由配置里,返回响应的return语句后面的代码不会执行,所以路由配置中每个模块代码要想都执行,不能出现return激活虚拟环境:venv(我的虚拟环境名称)\Scripts\activate启动项目:(命令行中先设置FLASK_APP环境变量指向manage.py,然后启动) pthon库O......
  • 非线性规划——无约束最优化问题精讲
    最优化问题的研究历史可以追溯到17世纪的变分法,随着数学、物理学、经济学和计算科学的不断发展,最优化问题逐渐成为一个独立的学科。对于无约束最优化问题的求解,从最早的最速下降法,到后来的牛顿法和共轭梯度法,再到现代的变尺度法和智能算法,发展历程反映了科学技术进步的轨迹。无约......
  • xcode 约束报错
    报错信息如下MakeasymbolicbreakpointatUIViewAlertForUnsatisfiableConstraintstocatchthisinthedebugger.ThemethodsintheUIConstraintBasedLayoutDebuggingcategoryonUIViewlistedin<UIKitCore/UIView.h>mayalsobehelpful.2024-09-2408:56:2......
  • MySQL 增删操作面试题
    在数据库操作中,数据的增删是最基础也是最常见的操作。MySQL作为流行的关系型数据库,增删操作在面试中经常涉及。本文准备了30道关于MySQL增删操作的面试题,按照简单、中等、困难的难度划分,并提供了详细的答案和对应的SQL语句。通过这些问题,可以深入理解MySQL在实际应用中的增删操作。......