目录
一、登录并进入数据库
1、登录
mysql
是一个命令行客户端工具,用于与 MySQL 数据库管理系统进行交互。当你需要通过命令行登录到 MySQL 数据库时,可以使用以下格式的命令:
mysql -h [hostname] -P [port] -u [username] -p[password]
这里的参数解释如下:
-h [hostname]
:指定 MySQL 数据库服务器的主机名或 IP 地址。如果省略此参数,默认值是本地主机127.0.0.1
或localhost
。-P [port]
:指定 MySQL 数据库服务器监听的端口号。默认端口号通常是3306
。注意-P
是大写的 P。-u [username]
:指定用于登录数据库的用户名。-p[password]
:指定用户的密码。如果直接跟在-p
后面,则不包含空格,整个字符串会被视为密码;如果-p
和密码之间有空格,则会提示输入密码。
因此,命令 mysql -h 127.0.0.1 -P 3306 -u root -p
将尝试连接到运行在本地主机上的 MySQL 服务器,使用 root
用户名,并且会提示你输入密码。
示例
假设你想要登录到本地 MySQL 数据库,使用 root
用户,并且你的密码是 mysecretpassword
,则可以使用下面的命令:
mysql -h 127.0.0.1 -P 3306 -u root -pmysecretpassword
或者,如果你不想直接在命令行上显示密码,可以这样:
mysql -h 127.0.0.1 -P 3306 -u root -p
然后当执行上述命令后,系统会提示你输入密码:
Enter password:
2、USE
命令
在 MySQL 中,一旦你使用命令行客户端或其他数据库管理工具登录到了 MySQL 服务器,你就可以选择一个具体的数据库来开始执行 SQL 查询。要选择或“进入”一个数据库,你需要使用 USE
命令。
USE
命令的基本语法如下:
USE database_name;
其中 database_name
是你要选择的数据库的名称。执行完这个命令后,你所有的后续 SQL 查询都将在所选的数据库中执行。
示例
假设你有一个名为 mydatabase
的数据库,你可以这样选择它:
USE mydatabase;
如果你成功选择了数据库,MySQL 将不会返回任何输出,只会显示一条消息说 Database changed
,表示你当前正在使用的数据库已经被更改。
检查当前数据库
如果你想确认你当前正在使用的数据库是哪一个,可以使用以下命令:
SELECT DATABASE();
这将返回当前数据库的名称,如果没有选择任何数据库,则返回 NULL
。
注意事项
- 在选择数据库之前,确保你拥有足够的权限访问该数据库。如果你没有权限,MySQL 将会返回一个错误。
- 如果你尝试选择一个不存在的数据库,MySQL 也会返回一个错误。在使用
USE
命令之前,你可以先用SHOW DATABASES;
来列出所有可用的数据库,以确保你拼写正确。
二、库的操作
1、创建数据库语法
CREATE DATABASE [IF NOT EXISTS] db_name [create_specification [, create_specification] ...];
[IF NOT EXISTS]
:这是一个可选部分,用于确保如果数据库已经存在,不会报错。如果没有这个选项,尝试创建已存在的数据库会导致错误。db_name
:你打算创建的数据库的名称。create_specification
:一系列可选的规范,用于设定数据库的特定属性,包括字符集和校验规则。
create_specification 参数:
[DEFAULT] CHARACTER SET charset_name
:指定数据库使用的字符集。例如,CHARACTER SET utf8
将数据库的字符集设为 UTF-8。[DEFAULT] COLLATE collation_name
:指定数据库字符集的校验规则。例如,COLLATE utf8_general_ci
设定了一个不区分大小写的校验规则。- 创建数据库时,你可以选择是否指定字符集和校验规则。如果不指定,MySQL 将使用其默认设置。指定这些参数可以确保你的数据库能够正确处理和存储各种语言的文本数据,并按照预期的方式进行文本比较和排序。这对于国际化的应用尤其重要,可以避免由于字符集或校验规则不匹配导致的问题。
2、举例演示
创建一个默认字符集和校验规则的数据库
CREATE DATABASE db1;
- 当没有明确指定字符集和校验规则时,MySQL 使用其默认设置,通常是 UTF-8 (
utf8
) 和utf8_general_ci
。
创建一个使用UTF8字符集的数据库
CREATE DATABASE db2 CHARACTER SET utf8;
- 这条语句显式指定了数据库
db2
使用 UTF-8 字符集,但未指定校验规则,因此会使用默认的utf8_general_ci
。
创建一个使用UTF8字符集并带校对规则的数据库
CREATE DATABASE db3 CHARACTER SET utf8 COLLATE utf8_general_ci;
- 这里不仅指定了
db3
使用 UTF-8 字符集,还明确了校验规则为utf8_general_ci
,这意味着该数据库将不区分大小写地比较字符串。
3、退出
退出 MySQL 命令行客户端有几种方法,你可以根据自己的偏好选择:
-
使用
EXIT
命令:输入
EXIT
并按 Enter 键,可以直接退出 MySQL 命令行环境。mysql> EXIT Bye
-
使用
QUIT
命令:输入
QUIT
并按 Enter 键,同样可以退出 MySQL 命令行环境。mysql> QUIT Bye
-
使用 Ctrl + C:
连续按两次 Ctrl + C 组合键,可以中断当前正在执行的命令,并退出 MySQL 命令行环境。但通常这种方法用于中断正在执行的查询,而不作为常规的退出方式。
-
使用 Ctrl + D:
在 Unix/Linux 系统中,按一次 Ctrl + D 组合键可以退出 MySQL 命令行环境。
-
使用退出命令的缩写:
你也可以使用
EXIT
或QUIT
命令的缩写\q
或\x
来退出。mysql> \q Bye
mysql> \x Bye
无论你选择哪种方式,MySQL 命令行都会给出 "Bye" 的提示,表明你已经成功退出了命令行环境。在退出之前,任何未提交的事务将会被自动回滚,所以不用担心数据完整性问题。
三、字符集和校对规则
在创建数据库时,确实会涉及到两个与字符编码相关的概念:字符集(Character Set)和校对集(Collation)。这两个概念对确保数据正确存储和处理至关重要,尤其是在处理多语言或多字节字符时。
1、字符集(Character Set)
字符集定义了一组字符及其对应的二进制编码,用于表示文本数据。不同的字符集可以支持不同的字符范围和语言,例如 ASCII、UTF-8、GBK、BIG5 等。在数据库中,字符集决定了如何在内部存储和解释文本数据。
当创建数据库或表时,可以选择一个字符集作为存储数据的基础编码。例如,UTF-8 是一种常见的多字节编码,能够支持全球大多数语言的字符,因此在国际化应用中非常受欢迎。
2、校对集(Collation)
校对集是字符集的一个子集,它规定了字符集中的字符如何进行比较和排序。校对集不仅决定了字符的排序规则,还可能影响字符的大小写敏感性、重音符号处理、以及特殊字符的识别等。例如,对于相同的 UTF-8 字符集,可以有 utf8_general_ci
、utf8_unicode_ci
、utf8_bin
等不同的校对集,它们在字符比较和排序时的行为各不相同。
utf8_general_ci
:大小写不敏感,对重音符号不敏感。utf8_unicode_ci
:大小写不敏感,但对重音符号敏感。utf8_bin
:完全按照字节进行比较,大小写敏感,适用于二进制数据比较。
选择正确的字符集和校对集非常重要,原因如下:
- 数据完整性:确保所有字符都能正确存储和显示,避免因字符集不匹配导致的数据损坏或乱码。
- 数据一致性:在比较和排序数据时,使用合适的校对集可以确保结果符合预期,尤其是在处理多语言数据时。
- 性能:某些字符集和校对集可能对性能有影响,例如,多字节字符集在存储和处理时可能比单字节字符集慢。
总结
在创建数据库时,选择字符集和校对集是一项基础但重要的配置。字符集决定了数据如何存储,而校对集则决定了数据如何比较和排序。为了确保数据的正确存储和处理,应根据数据库的实际需求和数据特征,合理选择字符集和校对集。在大多数情况下,使用通用且支持广泛字符的 UTF-8 字符集,配合适合的校对集,可以满足大部分应用场景的需求。
3、操作命令
字符集和校验规则(Collation)在数据库设计和数据处理中扮演着至关重要的角色。它们影响着数据的存储方式和比较操作。
查看系统默认字符集以及校验规则
-
show variables like 'character_set_database';
这个命令用于显示当前数据库使用的字符集。character_set_database
变量指定了数据库层面的字符集,默认通常是utf8
或utf8mb4
。 -
show variables like 'collation_database';
这个命令用于显示当前数据库使用的校验规则。collation_database
变量决定了如何比较和排序字符,例如是否区分大小写。
查看数据库支持的字符集
show charset;
此命令列出MySQL服务器支持的所有字符集。