TreeMind树图在线AI思维导图
当前位置:树图思维导图模板IT互联网互联网干货深入浅出MySQL数据库思维导图

深入浅出MySQL数据库思维导图

  收藏
  分享
免费下载
免费使用文件
U964850351 浏览量:182024-04-24 22:54:29
已被使用1次
查看详情深入浅出MySQL数据库思维导图

深入浅出MySQL数据库

树图思维导图提供 深入浅出MySQL数据库 在线思维导图免费制作,点击“编辑”按钮,可对 深入浅出MySQL数据库  进行在线思维导图编辑,本思维导图属于思维导图模板主题,文件编号是:4973c1019c6e392a02790e406f45b609

思维导图大纲

深入浅出MySQL数据库思维导图模板大纲

1.什么是数据库?

数据库(Database)是按照数据结构来组织、存储和管理数据的仓库

常见数据库

Oracle

DB2

SQL Server

Postgre SQL

MySQL

相关术语

数据库系统(Database System):DBS

数据库(Database)

数据库管理系统(Database Management System):DBMS

应用开发工具

管理员及用户

SQL语言

Structured Query Language:结构化查询与颜

DDL

数据定义语言

DML

数据操作语言

DQL

数据查询语言

DCL

数据控制语言

2.MySQL相关操作

配置文件

my.cnf是MySQL的配置文件

登陆/退出MySQL

登陆

mysql -uroot -p

mysql -uroot -proot

得到版本号

mysql -V

mysql --version

登陆的同时打开指定数据库

mysql -uroot -p -D db_name

退出

exit

quit

登陆信息中需要掌握的

命令行结束符默认使用;或者\g来结束

可以通过help或者\h或者?加上相关关键字来查看手册

\c可以取消当前命令的执行

SQL语句语法规范

常用MySQL的关键字我们需要大写,库名、表名、字段名称等使用小写

SQL语句支持折行操作,拆分的时候不能把完整单词拆开

数据库名称、表名称、字段名称不要使用MySQL的保留字,如果必须要使用,需要用反引号``将其括起来

常用SQL语句

SELECT USER()

得到登陆的用户

SELECT VERSION()

得到MySQL的版本信息

SELECT NOW()

得到当前的日期时间

SELECT DATABASE()

得到当前打开的数据库

3.数据库相关操作

创建数据库

CREATE {DATABASE|SCHEMA} db_name;

检测数据库名称是否存在,不存在则创建

CREATE DATABASE [IF NOT EXISTS] db_name;

在创建数据库的同时指定编码方式

CREATE DATABASE [IF NOT EXISTS] db_name [DEFAULT] CHARACTER SET [=] charset;

注意

数据库名称最好有意义

名称不要包含特殊字符或者是MySQL关键字

查看当前服务器下全部数据库

SHOW DATABASES|SCHEMAS;

查看指定数据库的详细信息

SHOW CREATE DATABASE db_name;

修改指定数据库的编码方式

ALTER DATABASE db_name [DEFAULT] CHARACTER SET [=] charset;

打开指定数据库

USE db_name;

得到当前打开的数据库

SELECT DATABASE()|SCHEMA();

删除指定的数据库

DROP DATABASE db_name;

如果数据库存在则删除

DROP DATABASE [IF EXISTS] db_name;

4.数据表相关操作

数据表

是数据库最重要的组成部分之一,数据是保存在数据表中

数据表由行(row)和列(column)来组成

每个数据表中至少有一列,行可以有零行一行或者多行组成

表名要求唯一,不要包含特殊字符,最好含义明确

创建表

CREATE TABLE [IF NOT EXISTS] tbl_name( 字段名称 字段类型 [完整性约束条件], 字段名称 字段类型 [完整性约束条件], ... )ENGINE=存储引擎 CHARSET=编码方式;

UNSIGNED

无符号,没有负数,从0开始

ZEROFILL

零填充,当数据的显示长度不够的时候可以使用前补0的效果填充至指定长度,字段会自动添加UNSIGNED

