MySQL之修改表中的列

修改表中列的语法:

一张表,创建完毕,有了N列。之后还可以增加或删除或修改列

alter table 表名 add 列名称 列类型 列参数;    [这样加的列在表的最后]

例:alter table m1 add username char(20) not null default ‘‘;

alter table 表名 add 列名称 列类型 列参数 after 某列;    [新列加在某列后]

例:alter table m1 add username char(20) not null default ‘‘;

如果想增加一列,并位于表的最前面,用first

alter table 表名 add 列名称 列类型 列参数 first;

例:alter table m1 add pid int not null first;

-------------------------------------------------------------------------------------------------------------------

删除表中列的语法:

alter table 表名 drop 列名;

例:alter table m1 drop pid;

------------------------------------------------------------------------------------------------------------------

修改表中列类型的语法:

alter table 表名 modify 列名 新类型 新参数;

例:alter table m1 modify gender char(4) not null default ‘‘;

-------------------------------------------------------------------------------------------------------------------

修改表中列名及类型的语法:

alter table 表名 change 旧列名 新列名 新类型 新参数;

例:alter table m1 change id uid int unsigned;

---------------------------------------------------------------------------------------------------------------

下面是在mysql中的操作:

mysql> create table m1(

-> id int unsigned auto_increment primary key

-> );

Query OK, 0 rows affected (0.62 sec)

mysql> desc m1;

+-------+------------------+------+-----+---------+----------------+

| Field | Type             | Null | Key | Default | Extra          |

+-------+------------------+------+-----+---------+----------------+

| id    | int(10) unsigned | NO   | PRI | NULL    | auto_increment |

+-------+------------------+------+-----+---------+----------------+

1 row in set (0.14 sec)

mysql> alter table m1 add username char(20) not null default ‘‘;

Query OK, 0 rows affected (0.49 sec)

Records: 0  Duplicates: 0  Warnings: 0

mysql> desc m1;

+----------+------------------+------+-----+---------+----------------+

| Field    | Type             | Null | Key | Default | Extra          |

+----------+------------------+------+-----+---------+----------------+

| id       | int(10) unsigned | NO   | PRI | NULL    | auto_increment |

| username | char(20)         | NO   |     |         |                |

+----------+------------------+------+-----+---------+----------------+

2 rows in set (0.01 sec)

mysql> alter table m1 add birth date not null default ‘0000-00-00‘;

Query OK, 0 rows affected (0.46 sec)

Records: 0  Duplicates: 0  Warnings: 0

mysql> desc m1;

+----------+------------------+------+-----+------------+----------------+

| Field    | Type             | Null | Key | Default    | Extra          |

+----------+------------------+------+-----+------------+----------------+

| id       | int(10) unsigned | NO   | PRI | NULL       | auto_increment |

| username | char(20)         | NO   |     |            |                |

| birth    | date             | NO   |     | 0000-00-00 |                |

+----------+------------------+------+-----+------------+----------------+

3 rows in set (0.01 sec)

mysql> alter table m1 add gender char(1) not null default ‘‘ after username;

Query OK, 0 rows affected (0.36 sec)

Records: 0  Duplicates: 0  Warnings: 0

mysql> desc m1;

+----------+------------------+------+-----+------------+----------------+

| Field    | Type             | Null | Key | Default    | Extra          |

+----------+------------------+------+-----+------------+----------------+

| id       | int(10) unsigned | NO   | PRI | NULL       | auto_increment |

| username | char(20)         | NO   |     |            |                |

| gender   | char(1)          | NO   |     |            |                |

| birth    | date             | NO   |     | 0000-00-00 |                |

+----------+------------------+------+-----+------------+----------------+

4 rows in set (0.01 sec)

mysql> #如果想增加一列,并位于表的最前面,用first

mysql> alter table m1 add pid int not null default ‘‘ first;

ERROR 1067 (42000): Invalid default value for ‘pid‘

mysql> alter table m1 add pid int not null first;

Query OK, 0 rows affected (0.40 sec)

Records: 0  Duplicates: 0  Warnings: 0

