【面试突击】mysql相关知识

文章目录

    • 数据库引擎
    • 数据库事务
    • 数据库范式
    • 数据库数据结构
    • 数据库操作语句
    • 数据库索引
    • 数据库
    • 数据库优化
    • 数据库常见的面试笔试问题

数据库引擎

InnoDB存储引擎:事务型数据库首选引擎,支持事务安全表(ACID),支持行锁定和外键,是MySQL默认引擎。
MyISAM存储引擎:基于ISAM存储引擎,并对其进行扩展。是在Web、数据仓库和其他应用环境下最常使用的存储引擎之一。具有较高的插入和查询速度,不支持事务。
数据库引擎的选择:

如果没有特别的需求,使用默认的Innodb即可。
MyISAM:非聚簇索引。以读写插入为主的应用程序,比如博客系统、新闻门户网站。
Innodb:聚簇索引。更新(删除)操作频率也高,或者要保证数据的完整性;并发量高处理大量数据,支持事务、行级锁和外键。比如OA自动化办公系统。

数据库事务

ACID:原子、一致、隔离、持久

事务特性 解释
原子性(Atomicity) 原子性是指事务是一个不可分割的工作单位,事务中的操作要么都发生,要么都不发生。
一致性(Consistency) 事务必须使数据库从一个一致性状态变换到另外一个一致性状态。
隔离性(Isolation) 事务的隔离性是指一个事务的执行不能被其他事务干扰,即一个事务内部的操作及使用的数据对于并发的其他事务是隔离的,并发执行的各个事务之间不能互相干扰。
持久性(Durability) 持久性是指一个事务一旦被提交,它对数据库中的数据的改变是永久性的,接下来的其他操作和数据库故障不应该对其有任何影响。

数据库范式

第一范式:
第二范式:
第三范式:

一范式就是属性不可分割,二范式就是要有主键,其他字段都依赖于主键,三范式就是要消除传递依赖,消除冗余,就是各种信息只在一个地方存储,不出现在多张表中

数据库数据结构

char和varchar

char(M):M是0~255之间的整数
varchar(M):M是0~65535之间的整数
null

数据库操作语句

  • auto_increamnt,需要和key一起使用
  • Insert into tablename () values(),(),…();可以插入多行数据
  • drop、delete与truncate的区别
    三者都表示删除,但是三者有一些差别:
操作 Delete Truncate Drop
类型 属于DML 属于DDL 属于DDL
回滚 可回滚 不可回滚 不可回滚
删除内容 表结构还在,删除表的全部或者一部分数据行 表结构还在,删除表中的所有数据 从数据库中删除表,所有的数据行,索引和权限也会被删除
删除速度 删除速度慢,需要逐行删除 删除速度快 删除速度最快

因此,在不再需要一张表的时候,用drop;在想删除部分数据行时候,用delete;在保留表而删除所有数据的时候用truncate。

  • union和union all:
    union用于连接两个以上的 SELECT 语句的结果组合到一个结果集合中。
    union会默认删除结果当中的重复项;
    union all会显示所有结果而不会删除重复项,效率相对高一些;
SELECT expression1, expression2, ... expression_n
FROM tables
[WHERE conditions]
UNION [ALL(包含重复项) | DISTINCT(去除重复项,默认去除)]
SELECT expression1, expression2, ... expression_n
FROM tables
[WHERE conditions];

举例:

mysql> SELECT * FROM Websites;
+----+--------------+---------------------------+-------+---------+
| id | name         | url                       | alexa | country |
+----+--------------+---------------------------+-------+---------+
| 1  | Google       | https://www.google.cm/    | 1     | USA     |
| 2  | 淘宝          | https://www.taobao.com/   | 13    | CN      |
| 3  | 菜鸟教程      | http://www.runoob.com/    | 4689  | CN      |
| 4  | 微博          | http://weibo.com/         | 20    | CN      |
| 5  | Facebook     | https://www.facebook.com/ | 3     | USA     |
| 7  | stackoverflow | http://stackoverflow.com/ |   0 | IND     |
+----+---------------+---------------------------+-------+---------+
mysql> SELECT * FROM apps;
+----+------------+-------------------------+---------+
| id | app_name   | url                     | country |
+----+------------+-------------------------+---------+
|  1 | QQ APP     | http://im.qq.com/       | CN      |
|  2 | 微博 APP | http://weibo.com/       | CN      |
|  3 | 淘宝 APP | https://www.taobao.com/ | CN      |
+----+------------+-------------------------+---------+
3 rows in set (0.00 sec)
SELECT country FROM Websites UNION SELECT country FROM apps ORDER BY country;

查询结果:
【面试突击】mysql相关知识_第1张图片

SELECT country FROM Websites
UNION ALL
SELECT country FROM apps
ORDER BY country;

查询结果(包含重复项):【面试突击】mysql相关知识_第2张图片
join
group by

数据库索引

学习索引之前建议查看b树和b+树
索引定义
索引是数据库管理中的一种排序的数据结构,相当于目录。
大部分数据库系统及文件系统都采用B-Tree(B树)或其变种B+Tree(B+树)作为索引结构。B+Tree是数据库系统实现索引的首选数据结构
索引优缺点
优点:可以加快检索速度;可以优化提升性能;
缺点:创建和维护需要时间,对表操作也需要动态维护索引,会降低增删改的效率;占据物理空间。
索引实现原理
MyISAM 索引实现

MyISAM 引擎使用 B+Tree 作为索引结构,叶节点的 data 域存放的是数据记录的地址。下图是 MyISAM 索引的原理图:
【面试突击】mysql相关知识_第3张图片
这里设表一共有三列,假设我们以 Col1 为主键,则图 是一个 MyISAM 表的主索引(Primary key)示意。可以看出 MyISAM 的索引文件仅仅保存数据记录的地址。

  • where:
  • order by:

数据库

数据库优化

数据库常见的面试笔试问题

  1. 查询两个数据表,select *from table1,table2;输出的结果是row(table1)*row(table2);
  2. 如何处理高并发问题(12306抢票、秒杀情景)

你可能感兴趣的:(笔记)