NOT NULL

非空约束,也就是插入值的时候这个字段必须要给值,值不能为空

DEFAULT

默认值,如果插入记录的时候没有给字段赋值,则使用默认值

PRIMARY KEY

主键,标识记录的唯一性,值不能重复,一个表只能有一个主键,自动禁止为空

AUTO_INCREMENT

自动增长,只能用于数值列,而且配合索引使用,默认起始值从1开始,每次增长1

UNIQUE KEY

唯一性,一个表中可以有多个字段是唯一索引,同样的值不能重复,但是NULL值除外

FOREIGN KEY

外键约束

查看当前数据库下已有数据表

SHOW TABLES;

SHOW [FULL] TABLES [{FROM | IN} db_name] [LIKE 'pattern' | WHERE expr]

查看指定数据表的详细信息

SHOW CREATE TABLE tbl_name;

查看表结构

DESC tbl_name;

DESCRIBE tbl_name;

SHOW COLUMNS FROM tbl_name;

删除指定的数据表

DROP TABLE [IF EXISTS] tbl_name;

表结构相关操作

添加字段

ALTER TABLE tbl_name ADD 字段名称 字段属性 [完整性约束条件] [FIRST|AFTER 字段名称]

删除字段

ALTER TABLE tbl_name DROP 字段名称

添加默认值

ALTER TABLE tbl_name ALTER 字段名称 SET DEFAULT 默认值;

删除默认值

ALTER TABLE tbl_name ALTER 字段名称 DROP DEFAULT

修改字段类型、字段属性

ALTER TABLE tbl_name MODIFY 字段名称 字段类型 [字段属性] [FIRST | AFTER 字段名称]

修改字段名称、字段类型、字段属性

ALTER TABLE tbl_name CHANGE 原字段名称 新字段名称 字段类型 字段属性 [FIRST | AFTER 字段名称]

添加主键

ALTER TABLE tbl_name ADD PRIMARY KEY(字段名称)

删除主键

ALTER TABLE tbl_name DROP PRIMARY KEY;

添加唯一

ALTER TABLE tbl_name ADD UNIQUE KEY|INDEX [index_name] (字段名称)

删除唯一

ALTER TABLE tbl_name DROP index_name;

修改数据表名称

ALTER TABLE tbl_name RENAME [TO|AS] new_tbl_name

RENAME TABLE tbl_name TO new_tbl_name;

修改AUTO_INCREMENT的值

ALTER TABLE tbl_name AUTO_INCREMENT=值

5.MySQL中的数据类型

数值型

整数型

浮点型

字符串类型

CHAR效率高于VARCHAR,CHAR相当于拿空间换时间,VARCHAR拿时间换空间

CHAR默认存储数据的时候,后面会用空格填充到指定长度;而在检索的时候会去掉后面空格;VARCHAR在保存的时候不进行填充,尾部的空格会留下

TEXT列不能有默认值,检索的时候不存在大小写转换

日期时间类型

二进制类型

6.MySQL存储引擎

MyISAM存储引擎

默认MyISAM的表会在磁盘中产生3个文件

.frm

表结构文件

.MYD

数据文件

.MYI

索引文件

可以在创建的时候指定数据文件和索引文件的存储位置,只有MyISAM表支持

DATA DIRECORY [=] 数据保存的绝对路径

INDEX DIRECTORY [=] 索引文件保存的绝对路径

MyISAM单表最大支持的数据量2的64次方条记录

每个表最多可以建立64个索引

如果是复合索引,每个复合索引最多包含16个列,索引值最大长度是1000B

MyISAM引擎的存储格式

定长(FIXED 静态)

是指字段中不包含VARCHAR/TEXT/BLOB

动态(DYNAMIC)

只要字段中包含了VARCHAR/TEXT/BLOB

压缩(COMPRESSED)

myisampack创建

InnoDB存储引擎

设计遵循ACID模型,支持事务,具有从服务崩溃中恢复的能力,能够最大限度保护用户的数据

