[ 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;,就看不到这个数据库了

相关推荐
小米里的大麦1 小时前
16 MySQL 事务
数据库·mysql
Titan20242 小时前
MySQL访问个人学习笔记
笔记·学习·mysql
for_ever_love__2 小时前
MySQL 全文索引实战:FULLTEXT、ngram 中文分词与 MATCH AGAINST 到底该怎么用
java·python·mysql·全文检索·分词·索引·ngram
for_ever_love__4 小时前
MySQL 高频面试题 30 问:索引、事务、锁、日志、主从与分库分表(MySQL 8.0 版)
java·数据库·spring boot·mysql·spring cloud·面试·总结
java1234_小锋6 小时前
【技术专题】Mysql8 数据库 - Mysql8 触发器
数据库·mysql·mysql8
雨落在了我的手上8 小时前
MySQL数据库基础(6):增删改查操作(1)
数据库·mysql
ao-weilai9 小时前
MySQL数据库:用户管理
数据库·mysql·adb
ao-weilai10 小时前
MySQL数据库:C语言连接MySQL教程
c语言·数据库·mysql
SatanII10 小时前
MySQL 数据库学习总结|理论 + SQL 实训完整笔记
数据库·学习·mysql