数据库(一)—— MySQL介绍
MySQL介绍
[TOC]
一、MySQL版本
1、mysql主流版本
mysql 5.6 5.6.36 5.38 5.6.40
mysql 5.7 5.7.18 5.7.20 5.7.22
2、版本选择
企业版本选择:6~12月份的GA版本
二、MySQL连接与实例
1、MySQL的C/S结构
# 两种连接方法
TCP/IP : 可以连接远程,也可以本地连接
SOCKET : 连接本地
mysql -uroot -poldboy123 -h 10.0.0.200 -P3306
mysql -uroot -poldboy123 -S /tmp/mysql.sock
2、MySQL实例
实例 = mysqld + 内存结构
实例 = mysqld + master thread + N Thread + 内存结构
三、mysql三层结构
1、连接层(连接上数据库)
(1)提供链接协议(TCP,SOCKET)
(2)用户验证
(3)提供专用链接线程,每登录一个用户,就会起一个专用的线程
2、SQL层(从哪里获取数据)
(1)接受上层的命令
(2)语法检测
(3)语义(什么类型增删改查?)、权限检测
(4)专用解析器解析SQL,解析成多种执行计划
(5)优化器:选择一个代价最低的执行计划
(6)执行器:按照优化器的选择,执行SQL语句,得出获取数据方法
(7)查询缓存:默认是关闭的,一般会使用redis产品替代
(8)记录日志:二进制日志
3、存储引擎层(获取数据,结构化成表)
按照SQL层结论,找相应数据,结构化成表的形式
四、MySQL的逻辑结构
1、库
存储数据的地方,包括库名、属性
2、表(二维表)
包括元数据(表名,表的属性,列,记录)
五、SQL语句
1、类型
DDL数据定义语言
DCL数据 控制语言
DML数据操作语言
DQL数据查询语言
2、SQL操作的对象
SQL操作的书库和表
3、SQL语句之DDL规范
(1)库定义
CREATE DATABASE
SHOW DATABASES
DROP DATABASE
- 关键字大写,字面量小写
CREATE DATABASE bbs CHARSET utf8mb4
库名只能小写,不能是数字开头,不能为预留关键字
库名和业务名有关,例如:blog_user
必须加字符集
CHARSET utf8mb4
(2)表定义
CREATE TABLE
DROP TABLE
ALTER TABLE
关键字大写(非必须),字面名小写(必须)
表名必须小写,不能是数字开头,不能为预留关键字
表名和业务名有关
必须加存储引擎和字符集
必须有主键:
PRIMARY KEY
合适的数据类型
必须加注释:
COMMENT '用户名'
尽量避免外键
建立合理的索引
4、SQL语句之DCL规范
grant
revoke
lock
5、SQL语句之DML规范
insert
update
delete
insert 语句按批量插入数据
update 必须加 where 条件
delete 尽量替换为update,如添一个状态量字段 state
如果有清空全表的需求,使用 truncate
6、SQL语句之DQL规范
select
show
select 语句避免使用
select * from t1;
,使用select id,name from t1;
select 语句尽量加等值的where条件,
select id,name from t1 where age>20;
select 语句对于范围查询,select 语句对于范围查询,例如 :
select * from t1 where id>200;
尽量添加limit
或者id>200 and id<300 union all id>300 and id<400
select 的where 条件,不要使用
<>
like '%name'
not in
not exist
不要出现3表以上的表连接,避免子查询
where条件中不要出现函数操作
最新文章
- STC系列STC10F芯片解密STC10L单片机破解复制技术
- Android调用Jni,非常简单的一个Demo
- Git私钥openssh格式转ppk
- 【Unity3d游戏开发】Unity3D中常用的物理学公式
- 使用FIR.im发布自己的移动端APP
- [DFNews] Cellebrite UFED Physical Analyzer 3.8
- Base64编码解码
- 兼容IE与firefox的css 线性渐变(linear-gradient)
- android 学习运用海马模拟器教程与android环境的搭建
- express 查看版本号
- struts2 类型转换
- Python原始套接字编程
- poj 3411 Paid Roads
- java Io流中FileInputStream和BufferedInputStream的速度比较
- 最基本的mysql
- python中的迭代器&;&;生成器&;&;装饰器
- 背水一战 Windows 10 (85) - 文件系统: 获取文件夹和文件, 分组文件夹, 排序过滤文件夹和文件, 搜索文件
- 如何让html中的td文字只显示部分
- idea总是编译启动报错
- PHP安装Xdebug扩展并配置PHPstorm调试(Centos、Windows)
热门文章
- laravel 向多视图及所有视图传递数据变量
- 关于日历实现代码里lunarInfo(农历)数组
- Spring 官方文档笔记---Bean
- 正则表达式中(?:pattern)、(?=pattern)、(?!pattern)、(?<;=pattern)和(?<;!pattern)
- Aspnetcore下面服务器热更新与配置热加载
- bzoj2521 [Shoi2010]最小生成树
- Struts2后台使用Request和Session方法
- WPF 基本图形
- 2018-8-10-win10-UWP-用Path画图
- translation of 《deep learning》 Chapter 1 Introduction