支持行级锁,可以提升多用户并发时的读写性能

支持外键,保证数据的一致性和完整性

InnoDB拥有自己独立的缓冲池,常用的数据和索引都在缓存中

对于INSERT、UPDATE、DELETE操作,InnoDB会使用一种change buffering的机制来自动优化,还可以提供一致性的读,并且还能够缓存变更的数据,减少磁盘I/O,提高性能

创建InnoDB表之后会产生两个文件

.frm表结构文件

.ibd,数据和索引存储表空间中

所有的表都需要创建主键,最好是配合上AUTO_INCREMENT,也可以放到经常查询的列作为主键

7.MySQL数据操作

添加记录

INSERT [INTO] tbl_name[(col_name,...)] {VALUE|VALUES}(VALUES...);

不指定字段名称

INSERT tbl_name VALUE(value...)

需要按照建表时的字段顺序给每一个字段赋值

列出指定字段

INSERT tbl_name(字段名称,...) VALUES(值,...)

INSERT ... SET的形式

INSERT tbl_name SET 字段名称=值,...;

INSERT ... SELECT

INSERT tbl_name[(字段名称...)] SELECT 字段名称,... FROM tbl_name [WHERE 条件]

一次添加多条记录

INSERT tbl_name[(字段名称,...)] VALUES(值,...), (值,....), (值,...)

修改记录

UPDATE tbl_name SET 字段名称=值,字段名称=值 [WHERE 条件]

如果不添加条件,整个表中的记录都会被更新

删除记录

DELETE FROM tbl_name [WHERE 条件]

如果不添加条件,表中所有记录都会被删除

DELETE 清空数据表的时候不会重置AUTO_INCREMENT的值,可以通过ALTER 语句将其重置为1

彻底清空数据表

TRUNCATE [TABLE] tbl_name;

清除表中所有记录

会重置AUTO_INCREMENT的值

查询记录

SELECT select_expr,... FROM tbl_name [WHERE 条件] [GROUP BY {col_name|position} HAVING 二次筛选] [ORDER BY {col_name|position|expr} [ASC|DESC]] [LIMIT 限制结果集的显示条数]

查询表中所有记录

SELECT * FROM tbl_name;

*所有字段

指定字段的信息

SELECT 字段名称,... FROM tbl_name

库名.表名

SELECT 字段名称,... FROM db_name.tbl_name;

给字段起别名

SELECT 字段名称 [AS] 别名名称,... FROM db_name.tbl_name;

给数据表起别名

SELECT 字段名称 ,... FROM tbl_name [AS] 别名;

表名.字段名的

SELECT tbl_name.col_name,... FROM tbl_name;

WHERE 条件

会筛选出符合条件的记录

比较运算符

> >= < <= != <> <=>

<=> 和 =的区别

<=>可以检测NULL值

IS [NOT] NULL

检测值是否为NULL或者NOT NULL

指定范围

[NOT] BETWEEN ... AND

指定集合

[NOT] IN(值,...)

逻辑运算符

AND

逻辑与

OR

逻辑或

匹配字符

[NOT] LIKE

%

任意长度的字符串

_

任意一个字符

GROUP BY 分组

把值相同放到一个组中,最终查询出的结果只会显示组中一条记录

分组配合GROUP_CONCAT()查看组中某个字段的详细信息

配合聚合函数使用

COUNT()

统计记录总数

如果写的是COUNT(字段名称),字段中的值为NULL,不统计进来

写COUNT(*)会统计NULL值

SUM()

求和

MAX()

求最大值

MIN()

求最小值

AVG()

求平均值

配合WITH ROLLUP关键使用

会在记录末尾添加一条记录,是上面所有记录的总和

HAVING子句对分组结果进行二次筛选

ORDER BY 排序

ORDER BY 字段名称 ASC|DESC

LIMIT 限制结果集显示条数

LIMIT 值

显示结果集的前几条记录

LIMIT offset,row_count

