设为首页 收藏本站
查看: 1023|回复: 0

[经验分享] postgresql-查看表结构(命令和sql方式)、修改表结构、外键

[复制链接]

尚未签到

发表于 2016-11-21 06:48:39 | 显示全部楼层 |阅读模式
  声明:本PostgreSQl实用指南系列为刘兴(http://deepfuture.iyunv.com/)原创,未经笔者授权,任何人和机构不能转载
  SQL方式查看表结构(表名是student)
mydb=# SELECT a.attnum,a.attname AS field,t.typname AS type,a.attlen AS length,a
.atttypmod AS lengthvar,a.attnotnull AS notnull
mydb-# FROM pg_class c,pg_attribute a,pg_type t
mydb-# WHERE c.relname = 'student' and a.attnum > 0 and a.attrelid = c.oid and a
.atttypid = t.oid
mydb-# ORDER BY a.attnum;
 attnum | field |  type   | length | lengthvar | notnull
--------+-------+---------+--------+-----------+---------
      1 | name  | varchar |     -1 |        24 | f
      2 | age   | int4    |      4 |        -1 | f
      3 | city  | int4    |      4 |        -1 | f
(3 rows)
  命令方式
mydb=# \d student
           Table "public.student"
 Column |         Type          | Modifiers
--------+-----------------------+-----------
 name   | character varying(20) |
 age    | integer               |
 city   | integer               |
  
修改表结构
  mydb=# alter table student add sex int;
ALTER TABLE
mydb=# \d student;
           Table "public.student"
 Column |         Type          | Modifiers
--------+-----------------------+-----------
 name   | character varying(20) |
 age    | integer               |
 city   | integer               |
 sex    | integer               |
  mydb=# alter table student alter sex type varchar(5);
ALTER TABLE
  mydb=# select * from citys
mydb-# ;
 name | id
------+----
 长沙 |  1
 湛江 |  2
 上海 |  3
(3 rows)
  
mydb=# select * from student;
    name    | age | city | sex
------------+-----+------+-----
 deepfuture |  20 |    1 |
 未来       |  20 |    2 |
 张三       |  21 |    1 |
(3 rows)
  增加主键
  mydb=# alter table citys add primary key (id);
NOTICE:  ALTER TABLE / ADD PRIMARY KEY will create implicit index "citys_pkey" f
or table "citys"
ALTER TABLE
  增加外键
mydb=# alter table student add constraint cityfk foreign key (city) references c
itys(id);
ALTER TABLE
  增加和修改表记录
  mydb=# insert into student values ('王国',18,2);
INSERT 0 1
mydb=# insert into student values ('王国',18,3);
INSERT 0 1
mydb=# update student set name='干哈' where name='王国';
UPDATE
  mydb=# update student set name='艾丝凡' where name='干哈' and city=3;
UPDATE 1
mydb=# select * from student;
    name    | age | city | sex
------------+-----+------+-----
 deepfuture |  20 |    1 |
 未来       |  20 |    2 |
 张三       |  21 |    1 |
 干哈       |  18 |    2 |
 艾丝凡     |  18 |    3 |
(5 rows)
  mydb=# select * from citys;
 name | id
------+----
 长沙 |  1
 湛江 |  2
 上海 |  3
(3 rows)
  违反外键增加表记录
mydb=# insert into student values('萨芬',19,5);
ERROR:  insert or update on table "student" violates foreign key constraint "cit
yfk"
DETAIL:  Key (city)=(5) is not present in table "citys".
STATEMENT:  insert into student values('萨芬',19,5);
ERROR:  insert or update on table "student" violates foreign key constraint "cit
yfk"
DETAIL:  Key (city)=(5) is not present in table "citys".
  在外键允许下增加表记录
mydb=# insert into student values('萨芬',19,3);
INSERT 0 1
  
mydb=#

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-303079-1-1.html 上篇帖子: PostgreSQL服务过程中的那些事一:启动postgres服务进程一 下篇帖子: 一个简单的shell脚本。实现PostgresQL的自动备份和还原
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表