MySQL学习11:修改数据表(一)
2016-05-11 14:30
716 查看
修改数据表包括添加列、删除列、添加约束、删除约束,修改列定义和修改数据表名称,后面的两个我们使用时
一定要谨慎,尽量不使用。
下面就来一个一个单独介绍怎么修改数据表:
ALTER TABLE table_name ADD [COLUMN] col_name columns_definition [FIRST | AFTER col_name];
例子:
SHOW COLUMNS FROM users1;
ALTER TABLE users1 ADD age TINYINT UNSIGNED NOT NULL DEFAULT 10;
SHOW COLUMNS FROM users1;
![](http://img.blog.csdn.net/20160511135352189?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
再来增加一个password字段并把这列放在username字段的后面:
ALTER TABLE users1 ADD password VARCHAR(32) NOT NULL AFTER username;
SHOW COLUMNS FROM users1;
![](http://img.blog.csdn.net/20160511135740271?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
增加一个truename字段并把这列放在第一列的位置(也就是放在所有字段的前面):
ALTER TABLE users1 ADD truename VARCHAR(20) NOT NULL FIRST;
SHOW COLUMNS FROM users1;
![](http://img.blog.csdn.net/20160511135831787?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
ALTER TABLE table_name ADD [COLUMN] (col_name columns_definition,...);
例子:这里我们只是添加两列
ALTER TABLE users1 ADD (password VARCHAR(32) NOT NULL AFTER username,age TINYINT UNSIGNED
NOT NULL DEFAULT 10);
DESC users1;
![](http://img.blog.csdn.net/20160511140925026?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
和添加单列不同的是添加多列只能在所有列的后面添加多列。
ALTER TABLE table_name DROP [COLUMN] col_name;
例子;
ALTER TABLE users1 DROP truename;
SHOW COLUMNS FROM users1;
![](http://img.blog.csdn.net/20160511141056979?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
ALTER TABLE table_name DROP [COLUMN] col_name1,DROP [COLUMN] col_name2,...;
例子:这里只是删除两列
ALTER TABLE users1 DROP password,DROP age;
SHOW COLUMNS FROM users1;
![](http://img.blog.csdn.net/20160511141238964?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
ALTER TABLE table_name ADD [CONSTRAINT [symbol]] PRIMARY KEY [index_type] (index_col_name,...);
先来创建一张数据表users2:
CREATE TABLE users2(
username VARCHAR(10) NOT NULL,
pid SMALLINT UNSIGNED
);
SHOW CREATE TABLE users2;
![](http://img.blog.csdn.net/20160511141713018?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
上述表明数据表中并没有主键约束。
添加主键约束的例子:
1)首先添加一个要做为主键的列:
ALTER TABLE users2 ADD id SMALLINT UNSIGNED;
SHOW COLUMNS FROM users2;
![](http://img.blog.csdn.net/20160511141900280?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
2)在要做为主键的列添加主键约束:
ALTER TABLE users2 ADD CONSTRAINT PK_users2_id PRIMARY KEY (id);
SHOW COLUMNS FROM users2;
![](http://img.blog.csdn.net/20160511141927718?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
上面的例子中我们也可以不加关键字CONSTRAINT,加上它我们就可以为这个主键约束起一个名字,我们所起
的主键名称为PK_users2_id,为了以后方便操作主键,我们最好给主键起个名字。
ALTER TABLE table_name ADD [CONSTRAINT [symbol]] UNIQUE [INDEX| KEY] [index_name] [index_type]
(index_col_name,...);
例子:
ALTER TABLE users2 ADD UNIQUE (username);
SHOW COLUMNS FROM users2;
一定要谨慎,尽量不使用。
下面就来一个一个单独介绍怎么修改数据表:
一添加数据表中的列
(1)添加单列
MySQL数据库的数据表中添加单列的语法格式为:ALTER TABLE table_name ADD [COLUMN] col_name columns_definition [FIRST | AFTER col_name];
例子:
SHOW COLUMNS FROM users1;
ALTER TABLE users1 ADD age TINYINT UNSIGNED NOT NULL DEFAULT 10;
SHOW COLUMNS FROM users1;
再来增加一个password字段并把这列放在username字段的后面:
ALTER TABLE users1 ADD password VARCHAR(32) NOT NULL AFTER username;
SHOW COLUMNS FROM users1;
增加一个truename字段并把这列放在第一列的位置(也就是放在所有字段的前面):
ALTER TABLE users1 ADD truename VARCHAR(20) NOT NULL FIRST;
SHOW COLUMNS FROM users1;
(2)添加多列
MySQL数据库的数据表中添加多列的语法格式为:ALTER TABLE table_name ADD [COLUMN] (col_name columns_definition,...);
例子:这里我们只是添加两列
ALTER TABLE users1 ADD (password VARCHAR(32) NOT NULL AFTER username,age TINYINT UNSIGNED
NOT NULL DEFAULT 10);
DESC users1;
和添加单列不同的是添加多列只能在所有列的后面添加多列。
二删除数据表中的列
(1)删除单列
MySQL数据库中的数据表删除单列的语法格式:ALTER TABLE table_name DROP [COLUMN] col_name;
例子;
ALTER TABLE users1 DROP truename;
SHOW COLUMNS FROM users1;
(2)删除多列
MySQL数据库的数据表中删除多列的语法格式:ALTER TABLE table_name DROP [COLUMN] col_name1,DROP [COLUMN] col_name2,...;
例子:这里只是删除两列
ALTER TABLE users1 DROP password,DROP age;
SHOW COLUMNS FROM users1;
三添加约束
(1)添加主键约束
MySQL数据库的数据表中添加主键约束的语法格式为:ALTER TABLE table_name ADD [CONSTRAINT [symbol]] PRIMARY KEY [index_type] (index_col_name,...);
先来创建一张数据表users2:
CREATE TABLE users2(
username VARCHAR(10) NOT NULL,
pid SMALLINT UNSIGNED
);
SHOW CREATE TABLE users2;
上述表明数据表中并没有主键约束。
添加主键约束的例子:
1)首先添加一个要做为主键的列:
ALTER TABLE users2 ADD id SMALLINT UNSIGNED;
SHOW COLUMNS FROM users2;
2)在要做为主键的列添加主键约束:
ALTER TABLE users2 ADD CONSTRAINT PK_users2_id PRIMARY KEY (id);
SHOW COLUMNS FROM users2;
上面的例子中我们也可以不加关键字CONSTRAINT,加上它我们就可以为这个主键约束起一个名字,我们所起
的主键名称为PK_users2_id,为了以后方便操作主键,我们最好给主键起个名字。
(2)添加唯一约束
MySQL数据库中的数据表添加唯一约束的语法格式:ALTER TABLE table_name ADD [CONSTRAINT [symbol]] UNIQUE [INDEX| KEY] [index_name] [index_type]
(index_col_name,...);
例子:
ALTER TABLE users2 ADD UNIQUE (username);
SHOW COLUMNS FROM users2;
相关文章推荐
- Mysql报错:1172 - Result consisted of more than one row
- mysql数据库迁移到另一个硬盘上
- mysql5.7 zip 以上版本安装方法
- mysql relay log参数汇总
- MySQL添加外键失败ERROR 1452的解决
- 1130 host is not allowed to connect to mysql
- mysql中指定数据排序
- Percona-tookit学习笔记(一)
- MySQL分库分表环境下全局ID生成方案
- mysql复制表结构及检查表、存储过程是否存在
- 使用mysqldump迁移数据
- mac 包管理器安装mysql
- 修改mysql密码
- mysql 索引
- MySQL性能调优——索引详解与索引的优化
- mysql联合查询分析及优化
- mysql安装出现的问题
- 《MySQL 5.6从零开始学》读书笔记
- Mysql分页查询的方法
- mysql重要语句