ALTER TABLE 解析实例:
SQL:
1.增加列
2.增加列,调整列顺序
3.增加索引
4.增加约束
5.增加全文索引FULL-TEXT
6.改变列的默认值
7.改变列名字(类型,顺序)
8.不改变列名字
9.删除列
10.删除主键
11.删除索引
12.删除约束
13.改表名
14.改变字符集
 
 
创建一张表
CREATE TABLE t1 (a INTEGER,b CHAR(10));
 
1. 增加列
格式:

ADD [COLUMN] (col_name column_definition,...) 
例子:

ALTER TABLE t1 ADD COLUMN c TIMESTAMP;
 
mysql> desc t1;
+-------+-----------+------+-----+-------------------+-----------------------------+
| Field | Type | Null | Key | Default | Extra |
+-------+-----------+------+-----+-------------------+-----------------------------+
| a | int(11) | YES | | NULL | |
| b | char(10) | YES | | NULL | |
| c | timestamp | NO | | CURRENT_TIMESTAMP | on update CURRENT_TIMESTAMP |
+-------+-----------+------+-----+-------------------+-----------------------------+

  

2.增加列,调整列顺序{只有FIRST和AFTER}
格式:

ADD [COLUMN] col_name column_definition [FIRST | AFTER col_name ]
例子:

ALTER TABLE t1 ADD COLUMN d int after a;
mysql> desc t1;
+-------+-----------+------+-----+-------------------+-----------------------------+
| Field | Type | Null | Key | Default | Extra |
+-------+-----------+------+-----+-------------------+-----------------------------+
| a | int(11) | YES | | NULL | |
| d | int(11) | YES | | NULL | |
| b | char(10) | YES | | NULL | |
| c | timestamp | NO | | CURRENT_TIMESTAMP | on update CURRENT_TIMESTAMP |
+-------+-----------+------+-----+-------------------+-----------------------------+

  

3.增加索引
格式:

ADD {INDEX|KEY} [index_name] [index_type] (index_col_name,...) [index_option] ...
例子:

