当前位置: 首页 > news >正文

alter table column 列属性

例子

向表中增加一个 varchar 列:

ALTER TABLE distributors ADD COLUMN address varchar(30);

从表中删除一个字段:

ALTER TABLE distributors DROP COLUMN address RESTRICT;

在一个操作中修改两个现有字段的类型:

ALTER TABLE distributors

ALTER COLUMN address TYPE varchar(80),

ALTER COLUMN name TYPE varchar(100);

使用一个 USING 子句,把一个包含 UNIX 时间戳的 integer 字段转化成 timestamp with time zone 字段:

ALTER TABLE foo

ALTER COLUMN foo_timestamp TYPE timestamp with time zone

USING

timestamp with time zone 'epoch' + foo_timestamp * interval '1 second';

同样地,当字段有一个不会自动转换成新类型的缺省值表达式时:

ALTER TABLE foo

ALTER COLUMN foo_timestamp DROP DEFAULT,

ALTER COLUMN foo_timestamp TYPE timestamp with time zone

USING

timestamp with time zone 'epoch' + foo_timestamp * interval '1 second',

ALTER COLUMN foo_timestamp SET DEFAULT now();

对现存字段改名:

ALTER TABLE distributors RENAME COLUMN address TO city;

更改现存表的名字:

ALTER TABLE distributors RENAME TO suppliers;

给一个字段增加一个非空约束:

ALTER TABLE distributors ALTER COLUMN street SET NOT NULL;

从一个字段里删除一个非空约束:

ALTER TABLE distributors ALTER COLUMN street DROP NOT NULL;

给一个表增加一个检查约束:

ALTER TABLE distributors ADD CONSTRAINT zipchk CHECK (char_length(zipcode) = 5);

删除一个表及其所有子表的监查约束:

ALTER TABLE distributors DROP CONSTRAINT zipchk;

向表中增加一个外键约束:

ALTER TABLE distributors ADD CONSTRAINT distfk FOREIGN KEY (address) REFERENCES addresses (address) MATCH FULL;

给表增加一个(多字段)唯一约束:

ALTER TABLE distributors ADD CONSTRAINT dist_id_zipcode_key UNIQUE (dist_id, zipcode);

给一个表增加一个自动命名的主键约束,要注意的是一个表只能有一个主键:

ALTER TABLE distributors ADD PRIMARY KEY (dist_id);

把表移动到另外一个表空间:

ALTER TABLE distributors SET TABLESPACE fasttablespace;

把表移动到另外一个模式:

ALTER TABLE myschema.distributors SET SCHEMA yourschema;

兼容性

ADD, DROP, SET DEFAULT 形式与 SQL 标准兼容。其它形式是 PostgreSQL 对 SQL 标准的扩展。还有,在一个 ALTER TABLE 命令里声明多个操作也是扩展。

ALTER TABLE DROP COLUMN 可以用于删除表中的唯一的一个字段,留下一个零字段的表。这是对 SQL 的扩展,它不允许零字段表。







altertable test alter colunm_name type colunm_type;
1

2.将表alter_table 中var_date字段类型varchar 转换为timestamp

实验步骤:

1)建表

2)插入数据

3)使用修改表字段语句进行字段类型转换

实验结果如图

出现错误:error:cloumn “var_date” cannot be autmatically to type timestamp without time zone Hint:You might need to specify “using var_date::timestamp without time zone”

查阅资料:

大致意思是:转换类型的时候有隐含类型转换的时候,会自动转换,如果没有,那么就必须使用using显性指定一下转换规则。

那么我们使用如alter table 就成功转换:

altertable alter_table alter var_date typetimestampusing var_date::timestamp without time zone
1

结果如下:

3.失败二alter table

上述显式修改表字段,我以为这样,我的正式表就可以修改成功,结果又出现另一种问题,如图所示:

显式修改字段类型出现错误如下:

