• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase
您的位置:首页 > 数据库 >Mysql > SQL 新增/修改 表字段列的类型等

SQL 新增/修改 表字段列的类型等

作者:匿名 字体:[增加 减小] 来源:互联网 时间:2018-12-05

匿名通过本文主要向大家介绍了SQL,新增/修改,表字段列的类型等等相关知识,希望本文的分享对您有所帮助

SQL 新增/修改 表字段列的类型等

例如:
修改(列名前 要有column关键字)
ALTER TABLE [USER] ALTER column [NAME] varchar(35) null
新增
ALTER TABLE [USER] ADD [PRICE] numeric(18, 8) NULL DEFAULT 0



通过更改、添加、除去列和约束,或者通过启用或禁用约束和触发器来更改表的定义。

语法
ALTER TABLE table
{ [ ALTER COLUMN column_name
{ new_data_type [ ( precision [ , scale ] ) ]
[ COLLATE < collation_name > ]
[ NULL | NOT NULL ]
| {ADD | DROP } ROWGUIDCOL }
]
| ADD
{ [ < column_definition > ]
| column_name AS computed_column_expression
} [ ,...n ]
| [ WITH CHECK | WITH NOCHECK ] ADD
{ < table_constraint > } [ ,...n ]
| DROP
{ [ CONSTRAINT ] constraint_name
| COLUMN column } [ ,...n ]
| { CHECK | NOCHECK } CONSTRAINT
{ ALL | constraint_name [ ,...n ] }
| { ENABLE | DISABLE } TRIGGER
{ ALL | trigger_name [ ,...n ] }
}

< column_definition > ::=
{ column_name data_type }
[ [ DEFAULT constant_expression ] [ WITH VALUES ]
| [ IDENTITY [ ( seed , increment ) [ NOT FOR REPLICATION ] ] ]
]
[ ROWGUIDCOL ]
[ COLLATE < collation_name > ]
[ < column_constraint > ] [ ...n ]

< column_constraint > ::=
[ CONSTRAINT constraint_name ]
{ [ NULL | NOT NULL ]
| [ { PRIMARY KEY | UNIQUE }
[ CLUSTERED | NONCLUSTERED ]
[ WITH FILLFACTOR = fillfactor ]
[ ON { filegroup | DEFAULT } ]
]
| [ [ FOREIGN KEY ]
REFERENCES ref_table [ ( ref_column ) ]
[ ON DELETE { CASCADE | NO ACTION } ]
[ ON UPDATE { CASCADE | NO ACTION } ]
[ NOT FOR REPLICATION ]
]
| CHECK [ NOT FOR REPLICATION ]
( logical_expression )
}

< table_constraint > ::=
[ CONSTRAINT constraint_name ]
{ [ { PRIMARY KEY | UNIQUE }
[ CLUSTERED | NONCLUSTERED ]
{ ( column [ ,...n ] ) }
[ WITH FILLFACTOR = fillfactor ]
[ ON { filegroup | DEFAULT } ]
]
| FOREIGN KEY
[ ( column [ ,...n ] ) ]
REFERENCES ref_table [ ( ref_column [ ,...n ] ) ]
[ ON DELETE { CASCADE | NO ACTION } ]
[ ON UPDATE { CASCADE | NO ACTION } ]
[ NOT FOR REPLICATION ]
| DEFAULT constant_expression
[ FOR column ] [ WITH VALUES ]
| CHECK [ NOT FOR REPLICATION ]
( search_conditions )
}

参数
table

是要更改的表的名称。如果表不在当前数据库中或者不属于当前用户所拥有,可以显式指定数据库和所有者。

ALTER COLUMN

指定要更改给定列。如果兼容级别是 65 或小于 65,将不允许使用 ALTER COLUMN。

要更改的列不能是:

数据类型为 text、image、ntext 或 timestamp 的列。


表的 ROWGUIDCOL 列。


计算列或用于计算列中的列。


被复制列。


