一、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
时间: 2024-10-23 03:49:34

一、Postgresql的基本操作的相关文章

PostgreSQL数据库基本操作

postgresql学习站点 创建用户 12345 sudo -s -u postgrespsqlpostgres# CREATE USER xxxx1 WITH PASSWORD 'xxxx';postgres# CREATE DATABASE xxxx2;postgres# GRANT ALL PRIVILEGES ON DATABASE xxxx2 to xxxx1; 修改密码 1 alter user postgres with password 'foobar'; 创建数据库 1234

postgresql 使用指南

centos系列安装分为: yum安装 源码安装 一.yum安装 按照官方的安装文档进行. 安装postgresql官方yum仓库 yum install https://download.postgresql.org/pub/repos/yum/9.6/redhat/rhel-7-x86_64/pgdg-centos96-9.6-3.noarch.rpm 安装postgresql数据库 yum install postgresql96-server postgresql96-contrib 初

PostgreSQL数据库pg_dump命令行不输入密码的方法

对于PostgreSQL数据库的备份按照官方手册的方法之一就是采用"SQL Dump"的方式(另一种方式是直接备份文件系统中的文件,可参考官方手册). 基本用法如下: pg_dump dbname > outfile 首先,正如命令行所展示的,pg_dump是将命令结果输出到标准输出中. 其次,pg_dump并不影响数据库工作过程中的其他操作(主要是关心pg_dump会不会产生读写锁(read lock.write lock)),但也有例外,那就是哪些需要使用互斥锁(exclus

postgreSql 基本操作总结

0. 启动pgsl数据库 pg_ctl -D /xx/pgdata start 1. 命令行登录数据库 1 psql -U username -d dbname -h hostip -p port 2. 列出所有数据库 \l 3. 切换数据库 1 \c dbname 4. 列出当前数据库的所有表 \d 5. 查看指定表的所有字段 1 \d  tablename 6. 查看指定表的基本情况 1 \d+  tablename 7. 退出操作 1 q 8. 新建表 例1(主键) create tabl

Postgresql基本操作

1.创建用户postgres=# create user test password 'test';CREATE ROLE注意:在PostgreSQL 里没有区分用户和角色的概念,"CREATE USER" 为 "CREATE ROLE" 的别名,这两个命令几乎是完全相同的,唯一的区别是"CREATE USER" 命令创建的用户默认带有LOGIN属性,而"CREATE ROLE" 命令创建的用户默认不带LOGIN属性2.创建表

postgresql 基本操作

库操作 \h:查看SQL命令的解释,比如\h select. \?:查看psql命令列表. \l:列出所有数据库. \c [database_name]:连接其他数据库. \d:列出当前数据库的所有表格. \d [table_name]:列出某一张表格的结构. \du:列出所有用户. \e:打开文本编辑器. \conninfo:列出当前数据库和连接的信息. 登录数据库psql -U postgres -W(密码) -h 127.0.0.1 创建数据库create database databa_

Postgresql 配置文件详解

如果要查看配置文件中的一些选项,则可以登录psql后 使用 命令来查看: show  选项名; show all:  #查看所有数据库参数的值 主要选项: 选项 默认值 说明 是否优化 原因 max_connections 100 允许客户端的最大并发连接数目 否 因为在测试的过程中,100个连接已经足够 fsync on 强制把数据同步更新到磁盘 是 因为系统的IO压力很大,为了更好的测试其他配置的影响,把改参数改为off shared_buffers 24MB 决定有多少内存可以被Postg

SQLite数据库基本操作

SQLite 是一个开源的嵌入式关系数据库,实现自包容.零配置.支持事务的SQL数据库引擎. 其特点是高度便携.使用方便.结构紧凑.高效.可靠. 与其他数据库管理系统不同,SQLite 的安装和运行非常简单,在大多数情况下 - 只要确保SQLite的二进制文件存在即可开始创建.连接和使用数据库.如果您正在寻找一个嵌入式数据库项目或解决方案,SQLite是绝对值得考虑. 目录 SQLite数据库(一):基本操作... 1 目录... 1 一.SQLite介绍... 2 1.    什么是SQLit

关于ubuntu服务器上部署postgresql 以及安装pgadmin4管理工具(web版)

进入目录:cd pgadmin4   source bin/activate     cd pgadmin4-1.6/ 启动pgadmin4:python web/pgAdmin4.py pgadmin登录账号:[email protected] (自己设定) 密码:Ambition!!((自己设定) 数据库:postgres 密码123456 一.ubuntu服务器安装     请参考: http://www.linuxidc.com/Linux/2012-05/60147.html 二.安装