从offset开始,显示几条记录,offset从0开始

多表查询

笛卡尔积的形式

内连接的形式

查询两个表中符合连接条件的记录

SELECT 字段名称,... FROM tbl_name1 INNER JOIN tbl_name2 ON 连接条件

外连接的形式

左外连接

SELECT 字段名称,... FROM tbl_name1 LEFT [OUTER] JOIN tbl_name2 ON 条件;

先显示左表中的全部记录,再去右表中查询复合条件的记录,不符合的以NULL代替

右外连接

SELECT 字段名称,... FROM tbl_name1 RIGHT [OUTER] JOIN tbl_name2 ON 条件;

先显示右表中的全部记录,再去左表中查询复合条件的记录,不符合的以NULL代替

外键约束

只有InnoDB存储引擎支持外键

创建外键

建表时指定外键

[CONSTRAINT 外键名称 ]FOREIGN KEY(字段名称) REFERENCES 主表(字段名称)

子表的外键字段和主表的主键字段类型要相似;如果是数值型要求一致,并且无符号也要一致;如果是字符型,要求类型一致,长度可以不同

如果外键字段没有创建索引,MySQL会自动帮我们添加索引

子表的外键关联的必须是父表的主键

外键约束的参照操作

CASCADE

从附表删除或更新,子表也跟着删除或者更新,级联的操作

SET NULL

从附表删除或者更新记录,并设置子表的外键列为NULL。

NO ACTION | RESTRICT

拒绝对父表做更新或者删除操作

动态添加外键

动态添加外键

ALTER TABLE tbl_name [CONSTRAINT 外键名称] ADD FOREIGN KEY(外键字段) REFERENCES 主表(主键字段);

动态添加外键之前表中的记录一定合法的记录,没有脏值,否则外键添加不成功

动态删除外键

ALTER TABLE tbl_name DROP FOREIGN KEY fk_name;

特殊形式的查询

子查询

SELECT 字段名称 FROM tbl_name WHERE col_name=(SELECT col_name FROM tbl_name)

内层语句查询的结果可以做为外层语句查询的条件

由IN引发的子查询

由比较运算符引出子查询

由EXISTS引发的子查询

ANY SOME ALL

INSERT ... SELECT

CREATE ... SELECT

CREATE TABLE tbl_name LIKE tbl_name;

联合查询

UNION

SELECT 字段名称,... FROM tbl_name1 UNION SELECT 字段名称... FROM tbl_name2;

UNION ALL

SELECT 字段名称,... FROM tbl_name1 UNION ALL SELECT 字段名称... FROM tbl_name2;

UNION ALL 是简单的合并,UNION会去掉表中重复记录

自身连接查询

无限级分类的实现形式

8.MYSQL常用函数

数学函数

CEIL()

进一取整

FLOOR()

舍掉小数部分

ROUND()

四舍五入

TRUNCATE()

截取小数点后几位

MOD()

取余数

ABS()

取绝对值

POWER()

幂运算

PI()

圆周率

RAND()或者RAND(X)

0~1之间的随机数

SIGN(X)

得到数字符号

EXP(X)

计算e的x次方

字符串函数

日期时间函数

其它常用函数

9.图形化工具管理数据库

MySQL Workbench

常用SQL语句

查看上一步操作产生的警告信息

SHOW WARNINGS;

mysql中的注释

# 注释内容

-- 注释内容

相关思维导图模板

basehead 音效管理器思维导图

树图思维导图提供 basehead 音效管理器 在线思维导图免费制作,点击“编辑”按钮,可对 basehead 音效管理器  进行在线思维导图编辑,本思维导图属于思维导图模板主题,文件编号是:dfc6463c14a954a5621f5338177e5aee

系统架构师思维导图

树图思维导图提供 系统架构师 在线思维导图免费制作,点击“编辑”按钮,可对 系统架构师  进行在线思维导图编辑,本思维导图属于思维导图模板主题,文件编号是:42d04526c628d286e9b17226d3facb72