15、MySQL-修改数据表
来源:互联网 发布:用java编写的大型游戏 编辑:程序博客网 时间:2024/05/20 18:55
当数据表结构需要改变时就需要修改数据表
结构
ALTER TABLE 语句
功能:
- 添加、删除字段
- 修改字段类型、位置、名称
- 添加、删除主键约束
- 添加、删除默认值
- 添加、删除唯一
- 修改表名
1、添加字段(ADD)
ALTER TABLE tbl_name ADD 字段名称 字段类型 约束条件 [FIRST|AFTER 字段名称];
mysql> CREATE TABLE testAlert(-> id TINYINT
-> );
mysql> ALTER TABLE testAlert ADD username VARCHAR(20) NOT NULL;
mysql> -- 将字段添加到表字段的第一个位置上
mysql> ALTER TABLE testAlert ADD uuid VARCHAR(20) NOT NULL FIRST;
mysql> -- 将字段添加在id之后
mysql> ALTER TABLE testAlert ADD age TINYINT UNSIGNED AFTER id;
mysql> -- 一次添加多个字段
mysql> ALTER TABLE testAlert ADD test1 VARCHAR(20) NOT NULL,
-> ADD test2 DOUBLE,
-> ADD test3 INT;
mysql> DESC testAlert;
+----------+---------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+---------------------+------+-----+---------+-------+
| uuid | varchar(20) | NO | | NULL | |
| id | tinyint(4) | YES | | NULL | |
| age | tinyint(3) unsigned | YES | | NULL | |
| username | varchar(20) | NO | | NULL | |
| test1 | varchar(20) | NO | | NULL | |
| test2 | double | YES | | NULL | |
| test3 | int(11) | YES | | NULL | |
+----------+---------------------+------+-----+---------+-------+
7 rows in set (0.02 sec)
2、删除指定字段(DROP)
ALTER TABLE tbl_name DROP [COLUMN] 字段名称;
mysql> -- 将test1字段删除mysql> ALTER TABLE testAlert DROP COLUMN test1;mysql> -- 将test2字段删除mysql> ALTER TABLE testAlert DROP COLUMN test2;mysql> -- 同时删除多个字段mysql> ALTER TABLE testAlert DROP test3,-> DROP uuid,-> Add test4 INT;mysql> DESC testAlert;+----------+---------------------+------+-----+---------+-------+| Field | Type | Null | Key | Default | Extra |+----------+---------------------+------+-----+---------+-------+| id | tinyint(4) | YES | | NULL | || age | tinyint(3) unsigned | YES | | NULL | || username | varchar(20) | NO | | NULL | || test4 | int(11) | YES | | NULL | |+----------+---------------------+------+-----+---------+-------+
3、修改字段定义(MODIFY)
ALTER TABLE tbl_name MODIFY [COLUMN] 字段名称 字段类型 约束条件 [FIRST|AFTER 字段名称];
mysql> -- 修改字段test4的列定义mysql> ALTER TABLE testAlert MODIFY test4 VARCHAR(20) NOT NULL DEFAULT 'HAHA!' AFTER age;
mysql> DESC testAlert;
+----------+---------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+---------------------+------+-----+---------+-------+
| id | tinyint(4) | YES | | NULL | |
| age | tinyint(3) unsigned | YES | | NULL | |
| test4 | varchar(20) | NO | | HAHA! | |
| username | varchar(20) | NO | | NULL | |
+----------+---------------------+------+-----+---------+-------+
4 rows in set (0.02 sec)
4、修改字段名称(CHANGE)
ALTER TABLE tbl_name CHANGE 原字段名称 新字段名称 字段类型 约束条件 [FIRST|AFTER 字段名称];
mysql> -- 修改字段test4的名称mysql> ALTER TABLE testAlert CHANGE test4 test2 VARCHAR(20);mysql> -- 修改字段test2的名称并修改数据类型mysql> ALTER TABLE testAlert CHANGE test2 test1 INT;mysql> -- 修改字段id的属性mysql> ALTER TABLE testAlert CHANGE id id INT UNSIGNED NOT NULL AUTO_INCREMENT KEY;mysql> DESC testAlert;+----------+---------------------+------+-----+---------+----------------+| Field | Type | Null | Key | Default | Extra |+----------+---------------------+------+-----+---------+----------------+| id | int(10) unsigned | NO | PRI | NULL | auto_increment || age | tinyint(3) unsigned | YES | | NULL | || test1 | int(11) | YES | | NULL | || username | varchar(20) | NO | | NULL | |+----------+---------------------+------+-----+---------+----------------+
5、添加主键(ADD PRIMARY KEY)
ALTER TABLE tbl_name ADD PRIMARY KEY (字段名称);
mysql> -- 为表添加主键
mysql> ALTER TABLE testAlert ADD PRIMARY KEY(id);mysql> DESC testAlert;+-------+------------+------+-----+---------+-------+| Field | Type | Null | Key | Default | Extra |+-------+------------+------+-----+---------+-------+| id | tinyint(4) | NO | PRI | 0 | |+-------+------------+------+-----+---------+-------+
6、删除主键(DROP PRIMARY KEY)
ALTER TABLE tbl_name DROP PRIMARY KEY;
注意:需要先将AUTO_INCREMENT去掉才能删除主键
ALTER TABLE tbl_name MODIFY 主键字段名 主键字段属性;
mysql> ALTER TABLE testAlert DROP PRIMARY KEY;Query OK, 0 rows affected (0.05 sec)Records: 0 Duplicates: 0 Warnings: 0mysql> DESC testAlert;+-------+------------+------+-----+---------+-------+| Field | Type | Null | Key | Default | Extra |+-------+------------+------+-----+---------+-------+| id | tinyint(4) | NO | | 0 | |+-------+------------+------+-----+---------+-------+
7、添加唯一约束(ADD UNIQUE(字段名称...))
ALTER TABLE tbl_name ADD UNIQUE [KEY|INDEX] [index_name] (字段名称)
mysql> -- 将字段添加成唯一mysql> ALTER TABLE testAlert ADD UNIQUE (test1);mysql> -- 将字段添加成唯一索引mysql> ALTER TABLE testAlert ADD UNIQUE username(test2);
mysql> DESC testAlert;+-------+-------------+------+-----+---------+-------+| Field | Type | Null | Key | Default | Extra |+-------+-------------+------+-----+---------+-------+| id | tinyint(4) | NO | | 0 | || test1 | varchar(20) | NO | PRI | NULL | | -- 看到唯一约束已经添加| test2 | double | YES | UNI | NULL | || test3 | int(11) | YES | | NULL | |+-------+-------------+------+-----+---------+-------+mysql> SHOW CREATE TABLE testAlert;| testAlert | CREATE TABLE `testalert` (`id` tinyint(4) NOT NULL DEFAULT '0',`test1` varchar(20) NOT NULL,`test2` double DEFAULT NULL,`test3` int(11) DEFAULT NULL,UNIQUE KEY `test1` (`test1`),UNIQUE KEY `username` (`test2`) -- 看到索引名称以修改) ENGINE=InnoDB DEFAULT CHARSET=utf8 |1 row in set (0.00 sec)
8、删除唯一约束(DROP INDEX index_name )
ALTER TABLE tbl_name DROP INDEX index_name;
mysql> -- 删除索引mysql> ALTER TABLE testAlert DROP INDEX test1;mysql> DESC testAlert;+-------+-------------+------+-----+---------+-------+| Field | Type | Null | Key | Default | Extra |+-------+-------------+------+-----+---------+-------+| id | tinyint(4) | NO | | 0 | || test1 | varchar(20) | NO | | NULL | || test2 | double | YES | UNI | NULL | || test3 | int(11) | YES | | NULL | |+-------+-------------+------+-----+---------+-------+
9、添加默认约束
ALTER TABLE tbl_name ALTER 字段名称 SET DEFAULT 值;
mysql> ALTER TABLE testAlert ALTER test1 SET DEFAULT 'WAHAHA!';mysql> DESC testAlert;+-------+-------------+------+-----+----------+-------+| Field | Type | Null | Key | Default | Extra |+-------+-------------+------+-----+----------+-------+| id | tinyint(4) | NO | | 0 | || test1 | varchar(20) | NO | | WAHAHA! | || test2 | double | YES | UNI | NULL | || test3 | int(11) | YES | | NULL | |+-------+-------------+------+-----+----------+-------+
10、删除默认约束
ALTER TABLE tbl_name ALTER 字段名称 DROP DEFAULT 值;
mysql> ALTER TABLE testAlert ALTER test1 DROP DEFAULT;mysql> DESC testAlert;+-------+-------------+------+-----+---------+-------+| Field | Type | Null | Key | Default | Extra |+-------+-------------+------+-----+---------+-------+| id | tinyint(4) | NO | | 0 | || test1 | varchar(20) | NO | | NULL | || test2 | double | YES | UNI | NULL | || test3 | int(11) | YES | | NULL | |+-------+-------------+------+-----+---------+-------+
11、修改表名
方式1:ALTER TABLE tbl_name RENAME [TO|AS] new_name;
方式2:RENAME TABLE tbl_name TO new_name;
mysql> ALTER TABLE testAlert RENAME TO testAlter;mysql> show tables;+--------------------+| Tables_in_learndb1 |+--------------------+...| testalter |...+--------------------+22 rows in set (0.00 sec)
12、修改数据表的存储引擎
ALTER TABLE tbl_name ENGINE=存储引擎名称;
mysql> ALTER TABLE testAlter ENGINE=MyISAM;mysql> SHOW CREATE TABLE testAlter;| testAlter | CREATE TABLE `testalter` (`id` tinyint(4) NOT NULL DEFAULT '0',`test1` varchar(20) NOT NULL,`test2` double DEFAULT NULL,`test3` int(11),UNIQUE KEY `username` (`test2`)) ENGINE=MyISAM DEFAULT CHARSET=utf8 |1 row in set (0.00 sec)
13、修改自增长值
ALTER TABLE tbl_name AUTO_INCREMENT=值;
mysql> ALTER TABLE testAlter MODIFY id TINYINT NOT NULL KEY AUTO_INCREMENT;mysql> ALTER TABLE testAlter AUTO_INCREMENT=100;mysql> DESC testAlter;+-------+-------------+------+-----+---------+----------------+| Field | Type | Null | Key | Default | Extra |+-------+-------------+------+-----+---------+----------------+| id | tinyint(4) | NO | PRI | NULL | auto_increment || test1 | varchar(20) | NO | | NULL | || test2 | double | YES | UNI | NULL | || test3 | int(11) | YES | | NULL | |+-------+-------------+------+-----+---------+----------------+mysql> INSERT testAlter(test1,test2,test3) VALUES('HHHHH',22.33,2);
mysql> INSERT testAlter(test1,test2,test3) VALUES('HHHHH',2.33,2);
mysql> SELECT * FROM testAlter;+-----+-------+-------+-------+| id | test1 | test2 | test3 |+-----+-------+-------+-------+| 100 | HHHHH | 22.33 | 2 || 102 | HHHHH | 2.33 | 2 |+-----+-------+-------+-------+
0 0
- 15、MySQL-修改数据表
- 修改mysql数据表
- MySQL修改数据表
- MySql修改数据表
- MySQL修改数据表
- MySQL 修改数据表
- MySQL--修改数据表
- MySQL修改数据表名
- mysql(七)修改数据表
- mysql 修改数据表结构
- mysql学习之修改数据表
- mysql学习之修改数据表
- Mysql修改数据表的操作
- MySQL 约束和修改数据表
- mysql约束和修改数据表
- MySQL之修改数据表操作
- MySQL 修改数据表--删除约束
- MySQL之约束、修改数据表
- 查找 iostat 命令列出的dm-xx设备
- 14、MySQL-唯一约束(UNIQUE KEY)
- 【转载】Hibernate的增删改查
- 手把手教你:Winscp连接Ubuntu
- 安卓基础(十二)
- 15、MySQL-修改数据表
- 年,月,日,天日期自动添加,减少
- 一些网络中流传的iptables脚本的误区(转)
- argc 和 argv[]
- 16、MySQL-插入记录
- 有权图的Floyed
- 随笔记录使用DNK时遇到的几个问题
- ssh从本地上传到Linux服务器
- 17、MySQL-更新记录