数据表的操作

罗大富 BigRich大约 3 分钟MySQL数据库

了解完 MySQL 中的数据类型之后,我们就可以对数据库中的表和数据进行操作了。在 MySQL 中,数据表操作是对数据库中数据表的管理和维护。常见的数据表操作包括创建表、修改表结构、删除表、备份表等。下面将介绍一些常用的数据表操作,并提供示例练习。

我们继续将上节课最后一个命令。

注意

在使用表操作的时候,我们需要先选择数据库。这里,我提前创建了名为 mysql_practice 的数据库。

  1. 创建表:使用 CREATE TABLE 命令可以创建新的数据表。语法如下:
CREATE TABLE table_name (
    列名 数据类型 [约束],
    列名 数据类型 [约束],
    ...
);

比如,我们可以创建一个名为 students 的表,包含学生的 ID。姓名。年龄和成绩。

CREATE TABLE students (
    id INT,
    name VARCHAR(50),
    age INT,
    score FLOAT
);

我们接着使用 show tables 命令,就可以看到当前数据库中多了一个 student 的表。

mysql> CREATE TABLE students (
    -> id INT,
    -> name varchar(50),
    -> age int,
    -> score FLOAT
    -> );
Query OK, 0 rows affected (0.03 sec)

mysql> show tables
    -> ;
+----------------+
| Tables_in_test |
+----------------+
| students       |
+----------------+
1 row in set (0.00 sec)
  1. 查看表的列信息:使用 DESCRIBE 或者 SHOW COLUMNS FROM 表名 可以查看表结构信息的方法。它可以列出指定表中的所有列名、数据类型、键类型、默认值等详细信息,示例:
mysql> describe students;
+-------+-------------+------+-----+---------+-------+
| Field | Type        | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| id    | int(11)     | YES  |     | NULL    |       |
| name  | varchar(50) | YES  |     | NULL    |       |
| age   | int(11)     | YES  |     | NULL    |       |
| score | float       | YES  |     | NULL    |       |
+-------+-------------+------+-----+---------+-------+
4 rows in set (0.01 sec)

mysql> show columns from students;
+-------+-------------+------+-----+---------+-------+
| Field | Type        | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| id    | int(11)     | YES  |     | NULL    |       |
| name  | varchar(50) | YES  |     | NULL    |       |
| age   | int(11)     | YES  |     | NULL    |       |
| score | float       | YES  |     | NULL    |       |
+-------+-------------+------+-----+---------+-------+
4 rows in set (0.00 sec)
  1. 修改表结构:使用 ALTER TABLE 命令可以修改现有的数据表结构,如添加列、修改列名、修改列数据类型等。语法如下:
ALTER TABLE 表名 ADD COLUMN 列名 数据类型 [约束];

示例练习:向上述的 students 数据表中添加一个新的字段 gender 来记录学生的性别,使用布尔类型表示,男生是 TRUE,女生是 FALSE。

ALTER TABLE students ADD COLUMN gender BOOL;

接着查看表的列信息是否发生变化,

mysql> ALTER TABLE students ADD COLUMN gender BOOL;
Query OK, 0 rows affected (0.03 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> describe students;
+--------+-------------+------+-----+---------+-------+
| Field  | Type        | Null | Key | Default | Extra |
+--------+-------------+------+-----+---------+-------+
| id     | int(11)     | YES  |     | NULL    |       |
| name   | varchar(50) | YES  |     | NULL    |       |
| age    | int(11)     | YES  |     | NULL    |       |
| score  | float       | YES  |     | NULL    |       |
| gender | tinyint(1)  | YES  |     | NULL    |       |
+--------+-------------+------+-----+---------+-------+
5 rows in set (0.00 sec)
  1. 复制表:使用 CREATE TABLE ... AS 命令可以复制现有的数据表并创建一个新表。语法如下:
CREATE TABLE 新表名 AS SELECT * FROM 旧表名;

示例练习:复制 students 数据表并创建一个名为 students_copy 的新表。

CREATE TABLE students_copy AS SELECT * FROM students;

在命令行中查看表的信息。

mysql> CREATE TABLE students_copy AS SELECT * FROM students;
Query OK, 0 rows affected (0.25 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> show tables;
+----------------+
| Tables_in_test |
+----------------+
| students       |
| students_copy  |
+----------------+
2 rows in set (0.00 sec)
  1. 重命名表:使用 RENAME TABLE 命令可以修改数据表的名称。语法如下:
RENAME TABLE 旧表名 TO 新表名;

示例练习:将之前创建的 students 数据表重命名为 new_students

RENAME TABLE students_copy TO new_students;

在命令行中查看表的信息。

mysql> RENAME TABLE students_copy TO new_students;
Query OK, 0 rows affected (0.01 sec)

mysql> show tables;
+----------------+
| Tables_in_test |
+----------------+
| new_students   |
| students       |
+----------------+
2 rows in set (0.00 sec)
  1. 删除表:使用 DROP TABLE 命令可以删除已经存在的数据表。请小心使用此命令,删除表将丢失其中的所有数据。语法如下:
DROP TABLE 表名;

比如,我们可以删除掉之前复制并重命名的 new_students 数据表。

DROP TABLE new_students;

接着查看该数据库中的表信息,检查 new_students 表是否存在。

mysql> drop table new_students;
Query OK, 0 rows affected (0.01 sec)

mysql> show tables;
+----------------+
| Tables_in_test |
+----------------+
| students   |
+----------------+
1 row in set (0.00 sec)
上次编辑于:
贡献者: Luo