用在索引中的列,除非该列数据类型是 varchar、nvarchar 或 varbinary,数据类型没有更改,而且新列大小等于或者大于旧列大小。


用在由 CREATE STATISTICS 语句创建的统计中的列。首先用 DROP STATISTICS 语句删除统计。由查询优化器自动生成的统计会由 ALTER COLUMN 自动除去。


用在 PRIMARY KEY 或 [FOREIGN KEY] REFERENCES 约束中的列。


用在 CHECK 或 UNIQUE 约束中的列,除非用在 CHECK 或 UNIQUE 约束中的可变长度列的长度允许更改。


有相关联的默认值的列,除非在不更改数据类型的情况下允许更改列的长度、精度或小数位数。
column_name

是要更改、添加或除去的列的名称。对于新列,如果数据类型为 timestamp,column_name 可以省略。对于 timestamp 数据类型的列,如果未指定 column_name,将使用名称 timestamp。

new_data_type

是要更改的列的新数据类型。要更改的列的 new_data_type 应符合下列准则:

原来的数据类型必须可以隐式转换为新数据类型。


new_data_type 类型不能为 timestamp。


对 ALTER COLUMN,ANSI 空默认值始终打开;如果没有指定,列将可为空。


对 ALTER COLUMN,ANSI 填充始终打开。


如果要更改的列是标识列,new_data_type 必须是支持标识属性的数据类型。


将忽略 SET ARITHABORT 的当前设置。ALTER TABLE 语句的行为如同 ARITHABORT 选项为 ON 时一样。
precision

是指定数据类型的精度。

scale

是指定数据类型的小数位数。有关有效小数位数值的更多信息,

COLLATE < collation_name >

为更改列指定新的排序规则。排序规则名称既可以是 Windows 排序规则名称,也可以是 SQL 排序规则名称。

COLLATE 子句只能用于更改数据类型为 char、varchar、text、nchar、nvarchar 和 ntext 的列的排序规则。如果未指定,则此列采用数据库的默认排序规则。

若满足下列条件,则 ALTER COLUMN 不能更改排序规则:

检查约束、外键约束或计算列引用了更改列。


在此列上创建了索引、统计或全文索引。更改列的排序规则时,该列上自动创建的统计将除去。


SCHEMABOUND 视图或函数引用了此列。
NULL | NOT NULL

指定该列是否可接受空值。不允许空值的列只有在指定了默认值的情况下,才能用 ALTER TABLE 语句向表中添加。添加到表中的新列要么允许空值,要么必须指定默认值。

如果新列允许空值,而且没有指定默认值,那么新列在表中每一行都包含空值。如果新列允许空值并且指定了新列的默认值,那么可以使用 WITH VALUES 选项在表中所有现有行的新列中存储默认值。

如果新列不允许空值,那么新列必须具有 DEFAULT 定义,而且新列的所有现有行中将自动装载该默认值。

可在 ALTER COLUMN 语句中指定 NULL 以使 NOT NULL 列允许空值,但 PRIMARY KEY 约束中的列除外。只有列中不包含空值时,ALTER COLUMN 中才可指定 NOT NULL。必须将空值更新为非空值后,才允许执行 ALTER COLUMN NOT NULL 语句,比如:

UPDATE MyTable SET NullCol = N'some_value' WHERE NullCol IS NULLALTER TABLE MyTable ALTER COLUMN NullCOl NVARCHAR(20) NOT NULL
如果 ALTER COLUMN 中指定了 NULL 或 NOT NULL,那么必须同时指定 new_data_type [(precision [, scale ])]。如果不更改数据类型、精度和小数位数,请指定列的这些值的当前值。

[ {ADD | DROP} ROWGUIDCOL ]

指定在指定列上添加或除去 ROWGUIDCOL 属性。ROWGUIDCOL 是一个关键字,表示列是行全局唯一标识符列。对于每个表只能指派一个 uniqueidentifier 列作为 ROWGUIDCOL 列。ROWGUIDCOL 属性只能指派给 uniqueidentifier 列。

