版本比较

标识

  • 该行被添加。
  • 该行被删除。
  • 格式已经改变。

MySQL实例结构

  • 一个MySQL实例对应一个MySQL进程和端口号
  • 一个My实例对应一个管理员用户root
  • 每个MySQL实例管理一个或多个数据库
  • 每个数据库包含若干个表
  • 每个表包含由行构成的数据

数据库基本操作

查看数据库

代码块
mysql> SHOW DATABASES;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
4 rows in set (0.03 sec)
提示

上面四个数据库是MySQL的内建数据库,是供MySQL内部使用的,在MySQL安装完成后即会由系统创建。

创建数据库

代码块
mysql> CREATE DATABASE IF NOT EXISTS testdb;
Query OK, 1 row affected (0.01 sec)

mysql> SHOW DATABASES;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
| testdb             |
+--------------------+
5 rows in set (0.01 sec)
提示

IF NOT EXISTS表示在不存在的情况下创建,如果已经存在则不创建。

切换当前数据库

代码块
mysql> USE testdb;
Database changed
提示
  • 在创建表之前必须先指定当前数据库。
  • USE 数据库名 语句可以不接分号。
  • 可以在登录mysql时指定要连接的数据库,比如 mysql -hlocalhost -uroot -p123456 testdb

查看当前数据库

代码块
mysql> SELECT DATABASE();
+------------+
| DATABASE() |
+------------+
| testdb     |
+------------+
1 row in set (0.00 sec)

删除数据库

代码块
mysql> DROP DATABASE IF EXISTS testdb;
Query OK, 0 rows affected (0.04 sec)

mysql> SHOW DATABASES;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
4 rows in set (0.00 sec)

表的基本操作

查看表

代码块
SHOW TABLES FROM 数据库名;
提示

如果已经设置了当前数据库,则只需要SHOW TABLES;即可。

创建表

代码块
CREATE TABLE IF NOT EXISTS 表名 (
	列名1    数据类型    [列的属性],
    列名2    数据类型    [列的属性],
    ...
    列名n    数据类型    [列的属性]
);

比如:

代码块
mysql> CREATE TABLE IF NOT EXISTS first_table (
    -> first_column INT,
    -> second_column VARCHAR(100)
    -> );
Query OK, 0 rows affected (0.05 sec)
提示

在创建表时可以为表添加注释,像下面这样:

代码块
CREATE TABLE 表名(
    列的信息 ...
)COMMENT '注释内容';

删除表

代码块
DROP TABLE IF EXISTS 表1, 表2, ..., 表n;
提示

删除表和删除数据库一样都需要谨慎。

查看表结构

代码块
DESCRIBE 表名;
DESC 表名;
EXPLAIN 表名;
SHOW COLUMNS FROM 表名;
SHOW FIELDS FROM 表名;

比如:

代码块
mysql> DESCRIBE first_table;
+---------------+--------------+------+-----+---------+-------+
| Field         | Type         | Null | Key | Default | Extra |
+---------------+--------------+------+-----+---------+-------+
| first_column  | int          | YES  |     | NULL    |       |
| second_column | varchar(100) | YES  |     | NULL    |       |
+---------------+--------------+------+-----+---------+-------+
2 rows in set (0.02 sec)
提示

如果想查看表的定义语句,则可以使用SHOW CREATE TABLE first_table\G,如下:

代码块
mysql> SHOW CREATE TABLE first_table\G
*************************** 1. row ***************************
       Table: first_table
Create Table: CREATE TABLE `first_table` (
  `first_column` int DEFAULT NULL,
  `second_column` varchar(100) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
1 row in set (0.00 sec)


上面的许多语句在未设置当前数据库的情况下也可以执行,只需要使用数据库名.表名的方式指定表即可,比如:

代码块
mysql> SELECT DATABASE();
+------------+
| DATABASE() |
+------------+
| NULL       |
+------------+
1 row in set (0.00 sec)

mysql> DESC testdb.first_table;
+---------------+--------------+------+-----+---------+-------+
| Field         | Type         | Null | Key | Default | Extra |
+---------------+--------------+------+-----+---------+-------+
| first_column  | int          | YES  |     | NULL    |       |
| second_column | varchar(100) | YES  |     | NULL    |       |
+---------------+--------------+------+-----+---------+-------+
2 rows in set (0.00 sec)

mysql> SHOW CREATE TABLE testdb.first_table\G
*************************** 1. row ***************************
       Table: first_table
Create Table: CREATE TABLE `first_table` (
  `first_column` int DEFAULT NULL,
  `second_column` varchar(100) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
1 row in set (0.00 sec)

修改表

修改表名

代码块
ALTER TABLE 旧表名 RENAME TO 新表名;
RENAME TABLE 旧表名1 TO 新表名1, 旧表名2 TO 新表名2, ... 旧表名n TO 新表名n;
提示

如果在修改表名的同时指定了数据库名,还可以把这张表转移到对应的数据库下面,比如:

代码块
CREATE TABLE dahaizi;
ALTER TABLE first_table RENAME TO dahaizi.first_table;

增加列

代码块
ALTER TABLE 表名 ADD COLUMN 列名 数据类型 [列的属性];
ALTER TABLE first_table ADD COLUMN third_column CHAR(4);
提示

可以指定增加列的特定位置,比如放到第一列。默认情况下新增列都会被放到最后一列。

添加到第一列:

代码块
ALTER TABLE 表名 ADD COLUMN 列名 数据类型 [列的属性] FIRST;

添加到指定列的后面:

代码块
ALTER TABLE 表名 ADD COLUMN 列名 数据类型 [列的属性] AFTER 指定列名;

删除列

代码块
ALTER TABLE 表名 DROP COLUMN 列名;

修改列信息

方式一:

代码块
ALTER TABLE 表名 MODIFY 列名 新数据类型 [新属性];
警告

修改后的数据类型和属性一定要兼容表中现有的数据,比如VARCHAR(100)兼容VARCHAR(3)。

方式二:

代码块
ALTER TABLE 表名 CHANGE 旧列名 新列名 新数据类型 [新属性];
























目录