mysql> desc m1;

+----------+------------------+------+-----+------------+----------------+

| Field    | Type             | Null | Key | Default    | Extra          |

+----------+------------------+------+-----+------------+----------------+

| pid      | int(11)          | NO   |     | NULL       |                |

| id       | int(10) unsigned | NO   | PRI | NULL       | auto_increment |

| username | char(20)         | NO   |     |            |                |

| gender   | char(1)          | NO   |     |            |                |

| birth    | date             | NO   |     | 0000-00-00 |                |

+----------+------------------+------+-----+------------+----------------+

5 rows in set (0.01 sec)

mysql> #删除列

mysql> desc m1;

+----------+------------------+------+-----+------------+----------------+

| Field    | Type             | Null | Key | Default    | Extra          |

+----------+------------------+------+-----+------------+----------------+

| pid      | int(11)          | NO   |     | NULL       |                |

| id       | int(10) unsigned | NO   | PRI | NULL       | auto_increment |

| username | char(20)         | NO   |     |            |                |

| gender   | char(1)          | NO   |     |            |                |

| birth    | date             | NO   |     | 0000-00-00 |                |

+----------+------------------+------+-----+------------+----------------+

5 rows in set (0.01 sec)

mysql> alter table m1 drop pid;

Query OK, 0 rows affected (0.37 sec)

Records: 0  Duplicates: 0  Warnings: 0

mysql> desc m1;

+----------+------------------+------+-----+------------+----------------+

| Field    | Type             | Null | Key | Default    | Extra          |

+----------+------------------+------+-----+------------+----------------+

| id       | int(10) unsigned | NO   | PRI | NULL       | auto_increment |

| username | char(20)         | NO   |     |            |                |

| gender   | char(1)          | NO   |     |            |                |

| birth    | date             | NO   |     | 0000-00-00 |                |

+----------+------------------+------+-----+------------+----------------+

4 rows in set (0.01 sec)

mysql> alter table m1 modify gender char(4) not null default ‘‘;

Query OK, 0 rows affected (0.47 sec)

Records: 0  Duplicates: 0  Warnings: 0

mysql> desc m1;

+----------+------------------+------+-----+------------+----------------+

| Field    | Type             | Null | Key | Default    | Extra          |

+----------+------------------+------+-----+------------+----------------+

| id       | int(10) unsigned | NO   | PRI | NULL       | auto_increment |

| username | char(20)         | NO   |     |            |                |

| gender   | char(4)          | NO   |     |            |                |

| birth    | date             | NO   |     | 0000-00-00 |                |

+----------+------------------+------+-----+------------+----------------+

4 rows in set (0.05 sec)

mysql> alter table m1 change id uid int unsigned;

Query OK, 0 rows affected (0.44 sec)

Records: 0  Duplicates: 0  Warnings: 0

mysql> desc m1;

+----------+------------------+------+-----+------------+-------+

| Field    | Type             | Null | Key | Default    | Extra |

+----------+------------------+------+-----+------------+-------+

| uid      | int(10) unsigned | NO   | PRI | 0          |       |

| username | char(20)         | NO   |     |            |       |

| gender   | char(4)          | NO   |     |            |       |

| birth    | date             | NO   |     | 0000-00-00 |       |

+----------+------------------+------+-----+------------+-------+

4 rows in set (0.01 sec)

mysql> exit;

----------------------------------------------------------------------------------

欢迎探讨与学习。。。。。。

时间: 2024-11-11 20:38:10

MySQL之修改表中的列的相关文章

mysql批量增加表中新列存储过程

一般访问量比较大的网站,请求日志表都是每天一张表独立创建. 业务需要为每张表都添加一个新列,纠结了半天,写了个存储过程如下: 日志表结构类型 tbl_ads_req_20140801,  tbl_ads_req_20140802 ... DELIMITER // create procedure sp2() begin declare sTime varchar(32); declare eTime varchar(32); declare sName varchar(128); declare

Mysql DBA 高级运维学习笔记-DML之修改表中的数据实战

