【MySQL】-- 库的操作

1. 查看数据库


1.1 语法

显示所有的数据库:

show databases;
  • databases是负数形式。
  • 大小写不敏感。在这里插入代码片
  • 分号是每天SQL语句的结尾。

在这里插入图片描述
一旦删除,可能MySQL就启动不起来了,因为MySQL启动之后会有一些数据在MySQL数据库里面,比如设置的用户密码。

其中上图中的6 rows in set 表示六行结果集的意思,其中set就是表示结果集的意思;(0.00 sec) 表示的是当前SQL语句的执行时间,0.00表示的是10ms(毫秒)之内。

2. 创建数据库


2.1 语法

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:表示自定义的数据库名
• {}⼤插号表⽰必须选
• | 表示任选其中⼀个
• []中括号表示是可选项
• CHARACTER SET:指定数据库采⽤的字符集编码
• COLLATE:指定数据库字符集的校验规则
• ENCRYPTION:数据库是否加密,MySQL 8.0.16中引⼊的新选项

2.2 示例


2.2.1 创建一个名为java114的数据库

mysql> create database java114;
Query OK, 1 row affected (0.01 sec)

2.2.2 创建数据库java114,如果数据库不存在则创建

mysql> create database if not exists java114;
Query OK, 1 row affected, 1 warning (0.00 sec)

2.2.3 查看警告信息

mysql> show warnings;
+-------+------+--------------------------------------------------+
| Level | Code | Message                                          |
+-------+------+--------------------------------------------------+
| Note  | 1007 | Can't create database 'java114'; database exists |
+-------+------+--------------------------------------------------+
1 row in set (0.00 sec)

提示:名为java114的数据库已存在。

不加if not exists,如果数据库存在,程序就会报错,程序就会停下来。建议将这条语句加上,防止整个SQL文件中的语句的运行。
在这里插入图片描述


在这里插入图片描述

3. 字符集编码和校验(排序)规则

字符集编码是为数据进行编码,然后保存。

校验规则也叫排序规则,指的是如何对数据进行排序。

3.1 查看数据库支持的字符集编码

1 show charset;

• MySQL8.0默认的字符集编码是 utf8mb4 ,MySQL5.7默认的字符集是 latin1

英文和数字使用一个字节保存;
在这里插入图片描述

中文和标点使用 不确定个字节保存。
在这里插入图片描述

在这里插入图片描述

3.2 查看数据库支持的排序规则

show collation;

• MySQL8.0默认的排序规则是 utf8mb4_0900_ai_ci , MySQL5.7默认排序规则是utf8mb4_general_ci。


一条完整规范的建库语句:create database if not exists java114 character set utf8mb4 collate utf8mb4_0900_ai_ci;

强烈建议在创建数据库的时候按照完整规范创建,来确保当前数据库不管在哪一台服务器上,它都是按照我规定的字符集和排序规则去创建一个新的数据库,而不去依赖对方服务器的配置。

3.3 不同的字符集与排序规则对数据库的影响

utf8mb4_0900_ai_ci 是MySQL8.0引⼊的新规则,在⽼版本中不能识别;
• utf8mb4 编码是对 Unicode 字符集的⼀种实现,⽤1到4个字节表⽰⼀个字符,可以表⽰世界上⼏乎所有的字符,⽽且更节少空间
• 0900 是基于 UCA 9.0.0算法,UCA是Unicode Collation Algorithm的缩写,内部算法的编号。
• ai是Accent-insensitive的缩写,表示口音不敏感
• ci是Case-insensitive的缩写,表示大小写不敏感
• as是Accent-sensitive的缩写,表示口音敏感
• cs是Case-sensitive的缩写,表示大小写敏感
• bin表⽰⼆进制

在学习完排序之后,可以通过⽰例观察不同排序规则对于⼤⼩写的影响

3.4 查看系统默认字符集和排序规则

# 查看默认字符集
mysql> show variables like '%character%';
+--------------------------+---------------------------------------------------------+
| Variable_name            | Value
                         |
