网站规划的基本内容不包括,上海网站营,广东网站建设排名,技术支持 东莞网站建设鞋子#课程目标
了解MySQL的体系结构了解MySQL常见的日志文件及作用了解事务的控制语句#xff0c;提交和回滚能够查看当前数据库的版本和用户了解MySQL数据库如何存放数据能在使用SQL语句创建、删除数据库
#一、MySQL的体系结构 ##1、客户端(连接者) MySQL的客户端可以是某个客户…
#课程目标
了解MySQL的体系结构了解MySQL常见的日志文件及作用了解事务的控制语句提交和回滚能够查看当前数据库的版本和用户了解MySQL数据库如何存放数据能在使用SQL语句创建、删除数据库
#一、MySQL的体系结构 ##1、客户端(连接者) MySQL的客户端可以是某个客户端软件 MySQL的客户端可以是不同的编程语言(PHP/Python等)编写的应用程序 MySQL的客户端还可以是一些API的接口
##2、连接池连接器
主要作用管理和缓冲用户连接为客户端请求做连接处理身份认证等。 3、SQL处理层
主要作用:接受用户的SQL请求查询分析权限处理优化结果缓存等。 ##4、存储引擎层 什么是存储引擎
1存储引擎说白了就是如何管理操作数据(存储数据、如何更新、查询数据等)的一种方法和机制。
2在MySql数据库中提供了多种存储引擎各个存储引擎的优势各不一样。
3用户可以根据不同需求为数据表选择不同的存储引擎也可以根据自己需要编写自己的存储引擎。
4甚至一个库中不同的表使用不同的存储引擎这些都是允许的。 常用的存储引擎有哪些 最常用的存储引擎是InnoDB和MyISAM
存储引擎描述InnoDB支持拥有ACID特性事务的存储引擎并且提供行级的锁定应用相当广泛。 比如OLTP在线事务处理系统MyISAM查询速度快有较好的索引优化和数据压缩技术但不支持事务。 适用于读多写少的应用场景比如OLAP在线分析处理系统NDB用于MySQL Cluster的集群存储引擎提供数据层面的高可用性MEMORY存储数据的位置是内存因此访问速度最快但是安全上没有保障。 适合于需要快速的访问或临时表。BLACKHOLE黑洞存储引擎写入的任何数据都会消失应用于主备复制中的分发主库中继slave
##5、存储层
核心作用
用来存储MySQL的数据文件、日志文件等物理文件。支持各种文件系统如ext2~ext4xfsnas等。
6、MySQL体系结构总结 MySQL体系结构分为哪几层 每一层是如何工作的 MySQL5.5版本以后默认的存储引擎是哪个有什么特点
二、MySQL数据库物理文件
##1、常见的日志文件 ###㈠ 错误日志
作用存放数据库的启动、停止或运行时的错误信息
场景用于数据库启动排错。
如何开启
默认是开启的可以通过修改my.cnf文件自定义如
# vim /etc/my.cnf
[mysqld]
log_error/path
注意默认存在在$datadir/hostname.err
㈡ 二进制日志
作用
二进制日志记录数据库的所有更改操作DDL/DML/DCL不包含select或者show这类语句。
场景 用于主从复制中master主服务器将二进制日志中的更改操作发送给slave从服务器从服务器执行这些更改操作是的和主服务器的更改相同。 用于数据的恢复操作
如何开启
默认binlog日志是关闭的可以通过修改配置文件完成开启如下
# vim /etc/my.cnf
[mysqld]
#指定二进制日志存放位置及文件名
log-bin/path/binlog
如何查看
二进制日志比较特殊需要使用mysqlbinlog工具查看如mysqlbinlog 二进制日志文件
㈢ 一般查询日志
作用当客户端连接或断开时服务器会将信息写入该日志并记录从客户端收到的每一条SQL语句。
场景当怀疑客户端的错误并想知道客户端发送给mysqld的确切信息时该日志非常有用。
如何开启
默认情况下慢查询日志是关闭的可以通过修改配置文件完成开启如下
# vim /etc/my.cnf
[mysqld]
#打开或关闭一般通用日志,0表示关闭1表示开启
general_log1
#指定一般查询日志的路径及文件名默认$datadir/hostname-slow.log
general_log_file/path/file.log
#定义日志的输出目标
log-outputFILE
说明 log-output参数用于定义一般通用日志和慢查询日志的输出目标即log-output[value,...]
value[TABLE|FILE|NONE]默认值为FILE
value描述TABLE表示将日志记录到表中general_log表或者slow_log表中FILE表示将日志记录的文本文件中NONE表示不记录到表或者文件
千万注意 如果log-outputNONE则即使启用了日志也不会写入条目。 如果log-output不等于NONE,但是没有启用日志也不会写入条目。
###㈣ 慢查询日志
作用慢查询日志记录的是一些SQL语句可用于查找需要很长时间才能执行的查询
场景用于找出长时间才能执行的查询语句并对其进行优化。 但是检查一个很长的慢查询日志可能成为一项艰巨的任务。为了简化这一过程可以使用mysqldumpslow命令处理慢查询日志文件以汇总日志中显示的查询。 如何开启
默认情况下慢查询日志是关闭的可以通过修改配置文件完成开启如下
# vim /etc/my.cnf
[mysqld]
#打开或关闭慢查询日志,0表示关闭1表示开启
slow_query_log{1|0}
#指定慢查询日志的路径及文件名默认$datadir/host_name-slow.log
slow_query_log_file/path/file_name.log
#定义日志的输出目标
log-outputFILE
#表示查询语句超过n秒被记录到slow log里最小值为0默认值为10
long_query_timen
###㈤ 中继日志
作用记录从(slave)服务器接收来自主(master)服务器的二进制日志.
场景用于主从复制 master主服务器将自己的二进制日志发送给slave从服务器slave先保存在自己的中继日志中然后再执行自己本地的relay log里的sql达到数据库更改和master保持一致。 如何开启
默认中继日志没有开启可以通过修改配置文件完成开启如下
# vim /etc/my.cnf
[mysqld]
#指定二进制日志存放位置及文件名
relay-log/path/xxxx.log
㈥ 常用日志文件小结
日志文件作用场景错误日志二进制日志一般查询日志慢查询日志中继日志
2、常见的数据文件
数据文件类型描述*.frm 文件1、任何存储引擎每一个表都会有一个以表名命名的.frm文件。 2、与表相关的元数据meta)信息都存放在此文件中包括表结构的定义信息等*.MYD文件1、myisam存储引擎专用存放myisam表的数据data) 2、每一个myisam表都会有一个.MYD文件与之呼应同样存放在所属数据库的目录下*.MYI文件1、myisam存储引擎专用存放myisam表的索引相关信息 2、对于myisam存储引擎来说可以被缓存(cache)的内容主要就是来源于.MYI文件中。 每一个myisam表对应一个.MYI文件*.ibd文件和ibdata文件1、存放innoDB的数据文件包括索引 2、innoDB存储引擎有两种表空间方式独享表空间和共享表空间。 3、独享表空间使用.ibd文件来存放数据且每个表一个.ibd文件。 4、共享表空间使用.ibdata文件所有表共同使用一个或多个自行配置.ibdata文件。db.opt文件此文件在每一个自建的库里都会有记录这个库的默认使用的字符集和校验规
#三、MySQL中的SQL语句
##1、什么是SQL
SQL 是 Structure Query Language(结构化查询语言)的缩写,它是使用关系模型的数据库应 用语言,由 IBM 在 20 世纪 70 年代开发出来,作为 IBM 关系数据库原型 System R 的原型关 系语言,实现了关系数据库中的信息检索。
20 世纪 80 年代初,美国国家标准局(ANSI)开始着手制定 SQL 标准,最早的 ANSI 标准于 1986 年完成,就被叫作 SQL-86。标准的出台使 SQL 作为标准关系数据库语言的地位得到了 加强。SQL 标准目前已几经修改更趋完善。
正是由于 SQL 语言的标准化,所以大多数关系型数据库系统都支持 SQL 语言,它已经发展 成为多种平台进行交互操作的底层会话语言。
##2、SQL语句的分类 DDL(Data Definition Languages)语句: 数据定义语言,这些语句定义了不同的数据段、数据库、表、列、索引等数据库对象的定义。常用的语句关键字主要包括 create、drop、alter、rename、truncate。 DML(Data Manipulation Language)语句: 数据操纵语句,用于添加、删除、更新和查询数据库记录,并检查数据完整性,常用的语句关键字主要包括 insert、delete、update等。 DCL(Data Control Language)语句: 数据控制语句,用于控制不同数据段直接的许可和访问级别的语句。这些语句定义了数据库、表、字段、用户的访问权限和安全级别。主要的语句关键字包括 grant、revoke 等。 DQL(Data Query Language)语句: 数据查询语句用于从一个或多个表中检索信息。主要的语句关键字包括 select
##3、MySQL中如何求帮助 亘古不变的官档 MySQL5.6官方文档 MySQL5.7官方文档 man文档 man文档可以对mysql的一些基本工具及后台命令求帮助比如 [rootdb01 ~]# man mysql
[rootdb01 ~]# man mysql_install_db
[rootdb01 ~]# man mysqldump
[rootdb01 ~]# man mysqld MySQL的命令行求帮助 mysql help;
mysql ?
mysql help create table;
根据内容进行查找帮助
mysql ? contentsAccount ManagementAdministrationData DefinitionData ManipulationData TypesFunctionsFunctions and Modifiers for Use with GROUP BYGeographic FeaturesLanguage StructureStorage EnginesStored RoutinesTable MaintenanceTransactionsTriggers寻求账户管理的帮助一级一级的向内部查
mysql ? Account Management
mysql ? CREATE USER
四、MySQL数据库基本操作
##1、常用的一些命令
###㈠ 事务控制语句 问默认情况下MySQL如何提交事务的 答自动提交事务 问MySQL如何自动提交呢 答autocommit变量控制 查看autocommit变量值
mysql show variables like autocommit;
----------------------
| Variable_name | Value |
----------------------
| autocommit | ON |
----------------------
1 row in set (0.00 sec)
说明autocommitON表示自动提交 临时关闭自动提交
mysql set autocommitOFF;
Query OK, 0 rows affected (0.00 sec) 永久关闭自动提交
修改my.cnf配置文件
vim my.cnf
...
autocommit0
或者
autocommitOFF补充
DDL(数据定义语言)当执行时会自动提交上面未提交的事务。create/drop/alter 手动控制事务
commit 提交
rollback 回滚
###㈡ 常见函数
查看mysql支持字符加密函数
select password(123);
select md5(123);
select sha1(123);
select encrypt(123); 基本上不用了使用select来调度mysql中的常见函数
select version(); 当前数据库版本
select current_user(); 当前用户
select current_time(); 当前时间
select current_date(); 当前日期
select now(); 当前日期时间查看数据库的基本信息
mysql \s 或者status
--------------
mysql Ver 14.14 Distrib 5.6.35, for linux-glibc2.5 (x86_64) using EditLine wrapperConnection id: 4
Current database:
Current user: rootlocalhost
....
###㈢ 其他常用语句
mysql use 数据库名; 指定数据库,类似于进入到某个库里进行操作
mysql show databases; 查看所有数据库
mysql show schemas; 查看所有数据库
mysql show tables; 查看所有表
mysql show variables; 查看变量
mysql show variables like %char%;
mysql show variables like %data%;
mysql show engines; 查看存储引擎
更改默认字符集为utf8mb4
临时更改
mysql set character_set_databaseutf8mb4;
Query OK, 0 rows affected (0.01 sec)
mysql set character_set_serverutf8mb4;
Query OK, 0 rows affected (0.00 sec)
mysql show variables like %char%;
mysql show variables like collation_server;
--------------------------------------
| Variable_name | Value |
--------------------------------------
| collation_server | utf8mb4_general_ci |
--------------------------------------
永久更改
vim my.cnf
[mysqld]
...
character_set_serverutf8mb4
collation_serverutf8mb4_general_ci (可省略)
2、MySQL数据库如何存放数据 ㈠ MySQL数据库库相关名词
名词英文数据库database数据表table字段field记录record
说明
1一个MySQL数据库实例可以同时创建多个database数据库
2一个database数据库可以同时拥有多个table数据表
3每个表都有自己的表头信息如ID、Name、Gender、Addtime称为field字段
4每个表可以拥有多个记录如Tom、King、Kylie、Jennie等个人信息
通过以上信息我们可以得出数据记录是如何保存和存储在数据库里的即
1数据(记录record) — 数据表(table) — 数据库(database)
2所以要存放一条记录那么必须得先有数据库—数据表—数据记录
㈡ 数据库基本操作
① 创建库(create database)
创建db1库
create database db1;
创建db1库并指定默认字符集
create database db1 default charset gbk;
如果存在不报错(if not exists)
create database if not exists db1 default character set utf8;
说明不能创建相同名字的数据库
② 查看创建库的语句(show)
show create database db1;
③ 更改数据库信息(alter database)
更改db1库的默认字符集
alter database db1 default character set gbk;
alter database db2 default charset utf8;
④ 删除数据库(drop database)
drop database db1;删除db1库