一、创建表

语法:

create table table_name(

col01_name data_type,

col02_name data_type,

col03_name data_type,
);

1.1 创建表的时候可以指定主键:

postgres=# create table test01(
postgres(# id int primary key,
postgres(# note varchar(20));
CREATE TABLE

  

1.2 如果使用复合主键,则需要使用约束字句的语法:

constraint constrait_name primary key (coll_name, col2_name,...)

postgres=# create table test02(
postgres(# id1 int,
postgres(# id2 int,
postgres(# note varchar(20),
postgres(# constraint pk_test02 primary key (id1,id2));
CREATE TABLE
postgres=# \d test02
Table "public.test02"
Column | Type | Modifiers
--------+-----------------------+-----------
id1 | integer | not null
id2 | integer | not null
note | character varying(20) |
Indexes:
"pk_test02" PRIMARY KEY, btree (id1, id2) postgres=#

  

1.3 创建表指定唯一键,约束主键的一种。constraint constraint_name unique(col1_name,col2_anme,...)

postgres=# create table test03(
postgres(# id1 int
postgres(# ^C
postgres=# create table test03(
postgres(# id1 int,
postgres(# id2 int,
postgres(# id3 int,
postgres(# note varchar(20),
postgres(# constraint pk_test03 primary key(id1,id2),
postgres(# constraint uk_test03 unique(id3));
CREATE TABLE

  

1.4  check 也是一种约束形式,用于定义某些字段的值必须满足某种要求,

constraint constraint_name check(expression)

例如:建立一张child表,要求字段(age)不能大于18岁:

postgres=# create table child(
postgres(# name varchar(20),
postgres(# age int,
postgres(# note text,
postgres(# constraint ck_child_age check(age < 18));
CREATE TABLE

  

1.5  使用其他表作为模板创建新表:

postgres=# create table baby (like child);
CREATE TABLE
postgres=# \d baby
Table "public.baby"
Column | Type | Modifiers
--------+-----------------------+-----------
name | character varying(20) |
age | integer |
note | text | postgres=# \d child
Table "public.child"
Column | Type | Modifiers
--------+-----------------------+-----------
name | character varying(20) |
age | integer |
note | text |
Check constraints:
"ck_child_age" CHECK (age < 18) postgres=#

  

1.5  用模板创建的表没有把源表上的约束复制过来,如果想完全复制多来源表的其它信息,需要‘including’:

including defults

including constraints

including indexes

including storage

including comments

including all

postgres=# create table baby (like child including all);
CREATE TABLE

 

二、临时表

postgresql支持两类临时表,会话结束时,临时表就会消失。

会话临时表:数据可以一直保存在整个会话的生命周期中。

事务临时表:数据只存在于这个失误的生命周期中。

如果在两个不同的session中创建同名的临时表,实际上创建的两个不同的表。

postgres=# create temporary table tmp_t1(
postgres(# id int primary key,
postgres(# note text);
CREATE TABLE
postgres=# \d \\ 可以查到
List of relations
Schema | Name | Type | Owner
-----------+-------------+-------+----------
pg_temp_2 | tmp_t1 | table | postgres

  

当重新打开一个终端session时,用\d是查不到这个临时表的。\d把schema名称加上:

postgres=# \d pg_temp_2.tmp_t1;
Table "pg_temp_2.tmp_t1"
Column | Type | Modifiers
--------+---------+-----------
id | integer | not null
note | text |
Indexes:
"tmp_t1_pkey" PRIMARY KEY, btree (id)

  # 可以查到,但是无法访问数据,也不可以插入修改数据。

创建事物级的临时表,加上  on commit delete rows

postgres=# create temporary table tmp_t2(id int primary key,note text) on commit delete rows;
CREATE TABLE
postgres=# begin;
BEGIN
postgres=# insert into tmp_t2 values(1,'aaa');
INSERT 0 1
postgres=# insert into tmp_t2 values(2,'bbb');
INSERT 0 1
postgres=# select * from tmp_t2;
id | note
----+------
1 | aaa
2 | bbb
(2 rows)
postgres=# end;
COMMIT
postgres=# select * from tmp_t2;
id | note
----+------
(0 rows)

  #  事务结束后,表就消失了。

temporary  可以缩写成  temp

postgresql逻辑结构--表(二)的更多相关文章

  1. postgresql逻辑结构--表空间(四)

    一.创建表空间 1. 语法:create tablespace tablespace_name [owner user_name] location 'directory' postgres=# cr ...

  2. PostgreSQL的存储系统二:REDOLOG文件存储结构二

    REDOLOG文件里的用户数据和数据文件里的用户数据存储结构相同 几个月前同事给台湾一家公司培训<pg9 ad admin>时,有个学员提及WAL里记录的内容为Query时的SQL语句(比 ...

  3. mybatis使用注解往postgresql数据库表insert数据[主键自增]的写法

    建表SQL: DROP TABLE IF EXISTS person; CREATE TABLE person( person_id serial PRIMARY KEY NOT NULL, pers ...

  4. Postgresql两表联结更新

    Postgresql两表联合更新近日使用Postgresql感到有点不好用,一个联合更新非要这样写语法才对:update d_routetripset name=b.name ,    descrip ...

  5. postgresql逻辑结构(一)

    一.数据库逻辑结构介绍 数据库:应用连接到一个数据库时,一般不能访问其它数据库,除非使用dblink等其他手段. 表.索引:postgresql中标的术语为relation,其它数据库中成为table ...

  6. [转]PostgreSQL 逻辑结构 和 权限体系 介绍

    摘要: 本文旨在帮助用户理解PostgreSQL的逻辑结构和权限体系,帮助用户快速的理解和管理数据库的权限. 逻辑结构 最上层是实例,实例中允许创建多个数据库,每个数据库中可以创建多个schema,每 ...

  7. 跟我一起读postgresql源码(二)——Parser(查询分析模块)

    上篇博客简要的介绍了下psql命令行客户端的前台代码.这一次,我们来看看后台的代码吧. 十分不好意思的是,上篇博客我们只说明了前台登陆的代码,没有介绍前台登陆过程中,后台是如何工作的.即:后台接到前台 ...

  8. ORACLE体系结构一 (逻辑结构)-表空间、段、区和数据块

    一.Oracle的逻辑结构 Oracle的逻辑结构是一种层次结构.主要由:表空间.段.区和数据块等概念组成.逻辑结构是面向用户的,用户使用Oracle开发应用程序使用的就是逻辑结构.数据库存储层次结构 ...

  9. ORACLE体系结构逻辑结构-表空间、段、区和数据块

    转自: https://www.cnblogs.com/sunziying/p/8994792.html 一.Oracle的逻辑结构 Oracle的逻辑结构是一种层次结构.主要由:表空间.段.区和数据 ...

随机推荐

  1. bzoj5109(图论好题)

    我的参考题解:https://www.cnblogs.com/ccz181078/p/7907022.html: 不过我感觉题解的压位有问题,(1<<x)还不炸上天.不过这题数据水,好像怎 ...

  2. springMvc里的mvc:resources与静态资源的访问

    在进行Spring MVC的配置时,通常我们会配置一个dispatcher servlet用于处理对应的URL.配置如下:   <servlet>   <servlet-name&g ...

  3. iscroll 4 下拉 上拉 加载

    <!DOCTYPE html> iScroll demo: barebone body, ul, li{ padding:0; margin: 0; border:0; } body{ f ...

  4. python 读取hive数据

    话不多说,直接上代码 from pyhive import hivedef pyhive(hql): conn = hive.Connection(host='HiveServer2 host', p ...

  5. ASP.NET MVC Area 区域

    大型网站或项目通常有很多子系统或功能模块,如大型网站可能包含酒店.旅游.机票子系统,通过二级域名来访问,或者一个网站的前台和后台模块,每个团队负责某一子系统或模块,为了各团队进行协同开发,我们可以分不 ...

  6. wpf 水波进度条 用户控件

    之前看公司web前端做了个 圆形的水波纹 进度条,就想用wpf 做一个,奈何自己太菜 一直做不出来,在看过 “普通的地球人” 的 “ WPF实现三星手机充电界面 博客之后 我也来照葫芦画个瓢. 废话不 ...

  7. 轻量级MVVM框架 Stylet

    这两天试了下Stylet框架,这个框架虽然很小,但是功能齐全,简化了很多MVVM的代码,比如Command,对Dialog,MessageBox都有很好的支持. 开源地址 https://github ...

  8. [实战演练]蜻蜓FM2014年校招笔试题目 - 规则二叉树

    题目:某规则二叉树的定义是:对于树中任意两个叶结点A.B,他们与根结点的距离分别是d1和d2,|d1-d2|<=1.请写出函数 bool isRuledTree(Node *root)的代码实现 ...

  9. linux 的计划任务 定时任务

    linux的计划任务,也叫做定时任务 https://www.cnblogs.com/mingforyou/p/3930636.html 名字是crond 查看linux本机的定时任务 crontab ...

  10. 3、JUC--ConcurrentHashMap 锁分段机制

    ConcurrentHashMap  Java 5.0 在 java.util.concurrent 包中提供了多种并发容器类来改进同步容器的性能.  ConcurrentHashMap 同步容器 ...