+--------------------------+---------------------------------------------------------+
| character_set_client     | gbk
                         |
| character_set_connection | gbk
                         |
| character_set_database   | utf8mb4
                         |
| character_set_filesystem | binary
                         |
| character_set_results    | gbk                                                     |
| character_set_server     | utf8mb4
                         |
| character_set_system     | utf8mb3
                         |
| character_sets_dir       | C:\Program Files\MySQL\MySQL Server 8.0\share\charsets\ |
+--------------------------+---------------------------------------------------------+
8 rows in set, 1 warning (0.00 sec)
# 查看系统默认排序规则
mysql> show variables like '%collation%';
+-------------------------------+--------------------+
| Variable_name | Value |
+-------------------------------+--------------------+
| collation_connection | utf8mb4_0900_ai_ci |
| collation_database | utf8mb4_0900_ai_ci |
| collation_server | utf8mb4_0900_ai_ci |
| default_collation_for_utf8mb4 | utf8mb4_0900_ai_ci |
+-------------------------------+--------------------+
4 rows in set, 1 warning (0.00 sec)

在这里插入图片描述
在这里插入图片描述

4. 查看创建语句


4.1 语法

查看创建数据库的SQL语句:

1 show create database db_name;

4.2 示例

mysql> show create database java114;
+----------+-----------------------------------------------------------------------------------------------------------------------------------+
| Database | Create Database

                       |
+----------+-----------------------------------------------------------------------------------------------------------------------------------+
| java114  | CREATE DATABASE `java114` /*!40100 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci */ /*!80016 DEFAULT ENCRYPTION='N' */ |
+----------+-----------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

• /!40100 default… / 和/!80016 DEFAULT…/ 这个不是注释,表⽰当前mysql版本⼤于4.01和8.0.16时,分别执⾏对应的语句

5. 修改数据库


5.1 语法

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}
}

对数据库的修改主要是修改数据库的字符集,校验规则。


小技巧:选中要粘贴的内容–>鼠标右键–> 鼠标放到需要粘贴到的地方–> 鼠标右键

5.2 示例

• 将test+班级名的数据库字符集改成gbk

mysql> alter database test001 character set gbk;
Query OK, 1 row affected (0.01 sec)
mysql> show create database test001;
+----------+-------------------------------------------------------------------
-------------
| Database | Create Database 
 
+----------+-------------------------------------------------------------------
-------------
| java01 | CREATE DATABASE `test001` /*!40100 DEFAULT CHARACTER SET gbk */
/*!80016 DEFAULT ENCRYPTION='N' */ |
+----------+-------------------------------------------------------------------
-------------
1 row in set (0.00 sec)

6. 删除数据库


6.1 语法

DROP {DATABASE | SCHEMA} [IF EXISTS] db_name;

6.2 示例

mysql> drop database testdb;
Query OK, 0 rows affected (0.04 sec)

6.3 注意事项

• 删除数据库之后,数据库对应的⽬录及⽬录中的所有⽂件也会被删除。
• 删除数据库之后,使⽤show databases; 语句查看不到对应的数据库。
• 删除一个不存在的数据库,会报错误,后面的SQL语句会中断执行,推荐加上if exists条件。
• 删除数据库是⼀个非常非常非常危险操作,在公司中做项目千万不要删除数据库!!!
如果公司中有需要让我们执行drop操作,我们应该怎么做?
把领导拉过来一起做这个事,如果领导不来,最起码要找一个同事。

在服务器(一般是Linux系统)上没有回收站,删了就删了,删除本身这个事,并不是说删了就找不到了,删除的过程只是在原来的数据位置做了覆盖操作。

如果说要恢复数据,必须要用到专业的磁盘恢复工具,如果恢复工具也 没有办法恢复,那么就需要寄回厂商进行恢复。

数据库本身在运维的过程中,也会定期的做一些备份操作。
全量备份+增量备份=所有数据

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

_bxy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值