9.10 修改表中的数据 9.10.1 修改表中指定条件固定列的数据 1.命令语法:update 表名 set 字段=新值,-.where 条件(一定要注意条件) 2.修改指定的行字段的内容 a.查看要修改的表 [email protected] 02:3907->select * from test; +----+-----------+ | id | name | +----+-----------+ | 1 | wwnwan| | 2 | zbf | | 3 | lisi | | 4 |

mysql互换表中两列数据

在开发过程中,有时由于业务等需要把一个表中的两列数据进行交换. 解决方案 使用update命令,这完全得益于MySQL SQL命令功能的强大支持. 表格中原来数据类似如下: select * from product; +----+--------+| id | name   | original_price | price  | +----+----+--------+|  1 | 雪糕   |           5.00 |   3.50 | |  2 | 鲜花   |          

神奇的 SQL 之层级 → 为什么 GROUP BY 之后不能直接引用原表中的列

前言 开心一刻 感觉不妙呀,弟弟舔它! 不该舔的,舔到怀疑人生了...... GROUP BY 后 SELECT 列的限制 标准 SQL 规定,在对表进行聚合查询的时候,只能在 SELECT 子句中写下面 3 种内容:通过 GROUP BY 子句指定的聚合键.聚合函数(SUM .AVG 等).常量.我们来看个例子 我们有 学生班级表(tbl_student_class) 以及 数据如下 : DROP TABLE IF EXISTS tbl_student_class; CREATE TABLE

MySQL在线修改表结构pt-osc

MySQL在线修改表结构pt-osc 重所周知 MySQL的DDL操作操作是相比比较昂贵的.因为MySQL在修改表期间会阻塞任何读写操作. 基本上业务处于瘫痪.如果数据量较大可能需要好几个小时才能完成,无法容忍这个操作.Percona开发了一系列的工具 Percona Toolkit包,其中有一个工具pt-online-schema-change可以在线执行DDL操作,不会阻塞读写操作从而影响业务程序.当然也有其他的工具 例如 MySQL5.6的online ddl 还有gh-ost 本文主要讲

MySQL查询数据表中数据记录(包括多表查询)

MySQL查询数据表中数据记录(包括多表查询) MySQL查询数据表中数据记录(包括多表查询) 转自:http://www.baike369.com/content/?id=5355 在MySQL中创建数据库的目的是为了使用其中的数据. 使用select查询语句可以从数据库中把数据查询出来. select语句的语法格式如下: select selection_list // 要查询的内容,选择哪些列 from table_list // 从什么表中查询,从何处选择行 where primary_

添加、修改表中的字段

ALTER TABLE dbo.Table1 ADD Days INT NOT NULL CONSTRAINT DF_Table1_Days DEFAULT (0) ;--添加列,并给定默认值 ALTER TABLE dbo.Table1 ALTER COLUMN CreateBy CHAR(10)一次只能改一个字段 ; --修改表中字段的类型 ALTER TABLE dbo.Table1 DROP CONSTRAINT DF_aaahhh_city,DF_aaahhh_city ; --删除默

***mysql 用一个表的一列,去更新另一表的一列

需求: 老板给了一个EXCEL数据,是本人提供的一个模板,含ID,现在相当于要导入这新增的一列数据到数据库中的某一个表. 方法一:用navicat,在excel中复制一列,再粘贴到navicat中的一列中去 方法二:用sql的方法:先建一个临时表,将数据导入,里面有ID和desc两列,再执行下面的语句 UPDATE gy_doctor a, gy_tmp b SET a.dr_desc = b.`desc` WHERE a.dr_id = b.id; 设有表t1: id name1 null2 

修改表中数据

修改表中数据格式:update+表名+set+列名='表达式'+where 条件表达式update student set name='李四' where name ='43'删除表中数据格式:delete + from + 表名 +where 条件表达式说明:当选项缺省时,删除表中所有数据delete from student where csrq='1998-1-1'或者:格式:truncate +table +表名功能:删除表中所有数据删除表:drop table 删除表定义及该表的所有数