ALTER TABLE t1 ADD INDEX idx_d(d); (d列增加索引)
表结构:
CREATE TABLE `t1` (
`a` int(11) DEFAULT NULL,
`d` int(11) DEFAULT NULL,
`b` char(10) DEFAULT NULL,
`c` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
KEY `idx_d` (`d`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1

  

4.增加约束
  • Primary key
  • Unique key
  • Foreign key
创建新表:s1,s2,
CREATE TABLE s1(id INT,NAME VARCHAR(10),address CHAR(20));
CREATE TABLE s2(id INT,s1_id INT); 
例子1:

ALTER TABLE s1 ADD PRIMARY KEY(id); (列被置成not null)
mysql> desc s1;
+---------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+---------+-------------+------+-----+---------+-------+
| id | int(11) | NO | PRI | 0 | |
| name | varchar(10) | YES | | NULL | |
| address | char(20) | YES | | NULL | |
+---------+-------------+------+-----+---------+-------+ 
例子2:

ALTER TABLE s1 ADD UNIQUE KEY (NAME);
表结构:
mysql> desc s1;
+---------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+---------+-------------+------+-----+---------+-------+
| id | int(11) | NO | PRI | 0 | |
| name | varchar(10) | YES | UNI | NULL | |
| address | char(20) | YES | | NULL | |
+---------+-------------+------+-----+---------+-------+
 
格式:

ADD [CONSTRAINT [symbol]] FOREIGN KEY [index_name] (index_col_name,...) reference_definition
例子3:

ALTER TABLE s2 ADD FOREIGN KEY (s1_id) REFERENCES s1 (id); 指向表s1的id列
表结构:
CREATE TABLE `s2` (
`id` int(11) DEFAULT NULL,
`s1_id` int(11) DEFAULT NULL,
KEY `s1_id` (`s1_id`),
CONSTRAINT `s2_ibfk_1` FOREIGN KEY (`s1_id`) REFERENCES `s1` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1

  

5.增加全文索引FULL-TEXT
ALTER TABLE t1 ADD FULLTEXT full_f (f); 
表结构:
CREATE TABLE `t1` (
`a` int(11) NOT NULL DEFAULT '0',
`d` int(11) DEFAULT NULL,
`b` char(10) DEFAULT NULL,
`c` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`f` text,
PRIMARY KEY (`a`),
KEY `idx_d` (`d`),
FULLTEXT KEY `full_f` (`f`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1

  

6.改变列的默认值
格式:

ALTER [COLUMN] col_name {SET DEFAULT literal | DROP DEFAULT}  
例子1:

ALTER TABLE t1 ALTER COLUMN a SET DEFAULT '1';  
例子2:

ALTER TABLE t1 ALTER COLUMN d DROP DEFAULT ;
CREATE TABLE `t1` (
`a` int(11) NOT NULL DEFAULT '1',
`d` int(11),
`b` char(10) DEFAULT NULL,
`c` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`f` text,
PRIMARY KEY (`a`),
KEY `idx_d` (`d`),
FULLTEXT KEY `full_f` (`f`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1

  

7.改变列名字(类型,顺序)
CREATE TABLE t1 (a INTEGER,b CHAR(10)); 
格式:

CHANGE [COLUMN] old_col_name new_col_name column_definition [FIRST|AFTER col_name] 
例子:

 ALTER TABLE t3 CHANGE a a_1 INT NOT NULL AFTER b;

  

8.不改变列名字
格式:

MODIFY [COLUMN] col_name column_definition [FIRST | AFTER col_name]
例子:

ALTER TABLE t4 MODIFY a INT NOT NULL,CHANGE b c VARCHAR(20);

  

9.删除列
格式:

DROP [COLUMN] col_name
例子:

ALTER TABLE t1 DROP COLUMN a;

  

10.删除主键
格式:

DROP PRIMARY KEY
例子:

ALTER TABLE t1 DROP PRIMARY KEY;

  

11.删除索引
格式:

DROP {INDEX|KEY} index_name
例子:

ALTER TABLE t1 DROP INDEX idx_d;

  

12.删除约束
格式:

DROP FOREIGN KEY fk_symbol
例子:

ALTER TABLE s2 DROP FOREIGN KEY s2_ibfk_1
s2表结构:
CREATE TABLE `s2` (
`id` int(11) DEFAULT NULL,
`s1_id` int(11) DEFAULT NULL,
KEY `s1_id` (`s1_id`),
CONSTRAINT `s2_ibfk_1` FOREIGN KEY (`s1_id`) REFERENCES `s1` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1

  

13.改表名
格式:

RENAME [TO|AS] new_tbl_name
例子:

ALTER TABLE t1 rename to t2;

  

14.改变字符集
格式:

[DEFAULT] CHARACTER SET [=] charset_name [COLLATE [=] collation_name]
例子:

ALTER TABLE t1 CHARACTER SET = utf8;

  

 
 

【SQL篇章】【SQL语句梳理 :--基于MySQL5.6】【已梳理:ALTER TABLE解析】的更多相关文章

  1. 【SQL篇章--DATABASE/EVENTS】

    [SQL篇章][SQL语句梳理 :--基于MySQL5.6][已梳理:DATABASE/EVENTS][会坚持完善]   目录: 1. Data Definition Statements: 1.1 ...

  2. 【SQL篇章--CREATE TABLE】

    [SQL篇章][SQL语句梳理 :--基于MySQL5.6][已梳理:CREATE TABLE][会坚持完善] SQL : 1. Data Definition Statements: 1.3 CRE ...

  3. 【SQL】SQL

    SQL基础 本文参照:http://www.w3school.com.cn/sql/ SQL 结构化查询语言(Structured Query Language). 对于大小写不敏感. SQL 使用单 ...

  4. mybatis 的动态sql语句是基于OGNL表达式的。

    mybatis 的动态sql语句是基于OGNL表达式的.可以方便的在 sql 语句中实现某些逻辑. 总体说来mybatis 动态SQL 语句主要有以下几类:1. if 语句 (简单的条件判断)2. c ...

  5. oracle PL/SQL管理命令语句

    一.ORACLE的启动和关闭 1.在单机环境下 要想启动或关闭ORACLE系统必须首先切换到ORACLE用户,如下 su - oracle a.启动ORACLE系统 oracle>svrmgrl ...

  6. 【转】SQL常用的语句和函数

    原文链接:http://www.cnblogs.com/mailingfeng/archive/2013/01/07/2850116.html order by 的数值型灵活使用 select * f ...

  7. SQL常用的语句和函数

    order by 的数值型灵活使用 select * from table_a where order by decode(函数,'asc',1,'desc',-1)*jsny; 控制试图的访问时间: ...

  8. SQL 常用基础语句

    1.SQL SELECT 语句 语法:SELECT    列名称    FROM    表名称 2.SQL SELECT DISTINCT 语句 语法:SELECT    DISTINCT    列名 ...

  9. SQL SERVER 基本操作语句

    Sql 是一种结构化的查询语言:Sql是一种数据库查询和程序设计语言,用于存取数据以及查询.更新和管理‘关系型数据库’系统:Sql对大小写不敏感:Sql不是数据库,是行业标准,是结构化的查询语言 In ...

随机推荐

  1. jquery表单选择器

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  2. Using Recursive Common table expressions to represent Tree structures

    http://www.postgresonline.com/journal/archives/131-Using-Recursive-Common-table-expressions-to-repre ...

  3. 解决 com.sun.*包导入错误

    解决 com.sun.*包导入错误 com.sun.image.codec.jpeg.*导入错误如何解决: com.sun.*是受限制访问的API,Eclipse 默认把受访问限制的API设成了ERR ...

  4. 动易CMS之标签管理

    一.如何添加一个标签 1.系统设置->模板标签管理->添加标签 2.输入标签名称,根据需要选择数据设置: sql语句则选择[系统数据库SQL查询] 3.添加参数 4.系统可以根据设置的条件 ...

  5. Spring发展历程总结

    目前很多公司的架构,从Struts2迁移到了SpringMVC.你有想过为什么不使用Servlet+JSP来构建Java web项目,而是采用SpringMVC呢? 既然这样,我们从源头说起.Stru ...

  6. [moka同学笔记]Yii2.0循环查询并对结果累加求和

    在控制器中查询好数据  $model 在视图中输入 <?php foreach($model as $key=>$r):?> <tr class="text-cent ...

  7. 通过angularJS官方案例快速入门

    官方案例-angular-phonecat angularJS官方提供了一个官方案例给大家进行循序渐进的学习,但是如果之前没有接触过node.js以及git的同学这个案例拿着也无从下手-这里就介绍一下 ...

  8. Struct2

    1.MVC思想概述 Servlet作为前端控制器,负责接收客户端发送的请求,在Servlet中只包含控制逻辑和简单的前端处理:然后调用后端javabean来完成实际的逻辑处理: 最后转发到相应的jsp ...

  9. 使用Struts2标签遍历集合

    遍历Map<String,Object> 遍历Map<Stirng,List<Student>> 遍历List<Map<String,Student&g ...

  10. Skytte:一款令人印象深刻的 HTML5 射击游戏

    Skytte 是一款浏览器里的 2D 射击游戏.使用 Canvas 元素和大量的 JavaScript 代码实现.Skytte 是用我们的开源和现代的前端技术创造的.经典,快节奏的横向滚动射击游戏,探 ...