零:补充概念
0.1 允许任意主机对数据库管理系统进行操作
1.对root用户进行授权
bash
update mysql.user set host='%' where user='root';

2.对任意主机进行授权
bash
grant all privileges on *.* to 'root'@'%' with grant option;

0.2 创建一个用户/授权root用户用以远程连接(区别于本地连接)
1.创建xiaowang账号进行远程连接
bash
create user xiaowang@'%' identified by 'mysql';
账号是:xiaowang
密码是:mysql

2.对创建的用户进行授权
bash
grant all on *.* to 'xiaowang'@'%';

0.3 windows本地连接数据库
打开navicat软件,点击"连接",选择"MySQL":

设置连接名,输入密码(主机就是本机,端口和用户名默认):

0.4 windows远程连接数据库
1.远程主机通过root身份进行连接
Win+R键输入cmd,输入ipconfig查看远程主机ip地址并进行连接:

2.远程主机通过被授权的xiaowang身份进行连接
Win+R键输入cmd,输入ipconfig查看ip地址:

在主机处输入IP地址,输入账号密码:

0.5 SQL语句简介
1 SQL简介
bash
SQL:结构化查询语言---在关系型数据库上执行数据操作、数据检索以及数据维护的标准语言。
使用SQL语句,程序员和数据库管理员可完成如下操作:
1.改变数据库的结构
2.更改系统的安全设置
3.增加用户对数据库或表的许可权限
4.在数据库中检索需要的信息
5.对数据库的信息进行更新
2 SQL语句分类---四大类
bash
1.DDL---数据定义语言:CREATE(创建)、DROP(删除)、ALTER(修改)、RENAME(重命名)等。
2.DML---数据操作语言:INSERT(插入)、DELETE/TRUNCATE(删除)、UPDATE(更新)
3.DQL---数据查询语言:SELECT(查询)
4.DCL---数据控制语言:GRANT(授权)、REVOKE(回收特权)等。
3 SQL语句的书写规范
bash
1.SQL语句不区分大小写(建议大写),但字符串常量区分大小写
2.SQL语句可单行或多行书写,以";"结尾
3.关键词不能跨多行或简写
4.用空格和缩进来提高语句的可读性
5.子句通常位于独立行,便于编辑,提高可读性
6.注释:
--和"#"为单行注释 注:--与注释之间需留有一格否则不生效
/*多行注释*/ 注:远程终端不支持
单行注释:

多行注释:

一:数据库操作
1.1 数据库登录及退出
登录格式
bash
mysql -u账号 -p密码 -h服务器主机名/IP地址 -P 端口 -D 数据库名 -e sql语句
分析:
1.-u 后面跟登录数据库的用户名,这里使用root
2.-p 后面跟登录密码(与密码之间没有空格)
3.-h 后面跟服务器的主机地址(主机名/IP地址)
4.-P 后面跟
5.-D 后面跟你想要进入的数据库名称
6.-e 后面跟进入数据库管理系统后你想要执行的SQL语句
示例1.通过-D进入mysql数据库
bash
首先查看数据库管理系统下的数据库:
mysql> show databases;

bash
使用-D直接进入mysql数据库:
mysql -uroot -proot -D mysql
验证当前所在数据库:
mysql> select database();

示例2.通过-e查看数据库管理系统下的数据库并退出
bash
格式:-e后面的指令包括分号需要用单引号括起来
mysql -uroot -proot -e 'show databases;'

