数据库(一)—— 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条件中不要出现函数操作
数据库(一)—— MySQL介绍的更多相关文章
- 1 数据库开发--MySQL介绍
1.数据库管理软件 C/S 并发.锁 :SQL语句.语法 基本管理和语法学习 一.介绍: mysql数据库管理软件: 套接字:服务端,客户端:客户端可访问服务端得数据 1.支持并发:操作得是共享得数据 ...
- 数据库 - 初识MySQL - 介绍/安装
一.介绍: mysql数据库管理软件: 套接字:服务端,客户端:客户端可访问服务端得数据 1.支持并发:操作得是共享得数据 2.处理锁,数据安全,性能 3.用别人得软件,得照着别人得规范,组织自己得语 ...
- {MySQL数据库初识}一 数据库概述 二 MySQL介绍 三 MySQL的下载安装、简单应用及目录介绍 四 root用户密码设置及忘记密码的解决方案 五 修改字符集编码 六 初识sql语句
MySQL数据库初识 MySQL数据库 本节目录 一 数据库概述 二 MySQL介绍 三 MySQL的下载安装.简单应用及目录介绍 四 root用户密码设置及忘记密码的解决方案 五 修改字符集编码 六 ...
- Mysql数据库的简单介绍与入门
Mysql数据库的简单介绍与入门 前言 一.下载与安装 1.下载 官网下载MYSQL5.7.21版本,链接地址https://www.mysql.com/downloads/.下载流程图如下: 找到M ...
- 【数据库】MySQL & SQL 介绍
文章目录 MySQL & SQL 介绍 1.MySQL的背景 2.MySQL的优点 3.MySQL的安装 4.MySQL服务的启动和停止 方式一 方式二 5.MySQL服务的登录和退出 方式一 ...
- 数据库 之MySQL 简单教程
So Easy系列之MySQL数据库教程 1. 数据库概述 1.1. 数据库概述 数据库(Database)是按照数据结构来组织.存储和管理数据的仓库,它产生于距今六十多年前,随着信息技术和 ...
- mysql介绍及安装
一.MySQL介绍 1.标志 MySQL的海豚标志的名字叫"sakila",它是由MySQL AB的创始人从用户在"海豚命名"的竞赛中建议的大量的名字表中选出的 ...
- Mysql数据库知识-Mysql索引总结 mysql mysql数据库 mysql函数
mysql数据库知识-Mysql索引总结: 索引(Index)是帮助MySQL高效获取数据的数据结构. 下边是自己整理的资料与自己的学习总结,,做一个汇总. 一.真的有必要使用索引吗? 不是每一个性能 ...
- 迁移应用数据库到MySQL Database on Azure
by Rong Yu 有用户问怎么把他们应用的数据库迁移到MySQL Database on Azure上,有哪些方式,有没有需要注意的地方.今天我们来概括介绍一下迁移应用数据库到MySQL Data ...
随机推荐
- vue-router 传递参数的几种方式
本文转载自:https://blog.csdn.net/crazywoniu/article/details/80942642 vue-router传递参数分为两大类 编程式的导航 router.pu ...
- java 重新学习 (七)
一.mysql的InnoDB通过建立行级索确保事务完整性.,并以Oracle风格的共享锁来处理select语句.系统默认存储为InnoDB. 二. -- mysql 创建表 CREATE TABLE ...
- Linux目录及说明
Linux目录及说明 [常见目录说明] 目录 /bin 存放二进制可执行文件(ls,cat,mkdir等),常用命令一般都在这里. /etc 存放系统管理和配置文件 /home 存放所有用户文件的根目 ...
- for,while,do while语句区别以及常见死循环格式
1.三种循环语句的区别: do...while循环至少执行一次循环体. 而for,while循环必须先判断条件是否成立,然后决定是否执行循环体语句. for循环和while循环的区别: 如果你想在循环 ...
- ConcurrentHashMap(锁分段技术)
线程不安全的HashMap 因为多线程环境下,使用Hashmap进行put操作会引起死循环,导致CPU利用率接近100%,所以在并发情况下不能使用HashMap. 效率低下的HashTab ...
- 【翻译自mos文章】oraclepassword管理策略
oraclepassword管理策略 參考原文: Oracle Password Management Policy (Doc ID 114930.1) 细节: password管理通过使用profi ...
- Python之字符串转换为日期、结合时区的日期操作
一.字符串转换为日期 方法一 s = '2019-01-20' print(datetime.strptime(s, '%Y-%m-%d')) # 2019-01-20 00:00:00 方法二 de ...
- OAuth授权登录
一.写在前面 日常生活中,我们经常看到到一个网站时,需要登录的时候,都提供了第三方的登录,也就是说你可以使用你的微信,QQ,微博等账号进行授权登录.那么这个认证登录的东西到底是什么呢? 微信授权登录页 ...
- 配置阿里云SLB全站HTTPS集群
配置阿里云SLB全站HTTPS集群(以下内容仅为流程,信息可能有些对应不上) 1 登录阿里云购买两台实例 1.1 按量付费购买两台实例 1.2 配置网络可以不选择分配外网 1.3 自定义密码 1.4 ...
- go语言从例子开始之Example23.通道缓冲
默认通道是 无缓冲 的,这意味着只有在对应的接收(<- chan)通道准备好接收时,才允许进行发送(chan <-).可缓存通道允许在没有对应接收方的情况下,缓存限定数量的值. 不支持缓冲 ...