一、Postgresql的基本操作

來源:互聯網
上載者:User

標籤:

-------------------------------------------------------------------------------------------------------目錄:--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);--pasedinsert 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的基本操作

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.