示例3.清屏mysql
bash
mysql> system cls
示例3.退出mysql
bash
1.mysql> exit
2.mysql> quit
1.2 查看数据库
- MySQL自带数据库
bash
1.information_schema:提供mysql服务器中所有数据库对象的元数据信息,相当于数据库的"数据字典"
存放内容:数据库、表、列、索引、视图、存储过程、触发器等的定义信息;
表的存储引擎、数据类型、权限信息、字符集等
2.performance_schema:主要存储数据库服务器的性能参数
3.mysql:存储了系统的用户权限信息及帮助信息
4.sys:5.7新增;这个数据库通过视图的形式把information_schema和performance_schema结合起来,查询出更加令人容易理解的数据
- 格式:like---'模糊查询' %任意长度的任意字符 _任意单个字符
bash
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
4 rows in set (0.00 sec)
- 使用条件查看---直接查找
bash
mysql> show databases like 'sys';
+----------------+
| Database (sys) |
+----------------+
| sys |
+----------------+
1 row in set (0.01 sec)
- 带有通配符的条件---单个字符查找
bash
mysql> show databases like 'my_ql';
+------------------+
| Database (my_ql) |
+------------------+
| mysql |
+------------------+
1 row in set (0.00 sec)
- 带有通配符的条件---任意字符查找
bash
mysql> show databases like '%schema%';
+---------------------+
| Database (%schema%) |
+---------------------+
| information_schema |
| performance_schema |
+---------------------+
2 rows in set (0.00 sec)
- 显示时间
bash
mysql> select now();
+---------------------+
| now() |
+---------------------+
| 2026-01-07 20:13:35 |
+---------------------+
1 row in set (0.01 sec)
- 显示当前所在数据库
bash
mysql> select database();
+------------+
| database() |
+------------+
| mysql |
+------------+
1 row in set (0.00 sec)
- 查看当前数据库下的表
bash
mysql> show tables;
+------------------------------------------------------+
| Tables_in_mysql |
+------------------------------------------------------+
| columns_priv |
| component |
| db |
.......
- 显示当前mysql数据库版本
bash
mysql> select version();
+-----------+
| version() |
+-----------+
| 8.0.43 |
+-----------+
1 row in set (0.00 sec)
1.3 创建数据库
- 格式
bash
create database 数据库名;
- 示例
bash
mysql> create database testdb;
Query OK, 1 row affected (0.03 sec)
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
| testdb |
+--------------------+
5 rows in set (0.00 sec)
- 若数据库已存在则报错
bash
mysql> create database testdb;
ERROR 1007 (HY000): Can't create database 'testdb'; database exists
- 查看创建数据库的语句
bash
格式:show create database 数据库名;
mysql> show create database testdb;
| Database | Create Database
| testdb | CREATE DATABASE `testdb` /*!40100 DEFAULT CHARACTER SET utf8mb3 */ /*!80016 DEFAULT ENCRYPTION='N' */ |
1 row in set (0.00 sec)
1.4 mysql中的反引号
1.5 进入/切换数据库
- 格式
bash
use 数据库名
- 注意:当前没有使用数据库,则显示空
bash
mysql> select database();
+------------+
| database() |
+------------+
| NULL |
+------------+
1 row in set (0.00 sec)
mysql> use mysql #进入/切换数据库mysql
Database changed
mysql> select database();
+------------+
| database() |
+------------+
| mysql |
+------------+
1 row in set (0.00 sec)
1.6 查看当前用户及主机名
bash
mysql> select user();
+----------------+
| user() |
+----------------+
| root@localhost |
+----------------+
1 row in set (0.00 sec)
1.7 删除数据库
- 格式
bash
drop database 数据库名;
bash
mysql> drop database testdb;
Query OK, 0 rows affected (0.03 sec)
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
4 rows in set (0.00 sec)
习题
bash
创建temp1、temp2数据库,查看所有数据库,使用temp1数据库,删除所有数据库
二:MySQL字符集
2.1 查看mysql字符集
- 格式
bash
mysql> show character set;
+----------+---------------------------------+---------------------+--------+
| Charset | Description | Default collation | Maxlen |
+----------+---------------------------------+---------------------+--------+
| armscii8 | ARMSCII-8 Armenian | armscii8_general_ci | 1 |
| ascii | US ASCII | ascii_general_ci | 1 |
| big5 | Big5 Traditional Chinese | big5_chinese_ci | 2 |
- 字段含义
bash
1.charset:字符集名称
2.description:字符集的简单描述
3.default collation:该字符集的默认字符序
4.maxlen:该字符集中字符最大存储长度
- 查看指定字符集
bash
mysql> show character set like 'gbk';
+---------+------------------------+-------------------+--------+
| Charset | Description | Default collation | Maxlen |
+---------+------------------------+-------------------+--------+
| gbk | GBK Simplified Chinese | gbk_chinese_ci | 2 |
+---------+------------------------+-------------------+--------+
1 row in set (0.00 sec)
mysql> show character set like 'utf%';
+---------+------------------+--------------------+--------+
| Charset | Description | Default collation | Maxlen |
+---------+------------------+--------------------+--------+
| utf16 | UTF-16 Unicode | utf16_general_ci | 4 |
| utf16le | UTF-16LE Unicode | utf16le_general_ci | 4 |
| utf32 | UTF-32 Unicode | utf32_general_ci | 4 |
| utf8mb3 | UTF-8 Unicode | utf8mb3_general_ci | 3 |
| utf8mb4 | UTF-8 Unicode | utf8mb4_0900_ai_ci | 4 |
+---------+------------------+--------------------+--------+
5 rows in set (0.00 sec)
2.2 查看mysql字符序
- 格式
bash
mysql> show collation;
+---------------------+----------+-----+---------+----------+---------+---------------+
| Collation | Charset | Id | Default | Compiled | Sortlen | Pad_attribute |
+---------------------+----------+-----+---------+----------+---------+---------------+
| armscii8_bin | armscii8 | 64 | | Yes | 1 | PAD SPACE |
| armscii8_general_ci | armscii8 | 32 | Yes | Yes | 1 | PAD SPACE |
| ascii_bin | ascii | 65 | | Yes | 1 | PAD SPACE |
- 字段含义
bash
1.Collation:字符序名称
2.Charset:该字符序关联的字符集
3.Id:字符序ID
4.Default:该字符序是否是所关联的字符集的默认字符序
5.Compiled:字符集是否已编译到服务器中
6.Sortlen:与以字符集表示的字符串进行排序所需的内存量有关
7.Pad_attribute:表明字符序在比较字符串时对末尾padding的处理,NO PAD表明在比较字符串时,末尾的padding也会考虑进去,否则不考虑
2.3 utf8和utf8mb4的区别
bash
1.MySQL在5.5.3之后增加了这个utf8mb4的编码,mb4就是most bytes 4的意思,专门用来兼容四字节的Unicode;utf8mb4是utf8的超集,除了将编码转换为utf8mb4外不需要做其他转换;一般为了节省空间使用utf8就够了。
2.mysql支持的utf8编码最大字符长度为3字节可以存储大部分的汉字,如遇到4字节的宽字符就会插入异常了;任何不在基本多文本平面的unicode字符,都无法使用mysql的utf8字符集存储,包括Emoji表情,和很多不常用的汉字,以及任何新增的unicode字符。
3.因此,在8.0之后建议使用utf8mb4编码。
习题
创建数据库testdb,规定字符集为:utf8mb4字符序为:utf8mb4_general_ci
bash
mysql> create database testdb character set utf8mb4 collate utf8mb4_general_ci;
Query OK, 1 row affected (0.02 sec)