[mysql基础文档]-5-数据表创建修改与删除

引言

这篇文章实例演示MySQL中如何创建,修改与删除数据表。

文章目录

0×1.如何使用create table命令创建数据表

● 创建表就是声明列的一个过程,或者说,创建表就是声明表头每个字段的名称以及每个字段数据类型的过程:


--以后若未说明,其所有操作都在hk987_com数据库下
mysql> create database hk987_com;
mysql> use hk987_com;

--语法说明:
--create table [表名] ([表头第一列] [数据类型], [表头第二列] [数据类型],... ) engine=[表使用的引擎] charset=[表使用的字符集];

--t1是表名称,后面的小括号中,声明了两列,用逗号分隔每一列,每一列由表头名称和数据类型组成,第一列表头名称是uid,数据类型是整型,第二列表头名称是uname,数据类型是可以储存30个字符的固定长度字符串,关于数据类型,在后面的文章会详细说明
--表头,表格的最上面一行,比如"姓名/性别/籍贯",下面每一行都可以填写一个人的信息
--表的引擎决定了表数据的储存方式,在前面的环境搭建中已经详细介绍过
--表的字符集决定了表可以储存字符的种类,本例使用了utf8(UCS Transfer Format 8)
mysql> create table t1 ( uid int, uname char(30) ) engine=innodb charset=utf8;

--t1表创建好后,就是下面这个样子,因为没有插入任何数据,只有表头,在下一篇文章中会介绍如何插入数据
+-----+-------+
| uid | uname |
+-----+-------+

--desc命令,查看表头每个字段的数据类型和参数信息
--Field 每一列表头名称
--Type 对应这一列的数据类型
--Null 这一列的字段是否能为NULL,默认字段能够为NULL
--Key 索引信息,没创建索引就为空
--Default 是否设置了默认值,NULL表示没有设置默认值
--Extra 追加属性
mysql> desc t1;
+-------+----------+------+-----+---------+-------+
| Field | Type     | Null | Key | Default | Extra |
+-------+----------+------+-----+---------+-------+
| uid   | int(11)  | YES  |     | NULL    |       |
| uname | char(30) | YES  |     | NULL    |       |
+-------+----------+------+-----+---------+-------+

--show create table命令
--显示建表语法,\G精简输出,使用了\G就不需要使用分号了,否则会报错
mysql> show create table t1\G
********** 1. row **********
      Table: t1
Create Table: CREATE TABLE `t1` (
  `uid` int(11) DEFAULT NULL,
  `uname` char(30) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8

--查看当前数据库中有哪些表,目前只包含了一个表t1,是我们刚才创建的
mysql> show tables;
+-------------------------+
| Tables_in_hk987_com     |
+-------------------------+
| t1                      |
+-------------------------+

P.s:补充一下一张数据表各部分的术语


有如下一张数据表t1
+-----+-------+-----+
| uid | uname | age | <--这一行就是表头
+-----+-------+-----+
|  1  | 张三   | 16  | <--表头下每一行都叫做表的一条"记录"
+-----+-------+-----+
|  2  | 李四   | 18  | <--每条"记录"中的每一个单元,叫做"字段"
+-----+-------+-----+
--比如"李四"就是一个字段,"2"也是一个字段

每一条记录可以通过insert into命令插入,在下一篇文章中会详解。

0×2.何使用alter table命令修改数据表

● 使用alter table更改表头,添加或删除列:


--给t1表增加一列,列头名称为age,数据类型是tinyint unsigned,数据类型后面会专门介绍,tinyint unsigned能储存整数范围0~255
--语法:alter table [表名] add [列头名称] [此列允许的数据类型];
mysql> alter table t1 add age tinyint unsigned;

mysql> desc t1;
+-------+---------------------+------+-----+---------+-------+
| Field | Type                | Null | Key | Default | Extra |
+-------+---------------------+------+-----+---------+-------+
| uid   | int(11)             | YES  |     | NULL    |       |
| uname | char(30)            | YES  |     | NULL    |       |
| age   | tinyint(3) unsigned | YES  |     | NULL    |       |
+-------+---------------------+------+-----+---------+-------+

--此时t1表是这样子的
+-----+-------+-----+
| uid | uname | age |
+-----+-------+-----+

--删除age列
--语法:alter table [表名] drop [列头名称];
--命令可简写成alter table t1 drop age;
mysql> alter table t1 drop column age;

--如果想将age列添加到t1表所有列的最前面,只需要加一个first参数
mysql> alter table t1 add age tinyint unsigned first;

--如果想将age列添加到某列的后面,比如uid列的后面,uname的前面,可以使用after参数
mysql> alter table t1 add age tinyint unsigned after uid;

● 修改表字符编码:


--更改t1字符编码为gbk
--语法:alter table [表名] convert to character set [编码名];
mysql> alter table t1 convert to character set gbk;

--查看一下建表语句,CHARSET=gbk,修改成功
mysql> show create table t1 \G

● 重命名表头字段名称:


--更改t1第一列uid,重命名为id
--语法:alter table [表名] change [原列名] [新列名] [新列类型];
mysql> alter table t1 change uid id int;

0×3.如何使用drop table命令删除数据表

● 用drop table命令删除数据库中指定的表:


--删除hk987_com这个库下的t1表
mysql> drop table t1;
--或
mysql> drop table hk987_com.t1;

第一条必须先use了hk987_com这个库,第二条无需use。

0×4.MySQL如何重命名表

● 使用rename table命令重命名已经存在的表:


--语法:rename table [原表名] to [新表名]
mysql> rename table tn to tnnew;