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. Android发送短信

    // 发送短信 public void sendMsg(){ String content = edtSend.getText().toString(); SmsManager smsManager ...

  2. marquee标签滚动效果

    <marquee></marquee>标签,默认从最右侧往左滚动: direction:设置滚动的方向: height:设置标签高度, width:设置标签宽度: behavi ...

  3. 出现异常:Unsupported major.minor version

    今天在使用springboot的最新版本的时候出现了这个问题 ,抛出来的异常是:UnsupportedClassVersionError 打开异常的源码看了一下 * Thrown when the J ...

  4. 框架SpringMVC笔记系列 二 传值

    主题:SpringMVC(第一节中再回顾复习一次) 学习资料参考网址: 1.http://www.icoolxue.com 2.http://haohaoxuexi.iteye.com/blog/13 ...

  5. Android提升篇系列:adb无法识别MX5等特殊机型

    发现自己Ubuntu系统adb无法识别魅族 mx5机型.操作具体如下(其他机型依然适用): 一.Ubuntu环境 1.查看自己当前设备的idVendor lsusb命令直接查看当前usb设别列表,找到 ...

  6. Android 亮度调节

    最近在做一个App的设置项,亮度调节.真正做时,发现Android亮度调节比预想要复杂一些.其实目前网上已有不少这方面的资料,但有些博文具有一定误导性.在此将这块内容按照自己理解整理一下. 整体上看, ...

  7. 解决Wireshark没有网卡问题

    wireshark在mac上使用没有网卡问题直接在终端输入命令:sudo chmod 644 /dev/bpf*

  8. 2034-人见人爱A-B(c++实现)

    Problem Description 参加过上个月月赛的同学一定还记得其中的一个最简单的题目,就是{A}+{B},那个题目求的是两个集合的并集,今天我们这个A-B求的是两个集合的差,就是做集合的减法 ...

  9. js一些代码方法

    概要 1.替换json对象中属性值(包括子对象) 2.兼容多个$库写法(zepto与jquery) 3.闭包保持变量的做法 详情 1.替换json对象中属性值(包括子对象) //替换json对象属性值 ...

  10. 深入源码分析使用jQuery连续发起jsonp请求失败的原因

    jQuery的 jsonp 大家应该是十分熟悉了.曾遇到过这样的需求1.希望请求几个相似的内容添加到页面2.请求的内容一定时间内是固定不变的,希望做个缓存. 于是脑子一拍写下了类似这样的代码 for( ...