[ Mysql ] 库的操作

查看数据库

  1. 语法

    复制代码
    show databases;
    
    show schemas;

    show schemas; 和 show databases; 作用完全一样

创建数据库


语法

复制代码
  CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name 
  [DEFAULT CHARACTER SET [=] charset_name]
  [DEFAULT COLLATE [=] collation_name]
  [ENCRYPTION [=] {'Y' | 'N'}];
  • 符号说明:
    1){}:二选一,DATABASE 和 SCHEMA 效果完全一样
    2)|:或者,任选其一
    3)[]:可选,可写可不写

关键字解释

  • IF NOT EXISTS

    如果这个数据库不存在才创建;数据库已经存在时不会报错,只会产生警告

    不加这个,如果库已存在,直接报错

  • CHARACTER SET:指定数据库字符集

  • COLLATE:字符集排序 / 校验规则

  • ENCRYPTION:MySQL8.0 新增,Y开启加密,N不加密

例子

  • 创建数据库

    复制代码
    create database test001;

    直接创建 test001,如果 test001 已经存在,执行会报错

  • 不存在才创建

    复制代码
    create database if not exists testdb;

    不会报错,只会出现警告

    查看警告:

    复制代码
    show warnings;
  • 创建数据库同时指定字符集

    复制代码
    create database if not exists testdb default character set utf8mb4;

字符集 和 排序(校验)规则


查看支持的字符集

复制代码
  show charset;
  • MySQL8.0 默认字符集:utf8mb4
    MySQL5.7 默认字符集:latin1

查看支持的排序规则

复制代码
  show collation;
  • MySQL8.0 默认排序规则:utf8mb4_0900_ai_ci
    MySQL5.7 默认排序规则:utf8mb4_general_ci

排序规则后缀含义

  • ai = Accent-insensitive:口音不敏感,重音字符视作相同

  • as = Accent-sensitive:口音敏感

  • ci = Case-insensitive:大小写不敏感 (A和a相等)

  • cs = Case-sensitive:大小写敏感 (A和a不相等)

  • bin:二进制比较,严格区分大小写

  • 0900:基于 UCA 9.0.0 排序算法(Unicode Collation Algorithm)

  • 例子
    utf8mb4_0900_ai_ci:utf8mb4 字符集,UCA9.0,口音不敏感,大小写不敏感


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

复制代码
  -- 查看所有字符集相关系统变量
  show variables like '%character%';

  -- 查看所有排序规则相关系统变量
  show variables like '%collation%';
  • 重点变量:
    1)haracter_set_server:服务器默认字符集
    2)character_set_database:当前数据库字符集
    3)collation_server:服务器默认排序规则
    4)collation_database:当前库排序规则

创建数据库时指定字符集和排序规则

复制代码
  create database if not exists java01 
  character set utf8mb4 
  collate utf8mb4_0900_ai_ci;
  • 含义:不存在则创建 java01 库,字符集 utf8mb4,排序规则 utf8mb4_0900_ai_ci
    数据库创建后,会在数据目录生成同名文件夹,存放库内所有数据

查看创建语句


语法

复制代码
  show create database 库名;
  -- 查看表的创建语句配套语法
  show create table 表名;

示例

复制代码
  show create database java01;

修改数据库


语法

复制代码
  ALTER {DATABASE | SCHEMA} [库名]
  alter_option ...;

DATABASE 和 SCHEMA 等价,写哪个都可以

  • alter_option 可选操作:
    1)DEFAULT CHARACTER SET = 字符集名:修改数据库默认字符集
    2)[DEFAULT] COLLATE [=] 排序规则名:修改数据库默认排序规则
    3)[DEFAULT] ENCRYPTION [=] {'Y' | 'N'}:开启 / 关闭加密
    4)READ ONLY [=] {0 | 1}:设置数据库只读(1 只读,0 可读写)
    重点:修改库的字符集,只会影响之后新建的表;
    库里已经存在的表,字符集不会自动改变

示例

复制代码
  -- 将 test001 数据库字符集修改为gbk
  alter database test001 character set gbk;

修改完成后,用 show create database test001; 验证

  • 同时修改字符集 + 排序规则写法:

    复制代码
    alter database test001 character set utf8mb4 collate utf8mb4_0900_ai_ci;

删除数据库


语法

复制代码
  DROP {DATABASE | SCHEMA} [IF EXISTS] db_name;

1)DATABASE 和 SCHEMA 在 MySQL 里效果完全一样,都代表数据库

2)IF EXISTS:可选,加上之后,当数据库不存在时不会报错,

只会给出警告,防止语句报错中断脚本

3)db_name:要删除的数据库名字

示例

  1. 两种写法

    复制代码
    DROP DATABASE IF EXISTS testdb;
    
    -- 删除名为 testdb 的数据库
    drop database testdb;
  2. 注意事项
    1)删除数据库会把库里面所有表、所有数据全部清除 ,
    生产环境谨慎执行,删除前务必备份数据
    2)底层:MySQL 会删除这个数据库对应的操作系统目录以及目录下全部文件
    3)删除完成后,执行 show databases;,就看不到这个数据库了

相关推荐
程序员塔塔喵37 分钟前
【MySQL篇|第十而二篇】深层次讲解MVCC机制
mysql·mvcc
一技安身1 小时前
MySQL 8.4.13 LTS 通用二进制包(Linux免安装版)完整教程
linux·mysql·adb
代码派1 小时前
业务不停机迁移 MySQL 到 TiDB,NineData 数据增量同步实操演示
数据库·mysql·tidb·ninedata·无停机迁移·增量迁移·全量迁移
我不会起名字3221 小时前
MySQL 8.0 迁移后 SQL 变慢:执行计划里 3 类被忽略的成本差异
mysql·explain·执行计划·索引下推·成本模型
Decay__8 小时前
05_MySQL 常用 SQL 大全 —— 诊断、管理、优化辅助 SQL 与三大系统库速查
运维·数据库·sql·mysql·架构
Decay__14 小时前
04_MySQL DBA 日常运维手册 —— 会话管理、锁与阻塞、事务监控、慢查询与日志巡检
运维·数据库·sql·mysql·架构
后台模板学习21 小时前
MongoDB 与 MySQL 在 IM 即时聊天场景中该
数据库·mysql·mongodb
IT大白鼠1 天前
渗透测试实战从靶场搭建到渗透流程——第 8 篇 · 服务型靶标(上):MySQL 双版本写文件链
数据库·mysql·渗透测试
少年的范儿1 天前
Windows 安装 MySQL 8.4 教程(ZIP 解压版):配置 my.ini、初始化数据库与启动服务
数据库·windows·mysql
神仙别闹1 天前
基于Python+MySQL实现(Web)个人博客系统
python·mysql·php