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. sqlserver中的循环遍历(普通循环和游标循环)

    sql 经常用到循环,下面介绍一下普通循环和游标循环 1.首先需要一个测试表数据Student

  2. Note: This element neither has attached source nor attached Javadoc and hence no Javadoc could be found.

    在Eclipse中开发Android项目时,鼠标停放在想要查看帮助文档的类上面,发现没有显示帮助文档,显示了下面一句话: Note: This element neither has attached ...

  3. 练习使用markdown编辑

    markdown纯文本编辑语言加粗,斜体Core Java 这是一篇学习了markdown编辑之后的练习 无序列表 1 2 > 怕什么真理无穷,进一寸有一寸的欢喜! 以下是代码的引用 class ...

  4. 转载java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.spinner/com.example.spinner.MainActivity}: java.lang.NullPointerException

    今天学习Android开发突然遇到了这个问题,查阅了很多资料,并且对集中原因进行了分析. 错误信息字符串:java.lang.RuntimeException: Unable to start act ...

  5. CentOS添加路由表

    CentOS下静态路由修改命令方法一:添加路由route add -net 192.168.0.0/24 gw 192.168.0.1route add -host 192.168.1.1 dev 1 ...

  6. 如何在window Form中使用Font Awesome?

    随着技术的发展,web上以前的图片按钮现在逐步换成了图标字体,这些图标字体是矢量的,矢量图意味着每个图标都能在所有大小的屏幕上完美呈现,可以随时更改大小和颜色,而且不失真,真心给人一种“高大上”的感觉 ...

  7. HTTP与HTTPS握手的那些事

    今天我总结了什么是HTTP三次握手,还有HTTPS握手的过程以及为什么HTTPS是安全的. 前提 在讲述这两个握手时候,有一些东西需要提前说明. HTTP与TCP/IP区别? TPC/IP协议是传输层 ...

  8. 深入理解javascript(一)

    此段文章摘自大叔的博客: 此文的目的是书写可维护的javascript代码. 最小的全局变量: JavaScript通过函数管理作用域.在函数内部声明的变量只在这个函数内部,函数外面不可用.另一方面, ...

  9. putty不能连接linxu,报:connection refused

    用putty连接新装的centos6.5,出现了connection refused问题, 后参考http://blog.sina.com.cn/s/blog_60d2d62a0100tq2l.htm ...

  10. Linux学习心得之 双显卡、中文输入法及svn初步使用

    作者:枫雪庭 出处:http://www.cnblogs.com/FengXueTing-px/ 欢迎转载 Linux学习心得之 双显卡.中文输入法及svn初步使用 1.前言 2.Linux双显卡解决 ...