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

引言

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

文章目录

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

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

					--以后若未说明,其所有操作都在qingsword_com数据库下
					mysql> create database qingsword_com;
					mysql> use qingsword_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_qingsword_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命令删除数据库中指定的表:

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

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

0×4.MySQL如何重命名表

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

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