美文网首页
Mysql 汇总

Mysql 汇总

作者: 云顶天宫写代码 | 来源:发表于2023-08-31 09:20 被阅读0次

    关系型数据库

    • mysql: 广泛

    • oracle:大型软件公司,面向政府、银行

    • sqlserver:大型工厂、ERP(企业资源管理)

    • sqlite: 手机端、安卓

    • db2

    • 达梦数据库

    • 人大金仓

    • 创建的数据库


      image.png

    数据库起名规则 公司名缩写业务名缩写用途(dev:开发 、test: 测试、prod: 生产)

    • 数据库语句
      show databases; # 显示数据库
      use 数据库名; # 切换数据库
      create database 数据库名; # 创建数据库
      drop database 数据库名; # 删除数据库

    • 数据库中包含数据表(Table)

    系统表(sys_业务名:sys_user)、业务表( bs_goods 或者 shop_goods)

    • 数据表的字段
      • 整数类型:int、tinyint 、 smallint、bigint
      • 浮点型:decimal(指定保留几位)、float、double
      • 字符串类型 char(6): 字符定长为6 一般使用 char(1) 例如性别
        varchar 可变长度
        text 超大文本存储
      • 时间: date、datetime、timestramp(时间戳)
    • 约束
      • 主键约束:primary key (列名1,列名2)一张表通常情况下需要主键约束,值不允许重复
      • 外键约束: foreign key(列名) 和不同的表之间的列做关联,删除/修改的时候产生连锁反应
      • not null: 列中的数据不能为空
      • unique key: 唯一约束,null 允许存在
      • auto increment:自动递增,做主键使用,其他列不适用
      • default: 默认值
    • 创建表的语句

    create table 表名(
    列名1 类型 [not null][auto increment] [default 与类型对应的数据]
    ,列名2 类型 [not null] [default 与类型对应的数据]
    ....
    primary key (列名1,[列2])
    )

    范式、

    第一范式

    基于列的原子性,列不能再被拆分成其他列(不考虑主键)

    联系人表(姓名、性别、电话) 不符合第一范式

    改造后

    联系人表(姓名、性别、手机号码、固定电话、公司座机) 符合一范式

    第二范式
    • 是一个1NF
    • 必须有主键
    • 非主键列完全依赖于主键

    订单表
    ID、订单号、商品ID、商品名称、商品数量、商品价格、省、市、县/区、详细地址 不符合二范式

    改造后

    订单表
    ID、订单号、商品ID、商品数量、省、市、县/区、详细地址
    商品表
    商品ID、商品名称、商品价格
    符合二范式

    第三范式
    • 是一个2NF
    • 非主键列A 不能依赖于非主键列B

    订单表
    ID、订单号、商品ID、商品名称、商品数量、商品价格、联系人姓名、联系人手机号、省、市、县/区、详细地址 符合二范式,不符合三范式(省、市、县/区、详细地址 四列和 联系人姓名列有隐含的列传递关系)

    改造后

    订单表
    ID、订单号、商品ID、商品数量、联系人ID
    商品表
    商品ID、商品名称、商品价格
    联系人表
    ID,姓名、性别、手机号码、省、市、县/区、详细地址

    # 举例: 学生表、课程表、成绩表
    学生表:ID、姓名、学号、身份证号
    课程表:ID、课程名称、上课时间、第几节课
    成绩表:学生ID、课程ID、平时成绩、考试成绩
    
    

    表之间的关系

    • 一对一 (学生表和学生详情信息表、用户表和实名认证表)
    • 一对多 或 多对一(用户表和订单表、学生表和成绩表)
    • 多对多 (订单表和商品表、课程表和成绩表)

    事务四大特性 ACID

    • 原子性 A 全部成功(提交)或全部失效(回滚)
    • 一致性 C 数据在提交之前的状态 不因为中途的特殊情况导致的中断而改变
    • 隔离性 I 不同的事务间拿到的数据相互隔离,不直接影响
    • 持久性 D 事务提交成功后,数据永久保存

    数据脏读

    索引

    提升数据量大的时候查询效率

    • 主键索引
    • B+普通索引
    • 唯一索引

    B+索引结构只保存地址指向,不保存具体值,有别于树

    二分查找
    image.png
    B+树
    image.png

    相关文章

      网友评论

          本文标题:Mysql 汇总

          本文链接:https://www.haomeiwen.com/subject/ziznmdtx.html