Skip to content
On this page

表的基本操作

数据库建好之后,我们就可以接着创建真正存储数据的表了。创建表的时候首先需要描述清楚这个表长什么样,它有哪些列,这些列都是用来存什么类型的数据等等。

  • 这个对表的描述称为表的结构或者定义
  • 有了表的结构之后,我们就可以着手把数据塞到这个表里了。
  • 表中的一行叫做一条记录,一列叫做一个字段

展示数据表

shell
show tables;

创建表

创建一个表需要完成下列步骤

  • 给表起名
  • 给表定义列
  • 给列数据定义数据类型
  • 有需要时,需要设置默认值
shell
CREATE TABLE 表名 (
    列名1    数据类型    [列的属性],
    列名2    数据类型    [列的属性],
    ...
    列名n    数据类型    [列的属性]
);

示例:

shell
mysql> create table uses (
    -> name varchar(100), age int);

添加注释

使用 comment 字段

shell
CREATE TABLE 表名 (
    各个列的信息 ...
) COMMENT '表的注释信息';

IF NOT EXISTS

创建已经存在的表会出现错误提示,使用 IF NOT EXISTS 如果指定的表名不存在则创建这个表,如果存在那就什么都不做

shell
CREATE TABLE IF NOT EXISTS 表名(
    各个列的信息 ...
);

删除表

慎用啊😂

shell
DROP TABLE 表1, 表2, ..., 表n;

IF EXISTS

如果删除不存在的表会报错

shell
DROP TABLE IF EXISTS 表名;

查看表结构

shell
DESCRIBE 表名;
DESC 表名;
EXPLAIN 表名;
SHOW COLUMNS FROM 表名;
SHOW FIELDS FROM 表名;

没有选择数据库对表操作

有时并没有使用 use 数据库而想对表进行操作

shell
数据库.表名

SHOW CREATE TABLE xiaohaizi.first_table

修改表

已创建表后,再次对表进行操作

修改表名

  • 方式一
shell
ALTER TABLE 旧表名 RENAME TO 新表名;
  • 方式二
shell
RENAME TABLE 旧表名1 TO 新表名1, 旧表名2 TO 新表名2, ... 旧表名n TO 新表名n;

这个可以同时操作多表 如果在操作表时,同时指定数据库,则会同时移动到指定的数据库中

shell
ALTER TABLE first_table1 RENAME TO dahaizi.first_table1;

RENAME TABLE dahaizi.first_table1 TO xiaohaizi.first_table;

增加列

shell
ALTER TABLE 表名 ADD COLUMN 列名 数据类型 [列的属性];

也可以增加列到特定的位置

shell
# 添加到首列
ALTER TABLE 表名 ADD COLUMN 列名 列的类型 [列的属性] FIRST;

# 添加到指定列的后面
ALTER TABLE 表名 ADD COLUMN 列名 列的类型 [列的属性] AFTER 指定列名;

删除列

shell
ALTER TABLE 表名 DROP COLUMN 列名;

修改列信息

  • 方式一
shell
ALTER TABLE 表名 MODIFY 列名 新数据类型 [新属性];
shell
ALTER TABLE first_table MODIFY second_column VARCHAR(2);

**注意:**修改后的数据类型和属性一定要兼容表中现有的数据!

  • 方式二
shell
ALTER TABLE 表名 CHANGE 旧列名 新列名 新数据类型 [新属性];

修改列排列位置

shell
# 移到首列
ALTER TABLE 表名 MODIFY 列名 列的类型 列的属性 FIRST;

# 移到指定列的后面
ALTER TABLE 表名 MODIFY 列名 列的类型 列的属性 AFTER 指定列名;

一条语句中包含多个修改操作

可以多条数据同时执行

shell
ALTER TABLE 表名 操作1, 操作2, ..., 操作n;

同时删除多列

shell
ALTER TABLE first_table DROP COLUMN third_column, DROP COLUMN fourth_column, DROP COLUMN fifth_column;