### 3.3.1 创建和选择数据库
如果管理员在设置权限时为你创建了数据库, 你可以开始使用它. 否则, 你需要自己创建:
```sql
mysql> CREATE DATABASE menagerie;
```
在 Unix 下, 数据库名称区分大小写(不像 SQL 关键字), 因此必须始终将数据库成为 `menagerie`, 而不是 `Menagerie`, `MENAGERIE`, 或其它变体. 对于表名也是如此. (在 Windows 下, 此限制并不适用, 尽管在给定的查询中必须使用相同字母大小写的数据库和表. 然而, 由于各种原因, 建议的最佳实践始终使用创建数据库时使用相同大小写字幕.)
> **注意**
>
> 如果你在创建数据库时出现此类错误: `ERROR 1044 (42000): Access denied for user 'micah'@'localhost' to database 'menagerie'`, 这意味着您的用户账户没有执行此操作所需的权限. 请与管理员你讨论或者参阅 [Section 6.2, “访问控制和账户管理”](https://dev.mysql.com/doc/refman/8.0/en/access-control.html).
创建数据库时并没有选择它; 你必须显式的这样做. 要使 menagerie 成为当前数据库, 使用以下语句:
```sql
mysql> USE menagerie
Database changed
```
数据库只需要创建一次, 但你必须在每次开始 [mysql](mysql.md) 会话时选择它. 你可以通过发出 [`USE`](https://dev.mysql.com/doc/refman/8.0/en/use.html) 语句来实现, 如示例所示. 或者, 你可以在调用 [mysql](mysql.md) 时在命令行上选择数据库. 只需要在你可能需要提供的任何连接参数后指定其名称. 例如:
```sql
shell> mysql -h host -u user -p menagerie
Enter password: ********
```
> **[danger] 重要**
>
> 刚才显示的命令中 `menagerie` ***不***是你的密码. 如果希望在命令行的 `-p` 选项之后提供密码, 则必须在不使用空格的情况下提供(例如, 是 `-ppassword`, 而不是 `-p password`). 然而, 不建议将密码放在命令行上, 因为这样做会让登录到此机器上的其它用户窥探密码.
> **[warning] 注意**
>
> 你可以随时使用 [`SELECT`](https://dev.mysql.com/doc/refman/8.0/en/select.html) [`DATABASE()`](https://dev.mysql.com/doc/refman/8.0/en/information-functions.html#function_database) 查看当前选择了哪个数据库.
- 简介
- 前言和法律条款
- 安装和更新 MySQL
- 在 Linux 上安装 MySQL
- 在 Linux 上使用 APT 库安装 MySQL
- 在 Linux 上使用 Docker 部署 MySQL
- 使用 Docker 部署 MySQL 服务器的基本步骤
- 使用 Docker 部署 MySQL 服务器的更多主题
- 教程
- 连接到服务器和从服务器断开
- 输入查询
- 创建和使用数据库
- 创建和选择数据库
- 创建表
- 将数据加载到表中
- 从表中检索数据
- 选择所有数据
- 选择特定行
- 选择指定列
- 行排序
- 日期计算
- 处理 NULL 值
- 模式匹配
- 计算行数
- 使用多个表
- 获取数据库和表的信息
- 在批处理模式使用 mysql
- 常见查询示例
- 列的最大值
- 包含某一行最大值的记录
- 每组中列的最大值
- 拥有某个字段的组间最大值的行
- 使用用户自定义变量
- 使用外键
- 两个键上搜索
- 计算每日访问量
- 使用 AUTO_INCREMENT
- 在 Apache 中使用 MySQL
- MySQL 程序
- MySQL 客户端程序
- mysql — MySQL 命令行客户端
- 优化
- 优化概述
- 优化 SQL 语句
- 优化和索引
- 优化数据库结构
- 优化 InnoDB 表
- 优化 MyISAM 表
- 优化 MEMORY 表
- 理解查询执行计划
- 控制查询优化器
- 缓冲和缓存
- 优化锁操作
- 优化 MySQL 服务器
- 测量性能 (Benchmarking)
- 检查线程信息