文章目录
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系统)上没有回收站,删了就删了,删除本身这个事,并不是说删了就找不到了,删除的过程只是在原来的数据位置做了覆盖操作。
如果说要恢复数据,必须要用到专业的磁盘恢复工具,如果恢复工具也 没有办法恢复,那么就需要寄回厂商进行恢复。
数据库本身在运维的过程中,也会定期的做一些备份操作。
全量备份+增量备份=所有数据