MySQL笔记——第2章 SQL的基本概念和MySQL简介
2.1 SQL的基本概念
SQL(Structured Query Language):结构化查询语言
- 数据查询(DQL)
- 数据定义(DDL)
- 数据操纵(DML)
- 数据控制(DCL)
SQL的发展
SQL的主要特点:
- SQL是一种一体化的语言
- SQL语言是一种非过程化的语言
- SQL语言是一种面向集合的语言
- SQL语言既是自含式语言,又是嵌入式语言
SQL语言的分类
- 数据定义语言:CREATE、ALTER、DROP
- 数据查询语言:SELECT
- 数据操纵语言:INSERT、UPDATE、DELETE
- 数据控制语言:GRANT、REVOKE
2.2 MySQL简介
MySQL发展和版本
- MySQL是一款安全、跨平台、高效的数据库系统
- 社区版本
- 企业版本
- 集群版
- 高级集群版
- MySQL是一款安全、跨平台、高效的数据库系统
MySQL主要组件
- 连接器:与客户端建立连接、获取权限、维持和管理连接
- 查询缓存:执行查询语句时,会先到缓存中查看是否执行过该语句
- 分析器:分析SQL语法是否正确
- 优化器:SQL执行前会使用优化器进行优化,选择出最优的查询方案
- 执行器:对SQL进行权限校验
MySQL下载和安装
MySQL管理工具
- 应用工具:MySQL Workbench、MySQL Shell
- 运维管理类工具:主要是数据库管理员使用的工具
- 监控管理类工具:为应对因服务或其他因素导致的性能变化,可以使用Zabbix、Lepus、mysql-statsd等性能监控工具
- 诊断优化工具:主要有innotop、oradba、mytop、orztop和systemtap等;在性能测试方面,可以使用Sysbench、tpcc-mysql、Mydbtest和mysqlslap等工具
MySQL字符集概述
针对数据的存储,MySQL提供了多种字符集
针对同一字符集内字符之间的比较,MySQL提供了与之对应的多种校对规则
一个字符集对应至少一种校对规则(通常是一对多的关系),两个不同的字符集不能有相同的校对规则,而且,每个字符集都设置默认的校对规则
可以通过如下命令查看MySQL支持的所有字符集
SHOW CHARACTER SET
或者使用系统表infromation_schema中的CHARACTER_SETS,如下:
use information_schema,
select * from character_sets
在DOS窗口执行上述命令,可以得到如图所示的字符集列表
MySQL 字符集设置
MySQL对于字符集的设置分为4个级别:服务器(Server)、数据库(DataBase)、数据表(Table)和连接(Connection)
可以查看MySQL字符集在各个级别上的默认设置,查看命令如下:
SHOW VARIABLES LIKE 'character%';
在MS DOS窗口或者MySQL Shell窗口执行上述命令,可以得到如图所示的各个级别的默认字符集
2.3 MySQL数据库管理
1.创建数据库
在MySQL中,创建数据库的语法格式如下
CREATE DATABASE | SCHEMA [IF NOT EXISTS] db_name
[ [DEFAULT] CHARACTER SET charset_name]
[ [DEFAULT] COLLATE collation_name]
2.查看数据库
查看数据库的语法格式如下:
SHOW CREATE DATABASE db_name
创建完数据库之后,可以在MySQL安装盘符下的“\ProgramData\MySQL\MySQL Server
5.7\Data”文件下看到以数据库名称命名的文件夹,该文件夹最初是空文件夹,之后,在数据库中创建的数据表等的相关文件会存储在该文件夹中
3.查看数据库
数据库创建之后,可以根据需要修改数据库的参数
如果MySQL的默认存储引擎是InnoDB,无法修改数据库名,只能修改字符集和校对规则
修改数据库的语法格式如下:
ALTER DATABASE | SCHEMA db_name
[DEFAULT] CHARACTER SET charset_name
[DEFAULT] COLLATE collation_name需要注意,用户必须有数据库的修改权限,才能使用ALTER DATABASE命令修改数据库
4.删除数据库
删除数据库是指在数据库系统中删除已经存在的数据库,删除成功之后,原来分配的空间将被收回
如果数据库中已经包含了数据表和数据,则删除数据库时,这些内容也会被删除,因此,删除数据库之前最好先对数据库进行备份操作
删除数据库的语法格式如下:
DROP DATABASE [IF EXISTS] db_name