回顾

1.什么是数据库管理系统

  1. DBMS<br />1) 管理数据<br />2)存储数据

2.数据库管理系统的类型

RDBMS 关系型数据库
mysql Oracle mariadb mssql

Nosql (非关系型数据库)
redis mongdb memcache elasticsearch

3.关系型数据库非关系型数据库功能性能对比

rdbms:强大的查询功能,二级索引,数据的强一致性
nosql 灵活性,可扩展,性能,支持分布式

4.特点对比

nosql 不适用sql语句 想做老大 先做好老二 并不想取代关系型数据库 是关系型数据库的补充
rdbms 二维表 支持sql语句 安全

5.mysql 版本选型规则

MySQL 5.6 GA 6-12 个月 小版本是偶数版本
mysql 5.7 GA 6-12个月 小版本是偶数版本 5.7.17版本以上(MGR:自带的高可用功能)

6. MySQL安装方式

yum rpm
编译安装(源码安装)

7.MySQL服务器模型

cs结构
客户端工具MySQL MySQLadmin mysqldump

8.连接方式

tcp/ip
MySQL -uroot -p123 -h 127.0.0.1

socket
mysql -uroot -p (默认socket 速度快不需要建立三次握手
nysql -uroot -p123 -s
mysql -uroot -p123 -hlocalhost

9什么是mysql实例

一个进程+多个线程+预分配的内存结构

10 mysqld的程序结构

连接层

  • 验证用户的合法性
  • 提供两种连接方式
  • 提供一个与sql层交互的专用线程

sql层:

  • 接收连接层传来的消息
  • 检查语法
  • 检查语义
  • 解释器
  • 优化器
  • 执行器
  • 缓存
  • 记录日志binlog

存储引擎层:

  • 接收sql层传来的sql语句
  • 与磁盘交互查找数据文件,结构化成表形式返回给sql层
  • 提供一个与sql层交互的线程,

11.MySQL的逻辑结构

  1. 库+表<br />表: 元数据+真实数据行<br />元数据: 列+其他属性<br />列:列名+约束

12. MySQL的物理结构

  1. 最底层的数据文件

13.段 区 页

段: 一个表就是一个段,有多个 区构成
区: 由多个页构成
页:最小单位 16k
分区表 一个区构成一个段 就是一个分区表

14 MySQL中 用户是如和定义的

用户名@主机域

主机域:
192.168.50.113
192.168.50.%
192.168.%.%
192.168.0.0/255.255.255.0
%
db01
localhost
127.0.0.1

15 mysql 修改密码

update
set
mysqladmin
grant

16脱敏 单例级别授权

grant select(user) on mysql.user to dev@’% identified by ‘123’;

17.配置文件读取顺序

/etc/my.cnf
/etc/mysql/my.cnf
$basedir/my.cnf
defults-extra-file
~/.my.cnf

优先级: 5 4 3 2 1

18 优先级结论

命令行
default-file
配置文件
~/.my.cnf
defults-extra-file
$basedir/my.cnf
/etc/mysql/my.cnf。
/etc/my.cnf
cmak编译参数

19配置文件的作用

1.影响服务端的启动
2.影响客户端的连接

20多实例

多个进程+多个线程+多个 预分配内存结构
1.多个的端口
2.多个数据目录
3.多个socket文件
4.多个 日志文件
5多个server_id

第四章 MySQL客户端工具及SQL语句

1.客户端命令介绍

  1. \h or help or ? 查看帮助文档
  2. \G 格式化查询数据
  3. \T or tee 记录日志基于session记录只记录当前会话窗口 用法:mysql> tee /var/log/myslq.log;
  4. \c 结束命令
  5. \s 查看状态
  6. \. or source 导入sql数据
  7. \u or use 使用数据库
  8. \q or exit or quit 退出
  9. mysql> system ifconfig MySQL中执行linux命令

2mysqladmin

  1. help命令的使用
  2. mysql> help
  3. mysql> help contents
  4. mysql> help select
  5. mysql> help create
  6. mysql> help create user
  7. mysql> help status
  8. mysql> help show
  9. source命令的使用
  10. #在MySQL中处理输入文件:
  11. #如果这些文件包含SQL语句则称为:
  12. #1.脚本文件
  13. #2.批处理文件
  14. mysql> SOURCE /data/mysql/world.sql
  15. #或者使用非交互式
  16. mysql</data/mysql/world.sql
  17. mysqladmin 的使用
  18. #查看MySQL存活状态
  19. [root@db01 ~]# mysqladmin -uroot -p123 ping
  20. #查看MySQL状态信息
  21. [root@db01 ~]# mysqladmin -uroot -p123 status
  22. #关闭MySQL进程
  23. [root@db01 ~]# mysqladmin -uroot -p123 shutdown
  24. #查看MySQL参数
  25. [root@db01 ~]# mysqladmin -uroot -p123 variables
  26. #删除数据库
  27. [root@db01 ~]# mysqladmin -uroot -p123 drop DATABASE
  28. #创建数据库
  29. [root@db01 ~]# mysqladmin -uroot -p123 create DATABASE
  30. #重载授权表
  31. [root@db01 ~]# mysqladmin -uroot -p123 reload
  32. #刷新日志
  33. [root@db01 ~]# mysqladmin -uroot -p123 flush-log
  34. #刷新缓存主机
  35. [root@db01 ~]# mysqladmin -uroot -p123 reload
  36. #修改口令
  37. [root@db01 ~]# mysqladmin -uroot -p123 password

3接收用户的sql语句

1什么是sql
结构化的查询语句 5.7以后符合sql92严格模式
2.sql的种类
DDL:数据定义语言
库对象:库名字、库属性
开发规范:库名小写
创建库:create database/schema
sql 分类
ddl 数据定义语言
dcl 数据控制语言
dml 数据操作语言
dql 数据库查询语言
**
3.种类
数据类型
image.png
字符串类型
image.png
时间类型
image.png

  1. #创建oldboy数据库
  2. mysql> create database demo;
  3. #查看库的创建语句
  4. mysql> show create database blog;
  5. 修改blog属性字符集
  6. mysql> alter database blog charset gbk;
  7. #查看创建数据库语句帮助
  8. mysql> help create database
  9. utf-8 一个中文占用3
  10. unicode 一个中文字符占4
  11. char(3) 定长 输入a占用3个字符
  12. varcher(3) 变成 a占用一个字符
  13. tinyint -128-128 255
  14. mysql> create table student3(
  15. id int not null primary key auto_increment,
  16. name varchar(10) not null,
  17. age tinyint unsigned,
  18. sex enum('f','m','bgx') not null default 'bgx',
  19. date datetime not null default NOW());
  20. not null: 非空
  21. primary key: 主键 唯一+非空
  22. unique key: 唯一键 唯一
  23. auto_increment:自增
  24. unsigned: 非负
  25. default: 默认值

4.DDL 数据控制语言

ddl对数据库级别的操作

  1. 创建库
  2. create database test;
  3. 查看库的创建语句
  4. show create database test;
  5. 删除库
  6. drop database test;
  7. 修改库属性
  8. alter database test charset gbk;

ddl对表操作

  1. 创建表
  2. create table test(id int);
  3. create table student34(id int,name varchar(10),age tinyint,enum('男','女','不男不女'));
  4. //id int 数字类型
  5. //tinyint -128~-128=255
  6. //enum 只能选择括号定义的
  7. //char(3) 定长的 给多少全都占完
  8. //varchar(10) 边长 给多少占多少 10个字符,一个英文占一个字符,一个中文在unicode里边占4个字符,在utf8里边占3个字符。