2.Mysql相关概念 及 数据库操作

零:补充概念

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)
相关推荐
Summer_Uncle18 小时前
【QT学习】qt项目使用MySQL数据库
数据库·qt·学习
施嘉伟18 小时前
Oracle 10046 Trace 硬核指南:SQL 慢在哪,从底层拉出来
数据库·sql·oracle
_ziva_19 小时前
MAC-SQL 多智能体协作框架解析
数据库·oracle
最贪吃的虎19 小时前
Redis其实并不是线程安全的
java·开发语言·数据库·redis·后端·缓存·lua
代码不停19 小时前
MySQL事务
android·数据库·mysql
山峰哥19 小时前
数据库工程与SQL调优实战:从原理到案例的深度解析
java·数据库·sql·oracle·性能优化·编辑器
OpsEye19 小时前
Redis 内存碎片的隐形消耗——如何用 memory purge 命令释放空间?
运维·网络·数据库·redis·缓存·内存·监控
施嘉伟19 小时前
一次典型的 SQL 性能问题排查:临时表导致的隐藏性能陷阱
数据库·sql
IT_Octopus19 小时前
java 实体属性 Map 解决 mybatis-plus wrapper selectone 查mysql json类型为null 问题
java·mysql·mybatis