查了好多官方文档,也没有这类解释,后来经过高人指点,可能表中这个数据是null类型,转换不了,可以先将表中这个数据转换为timestamp类型,然后再用alter 语句转换数据类型。

实验如下:

1)先查表中字段这个数据,果然是"NULL"

2)修改表中数据为”timestamp“类型

3)显式修改表中该字段类型为”timestamp“类型

如图所示:

4. 把id的varchar变为int

postgres=# alter table tb101 alter idtypeint;
ERROR:  column "id" cannot be cast automatically totype integer
HINT:  Specify a USING expression to perform the conversion.

在没有隐式的转换下,就需要指定Using来显示的转换。

5. 使用Using进行类型转换

postgres=# altertable tb101 alter id type intusing id::int;
ALTERTABLE
postgres=# \d tb101
     Table "public.tb101"
 Column|  Type   | Modifiers 
--------+---------+-----------
 id     |integer|

id::int 也可以使用cast(id as int)

相关文章:

  • 数据库面试题——锁
  • MySQL:索引与事物
  • springboot Aspect切面
  • 【Python】P1 Python 基础语法
  • Windows Server 2022 中文版、英文版下载 (updated Mar 2023)
  • 智能灯泡一Homekit智能家居系列
  • Java设计模式(二)——工厂模式
  • 半入耳蓝牙耳机哪款好?音质好高性价比的半入耳式蓝牙耳机
  • Matter名词解释
  • 什么是 LuaJIT?为什么 Apache APISIX 选择了 LuaJIT?
  • Java实用类之String、StringBuffer、StringBuilder
  • Uploadifive 批量文件上传
  • 什么是语法糖?Java中有哪些语法糖?
  • 24. linux系统基础
  • 大数据现在找工作难么
  • Google 是如何开发 Web 框架的
  • SegmentFault for Android 3.0 发布
  • Asm.js的简单介绍
  • EOS是什么
  • leetcode386. Lexicographical Numbers
  • nginx 配置多 域名 + 多 https
  • Nginx 通过 Lua + Redis 实现动态封禁 IP
  • Node 版本管理
  • Sass 快速入门教程
  • spring学习第二天
  • 动手做个聊天室,前端工程师百无聊赖的人生
  • 关于 Linux 进程的 UID、EUID、GID 和 EGID
  • 如何优雅地使用 Sublime Text
  • 网页视频流m3u8/ts视频下载
  • 用 Swift 编写面向协议的视图
  • 好程序员web前端教程分享CSS不同元素margin的计算 ...
  • 浅谈sql中的in与not in,exists与not exists的区别
  • 新年再起“裁员潮”,“钢铁侠”马斯克要一举裁掉SpaceX 600余名员工 ...
  • 曜石科技宣布获得千万级天使轮投资,全方面布局电竞产业链 ...
  • ​html.parser --- 简单的 HTML 和 XHTML 解析器​
  • ​创新驱动,边缘计算领袖:亚马逊云科技海外服务器服务再进化
  • # 20155222 2016-2017-2 《Java程序设计》第5周学习总结
  • ###C语言程序设计-----C语言学习(3)#
  • (+3)1.3敏捷宣言与敏捷过程的特点
  • (3)STL算法之搜索
  • (4)logging(日志模块)
  • (博弈 sg入门)kiki's game -- hdu -- 2147
  • (附源码)基于SSM多源异构数据关联技术构建智能校园-计算机毕设 64366
  • (五)网络优化与超参数选择--九五小庞
  • (原創) 如何刪除Windows Live Writer留在本機的文章? (Web) (Windows Live Writer)
  • (转)树状数组
  • *** 2003
  • .bat批处理(三):变量声明、设置、拼接、截取
  • .htaccess配置常用技巧
  • .NET Framework杂记
  • .NET MVC 验证码
  • .NET WebClient 类下载部分文件会错误?可能是解压缩的锅
  • .Net 中Partitioner static与dynamic的性能对比
  • .NET4.0并行计算技术基础(1)
  • .NET开源项目介绍及资源推荐:数据持久层