ROWGUIDCOL 属性并不强制列中所存储值的唯一性。该属性也不会为插入到表中的新行自动生成值。若要为每列生成唯一值,那么或者在 INSERT 语句中使用 NEWID 函数,或者将 NEWID 函数指定为该列的默认值。

ADD

指定要添加一个或多个列定义、计算列定义或者表约束。

computed_column_expression

是一个定义计算列的值的表达式。计算列是并不物理地存储在表中的虚拟列,该列用表达式计算得出,该表达式使用同一表中的其它列。例如,计算列的定义可以是:cost AS price * qty。表达式可以是非计算列的列名、常量、函数、变量,也可以是用一个或多个运算符连接的上述元素的任意组合。表达式不能为子查询。

计算列可用于选择列表、WHERE 子句、ORDER BY 字句或其它任何可以使用常规表达式的位置,但下列情况除外:

计算列不能用作 DEFAULT 或 FOREIGN KEY 约束定义,也不能与 NOT NULL 约束定义一起使用。但是,如果计算列由具有确定性的表达式定义,并且索引列中允许计算结果的数据类型,则可将该列用作索引中的键列,或用作 PRIMARY KEY 或 UNIQUE 约束的一部分。
例如,如果表中有整数列 a 和 b,那么计算列 a+b 上可建立索引,而计算列 a+DATEPART(dd, GETDATE()) 上则不能,因为该值将在后续调用时更改。

计算列不能作为 INSERT 或 UPDATE 语句的目标。


说明 由于表中计算列所用列中的各行可能有不同的值,所以计算列的每一行可能有不同的值。

n

是表示前面的项可重复 n 次的占位符。

WITH CHECK | WITH NOCHECK

指定表中的数据是否用新添加的或重新启用的 FOREIGN KEY 或 CHECK 约束进行验证。如果没有指定,对于新约束,假定为 WITH CHECK,对于重新启用的约束,假定为 WITH NOCHECK。

WITH CHECK 和 WITH NOCHECK 子句不能用于 PRIMARY KEY 和 UNIQU
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 分享下mysql各个主要版本之间的差异
  • MySQL essential版本和普通版本有什么区别?
  • redhat 5.4下安装MYSQL全过程
  • 如何用SQL命令查看Mysql数据库大小
  • 解析mysql中如何获得数据库的大小
  • 解析mysql修改为utf8后仍然有乱码的问题
  • 5个常用的MySQL数据库管理工具详细介绍
  • 解析在MySQL里创建外键时ERROR 1005的解决办法
  • 解析远程连接管理其他机器上的MYSQL数据库
  • mysql 精简过程(删除一些文件)

相关文章

  • 2017-05-11SQL 语句优化方法30例
  • 2017-05-11MySQL学习笔记3:表的基本操作介绍
  • 2018-12-05常用 SQL Server 规范集锦
  • 2018-12-05MySQL 建表的优化策略 小结
  • 2018-12-05总结sql语句技巧实例用法
  • 2018-12-05mysql 让一个存储过程定时作业的代码
  • 2018-12-05Oracle insert的扩展
  • 2017-05-11浅析mysql 共享表空间与独享表空间以及他们之间的转化
  • 2018-12-05MySQL/Postgrsql 详细讲解如何用ODBC接口访问MySQL指南
  • 2018-12-05SQL Server2008中删除重复记录的方法分享

文章分类

  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase

最近更新的内容

    • MySql中表的删除操作
    • mysql 存储过程的问题
    • mysql常用基础操作语法(二)~~对表的增删改操作【命令行模式】
    • MySQL高级十五——表的分区
    • linux oracle数据库删除操作指南
    • 21条MySQL优化建议(经验总结)
    • SQL Server 2008R2编写脚本时智能提示功能丢失的处理方法
    • SQL语法 分隔符理解小结
    • sqlserver 支持定位当前页,自定义排序的分页SQL(拒绝动态SQL)
    • MySQL高级查询之理解与使用实例

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有