一、Postgresql的基本操作
-----------------------------------------------------------------------------------------------------
--目录:
--1. 数据库
----1.1 创建数据库
----1.2 删除数据库
--2. 架构
----2.1 创建架构
----2.2 删除架构
--3. 表
----3.1 创建表
------3.1.1 多个字段的联合唯一性
------3.1.2 主键和外键
----3.2 删除表
----3.3 修改表
----------------------------------------------------------------------------------------------------- --1. 数据库
----1.1 创建数据库
create database test;
----1.2 删除数据库
drop database test;
----1.3 修改数据库
alter database test rename to testdb; --2. 架构
----2.1 创建架构
create schema testschema;
----2.1 删除架构
drop schema testschema; --3. 表
----3.1 创建表
create table test_table1(
sid serial, --serial表示字段为自增字段
stu_number integer not null, --not null表示非空约束
name text unique, ----unique表示唯一性约束,指定的字段不能插入重复值
math_score numeric default 59.99, ----defalut表示设置该字段的默认值
english_score numeric check(english_score > 0), ----check表示该字段的值必须符合其内的表达式
description text,
UNIQUE(description) --唯一性约束也可以这样写
); ------3.1.1 多个字段的联合唯一性
create table example3(
a integer,
b integer,
c integer,
UNIQUE(a,c)
);
insert into example3 values(1,1,1);
insert into example3 values(1,1,2);--pased
insert into example3 values(1,2,1);--failed: duplicate key value violates unique constraint "example3_a_c_key"
------3.1.2 主键和外键
create table example4(
a integer,
b integer,
c integer,
primary key(b,c)-- 主键可以同时作用于多个字段,形成联合主键
); create table example5(
a integer primary key,
b integer,
c integer,
foreign key(b,c) references example4(b,c)--该外键的字段数量和被引用表中的主键的数量必须保持一致
);
----Description----
--(1) 当多个表之间存在主外键参考性约束关系的时候,如果想删除主键的某行数据,由于该行的记录的主键字段值可能正在被其引用表中的某条记录所关联,将会导致删除操作的失败
insert into example4 values(1,1,1);
insert into example4 values(1,2,2);
insert into example5 values(1,3,3);--failed: insert or update on table "example5" violates foreign key constraint "example5_b_fkey". Key (b, c)=(3, 3) is not present in table "example4".
insert into example5 values(2,1,1);
insert into example5 values(3,2,2);
select * from example4;
select * from example5;
delete from example4 where a = 1;--failed: update or delete on table "example4" violates foreign key constraint "example5_b_fkey" on table "example5". Key (b, c)=(1, 1) is still referenced from table "example5".
--(2) Psql提供了限制和级联删除来解决(1)中的问题
create table a
(
q integer primary key,
w integer,
e integer,
t integer
);
insert into a values(1,1,1,1);
insert into a values(2,1,1,1);
create table b(
a integer references a(q) on delete cascade, --cascade删除主表中一个被引用的行,所有的引用它的行也会被自动删除
b integer
);
insert into b values(1,1);
insert into b values(1,2);
insert into b values(2,1);
delete from a where q = 1;
select * from b ;
create table c(
a integer references a(q) on delete restrict, --restrict 禁止删除被引用的行
--a integer references a(q) on update cascade
b integer
);
insert into c values(2,1);
delete from a where q = 2; --ERROR: update or delete on table "a" violates foreign key constraint "c_a_fkey" on table "c" DETAIL: Key (q)=(2) is still referenced from table "c".
-------------------
----3.2 删除表
drop table tablename;
----3.3 修改表
alter table test_table1 add column add_column text not null; --增加一个字段
alter table test_table1 drop column add_column;
--如果该表是主表,该字段是被引用字段,那么该操作将会失败
--如果想要在删除的时候删除引用字段的所有关联数据,可以采用以下方式
alter table a drop column q cascade
一、Postgresql的基本操作的更多相关文章
- PostgreSQL基本配置
记一下Postgresql的基本操作,在Ubuntu下使用apt-get安装是不会像MySQL那样都配置好了,而是要安装后再配置: 1. 基本安装 # 安装postgresql和pgadmin(一个管 ...
- PostgreSQL自学笔记:3 数据库的基本操作
3 数据库的基本操作 3.1 创建数据库 3.1.1 使用对象浏览器创建数据库 [Server] -> PostgreSQL 9.6 -> 数据库,右击 -> 创建 通常: 数据库: ...
- PostgreSQL基础知识与基本操作索引页
磨砺技术珠矶,践行数据之道,追求卓越价值 返回顶级页:PostgreSQL索引页 luckyjackgao@gmail.com 本页记录所有本人所写的PostgreSQL的基础知识和基本操作相关文摘和 ...
- postgresql基本操作:查看数据库、索引、表、表空间大小
一.简介 PostgreSQL 提供了多个系统管理函数来查看表,索引,表空间及数据库的大小,下面详细介绍一下. 二.数据库对象尺寸函数 函数名 返回类型 描述 pg_column_size(any) ...
- postgreSql 基本操作总结
0. 启动pgsl数据库 pg_ctl -D /xx/pgdata start 1. 命令行登录数据库 1 psql -U username -d dbname -h hostip -p po ...
- PostgreSQL基本操作
列出当前数据库所有表 \dt 列出表名 SELECT tablename FROM pg_tables; WHERE tablename NOT LIKE 'pg%' AND tablename NO ...
- postgreSql基础命令及linux下postgreSql命令
(1)用户实用程序: createdb 创建一个新的PostgreSQL的数据库(和SQL语句:CREATE DATABASE 相同) createuser 创建一个新的PostgreSQL的用户(和 ...
- 关于ubuntu服务器上部署postgresql 以及安装pgadmin4管理工具(web版)
进入目录:cd pgadmin4 source bin/activate cd pgadmin4-1.6/ 启动pgadmin4:python web/pgAdmin4.py pgadmi ...
- Centos 7.3 安装配置 PostgreSQL 9.x
一.安装 PostgresSQL Centos 7 自带的 PostgresSQL 是 9.2 版的.因为,yum 已经做了国内源,速度飞快,所以直接就用 yum 安装了.依次执行以下命令即可,非常简 ...
随机推荐
- django 多数据库配置
在django项目中, 一个工程中存在多个APP应用很常见. 有时候希望不同的APP连接不同的数据库,这个时候需要建立多个数据库连接. 1. 修改项目的 settings 配置 在 settings. ...
- mac hosts
1 在命令行中输入:sudo vim /etc/hosts. 2 输入开机密码,就可打开文件.按下键盘i,对文件进入可编辑状态. 3 修改完,先按esc退出编辑模式,之后,按shift+:,再按wq来 ...
- Lagom学习 五 Hello world工程
用Maven创建一个Hello world的Lagom工程: 1: 在想创建工程的目下下,打开CMD 2: mvn archetype:generate -Dfilter=com.lightbend ...
- javaweb学习总结—监听器(Listener)
监听器是一个专门用于对其他对象身上发生的事件或状态改变进行监听和相应处理的对象,当被监视的对象发生情况时,立即采取相应的行动.监听器其实就是一个实现特定接口的普通java程序,这个程序专门用于监听另一 ...
- 【旧文章搬运】VC插件中如何获取当前工程的工作目录
原文发表于百度空间,2014-09-24========================================================================== 好难找的资 ...
- SQL DBA 学习
http://www.cnblogs.com/CareySon/category/389500.html SQL Pass(13) SQL SERVER(42) SQL Server DBA生涯(1) ...
- ASP.NET中 TextBox 文本输入框控件的使用方法
TextBox控件又称文本框控件,为用户提供输入文本的功能. 1.属性 TextBox控件的常用属性及说明如表1所示. 表1 TextBox控件常用属性及说明 属性 说明 AutoPostBack 获 ...
- JAVA学习笔记——(一)
今日内容介绍 1.Java开发环境搭建 2.HelloWorld案例 3.注释.关键字.标识符 4.数据(数据类型.常量) 01java语言概述 * A: java语言概述 * a: Java是sun ...
- UVa 10534 Wavio Sequence (LIS+暴力)
题意:给定一个序列,求一个最长子序列,使得序列长度为奇数,并且前一半严格递增,后一半严格递减. 析:先正向和逆向分别求一次LIS,然后再枚举中间的那个数,找得最长的那个序列. 代码如下: #pragm ...
- 根据xml文件自动生成xsd文件
根据xml生成xsd文档 1. 找到vs自带的xsd.exe工具所在的文件夹位置: C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin 注意 ...