前言
Docker是一个开源的容器化管理平台,可以方便部署各种WEB/APP应用依赖环境,很多人用它来部署MySQL数据库管理。
安装Docker
在此之前需要安装Docker容器,这里不多说了,可以去菜鸟教程根据教程安装Docker
拉取MySQL镜像
部署好Docker之后要开始拉取MySQL的镜像文件,前往Docker输入以下命令:
docker pull mysql
这会从Docker拉取MySQL的镜像,可以使用以下命令查看已拉取的镜像列表
docker images
启动容器
在拉取完成之后,可以使用命令行启动MySQL的镜像容器
docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:latest
这这命令会在后台启动MySQL容器,并将其命名为“some-mysql”。此外,您需要设置MySQL的root密码,以便在后续的步骤中进行访问。
连接MySQL
启动容器后,需要连接至MySQL,可以使用docker命令连接MySQL
docker exec -it some-mysql mysql -p
此命令将连接到MySQL容器,并要求您输入root密码。输入您在步骤3中设置的密码即可登录MySQL。
开始使用Docker版MySQL
现在,您已经成功地使用Docker安装和启动了MySQL容器。您可以使用常规的MySQL命令进行数据库管理,因为Docker版MySQL和普通版基本一样,例如,您可以使用以下命令创建一个新的数据库:
CREATE DATABASE 数据库名
DDL(数据定义语言)学习
当我们想要创建一个新的MySQL表时,我们需要使用DDL(数据定义语言)来定义表的结构。DDL包括创建表,修改表和删除表等操作。
创建库
基本语法
在MySQL中,可以使用CREATE DATABASE
语句来创建一个新的数据库。它的基本语法如下:
CREATE DATABASE database_name;
其中,database_name是要创建的数据库的名称。
例如,要创建一个名为mydatabase的新数据库,可以使用以下查询:
CREATE DATABASE mydatabase;
需要注意的是,创建数据库的用户必须具有足够的权限。如果当前用户没有创建数据库的权限,可以使用以下查询来授权:
GRANT CREATE ON *.* TO 'user'@'localhost';
这个查询将授予user用户在本地主机上创建数据库的权限。
在创建数据库后,可以使用USE语句来选择要使用的数据库。例如,要使用mydatabase数据库,可以使用以下查询:
USE mydatabase;
这个查询将选择mydatabase数据库,并将其设置为当前数据库。在选择数据库后,可以使用其他SQL语句来创建表、插入数据、查询数据等。
命名
在MySQL中,数据库名必须遵循以下规则:
数据库名必须以字母开头,可以包含字母、数字和下划线。
数据库名不能超过64个字符。
数据库名区分大小写。
数据库名不能与MySQL保留关键字相同,例如SELECT、INSERT、UPDATE等。
需要注意的是,虽然MySQL允许使用特殊字符和空格作为数据库名,但这并不是一个好的做法,因为它可能会导致一些问题。为了避免这些问题,最好只使用字母、数字和下划线作为数据库名。
另外,建议在命名数据库时使用有意义的名称,以便更好地描述数据库的内容和用途。例如,如果数据库用于存储客户信息,可以将其命名为customers。这样做可以使数据库更易于管理和维护。
字符集
在MySQL中,字符集用于定义数据库中存储的字符集和排序规则。MySQL支持多种字符集,包括ASCII、UTF-8、GBK等。在创建数据库时,可以指定要使用的字符集。如果没有指定字符集,则使用默认字符集。
要查看MySQL中可用的字符集,可以使用以下查询:
SHOW CHARACTER SET;
要查看当前数据库的字符集,可以使用以下查询:
SELECT @@character_set_database;
要创建一个使用特定字符集的数据库,可以在CREATE DATABASE语句中指定字符集。例如,要创建一个使用UTF-8字符集的数据库,可以使用以下查询:
CREATE DATABASE mydatabase CHARACTER SET utf8;
排序规则
在MySQL中,排序规则用于定义字符串比较的方式。MySQL支持多种排序规则,包括二进制排序、不区分大小写排序、区分大小写排序等。在创建数据库时,可以指定要使用的排序规则。如果没有指定排序规则,则使用默认排序规则。
要查看MySQL中可用的排序规则,可以使用以下查询:
SHOW COLLATION;
使用以下命令查看当前数据库排序规则:
SELECT @collation_database;
要创建一个使用特定排序规则的数据库,可以在CREATE DATABASE语句中指定排序规则。例如,要创建一个使用不区分大小写排序的数据库,可以使用以下查询:
CREATE DATABASE mydatabase COLLATE utf8_general_ci;
创建表
基本语法
在MySQL中,用于创建表的关键字是CREATE TABLE。使用CREATE TABLE语句可以创建一个新的表,并指定表的名称、列名、数据类型、约束等信息。
以下是一个简单的CREATE TABLE语句示例:
CREATE TABLE mytable (
id INT,
name VARCHAR(50),
age INT
);
这个语句将创建一个名为mytable的新表,包含三个列:id、name和age。其中,id和age列的数据类型为整数,name列的数据类型为可变长度的字符串。
在CREATE TABLE语句中,还可以指定列的约束,如主键、唯一性约束、非空约束等。例如,要在id列上定义主键约束,可以使用以下语句:
CREATE TABLE mytable (
id INT PRIMARY KEY,
name VARCHAR(50),
age INT
);
这个语句将在id列上定义主键约束,保证表中每行数据的唯一性。
除了列的约束外,还可以在CREATE TABLE语句中指定表的字符集、排序规则等信息。例如,要创建一个使用UTF-8字符集和不区分大小写排序的表,可以使用以下语句:
CREATE TABLE mytable (
id INT,
name VARCHAR(50),
age INT
) CHARACTER SET utf8 COLLATE utf8_general_ci;
这个语句将创建一个使用UTF-8字符集和不区分大小写排序的新表。
需要注意的是,在创建表时,应根据实际情况选择适当的数据类型、约束、字符集和排序规则,以确保表的正确性和性能。
同时也可以使用AUTO_INCREMENT关键字来创建自增列。自增列是一种特殊的列,它的值会自动递增,每次插入新行时都会自动分配一个新的值。
以下是一个使用AUTO_INCREMENT关键字创建自增列的示例:
CREATE TABLE mytable (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(50),
age INT
);
这个语句将创建一个名为mytable的新表,包含三个列:id、name和age。其中,id列使用AUTO_INCREMENT关键字定义为自增列,并将其设置为主键。
在插入新行时,可以省略id列的值,MySQL会自动分配一个新的值。例如,要插入一行数据,可以使用以下语句:
INSERT INTO mytable (name, age) VALUES ('John', 30);
这个语句将插入一行数据,id列的值会自动递增。
需要注意的是,自增列只能用于整数类型的列,且每个表只能有一个自增列。在创建表时,应根据实际情况选择是否需要使用自增列。如果表中的数据不需要自动递增的唯一标识符,可以不使用自增列。
数据类型
在MySQL中,有多种数据类型可用于创建表中的列。以下是一些常用的MySQL数据类型:
INT或INTEGER:用于存储整数。
FLOAT或DOUBLE:用于存储浮点数。
DECIMAL:用于存储精确的小数。
VARCHAR:用于存储可变长度的字符串。
CHAR:用于存储固定长度的字符串。
TEXT:用于存储较长的文本数据。
DATE:用于存储日期。
TIME:用于存储时间。
DATETIME:用于存储日期和时间。
TIMESTAMP:用于存储时间戳。
BOOLEAN或BOOL:用于存储布尔值。
除了这些常用的数据类型外,MySQL还支持其他一些数据类型,如枚举、集合、二进制数据等。在创建表时,可以根据需要选择适当的数据类型。需要注意的是,不同的数据类型具有不同的存储要求和限制,因此应根据实际情况选择合适的数据类型。
索引
在MySQL中,索引是一种用于加速数据检索的数据结构。索引可以提高查询效率,减少查询所需的时间和资源。MySQL支持多种类型的索引,包括B-tree索引、哈希索引、全文索引等。
以下是一些常用的MySQL索引:
PRIMARY KEY:用于定义表的主键,可以保证表中每行数据的唯一性。
UNIQUE:用于定义唯一性约束,可以保证列中的值唯一。
INDEX:用于创建普通索引,可以加速查询。
FULLTEXT:用于创建全文索引,可以加速全文检索。
在创建表时,可以在列上定义索引。例如,要在id列上创建主键索引,可以使用以下查询:
CREATE TABLE mytable (
id INT PRIMARY KEY,
name VARCHAR(50)
);
要在name列上创建唯一性约束,可以使用以下查询:
CREATE TABLE mytable (
id INT,
name VARCHAR(50) UNIQUE
);
要在name列上创建普通索引,可以使用以下查询:
CREATE TABLE mytable (
id INT,
name VARCHAR(50),
INDEX name_index (name)
);
要在content列上创建全文索引,可以使用以下查询:
CREATE TABLE mytable (
id INT,
content TEXT,
FULLTEXT content_index (content)
);
需要注意的是,索引可以提高查询效率,但也会增加数据插入、更新和删除的时间和资源消耗。因此,在创建索引时,应根据实际情况选择适当的索引类型和列。
修改表
如果我们想要修改现有的表结构,我们可以使用ALTER TABLE语句。以下是一些常见的ALTER TABLE操作:
添加列
要在表中添加新列,我们可以使用以下语法:
ALTER TABLE users ADD COLUMN birthdate DATE;
在上面的示例中,我们向“users”表中添加了一个名为“birthdate”的列。
修改列
要修改现有列的定义,我们可以使用以下语法:
ALTER TABLE users MODIFY COLUMN email VARCHAR(200);
在上面的示例中,我们将“users”表中的“email”列长度从100修改为200。
删除列
要删除表中的列,我们可以使用以下语法:
ALTER TABLE users DROP COLUMN email;
在上面的示例中,我们从“users”表中删除了名为“email”的列。
删除表
如果我们想要删除表,我们可以使用以下语句:
DROP TABLE users;
在上面的示例中,我们删除了名为“users”的表。
总之,DDL是MySQL中重要的语言,用于定义和修改表结构。它使我们能够创建,修改和删除表,以及添加,修改和删除表中的列
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。