强大的修改数据库修改语句ALTER TABLE(一)[20160712]
今天开始的时间比昨天晚,其实午休的时间是差不多的,只是起来后稍微看了一点新闻,10分钟时间就没有了,所以要养成一个好习惯还真不容易,另外就是工作时间少看新闻,太浪费时间。
昨天在执行一个alter SQL语句时总是提示错误,看了好久才发现忘记写表名了,这也反映出对于基本的SQL操作还是不熟练,所以今天记录一下,由于alter table的内容很多,所以今天只是分析一下和add有关的内容。
一、语法定义
还是参考官方文档,其定义如下:

从这个定义上我们可以看到,必要的语句是
alter table tbl_name [command].
同时,这条语句还支持多个命令,相信很多人在修改一个表,比如增加几列时,都会写多个alter语句,但实际上一条就搞定了。
二、语义详解:
下面我们对add相关的语法进行详细分析
1. ADD [COLUMN] col_name column_definition [FIRST | AFTER col_name ] | ADD [COLUMN] (col_name column_definition,...)
通过这个定义我们可以知道以下知识点:
1)column关键字是可以省略的,以前我就闹过这个笑语,有同事写了个add 语句问我哪儿错了,我说是没有写column关键字。。现在想起简直好尴尬。
2)一条语句可以写多个add语句
3)我们可以指定把这个列添加到某一列后面,或者是让其作为第一列,相应使用after col_name或first.
4)列的定义与创建表时报定义方式一致,即我们在写create table时怎么给列进行定义的,这儿就怎么定义
2. ADD {INDEX|KEY} [index_name] [index_type] (index_col_name,...) [index_option]
这是添加普通索引的定义,主要有以下几点需要注意:
1)需要使用INDEX或KEY来表明这是添加的一个索引,索引的名字可选。
2)对于某些支持多种索引类型的引擎来说,我们可以指定索引的类型,指定的语句是使用USING 索引类型名,如果未指定,则使用第一个,具体如下:
| Storage Engine | Permissible Index Types |
|---|---|
InnoDB |
BTREE |
MyISAM |
BTREE |
MEMORY/HEAP |
HASH, BTREE |
NDB |
HASH, BTREE (see note in text) |
从上表我们可以看到,对于常用的InnoDB和MyISAM来说,其索引都只能是BTREE,所以这个index_type其实是没有必要指定的,通常情况下。
3)index_col_name的定义是col_name[(length)] [ASC|DESC],即要作为索引的列及其顺序,支持多个列构成一个索引,默认情况下升序
4) index_option 指索引的一些附加信息,常用的是注释,形如comment 'this is a index'.
3. ADD [CONSTRAINT [symbol]] PRIMARY KEY [index_type] (index_col_name,...) [index_option]
这个语句表示添加主键约束,对于index_type,(index_col_name,..)及[index_option]来说前面已经解释过了,这里再解释一下 constraint [symbol].
constraint 是约束的意思,后面可指定一个自定义的约束名,如果不提供,则mysql会自己生成一个约束名
4. ADD [CONSTRAINT [symbol]] UNIQUE [INDEX|KEY] [index_name] [index_type] (index_col_name,...) [index_option] ...
这个语句表示添加惟一约束,如果symbol和index_name都指定的话,则索引名取index_name,否则哪个指定了就取哪个,如果都没指定取列名,如果有多个列,取第一列的列名作为索引名
5. ADD FULLTEXT [INDEX|KEY] [index_name] (index_col_name,...) [index_option] .
本语句表示添加全文索引, 其可选项不必再解释
6. ADD SPATIAL [INDEX|KEY] [index_name] (index_col_name,...) [index_option]
本语句表示添加空间索引, 其可选项也不必再解释
7. ADD [CONSTRAINT [symbol]] FOREIGN KEY [index_name] (index_col_name,...) reference_definition
本语句表示添加外键,需要注意的是reference_definition, 其形式如下:REFERENCES tbl_name (index_col_name,...), 即要指明关联到哪个表的哪个字段,或者是哪些字段。
三、总结
通过分析我们可以发现,使用alter table add类的语句,主要用于添加新的列和新的索引,对于索引的创建来说,有专门的create index 语句,这个相当于是另一种写法。记住了这个语句,我们就可以很方便的去对表结构做一些调整。
强大的修改数据库修改语句ALTER TABLE(一)[20160712]的更多相关文章
- ORACLE中通过SQL语句(alter table)来增加、删除、修改字段
1.添加字段: alter table 表名 add (字段 字段类型) [ default '输入默认值'] [null/not null] ; 2.添加备注: comment on ...
- sql语句-ALTER TABLE
在工作中常遇到要维护数据库表的列,这里主要介绍sql语句中的ALTER TABLE 语句.ALTER TABLE 语句用于在已有的表中添加.修改或删除列. 如需在表中添加列,请使用下列语法: ALTE ...
- mysql数据库操作语句大全
一 . 常用mysql命令行命令 1 .启动MYSQL服务 net start mysql 停止MYSQL服务 net stop mysql 2 . netstat –na | findstr 3 ...
- alter table 修改表结构规范
use database_name; ) )), ADD INDEX index_time ( `timeId` ); # 添加主键: alter table table_name add prima ...
- sql语句修改数据库字段的长度
修改字段的长度 alter table [OtpimizeRoute_Test].[dbo].[T_QueueFile] alter column ListFileName nvarchar()
- 【转】SQL 语句:Alter table
转载自:http://www.w3school.com.cn/sql/sql_alter.asp ALTER TABLE 语句 ALTER TABLE 语句用于在已有的表中添加.修改或删除列. SQL ...
- MSSQL 修改数据库的排序规则
1.修改数据库排序规则 ALTER DATABASE [CHARACTER] COLLATE Chinese_PRC_CI_AS ; 2.修改表中列的排序规则 如果下列其中之一当前正在引用一个列,则无 ...
- MSSQL2005 修改数据库的排序规则
1.修改数据库排序规则ALTER DATABASE [DataBaseName] COLLATE Chinese_PRC_CI_AS ; 2.修改表中列的排序规则 如果下列其中之一当前正在引用一个列, ...
- SQL ALTER TABLE 语句
ALTER TABLE 语句 ALTER TABLE 语句用于在已有的表中添加.修改或删除列. SQL ALTER TABLE 语法 如需在表中添加列,请使用下列语法: ALTER TABLE tab ...
随机推荐
- Hadoop - 实时查询Drill
1.概述 在现实业务当中,存在这样的业务场景,需要实时去查询HDFS上的相关存储数据,普通的查询(如:Hive查询),时延较高.那么,是否存在时延较小的查询组件.在业界目前较为成熟的有Cloudera ...
- CSS基础(三):选择器
常用选择器 元素选择器,即html标记如div,ul,li,p,h1~h6,table等. p { font-size:14px; } h1 { color:#F00; } 复合选择器, 由两个选择器 ...
- JS实现TITLE悬停长久显示效果
canrun <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www. ...
- ODAC (V9.5.15) 学习笔记(二十)大数据量获取处理
ODAC获取数据的效率比较高,在Web程序中希望能够更快获取第一页的数据时,可以有几种方式: 1.在数据库中进行分页处理: 2.获取所有数据,只是快速返回第一页数据. 第一种方案对应用服务器资源消耗最 ...
- TP-Link路由器刷dd-wrt的linux,无线信号增强不少
家里面TP-LINK WR841ND v3老路由器各方面都不错,双天线,300M,用了好几年了,但摆在客厅里面,最远的卧室处无线就不是很稳定了,想了各种增强解决办法: 1.更换天线. 一 ...
- Part 2: Oracle E-Business Suite on Cloud FAQ
Running Oracle E-Business Suite on Oracle Cloud is simple, but it doesn't take too much effort to co ...
- 一起做RGB-D SLAM 第二季 (一)
小萝卜:师兄!过年啦!是不是很无聊啊!普通人的生活就是赚钱花钱,实在是很没意思啊! 师兄:是啊…… 小萝卜:他们都不懂搞科研和码代码的乐趣呀! 师兄:可不是嘛…… 小萝卜:所以今年过年,我们再做一个S ...
- 用于软件包管理的21个Linux YUM命令 转载
http://flycars001.iteye.com/blog/1949085 YUM到底是啥东东? YUM(Yellowdog Updater Modified)是一款开源命令行及图形化软件包管理 ...
- 第十二篇 SQL Server代理多服务器管理
本篇文章是SQL Server代理系列的第十二篇,详细内容请参考原文 在这一系列的上一篇,我们查看了维护计划,一个维护计划可能会创建多个作业,多个计划.你还简单地看了SSIS子系统,并查看了维护计划作 ...
- An Introduction to Garbage Collection(垃圾回收简介)
1. Introduction 2. Principles 3. Advantages 4. Disadvantages 5. 常见的垃圾回收技术 5.1. 跟踪式垃圾回收 5.1.1. 基本算法 5 ...