版本比较
比较
标识
- 该行被添加。
- 该行被删除。
- 格式已经改变。
MySQL实例结构
- 一个MySQL实例对应一个MySQL进程和端口号
- 一个My实例对应一个管理员用户root一个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 |
提示 |
---|
|
查看当前数据库
代码块 |
---|
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 数据库名; |
提示 |
---|
如果已经设置了当前数据库,则只需要 |
创建表
代码块 |
---|
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) |
提示 | ||
---|---|---|
在创建表时可以为表添加注释,像下面这样:
|
删除表
代码块 |
---|
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) |
提示 | ||||
---|---|---|---|---|
如果想查看表的定义语句,则可以使用
上面的许多语句在未设置当前数据库的情况下也可以执行,只需要使用
|
修改表
修改表名
代码块 |
---|
ALTER TABLE 旧表名 RENAME TO 新表名; RENAME TABLE 旧表名1 TO 新表名1, 旧表名2 TO 新表名2, ... 旧表名n TO 新表名n; |
提示 | ||
---|---|---|
如果在修改表名的同时指定了数据库名,还可以把这张表转移到对应的数据库下面,比如:
|
增加列
代码块 |
---|
ALTER TABLE 表名 ADD COLUMN 列名 数据类型 [列的属性]; ALTER TABLE first_table ADD COLUMN third_column CHAR(4); |
提示 | ||||
---|---|---|---|---|
可以指定增加列的特定位置,比如放到第一列。默认情况下新增列都会被放到最后一列。 添加到第一列:
添加到指定列的后面:
|
删除列
代码块 |
---|
ALTER TABLE 表名 DROP COLUMN 列名; |
修改列信息
方式一:
代码块 |
---|
ALTER TABLE 表名 MODIFY 列名 新数据类型 [新属性]; |
警告 |
---|
修改后的数据类型和属性一定要兼容表中现有的数据,比如VARCHAR(100)兼容VARCHAR(3)。 |
方式二:
代码块 |
---|
ALTER TABLE 表名 CHANGE 旧列名 新列名 新数据类型 [新属性]; |
修改列的排列位置
代码块 |
---|
ALTER TABLE 表名 MODIFY 列名 列的类型 列的属性 FIRST; ALTER TABLE 表名 MODIFY 列名 列的类型 列的属性 AFTER 指定列名; |
提示 | ||
---|---|---|
一条语句中可以包含多个操作,比如:
|
简单的查询和插入
查询
代码块 |
---|
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。 |
目录 |
---|