目录
[1.1 数据库服务器与数据库与表](#1.1 数据库服务器与数据库与表)
[1.2 客户端工具](#1.2 客户端工具)
[1.3 可视化工具](#1.3 可视化工具)
[2.1 SQL是什么](#2.1 SQL是什么)
[2.2 SQL分类](#2.2 SQL分类)
[3.1 查看数据库](#3.1 查看数据库)
[3.2 创建数据库](#3.2 创建数据库)
[3.2.3 创建一个制定字符集和排序规则的数据库](#3.2.3 创建一个制定字符集和排序规则的数据库)
[3.3 查看创建库的语句](#3.3 查看创建库的语句)
[3.4 修改数据库](#3.4 修改数据库)
[3.5 删除数据库](#3.5 删除数据库)
一、MySQL数据库基础
当MySQL安装完成之后,bin⽬录下有⼀个mysqld(Linux)或mysqld.exe(windoows)的可执⾏程序,mysqld可执⾏程序运⾏后,MySQL服务也就启动了。当把MySQL服务配置为⾃启动,操作系统启动时会⾃动运⾏mysqld可执⾏程序,从⽽启动MySQL服务。
1.1 数据库服务器与数据库与表
数据库服务器是指在计算机上安装了一个数据库管理系统程序,这个程序可以管理多个数据库,一般开发人员会针对每一个应用创建一个数据库
那为了保存应用中的实体,一般会在书库中创建多个表,已保存程序中实体的数据
所以他们的关系就是:数据库服务器 ------管理------>数据库 ------管理------>表
1.2 客户端工具
MySQL安装成功后有自带的命令行客户端工具,可以输入命令并且执行SQL语句,所以MySQL的使用还是非常简单的,打开终端输入命令即可

我们输入安装时就设置的密码,连接成功了,我们使用select version( )的SQL语句查看了当前MySQL的版本
1.3 可视化工具
MySQL官方提供了可视化工具MySQL Workbench,但是博主在这里使用的是Navicat可视化客户端工具,在业内广泛使用
二、SQL语言
2.1 SQL是什么
SQL(Structured Query Language)是**结构化查询语⾔**的简称,是⼀种数据库查询和程序设计语⾔,⽤于存取数据以及查询、更新和管理关系数据库。
2.2 SQL分类
• DDL【Data Definition Language】 数据定义 语⾔,⽤来维护存储数据的结构
代表指令: create, drop, alter
• DML【Data Manipulation Language】 数据操纵 语⾔,⽤来对数据进⾏操作
代表指令: insert,delete,update,select
• DCL【Data Control Language】 数据控制 语⾔,主要负责权限管理和事务
代表指令: grant,revoke,commit
注意:SQL语言对大小写不敏感
三、库的操作
3.1 查看数据库
show databases;

3.2 创建数据库
CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name [create_option] ...
create_option: [DEFAULT] {
CHARACTER SET [=] charset_name
| COLLATE [=] collation_name
| ENCRYPTION [=] { 'Y' | 'N' }
}
- db_name:表示自定义的数据库名称
- {}:表示必须选
- |:表示任选其中一个
-
\]:表示括号中内是可选项
- COLLATE:指定数据库字符集的校验规则
- ENCRYPTION:数据库是否加密,MySQL 8.0.16中引⼊的新选项、
3.2.1创建一个名字为test的数据库
create database test;

3.2.2自定义一个数据库名,如果该数据库不存在则创建
create database if not exists test;
如果不加 if not exists,观察发现报错显示test已经存在无法创建

我们加上 if not exists,观察发现数据库里面已经存在test,所以没有创建,出现了一个警告

我们显示警告,提示test已经存在不能创建

所以建议创建数据库的时候加上 if not exists,可以有效防止报错,而导致程序中断
在设置字符集编码之前,我们先来了解一下字符集编码和校验排序规则
show charset;

我们看到当前数据库支持的所以字符集编码,MySQL8.0默认的字符集编码是utf8mb4,而MySQL5.7默认的字符集是latin1
show collation;

这里我们只显示部分排序排序规则,MySQL8.0默认的排序规则是 utf8mb4_0900_ai_ci,MySQL5.7默认排序规则是utf8mb4_general_ci
我们可以分析一下当前字符集和排序规则对数据库的影响
utf8mb4_0900_ai_ci 是MySQL8.0引⼊的新规则,在⽼版本中不能识别;
utf8mb4 编码是对 Unicode 字符集的⼀种实现,⽤1到4个字节表⽰⼀个字符,可以表⽰世界上⼏乎所有的字符,⽽且更节少空间
0900 是基于UCA9.0.0算法,UCA是Unicode Collation Algorithm的缩写
- ai是Accent-insensitive的缩写,表⽰⼝声不敏感
- ci是Case-insensitive的缩写表⽰⼤⼩写不敏感
- as是Accent-sensitive的缩写,表⽰⼝声敏感
- cs是Case-sensitive的缩写,表⽰⼤⼩写敏感
show variables like '%character%' 查看当前系统默认字符集
show variables like '%collation%' 查看当前系统默认排序规则

3.2.3 创建一个制定字符集和排序规则的数据库
create database if not exists java character set utf8mb4 collate utf8mb4_0900_ai_ci;

3.3 查看创建库的语句
show create database db_name;
我们查询一下java数据库的创建语句

3.4 修改数据库
ALTER {DATABASE | SCHEMA} [db_name] alter_option ...
alter_option: {
DEFAULT\] **CHARACTER SET** \[=\] charset_name \| \[DEFAULT\]**COLLATE** \[=\] collation_name \| \[DEFAULT\] **ENCRYPTION** \[=\] {'Y' \| 'N'} \| READ **ONLY** \[=\] {**DEFAULT** \| 0 \| 1} }
修改数据库主要是针对数据库的字符集和排序规则进行修改
我们修改之前的test数据库的字符集编码为gbk
可以观察到修改之前默认字符集为utf8mb4,修改后则为gbk

3.5 删除数据库
DROP {DATABASE | SCHEMA} [IF EXISTS] db_name
我们删除test数据库,可以观察到删除后test数据库不存在了

🌟删除数据库是非常危险的操作,不要随意删除数据库