- 由 zhongluqiang创建, 最后修改于2月 07, 2022
MySQL实例结构
- 一个MySQL实例对应一个MySQL进程和端口号
- 一个MySQL实例对应一个管理员用户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 旧列名 新列名 新数据类型 [新属性];
修改列的排列位置
ALTER TABLE 表名 MODIFY 列名 列的类型 列的属性 FIRST; ALTER TABLE 表名 MODIFY 列名 列的类型 列的属性 AFTER 指定列名;
一条语句中可以包含多个操作,比如:
ALTER TABLE first_table DROP COLUMN third_column, DROP COLUMN fourth_column, DROP COLUMN fifth_column;
简单的查询和插入
查询
SELECT * FROM 表名; SELECT 列名1, 列名2 ...列名n FROM 表名;
插入
INSERT INTO 表名(列1, 列2, ...) VALUES(列1的值, 列2的值, ...); INSERT INTO 表名(列1, 列2, ...) VALUES(列1的值, 列2的值, ...), (列1的值, 列2的值, ...), (列1的值, 列2的值, ...),...;
可以只指定部分的列,没有显式指定的列的值将被置为NULL。
- 无标签