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