精通MySQL 8 知识点归纳


数据库操作

操作数据库

  • 创建数据库:这是划分一块空间用力来存储相应数据,这是进行表操作的基础,也是数据库管理的基础
    SHOW DATABASES :查看当前所有的数据库
    CREATE DATABASE '数据库名字':建立一个数据库
    USE '数据库名字':表示进入这个数据库
    DROP DATABASE '表名':删除指定数据库

存储引擎

  • show engines:查看数据库的引擎总类(Mysql:9种)
  • 我们了解其中的两种即可
    InnoDB:支持事务、适合高并发(行锁)、日志(用于恢复和记录);
    MyISAM:占用空间小、速度快、不支持事务的并发性和完整性;
  • 如何选择:
    InnoDB存储引擎支持事务处理,支持外键,同时支持崩溃修复能力和并发控制。如果需要对事务的完整性要求比较高,要求实现并发控制,那么选择InnoDB存储引擎会有很大的优势。如果需要频繁地进行更新、删除操作的数据库,也可以选择InnoDB存储引擎。因为该类存储引擎可以实现事务的提交(Commit)和回滚(Rollback)。

    MyISAM存储引擎的出入数据快,空间和内存使用比较低。如果表主要是用于插入新记录和读出记录,那么选择MyISAM存储引擎能实现处理的高效率。如果应用的完整性、并发性要求很低,也可以选择MyISAM存储引擎。

表操作

表的设计理念

表中能操作的对象包括:列、索引、触发器
  • 列:就是指定的字段名;
  • 索引:通过指定的数据库表的列建立起来的顺序:就像字典目录,查找时候如果不使用目录就要一个一个找,用了目录就能定位。
  • 触发器:在删除,插入,更新事务执行时候自动触发一组命令;
表设计的标准化- 表设计的标准化
  • 第一范式:确保每个列的原子性(一个列只能描述一个东西);
  • 第二范式:确保每个列都和主键依赖不可分割;
  • 第三范式:确保每个列都和主键直接相关而不是间接相关;
  • 满足第三必须先满足第二,满足第二必须先满足第一;
表和表的关系
  • 一对一
  • 一对多
  • 多对多

MySQL数据类型

  • 整形:根据自己需要选择即可
  • 浮点
  • 时间
  • 字符:char是多少就是多少、varchar会根据传入的长度+1来存储

表操作的语法

  • 创建表
    CREATE TABLE '表名' ( 字段名 类型 约束条件,(使用,分隔、可以输入多条) )
  • 查询表结构
    desc 表名字
  • 查看创建的语句、
    show create table 表名字

  • 删除表
    drop table '表名字'

  • 修改表
    alert 关键字
  • 修改表名
    alter table '表名字' rename '新名字'
  • 添加表字段
  1. 添加在最后:alter table '表名' add '新字段名字' '新字段类型'
  2. 添加在最前:alter table '表名' add '新字段名字' '新字段类型' first
  3. 在指定字段后面添加:alter table '表名' add '新字段名字' '新字段类型' after '旧字段名字'
  • 修改字段
    alter table '表名' change '字段名' '新字段名' '新的字段类型'

表的约束条件


配合:CREATE TABLE '表名' ( 字段名 类型 约束条件(not null 、default '默认值'、unique、 primary key 、auto_increment) constraint '约束名' foreign key (本表的字段名) references '关联表'(关联字段) )

另类写法
  • 设置主键:constraint '约束名' primary key (字段名)
  • 设置外键:constraint '约束名' foreign key (本表的字段名) references '关联表'(关联字段)

数据操作

  • 插入数据
    insert into '表名'() values()
  • 更新数据
    update '表名' set '字段名'=? where ?
  • 删除数据
    delete from '表名' where ?

数据查询

  1. 简单查询:select 字段名 from '表名' where 条件 group by 【having 条件二】 order by 【asc/desc】

  2. Distinct去重:
    select distinct 字段名 from 表名

  3. In查询:判断是否出现在后面的括号内
    select * from '表名' where 字段 in(。。。)

  4. Between And 查询(只真对数字有效)
    select * from '表名' where 字段 between 最小范围 and 最大范围

  5. Like 模糊查询(必须使用''包起来)(通配符:_ 和 % 区别就是 一个 和 多个 )
    select * from '表名' where 字段 like '%王'

  6. group by 分组查询:将根据字段分组并且随机去除组里的一条数据,具有不确定性
    select * from '表名' group by '字段名
    补充:分组查询单独出现并没有任何意义,需要配合函数来使用。


联合查寻

  • 内连接(特点:当没有找到连接条件时候,会省略没有的)
  1. 自连接就是自己跟自己连接
    select * from '表1' inno join '表2' on 条件
    在关键字后面使用=来实现条件就是等值连接
    在关键字后面使用(关系运算符号)就是不等连接
  • 外连接
  1. 左连接:以左表为基本表 left (outer可以省略) join on
  2. 右连接:以左表为基本表 right(outer可以省略) join on
  3. 全外连接:左边右边都不能省略:并且去重
  4. 笛卡尔积连接:左边会跟右表的每一条进行交互cross (outer可以省略) join on

索引