Mysql 汇总

关系型数据库

  • 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逻辑架构 二:MySql逻辑架构-连接层 当MyS...
    拂清风阅读 3,414评论 0 0
  • 一、MySQL通过命令行操作 1. 开启数据库服务 可以通过 DOS 命令启动 MySQL 服务,点击“开始”菜单...
    知向谁边阅读 2,688评论 0 1
  • 启动:net start mysql关闭:net stop mysql登录账户: mysql –uroot –p ...
    feitry阅读 3,950评论 0 1
  • 简单说一下数据库的三范式? 第一范式:数据库表的每一个字段都是不可分割的 第二范式:数据库表中的非主属性只依赖于主...
    美雨知春阅读 923评论 0 1
  • mysql命令行命令和SQL语句,MySQL修改删除增加字段类型,字段数据等。。 一 . 常用mysql命令行命令...
    夜空最亮的9星阅读 2,939评论 0 1