postgreSQL第一天——關係、CRUD和聯結

來源:互聯網
上載者:User

標籤:


建立表:

CREATE TABLE countries(country_code char(2) PRIMARY KEY,country_name text UNIQUE);

 

插入資料:

INSERT INTO countries(country_code,country_name)VALUES (‘us‘,‘United States‘),(‘mx‘,‘Mexico‘),(‘au‘,‘Australia‘),(‘gb‘,‘United Kingdom‘),(‘de‘,‘Gemany‘),(‘ll‘,‘Loompaland‘);

INSERT INTO countriesVALUES (‘us‘,‘United States‘),(‘mx‘,‘Mexico‘);

 

查詢資料:

SELECT * FROM countries;

 

刪除資料:

DELETE FROM countriesWHERE country_code = ‘ll‘;

 

外鍵:為了保證cities中所有的country_code都在countries出現過,
所以給cities的country_code添加references外鍵約束。

CREATE TABLE cities(name text NOT NULL,postal_code varchar(9) CHECK(postal_code <> ‘‘),country_code char(2) REFERENCES countries,PRIMARY KEY (country_code,postal_code));

 

但cities表的country_code引用可以為NULL,代表一個值空缺,
如果不允許cities.country_code為空白,可以這樣定義:

country_code char(2) REFERENCES countries NOT NULL

 

插入外鍵資料:

INSERT INTO citiesVALUES (‘Portland‘,‘87200‘,‘us‘);

 

更新上面的資料:

UPDATE citiesSET postal_code = ‘97205‘WHERE name = ‘Portland‘;

 

使用聯結查詢:

SELECT cities.*,country_nameFROM cities INNER JOIN countriesON cities.country_code = countries.country_code;

 

外鍵引用兩個主鍵:

CREATE TABLE venues(venue_id SERIAL PRIMARY KEY,name varchar(255),street_address text,type char(7) CHECK (type in (‘public‘,‘private‘)) DEFAULT ‘public‘,postal_code char(2),country_code char(2),FOREIGN KEY (country_code,postal_code)REFERENCES cities(country_code,postal_code) MATCH FULL);

 

左外聯結:

SELECT e.title,v.nameFROM events e LEFT JOIN venues vON e.venues_id = v.venues_id;

 

建立表時,postgresql會預設在主鍵上建立索引,
使用UNIQUE強制在一列上建立索引。
建立索引:

CREATE INDEX envents_titleON envents USING hash (title);

 

對於操作符為大於/小於/等於這樣的匹配查詢,使用B樹索引,相當於彙編的段寄存器。

CREATE INDEX events_startsON events USING btree (starts);

 

使用B樹索引查詢:

SELECT *FROM eventsWHERE starts >= ‘2012-04-01‘;

 

postgreSQL第一天——關係、CRUD和聯結

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.