• MySQL基础进阶


    MySQL基础进阶

    约束 \color{red}{约束} 约束

    约束的概念和分类

    约束的概念

      1.约束是作用于表中列上的规则,用于限制加入表的数据。

    约束的分类

    在这里插入图片描述

    非空约束

    概念

      非空约束保证数据不为空。

    语法

      1.添加约束。

    – 创建表时添加非空约束。

    CREATE TABLE 表名(
      列名 数据类型 NOT BULL,
      ……
    );
    
    • 1
    • 2
    • 3
    • 4

    –建完表后添加非空约束

    ALTER TABLE 表名 MODIFY 字段名 数据类型 NOT NULL;
    
    • 1

      2.删除元素

    ALTER TABLE 表名 MODIFY 字段名 数据类型;
    
    • 1

    唯一约束

    概念

      1.唯一约束用于保证列中所有数据不同。

    语法

      添加约束。

    – 创建表时添加唯一约束

    CREATE TABLE 表名(
      列名 数据类型 UNIQUE [AUTO_INCREMENT],
      -- AUTO_INCREMENT:当不指定值时自动增长
      ……
    );
    
    CREATE TABLE 表名(
      列名 数据类型,
      ……
      [constraint ] [约束名称] UNIQUE(列名)
    );
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

      2.建完表后添加唯一约束

    ALTER TABLE 表名 MODIFY 字段名 数据类型 UNIQUE;
    
    • 1

    主键约束

    概念

      主键是一行数据的唯一标识,要求非空且唯一。
      一张表只能有一个主键。

    语法

    – 添加表时添加主键约束

    CREATE TABLE 表名(
      列名 数据类型 PRIMARY KEY [AUTO_INCREMENT],
      ……
    );
    
    CREATE TABLE 表名(
      列名 数据类型,
      [CONSTRAINT ] [约束条件] PRIMARY KEY(列名)
    );
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    – 建完表后添加主键约束

    ALTER TABLE 表名 ADD PRIMARY KEY(字段名);
    
    • 1

    数据库设计 \color{red}{数据库设计} 数据库设计

    软件的研发步骤

    在这里插入图片描述

    数据库设计概念

    &nesp; 1.数据库设计就是根据业务的具体需求,结合我们所选用的DBMS,位这个业务系统构造出最优的数据存储模型。
    &nesp; 2.建立数据库中的表结构以及表与表之间的关联的过程。
    &nesp; 3.有那些表?表中有那些字段?表和表之间有什么关系。

    数据库设计的步骤

    &nesp; 1,需求分析(数据是什么?数据具有那些属性?数据与属性的特点是什么)
    &nesp; 2.逻辑分析(通过ER图对数据进行逻辑建模,不需要考虑我们所选用的数据库管理系统)
    &nesp; 3.物理设计(根据数据库自身的特点把逻辑设计转化为物理设计)
    &nesp; 4.维护设计(1.对新的需求进行建表;2.表优化)

    表关系

    一对一

      1.用户和用户详情。
      2.一对一关系多用于表拆分,将一个实体中经常使用的字段放一张表,不经常使用的字段放另一张表,用于提升查询功能。

    一对多(多对一)

      1.部门和员工
      2.一个部门对应多个员工,一个员工对应一个部门。

    多对多

      1.商品和订单。
      2.一个商品对应多个订单,一个订单包含多个商品。

    外键约束

    概念

      1.外键用来让两个表的数据之间建立链接,保证数据一致性和完整性。
    例如:上述多对多中的订单商品表来维护订单表和商品表之间的关系。

    使用中间表的目的是维护两表多对多的关系:

      1.中间表插入的数据必须在多对多的表中存在。
      2.如果主表的记录在中间表维护了关系,就不能随意删除,如果可以删除,中间表就找不到对应的数据了,这样就没有意义了。

    语法

    – 创建表时添加外键约束

    create table 表名(
      列名 数据类型,
      ……
      [constraint ] [外键名称] foreign key(外键列名)references 主表 (主表列名)
    );
    
    • 1
    • 2
    • 3
    • 4
    • 5

    – 关键字解释

    constraint:添加约束,可以不写
    foreign key(当前表中的列名):将某个字段作为外键
    references 被引用表名(被引用表的列名):外键引用主表的主键
    
    • 1
    • 2
    • 3

    – 建完表后添加外键约束

    alter table 表名 add constraint 外键名称 foreign key  (外键字段名称) references 主表名称(主表列名称); 
    
    • 1
    删除约束
    alter table 表名 drop foreign key 外键名称;
    
    • 1

    总结

    一对多实现的方式

       在多的一方建立外键关联一的一方主键。

    多对多实现方式

      建立第三张中间表。
      中间表至少包含2个外键,分别关联双方主键。

    一对一实现方式

      在任意一方建立外键,关联对方主键,并设置外键唯一。

    多表查询 \color{red}{多表查询} 多表查询

    概念

      同时查询多张表,获取需要的数据;
      比如:我们向查询水果对应的价格,需要将水果表和价格表同时进行查询;

    多表查询的分类

    在这里插入图片描述

    内链接

    概念

      内连接查询有称为交集查询,也就是查询只显示满足条件的数据;

    显示内连接

      显示内连接:使用inner join……on语句,可以省略Inner关键字 ;

    select * from 表名1 inner join 表名2 on 条件;
    
    select * from 表名1 join 表名2 on 条件;
    
    • 1
    • 2
    • 3
    隐式内连接

      看不到join关键字,条件使用where指定;

    select 列名 , 列名, ……from 表名1, 表格2 where 表名1.列名 = 表名2.列名;
    
    
    • 1
    • 2
    内连接查询步骤

      1.确定查询几张表。
      2.确定表连接条件。
      3.根据需要在操作。

    外连接

    左外连接

      左表的记录全部表示出来。
      右表只会显示符合条件的记录。

     select * from1 left outer join2 on 条件;
    
    • 1
    右外连接

      右表的记录全部展示出来。
      左表只会显示符合搜索条件的记录。

     select * from1 right outer join2 on 条件;
    
    • 1

    子查询

    介绍

      子查询就是一个sql查询的结果作为另一个sql查询语句的一部分

    单行单列

      作为父查询的条件
      作为父查询的条件,通常使用IN
      作为父查询的一张表(虚拟表),起别名

    注意: 如果子查询中查询的结果字段是聚合函数,并且最后结果需要使用聚合函数,那么必须使用as 给聚合函数的字段起别名。

    事务 \color{red}{事务} 事务

      一个事务其就是一个完整的业务逻辑。

    什么是业务逻辑

    假设转账,从A账户向B账户中转账10000,
    将A账户的钱减去10000,
    将B账户的钱增加10000,
    这就是一个完整的业务逻辑。

    SQL语句描述
    start transaction开启手动控制事务
    commit提交事务
    rollback回滚事务

    查看mysql是否自动提交事务

    show variables like "%commit%";
    
    • 1

    事务的特征(ACID)

    1.原子性

    说明事务是最小的工作单元,不可在分。

    2.一致性

    所有事务要求,在同一个事务当中,所有操作必须同时成功,货同时失败,以保证数据的一致性。

    3.隔离性

    A事务和B事务之间具有一定的隔离。

    4.持久性

    事务最终结束的一个保障。
    事务提交,就相当于将没有保存到硬盘上的数据保存的硬盘上。

  • 相关阅读:
    电容笔做的比较好的品牌有哪些?高性价比电容笔测评
    【牛客网刷题】VL5-VL7位拆分与运算、数据处理器、求差值
    怎么javaagent简单使用: 为类对象添加toString方法
    2024年华为OD机试真题-电脑病毒感染-Python-OD统一考试(C卷)
    【计算机视觉】目标跟踪| 光流算法详细介绍|附代码
    二、Flink SQL 调优汇总
    SpringMVC面试中常问到的23道题以及答案
    python函数嵌套调用的实现
    Mysql高级——性能分析工具(1)
    常用的JVM配置参数说明
  • 原文地址:https://blog.csdn.net/m0_63112274/article/details/133036900