Mysql数据库之——数据库的概念

数据库的基本概念

  1. 数据库的英文单词:DataBase 简称:DB
  2. 什么是数据库
    • 用于存储和管理数据的仓库
  1. 数据库的特点:

    1. 持久化存储数据的,其实数据库就是一个文件系统
    2. 方便存储和管理数据
    3. 使用了统一的方式操作数据库——SQL
  2. 常见的数据库软件:

    1. Oracle
    2. Mysql(开源免费的,但是被Oracle收购后6.x开始需要收费了)
    3. Sql Server(通常C#、.net用)
    4. DB2
    5. ·······

Mysql是如何存储数据?

  • 数据文件全部存在C://ProgramData/MySql/MySql 5.5/data
  • 一个文件夹 = 一个数据库
  • 文件夹中的一个.frm结尾文件 = 数据库中的一张表

SQL的分类

  • DDL : 操作数据库、表
  • DML : 增、删、改表中的数据
  • DQL : 查询表中的数据
  • DCL : 定义数据库的访问权限和安全级别,以及创建用户

MySql的语法

  • 每条语句以分号结尾,如果在 SQLyog 中不是必须加的。
  • SQL 中不区分大小写,关键字中认为大写和小写是一样的
  • 3 种注释:
    • --空格 单行注释
    • /* */ 多行注释
    • # 这是 mysql 特有的注释方式

Mysql的两种重要执行引擎(面试)

InnoDB

  • 优点:InnoDB是一个事务型的存储引擎,有行级锁定和外键约束,提供了对数据库ACID事务的支持,并且实现了SQL标准的四种隔离级别,设计目标是处理大容量数据库系统;
  • 缺点:不支持全文索引,而且它没有保存表的行数,当SELECT COUNT(*) FROM TABLE时需要扫描全表;
  • 适用场景:经常更新的表,适合处理多重并发的更新请求,需要事务、外键;

MyISAM

  • 优点:支持全文类型索引,索引和记录分开存储,并存储了表的行数,所以select count(*)效率很高(不加where);
  • 缺点:不支持数据库事务,更新操作需要锁定整个表,不支持行级锁和外键;
  • 适用场景:经常读取数据的场合,更新操作少;

SQL优化

语句优化,要尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引;
语句优化,用select field_1,field_2,field_3… form table代替select * from table;
语句优化,使用连接(JOIN)代替子查询;
语句优化,使用联合(UNION)代替手动创建的临时表;
建表优化,尽量减少字段宽度,使用ENUM存储固定数据,例如性别;
语句优化,避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描;
建表优化,字段选用优先级,整形>date,time>enum,char>varchar>blob,text;
语句优化,尽量避免在 where 子句中使用 != 或 <> 操作符,否则将引擎放弃使用索引而进行全表扫描;
语句优化,尽量避免在 where 子句中使用in 和 not in,否则会导致全表扫描,连续的数值用between代替,以及使用exists;
语句优化,尽量使用全文检索代替like查询;
语句优化,Update语句尽量只set需要修改的字段,否则带来没必要的开销;
语句优化,数据量大时(1万以上)尽量避免使用,游标;