数据定义语言DDL

创建数据库  

CREATE DATABASE [IF NOT EXISTS] <数据库名> [[DEFAULT] CHARACTER SET <字符集名>] [[DEFAULT] COLLATE <校对规则名>];

[ ]中的内容是可选的。语法说明如下:

  • <数据库名>:创建数据库的名称。MySQL 的数据存储区将以目录方式表示 MySQL 数据库,因此数据库名称必须符合操作系统的文件夹命名规则,注意在 MySQL 中不区分大小写。

  • IF NOT EXISTS:在创建数据库之前进行判断,只有该数据库目前尚不存在时才能执行操作。此选项可以用来避免数据库已经存在而重复创建的错误。

  • [DEFAULT] CHARACTER SET:指定数据库的默认字符集。

  • [DEFAULT] COLLATE:指定字符集的默认校对规则。

MySQL 的字符集(CHARACTER)和校对规则(COLLATION)两个不同的概念:字符集是用来定义 MySQL 存储字符串的方式,校对规则定义了比较字符串的方式,解决排序和字符分组的问题。

为防止字符混乱的情况发生,MySQL 有时需要在创建数据库时明确指定字符集;在中国大陆地区,常用的字符集有 utf8 和 gbk。

  • utf8 能够存储全球的所有字符,在任何国家都可以使用,默认的校对规则为 utf8_general_ci,对于中文可以使用 utf8_general_ci。

  • gbk 只能存储汉语涉及到的字符,不具有全球通用性,默认的校对规则为 gbk_chinese_ci。

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| test               |
+--------------------+
4 rows in set (0.00 sec)

mysql> create database yhq;
Query OK, 1 row affected (0.00 sec)

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| test               |
| yhq                |
+--------------------+
5 rows in set (0.00 sec)

mysql> create database yhq;
ERROR 1007 (HY000): Can't create database 'yhq'; database exists
mysql> create database if not exists yhq;
Query OK, 1 row affected, 1 warning (0.00 sec)

显示数据库

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| test               |
| yhq                |
+--------------------+
5 rows in set (0.00 sec)

mysql> show databases like 'y_';   #占位符
Empty set (0.00 sec)

mysql> show databases like 'y__';
+----------------+
| Database (y__) |
+----------------+
| yhq            |
+----------------+
1 row in set (0.00 sec)

mysql> show databases like 'y%';
+---------------+
| Database (y%) |
+---------------+
| yhq           |
+---------------+
1 row in set (0.00 sec)

mysql> show databases like 'yhq';
+----------------+
| Database (yhq) |
+----------------+
| yhq            |
+----------------+
1 row in set (0.00 sec)

查看当前数据库

mysql> use yhq;
Database changed
mysql> select database();
+------------+
| database() |
+------------+
| yhq        |
+------------+
1 row in set (0.00 sec)

修改数据库

ALTER DATABASE [数据库名] { [ DEFAULT ] CHARACTER SET <字符集名> |[ DEFAULT ] COLLATE <校对规则名>}

  • ALTER DATABASE 用于更改数据库的全局特性。这些特性存储在数据库目录的 db.opt 文件中。

  • 使用 ALTER DATABASE 需要获得数据库 ALTER 权限。

  • 数据库名称可以忽略,此时语句对应于默认数据库。

  • CHARACTER SET 子句用于更改默认的数据库字符集。

删除数据库

DROP DATABASE [ IF EXISTS ] <数据库名>

  • <数据库名>:指定要删除的数据库名。

  • IF EXISTS:用于防止当数据库不存在时发生错误。

  • DROP DATABASE:删除数据库中的所有表格并同时删除数据库。使用此语句时要非常小心,以免错误删除。如果要使用 DROP DATABASE,需要获得数据库 DROP 权限。

注意:MySQL 安装后,系统会自动创建名为 information_schema 和 mysql 的两个系统数据库,系统数据库存放一些和数据库相关的信息,如果删除了这两个数据库,MySQL 将不能正常工作。

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| qhh                |
| test               |
| yhq                |
+--------------------+
6 rows in set (0.00 sec)

mysql> drop database qhh;
Query OK, 0 rows affected (0.00 sec)
mysql
> drop database qhh; ERROR 1008 (HY000): Can't drop database 'qhh'; database doesn't exist mysql> drop database if exists qhh; Query OK, 0 rows affected, 1 warning (0.00 sec)

选择数据库

USE <数据库名>

该语句可以通知 MySQL 把<数据库名>所指示的数据库作为当前数据库。该数据库保持为默认数据库,直到语段的结尾,或者直到遇见一个不同的 USE 语句。

只有使用 USE 语句来指定某个数据库作为当前数据库之后,才能对该数据库及其存储的数据对象执行操作。

mysql> use yhq;
Database changed

猜你喜欢

转载自www.cnblogs.com/yhq-qhh/p/11304208.html