MySQL快查
因为在日常工作学习中经常忘记mysql的一些语句、关键字、操作等内容,所以最近抽取时间写了以下关于mysql相关内容。相当于一本字典吧
重置mysql密码
数据类型
运算符
常用函数
数据完整性
本文
对表本身的操作
对表中数据的操作
子查询
多表连接
索引
视图
预处理SQL语句
自定义函数与存储过程
在MySQL中编程
查看数据库
官方解释schema是database的近义词
查看全部数据库
# 查看全部数据库
SHOW {
DATABASES | SCHEMAS}
[LIKE 'pattern']
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
# like 子句用来匹配数据库名
mysql> show databases like "%schema";
+--------------------+
| Database (%schema) |
+--------------------+
| information_schema |
| performance_schema |
+--------------------+
2 rows in set (0.00 sec)
查看某个数据库的详情
# 查看某个数据库的详情
SHOW CREATE {
DATABASE | SCHEMA} [IF NOT EXISTS] <数据库名>
mysql> show create database test;
+----------+--------------------------------------------------------------------------------------------------+
| Database | Create Database |
+----------+--------------------------------------------------------------------------------------------------+
| test | CREATE DATABASE `test` /*!40100 DEFAULT CHARACTER SET utf8 */ /*!80016 DEFAULT ENCRYPTION='N' */ |
+----------+--------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
选择数据库
use <数据库名>;
# 例如
use mysql;
创建数据库
charset 是 character set 的缩写
CREATE {
DATABASE | SCHEMA} [IF NOT EXISTS] <数据库名>
[create_option] ...
create_option: [DEFAULT] {
CHARACTER SET [=] charset_name
| COLLATE [=] collation_name
| ENCRYPTION [=] {
'Y' | 'N'}
}
- IF NOT EXISTS 不存在跟<数据库名>重名的数据库时才创建
- CHARACTER SET [=] charset_name 指定该数据库使用的默认字符集
- COLLATE [=] collation_name 指定字符集的校对规则
- ENCRYPTION 加密选项 8.0.16版本引进,该加密由数据库中的数据表继承。Y开启加密,N关闭
create database if not exists test charset utf8;
mysql> create database if not exists test charset utf8;
Query OK, 1 row affected, 1 warning (0.02 sec)
删除数据库
DROP {
DATABASE | SCHEMA} [IF EXISTS] <数据库名>
drop database if exists test;
mysql> drop database if exists test;
Query OK, 0 rows affected (0.02 sec)
# 如果删除不存在的数据库
# 有if exists时
mysql> drop database if exists test;
Query OK, 0 rows affected, 1 warning (0.01 sec)
# 没if exists时
mysql> drop database test;
ERROR 1008 (HY000): Can't drop database 'test'; database doesn't exist
修改数据库
ALTER {
DATABASE | SCHEMA} [<数据库名>]
alter_option ...
alter_option: {
[DEFAULT] CHARACTER SET [=] charset_name
| [DEFAULT] COLLATE [=] collation_name
| [DEFAULT] ENCRYPTION [=] {
'Y' | 'N'}
| READ ONLY [=] {
DEFAULT | 0 | 1}
}
- character set、collate和encryption创建数据库介绍过了
- read only 只读选项 MySQL 8.0.22引进,DEFAULT和0表示不是只读,1表示只读
# 修改test表的默认字符集
# 原来的test
mysql> show create database test;
+----------+--------------------------------------------------------------------------------------------------+
| Database | Create Database |
+----------+--------------------------------------------------------------------------------------------------+
| test | CREATE DATABASE `test` /*!40100 DEFAULT CHARACTER SET utf8 */ /*!80016 DEFAULT ENCRYPTION='N' */ |
+----------+--------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
# 可以看出是utf8
# 现在改成gbk
mysql> alter schema test charset gbk;
Query OK, 1 row affected (0.02 sec)
# 再看看test
mysql> show create database test;
+----------+-------------------------------------------------------------------------------------------------+
| Database | Create Database |
+----------+-------------------------------------------------------------------------------------------------+
| test | CREATE DATABASE `test` /*!40100 DEFAULT CHARACTER SET gbk */ /*!80016 DEFAULT ENCRYPTION='N' */ |
+----------+-------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
# 已经变成了gbk