1、新增数据表
在test数据库中新增一个数据表,表名t1,整数字段k, 字符串字段name,浮点数字段salary。
mysql> use test;
mysql> create table t1 (k_id int, name varchar(255), salary float);
2、查看数据表
2.1 查看表结构
describe 数据表名; 或者 desc 数据表名;
mysql> describe t1;
+--------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------+--------------+------+-----+---------+-------+
| k_id | int(11) | YES | | NULL | |
| name | varchar(255) | YES | | NULL | |
| salary | float | YES | | NULL | |
+--------+--------------+------+-----+---------+-------+
2.2 查看创建表时的sql语句
show create table 数据表名;
mysql> show create table t1;
+-------+-------------------------------+
| Table | Create Table |
+-------+-------------------------------+
| t2 | CREATE TABLE `t2` (
`k_id` int(11) DEFAULT NULL,
`name` varchar(255) DEFAULT NULL,
`salary` float DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 |
+-------+-------------------------------+
也可以在后面加上\G,是结果更加直观;
mysql> show create table t1\G;
*************************** 1. row ***************************
Table: t2
Create Table: CREATE TABLE `t2` (
`k_id` int(11) DEFAULT NULL,
`name` varchar(255) DEFAULT NULL,
`salary` float DEFAULT NULL
) ENGINE=In
3、修改数据表
3.1 修改表名
alter table 旧表名 rename to 新表名;
mysql> alter table t1 rename to t2;
3.2 修改表字符集
alter table 表名 default character set 字符集 default collate 校对规则;
mysql> alter table t1 default character set gb2312 default collate gb2312_chinese_ci;
mysql> show create table t1\G;
*************************** 1. row ***************************
Table: t1
Create Table: CREATE TABLE `t1` (
`k_id` int(11) DEFAULT NULL,
`name` varchar(255) CHARACTER SET utf8 DEFAULT NULL,
`salary` float DEFAULT NULL
) ENGIN
3.3 修改表的字段名
- alter table 表名 change 旧字段名 新字段名 新数据类型;
- 新数据类型指修改后的数据类型,如果不需要修改字段的数据类型,可以将新数据类型设置成与原来一样,但不能为空。
- 例,把t1表的k_id字段名改为kk_id:
mysql> alter table t1 change k_id kk_id int(11);
Query OK, 0 rows affected (0.10 sec)
Records: 0 Duplicates: 0 Warnings: 0
mysql> describe t1;
+--------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------+--------------+------+-----+---------+-------+
| kk_id | int(11) | YES | | NULL | |
| name | varchar(255) | YES | | NULL | |
| salary | float | YES | | NULL | |
+--------+--------------+------+-----+---------+-------+
3.4 修改字段数据类型
- 注意:由于不同类型的数据存储方式及长度并不相同,修改数据类型可能会影响数据表中已有的数据记录,因此,当数据表中已经有数据时,不要轻易修改数据类型。
- 使用modify,alter table 表名 modify 字段名 数据类型;
mysql> alter table t1 modify kk_id int(11);
Query OK, 1 row affected (0.12 sec)
Records: 1 Duplicates: 0 Warnings: 0
mysql> desc t1;
+--------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------+--------------+------+-----+---------+-------+
| kk_id | int(11) | YES | | NULL | |
| name | varchar(255) | YES | | NULL | |
| salary | float | YES | | NULL | |
+--------+--------------+------+-----+---------+-------+
- 也可以使用之前修改字段数据类型 的方法,可以将SQL语句中的’新字段名‘和’旧字段名‘设置为相同的名称,只改变’新数据类型‘。
- 例,把t1表的kk_id字段改成varchar(255)类型。
mysql> alter table t1 change kk_id kk_id varchar(255);
Query OK, 1 row affected (0.05 sec)
Records: 1 Duplicates: 0 Warnings: 0
mysql> desc t1;
+--------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------+--------------+------+-----+---------+-------+
| kk_id | varchar(255) | YES | | NULL | |
| name | varchar(255) | YES | | NULL | |
| salary | float | YES | | NULL | |
+--------+--------------+------+-----+---------+-------+
3.5 添加字段
alter table 表名 add 新字段名 数据类型 约束条件;约束条件非必填。
mysql> alter table t1 add k_id int(11);
Query OK, 0 rows affected (0.11 sec)
Records: 0 Duplicates: 0 Warnings: 0
mysql> desc t1;
+--------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------+--------------+------+-----+---------+-------+
| name | varchar(255) | YES | | NULL | |
| salary | float | YES | | NULL | |
| k_id | int(11) | YES | | NULL | |
+--------+--------------+------+-----+---------+-------+
- 默认是在最后追加一列字段,在开头添加字段:alter table 表名 add 新字段名 数据类型 约束条件 first;
- 在某个字段后添加字段:alter table 表名 add 新字段名 数据类型 约束条件 after 已经存在的字段名;
3.6 删除字段
- alter table 表名 drop 字段名;
- 例,删除t1表的kk_id字段。
mysql> alter table t1 drop kk_id;
Query OK, 0 rows affected (0.24 sec)
Records: 0 Duplicates: 0 Warnings: 0
mysql> desc t1;
+--------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------+--------------+------+-----+---------+-------+
| name | varchar(255) | YES | | NULL | |
| salary | float | YES | | NULL | |
+--------+--------------+------+-----+---------+-------+
4、删除数据表
4.1 删除当前表
drop table if exists 表名1 表名2 ……;
例,删除数据表newt;
mysql> show tables;
+------------------+
| Tables_in_testdb |
+------------------+
| newt |
| t1 |
+------------------+
2 rows in set (0.00 sec)
mysql> drop table if exists newt;
Query OK, 0 rows affected (0.17 sec)
mysql> show tables;
+------------------+
| Tables_in_testdb |
+------------------+
| t1 |
+------------------+
1 row in set (0.01 sec)
4.2 清空表数据
- truncate table 表名; 或者 delete * from 表名;
- truncate是整体删除 (速度较快),delete 是逐条删除 (速度较慢)。
- truncate不写服务器log,delete写服务器log,也就是truncate效率比delete高的原因。
- truncate不激活trigger(触发器),但是会重置Identity(自增字段),相当于自增列会被置为初始值,又重新从1开始记录,而不是接着原来的ID数。而delete删除以后,identity依旧是接着被删除的最近的那一条记录ID加1后进行记录。
mysql> show tables;
+------------------+
| Tables_in_testdb |
+------------------+
| t1 |
+------------------+
1 row in set (0.01 sec)
mysql> select * from t1;
+--------+--------+------+
| name | salary | k_id |
+--------+--------+------+
| 你好 | 1000 | NULL |
+--------+--------+------+
1 row in set (0.00 sec)
mysql> truncate table t1;
Query OK, 0 rows affected (0.06 sec)
mysql> select * from t1;
Empty set (0.00 sec)
4.3 解除外键约束
alter table 表名 drop foreign key 外键字段
mysql> alter table t1 drop foreign key fk_t2_id;
原创文章,转载请注明出处:http://b.nwumba.cn/article/114/