创建数据库
创建数据库的基本语法如下图,我们 对比这下图中的编号一一进行描述:
CREATE {DATABASE | SCHEMA}(1) [IF NOT EXISTS](2) db_name [create_specification](3规范)...
create_specification:
[DEFAULT] CHARACTER SET [=] charset_name(4) | [DEFAULT] COLLATE [=] collation_name(5)
- 在其他关系型数据库中,database与schema是有区别的,但是在mysql5.0.2以后,我们在创建数据库时可以不加区分的使用database和schema,我们可以将
create schema
理解为create database
的代名词 if not exists
表示在对应的数据库不存在的时候才会创建,if not exists
被中括号括起来,表示此项为可选,建议在sql脚本中使用create命令创建数据库时加入此项,以免对应名称的数据库已经存在导致sql脚本终止.create_specification
表示我们可以在创建数据库时指定对应的数据库规范,规范具体见4和5.创建数据库时指定数据库的字符集: 使用
character set
对应字符集名称即可指定使用什么字符集.使用default
关键字,那么这个数据库中创建的所有表默认都会继承这个数据库的字符集,defalut
为可选选项.如果不知道存在哪些字符集,可以使用
show character set;
命令查看所有可用字符集.针对数据库有数据库级别的字符集,针对表有表级别的字符集,针对客户端与服务端一次会话,又有会话级别的连接字符集,当我们使用
status
命令时,可以看到当前连接、客户端、数据库、以及数据库级别的字符集的值,如果我们在创建数据库的时候没有指定数据库的字符集,那么数据库默认继承服务器级别的字符集.我们可以在创建数据库时指定数据库的排序规则,同一种字符集下可能有多种排序规则,但是一种排序规则只能对应于一种字符集.也就是说,当你指定了一种排序规则,则不用在指定对应的字符集,因为这种排序规则肯定是针对某个字符集制定的排序规则,所以如果给定了排序规则,则不要同时指明字符集,每一个字符集都有默认的排序规则,你可以只指定字符集,不指定排序规则,代表使用字符集默认的排序规则,使用
show collation;
命令可以查看所有可用的排序方式,以及排序方式对应的字符集,default
为可选指令,作用与4中的default的作用相同.
语句示例:
- 创建名为testdb的数据库
create database testdb;
- 如果名为testdb的数据库不存在,则创建之.
create database if not exists testdb;
- 如果名为testdb的数据库不存在,则创建之,并且设置其字符集为utf16;
create database if not exists testdb default character set utf16;
查看数据库
- 列出所有已经存在的数据库,查看所有数据库:
show databases;
- 列出创建对应数据库的sql语句:
show create database testdb;
- 查看可用的字符集的命令:
show character set;
- 查看排序方式的命令
show collation
- 查看当前数据库与当前连接的概要信息:
mysql> use mysql
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql> status
--------------
mysql Ver 14.14 Distrib 5.7.21, for Linux (x86_64) using EditLine wrapper
Connection id: 31892(1)
Current database: mysql(2)
Current user: root@localhost (3)
SSL: Not in use (4)
Current pager: stdout
Using outfile: ''
Using delimiter: ; (5)
Server version: 5.7.21-0ubuntu0.16.04.1 (Ubuntu) (6)
Protocol version: 10 (7)
Connection: Localhost via UNIX socket (8)
Server characterset: latin1 (9)
Db characterset: latin1 (10)
Client characterset: utf8 (11)
Conn. characterset: utf8 (12)
UNIX socket: /var/run/mysqld/mysqld.sock (13)
Uptime: 61 days 17 hours 46 min 14 sec (14)
Threads: 1 Questions: 1618253 Slow queries: 0 Opens: 478 Flush tables: 1 Open tables: 326 Queries per second avg: 0.303
--------------
- 当前链接的id号
- 当前选择的使用的数据库
- 当前链接的登录用户
- 是否使用了
ssl
- 当前会话的行终结符是分号
- 当前mysql服务器的版本号
- 协议版本
- 使用的链接类型,通过本机的套接字文件进行连接
- 服务器使用的字符类型
- 当前数据库使用的字符类型
- 当前mysql客户端使用的字符类型
- 当前链接使用的字符类型
- 套接字文件路径
- mysql数据库的启动时长
修改数据库
修改数据库的基本语法如下:
ALTER {DATABASE | SCHEMA} [db_name] alter_specification...
alter_specification:
[DEFAULT] CHARACTER SET [=] charset_name | [DEFAULT] COLLATE [=] collation_name
修改数据库无非就是修改数据库的字符串,或者修改字符集的排序规则,字符集与排序规则的概念已经在创建数据库的命令中描述过,此处不再赘述,但是需要注意的是,修改字符集与修改排序规则是”二选一”的,原因在创建数据库的命令中同样描述过,所以直接给出示例语句如下.
- 修改数据库的字符集.
使用如下语句查看字符集
show variables like 'character%';
- 如果字符集与我们期望的字符集不相符,则使用如下语句修改数据库字符集.
alter database testdb character set utf8;
- 修改数据库的字符集,并设置为默认字符集,数据库中的表都会继承此字符集.
alter database testdb default character set utf8;
删除数据库
删除数据库的基本语法如下,注意,删除操作无法恢复.
DROP {DATABASE | SCHEMA} [IF EXISTS] db_name
示例语句
drop database if exists testdb;
评论前必须登录!
注册