Mysql数据库之——数据库的概念
数据库的基本概念
- 数据库的英文单词:DataBase 简称:DB
- 什么是数据库
- 用于存储和管理数据的仓库
数据库的特点:
- 持久化存储数据的,其实数据库就是一个文件系统
- 方便存储和管理数据
- 使用了统一的方式操作数据库——SQL
常见的数据库软件:
- Oracle
- Mysql(开源免费的,但是被Oracle收购后6.x开始需要收费了)
- Sql Server(通常C#、.net用)
- DB2
- ·······
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万以上)尽量避免使用,游标;