目录
本篇是系列性,由浅入深,主要是为了本人日后回看时再学习,如果道友对Mysql也是零基础的话,强烈建议从头开始看
Mysql架构及SQL语句
逻辑架构
代码架构
简化架构
单进程多线程:
用户连接:连接线程
MySQL数据文件类型:
数据文件,索引文件
重做日志,撤销日志,二进制日志,错误日志,查询日志,慢查询日志,(中继日志)
DDL & DML语句:
索引管理:
按特定数据结构存储的数据;
索引类型:
聚集索引,非聚集索引;数据是否与索引存储在一起;
主键索引,辅助索引
稠密索引,稀疏索引;是否索引了每一个数据项;
B+ TREE,HASH,RREE,全文,索引 等等等
简单索引,组合索引
左前缀索引:
例子:LIKE 'abc%'
覆盖索引
管理索引的途径:
创建索引,创建表时指定;CREATE INDEX
创建或删除索引,修改表的命令
删除索引 ;DROP INDEX
查看表上的索引
SHOW {INDEX | INDEXES | KEYS}
{FROM | IN} tbl_name
[{FROM | IN} db_name]
[WHERE expr]
EXPLAIN
视图:VIEW
虚表
创建方法:
CREATE
[OR REPLACE]
[ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}]
[DEFINER = { user | CURRENT_USER }]
[SQL SECURITY { DEFINER | INVOKER }]
VIEW view_name [(column_list)]
AS select_statement
[WITH [CASCADED | LOCAL] CHECK OPTION]
删除试图
DROP VIEW [IF EXISTS]
view_name [,view_name] ...
[RESTRICT | CASCADE]
视图中的数据事实上存储于”基表“中,因此,其修改操作也会针对基表实现,其修改操作受基表限制;
SQL语句
DML:
INSERT,DELETE,UPDATE,SELECT
INSERT:
支持一次插一行和多行数据;
Syntax:
INSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE]
[INTO] tbl_name [(col_name,...)]
{VALUES | VALUE} ({expr | DEFAULT},...),(...),...
[ ON DUPLICATE KEY UPDATE
col_name=expr
[, col_name=expr] ... ]
简化:INSERT tbl_name [(coll,...)] VALUES (vall,...),(val2,...)
Or:
INSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE]
[INTO] tbl_name
SET col_name={expr | DEFAULT}, ...
[ ON DUPLICATE KEY UPDATE
col_name=expr
[, col_name=expr] ... ]
Or:
INSERT [LOW_PRIORITY | HIGH_PRIORITY] [IGNORE]
[INTO] tbl_name [(col_name,...)]
SELECT ...
[ ON DUPLICATE KEY UPDATE
col_name=expr
[, col_name=expr] ... ]
DELETE
Syntax:
Single-table syntax:
DELETE [LOW_PRIORITY] [QUICK] [IGNORE] FROM tbl_name
[WHERE where_condition]
[ORDER BY ...]
[LIMIT row_count]
Multiple-table syntax:
DELETE [LOW_PRIORITY] [QUICK] [IGNORE]
tbl_name[.*] [, tbl_name[.*]] ...
FROM table_references
[WHERE where_condition]
Or:
DELETE [LOW_PRIORITY] [QUICK] [IGNORE]
FROM tbl_name[.*] [, tbl_name[.*]] ...
USING table_references
[WHERE where_condition]
注意:一定要有限制条件,否则将清空表中的所有数据;
限制条件:
WHERE
LIMIT
UPDATE
Syntax:
Single-table syntax:
UPDATE [LOW_PRIORITY] [IGNORE] table_reference
SET col_name1={expr1|DEFAULT} [, col_name2={expr2|DEFAULT}] ...
[WHERE where_condition]
[ORDER BY ...]
[LIMIT row_count]
注意:一定要有限制条件,否则将修改所有行的指定字段数据;
限制条件:
WHERE
LIMIT