[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;