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. virtualbox创建com对象失败(解决方法)

      我的电脑是win7 64bit的,和舍友同时安装virtualbox,她的是win8,安装得很顺利. 我的就比较坎坷了,安装完打开后就出现了这个问题.   试过网上的好几个方法都不行,最后结合了两 ...

  2. Java面试题系列 提高Java I/O 性能

    1.提高java的 i/o性能.. http://blog.csdn.net/cherami/article/details/3854 我们知道Java中一般的输入输出流都是用单字节的读取方法来进行I ...

  3. 开始自学H5前端-第一天

    自从iOS工作丢了后 就萌生了自学这个想法 但是一直在纠结学哪一门语言好 我是计算机科学与技术专业的 其实对于我来说 学啥都算是有点基础的 但是被iOS坑惨了之后 就会不自觉的进行各个方向和前景分析 ...

  4. C#代码实现对HTTP POST参数进行排序

    private static string GetSortedParas(Dictionary<string, string> dic) { dic = dic.OrderBy(key = ...

  5. node.js处理post请求

    1.html 2.app.js var http = require('http') var qs = require('querystring') /** * 路由控制的功能 * @param pa ...

  6. java对cookie的操作

    java对cookie的操作比较简单,主要介绍下建立cookie和读取cookie,以及如何设定cookie的生命周期和cookie的路径问题. 建立一个无生命周期的cookie,即随着浏览器的关闭即 ...

  7. .Net加密保护工具分析介绍

    本文主要介绍一些dotNet加密保护工具的原理以及就其脱壳进行简单探讨. remotesoft protector.maxtocode..Net Reactor.Cliprotector.themid ...

  8. [AngularJS] 使用AngularCSS动态加载CSS

    [AngularJS] 使用AngularCSS动态加载CSS 前言 使用AngularAMD动态加载Controller 使用AngularAMD动态加载Service 上列两篇文章里,介绍了如何如 ...

  9. Sharepoint2013:在页面上显示错误信息

    在sharepoint2013中我们需要修改以下三处的web.config,以显示错误信息 1, C:\inetpub\wwwroot\wss\VirtualDirectories\端口号\web.c ...

  10. HTML5 Canvas 高仿逼真 3D 布料图案效果

    HTML5 规范引进了很多新特性,其中最令人期待的之一就是 Canvas 元素,HTML5 Canvas 提供了通过 JavaScript 绘制图形的方法,非常强大.下面给大家分享一个 HTML5 C ...