KhoaCôngNghệThôngTin TrườngĐạiHọcCầnThơ Lệnh SQL cơ...

48
Đỗ Thanh Nghị [email protected] Cần Thơ 24-04-2005 Khoa Công Nghệ Thông Tin Trường Đại Học Cần Thơ Lệnh SQL cơ bản

Transcript of KhoaCôngNghệThôngTin TrườngĐạiHọcCầnThơ Lệnh SQL cơ...

Page 1: KhoaCôngNghệThôngTin TrườngĐạiHọcCầnThơ Lệnh SQL cơ bảncit.ctu.edu.vn/~dtnghi/advDB/pgsql3.pdf · Ví dụ 2 9 Tạobảng Xen ... SELECT n+1 FROM t WHERE n

Đỗ Thanh Nghị[email protected]

Cần Thơ24-04-2005

Khoa Công Nghệ Thông TinTrường Đại Học Cần Thơ

Lệnh SQL cơ bản

Page 2: KhoaCôngNghệThôngTin TrườngĐạiHọcCầnThơ Lệnh SQL cơ bảncit.ctu.edu.vn/~dtnghi/advDB/pgsql3.pdf · Ví dụ 2 9 Tạobảng Xen ... SELECT n+1 FROM t WHERE n

Nội dung

Tạo bảng

Xen dữ liệu

Xóa dữ liệu

Cập nhật dữ liệu

Truy vấn dữ liệu

2

Page 3: KhoaCôngNghệThôngTin TrườngĐạiHọcCầnThơ Lệnh SQL cơ bảncit.ctu.edu.vn/~dtnghi/advDB/pgsql3.pdf · Ví dụ 2 9 Tạobảng Xen ... SELECT n+1 FROM t WHERE n

Tạo bảng

Xen dữ liệu

Xóa dữ liệu

Cập nhật dữ liệu

Truy vấn dữ liệu

3

Page 4: KhoaCôngNghệThôngTin TrườngĐạiHọcCầnThơ Lệnh SQL cơ bảncit.ctu.edu.vn/~dtnghi/advDB/pgsql3.pdf · Ví dụ 2 9 Tạobảng Xen ... SELECT n+1 FROM t WHERE n

Tạo bảng

Cú pháp:

CREATE [ TEMPORARY | TEMP ] TABLE table_name (

{ column_name type [ column_constraint [...] ] |

table_constraint }

[, ...]

)

[ INHERITS ( inherited_table [,...] ) ]

4

Tạo bảng

Xen dữ liệu

Xóa dữ liệu

Cập nhật dữ liệu

Truy vấn dữ liệu

Page 5: KhoaCôngNghệThôngTin TrườngĐạiHọcCầnThơ Lệnh SQL cơ bảncit.ctu.edu.vn/~dtnghi/advDB/pgsql3.pdf · Ví dụ 2 9 Tạobảng Xen ... SELECT n+1 FROM t WHERE n

Kiểu dữ liệu

Các kiểu thông dụng Số: integer, smallint, bigint, real, float8, numeric, serial

Chuỗi ký tự: char, varchar, text

Luận lý: boolean

Ngày giờ: date, time, timestamp

Nhị phân: bytea

Tiền tệ: money

Mãng: array

Chuỗi bit: bit, varbit

Địa chỉ mạng: inet, cidr, macaddr

Hình học: path, point, line, polygon, box, circle, lseg

Object Identifiers: oid, regclass, regtype, regproc, regoper

Composite: dùng create type để tạo dữ liệu cấu trúc

Pseudo: any, opaque, trigger, void, record, language_handler,etc5

Tạo bảng

Xen dữ liệu

Xóa dữ liệu

Cập nhật dữ liệu

Truy vấn dữ liệu

Page 6: KhoaCôngNghệThôngTin TrườngĐạiHọcCầnThơ Lệnh SQL cơ bảncit.ctu.edu.vn/~dtnghi/advDB/pgsql3.pdf · Ví dụ 2 9 Tạobảng Xen ... SELECT n+1 FROM t WHERE n

Ràng buộc trên column

column_constraint ::=[ CONSTRAINT column_constraint_name ]

{ NOT NULL | NULL | UNIQUE | PRIMARY KEY |

DEFAULT default_value |

CHECK (condition |

REFERENCES foreign_table [ ( foreign_column ) ]

[ MATCH FULL | MATCH PARTIAL ]

[ ON DELETE action ]

[ ON UPDATE action ]

[ DEFERRABLE | NOT DEFERRABLE ]

[ INITIALLY DEFERRED | INITIALLY IMMEDIATE ]

}

action ::= { NO ACTION | RESTRICT | CASCADE | SET NULL | SET DEFAULT }

6

Tạo bảng

Xen dữ liệu

Xóa dữ liệu

Cập nhật dữ liệu

Truy vấn dữ liệu

Page 7: KhoaCôngNghệThôngTin TrườngĐạiHọcCầnThơ Lệnh SQL cơ bảncit.ctu.edu.vn/~dtnghi/advDB/pgsql3.pdf · Ví dụ 2 9 Tạobảng Xen ... SELECT n+1 FROM t WHERE n

Ràng buộc trên bảng

table constraint ::=[ CONSTRAINT table_constraint_name ]

{ UNIQUE ( column_name [, ... ] ) |

PRIMARY KEY ( column_name [, ... ] ) |

CHECK ( condition ) |

FOREIGN KEY ( column_name [, ... ] )

REFERENCES foreign_table

[ ( foreign_column [, ... ] ) ]

[ MATCH FULL | MATCH PARTIAL ]

[ ON DELETE action ]

[ ON UPDATE action ]

[ DEFERRABLE | NOT DEFERRABLE ]

[ INITIALLY DEFERRED | INITIALLY IMMEDIATE ]

} 7

Tạo bảng

Xen dữ liệu

Xóa dữ liệu

Cập nhật dữ liệu

Truy vấn dữ liệu

Page 8: KhoaCôngNghệThôngTin TrườngĐạiHọcCầnThơ Lệnh SQL cơ bảncit.ctu.edu.vn/~dtnghi/advDB/pgsql3.pdf · Ví dụ 2 9 Tạobảng Xen ... SELECT n+1 FROM t WHERE n

Ví dụ 1

CREATE TABLE s (

sid varchar(3) PRIMARY KEY,

sname text NOT NULL,

status smallint,

city text);

CREATE TABLE p (

pid varchar(3) UNIQUE NOT NULL,

pname text NOT NULL,

color text,

weight smallint,

city text);8

Tạo bảng

Xen dữ liệu

Xóa dữ liệu

Cập nhật dữ liệu

Truy vấn dữ liệu

Page 9: KhoaCôngNghệThôngTin TrườngĐạiHọcCầnThơ Lệnh SQL cơ bảncit.ctu.edu.vn/~dtnghi/advDB/pgsql3.pdf · Ví dụ 2 9 Tạobảng Xen ... SELECT n+1 FROM t WHERE n

Ví dụ 2

9

Tạo bảng

Xen dữ liệu

Xóa dữ liệu

Cập nhật dữ liệu

Truy vấn dữ liệu

CREATE TABLE sp (

sid varchar(3),

pid varchar(3),

qty integer NOT NULL CHECK (qty > 0),

CONSTRAINT sp_pkey PRIMARY KEY (sid, pid));

CREATE TABLE films (

code char(5) PRIMARY KEY,

title text NOT NULL,

date_prod date DEFAULT current_date);

Page 10: KhoaCôngNghệThôngTin TrườngĐạiHọcCầnThơ Lệnh SQL cơ bảncit.ctu.edu.vn/~dtnghi/advDB/pgsql3.pdf · Ví dụ 2 9 Tạobảng Xen ... SELECT n+1 FROM t WHERE n

Ví dụ 3

10

Tạo bảng

Xen dữ liệu

Xóa dữ liệu

Cập nhật dữ liệu

Truy vấn dữ liệu

CREATE TABLE favorite_books (

id varchar(5),

books text[]);

CREATE TABLE sal_emp (

name text,

pay_by_quarter integer[],

schedule text[][]);

Page 11: KhoaCôngNghệThôngTin TrườngĐạiHọcCầnThơ Lệnh SQL cơ bảncit.ctu.edu.vn/~dtnghi/advDB/pgsql3.pdf · Ví dụ 2 9 Tạobảng Xen ... SELECT n+1 FROM t WHERE n

Ví dụ 4

11

Tạo bảng

Xen dữ liệu

Xóa dữ liệu

Cập nhật dữ liệu

Truy vấn dữ liệu

CREATE TABLE fruit (

name char(30),

image OID);

CREATE TABLE motos (

id serial,

owner text);

CREATE TABLE authors (

id char(4) PRIMARY KEY,

name varchar(30),

sex boolean DEFAULT false);

Page 12: KhoaCôngNghệThôngTin TrườngĐạiHọcCầnThơ Lệnh SQL cơ bảncit.ctu.edu.vn/~dtnghi/advDB/pgsql3.pdf · Ví dụ 2 9 Tạobảng Xen ... SELECT n+1 FROM t WHERE n

Chỉnh sửa bảng

Cú pháp:ALTER TABLE table [ * ]

ADD [ COLUMN ] column typeALTER TABLE table [ * ]

ALTER [ COLUMN ] column { SET DEFAULT defaultvalue | DROP DEFAULT }

ALTER TABLE table [ * ]RENAME [ COLUMN ] column TO newcolumn

ALTER TABLE tableRENAME TO newtable

ALTER TABLE tableADD CONSTRAINT newconstraint definition

ALTER TABLE tableOWNER TO newowner

12

Tạo bảng

Xen dữ liệu

Xóa dữ liệu

Cập nhật dữ liệu

Truy vấn dữ liệu

Page 13: KhoaCôngNghệThôngTin TrườngĐạiHọcCầnThơ Lệnh SQL cơ bảncit.ctu.edu.vn/~dtnghi/advDB/pgsql3.pdf · Ví dụ 2 9 Tạobảng Xen ... SELECT n+1 FROM t WHERE n

Ví dụ 5

13

Tạo bảng

Xen dữ liệu

Xóa dữ liệu

Cập nhật dữ liệu

Truy vấn dữ liệu

ALTER TABLE authors ADD COLUMN address text;

ALTER TABLE motos RENAME COLUMN id TO no;

ALTER TABLE authors DROP COLUMN address;

ALTER TABLE motos ALTER COLUMN owner TYPE varchar(30);

Page 14: KhoaCôngNghệThôngTin TrườngĐạiHọcCầnThơ Lệnh SQL cơ bảncit.ctu.edu.vn/~dtnghi/advDB/pgsql3.pdf · Ví dụ 2 9 Tạobảng Xen ... SELECT n+1 FROM t WHERE n

Tạo bảng

Xen dữ liệu

Xóa dữ liệu

Cập nhật dữ liệu

Truy vấn dữ liệu

14

Page 15: KhoaCôngNghệThôngTin TrườngĐạiHọcCầnThơ Lệnh SQL cơ bảncit.ctu.edu.vn/~dtnghi/advDB/pgsql3.pdf · Ví dụ 2 9 Tạobảng Xen ... SELECT n+1 FROM t WHERE n

Xen dữ liệu vào bảng

Cú pháp:

INSERT INTO table [ ( column [, ...] ) ]

{ VALUES ( expression [, ...] ) | SELECT query }

15

Tạo bảng

Xen dữ liệu

Xóa dữ liệu

Cập nhật dữ liệu

Truy vấn dữ liệu

Page 16: KhoaCôngNghệThôngTin TrườngĐạiHọcCầnThơ Lệnh SQL cơ bảncit.ctu.edu.vn/~dtnghi/advDB/pgsql3.pdf · Ví dụ 2 9 Tạobảng Xen ... SELECT n+1 FROM t WHERE n

Ví dụ 6

Xen dữ liệu vào bảng s:INSERT INTO s VALUES (‘S01’, ‘Smith’, 20, ‘London’);

INSERT INTO s VALUES (‘S02’, ‘Jones’, 10, ‘Paris’);

INSERT INTO s VALUES (‘S03’, ‘Blacke’, 30, ‘Paris’);

Xen dữ liệu vào bảng p:INSERT INTO p VALUES (‘P01’, ‘Nut’, ‘red’, 12, ‘London’);

INSERT INTO p VALUES (‘P02’, ‘Bolt’, ‘green’, 17, ‘Paris’);

INSERT INTO p VALUES (‘P03’, ‘Screw’, ‘blue’, 17, ‘Roma’);

INSERT INTO p VALUES (‘P04’, ‘Screw’, ‘red’, 14, ‘London’);

16

Tạo bảng

Xen dữ liệu

Xóa dữ liệu

Cập nhật dữ liệu

Truy vấn dữ liệu

Page 17: KhoaCôngNghệThôngTin TrườngĐạiHọcCầnThơ Lệnh SQL cơ bảncit.ctu.edu.vn/~dtnghi/advDB/pgsql3.pdf · Ví dụ 2 9 Tạobảng Xen ... SELECT n+1 FROM t WHERE n

Ví dụ 7

Xen dữ liệu vào bảng sp:INSERT INTO sp VALUES (‘S01’, ‘P01’, 300);

INSERT INTO sp VALUES (‘S01’, ‘P02’, 200);

INSERT INTO sp VALUES (‘S01’, ‘P03’, 400);

INSERT INTO sp VALUES (‘S02’, ‘P01’, 300);

INSERT INTO sp VALUES (‘S02’, ‘P02’, 400);

INSERT INTO sp VALUES (‘S03’, ‘P02’, 200);

17

Tạo bảng

Xen dữ liệu

Xóa dữ liệu

Cập nhật dữ liệu

Truy vấn dữ liệu

Page 18: KhoaCôngNghệThôngTin TrườngĐạiHọcCầnThơ Lệnh SQL cơ bảncit.ctu.edu.vn/~dtnghi/advDB/pgsql3.pdf · Ví dụ 2 9 Tạobảng Xen ... SELECT n+1 FROM t WHERE n

Tạo bảng

Xen dữ liệu

Xóa dữ liệu

Cập nhật dữ liệu

Truy vấn dữ liệu

18

Page 19: KhoaCôngNghệThôngTin TrườngĐạiHọcCầnThơ Lệnh SQL cơ bảncit.ctu.edu.vn/~dtnghi/advDB/pgsql3.pdf · Ví dụ 2 9 Tạobảng Xen ... SELECT n+1 FROM t WHERE n

Xoá dữ liệu từ bảng

Cú pháp:

DELETE FROM table [ WHERE condition ]

Ví dụ:

DELETE FROM films;

DELETE FROM films WHERE code = ‘00013’;

19

Tạo bảng

Xen dữ liệu

Xóa dữ liệu

Cập nhật dữ liệu

Truy vấn dữ liệu

Page 20: KhoaCôngNghệThôngTin TrườngĐạiHọcCầnThơ Lệnh SQL cơ bảncit.ctu.edu.vn/~dtnghi/advDB/pgsql3.pdf · Ví dụ 2 9 Tạobảng Xen ... SELECT n+1 FROM t WHERE n

Tạo bảng

Xen dữ liệu

Xóa dữ liệu

Cập nhật dữ liệu

Truy vấn dữ liệu

20

Page 21: KhoaCôngNghệThôngTin TrườngĐạiHọcCầnThơ Lệnh SQL cơ bảncit.ctu.edu.vn/~dtnghi/advDB/pgsql3.pdf · Ví dụ 2 9 Tạobảng Xen ... SELECT n+1 FROM t WHERE n

Cập nhật dữ liệu của bảng

Cú pháp:

UPDATE table

SET col = expression [, ...]

[ FROM fromlist ]

[ WHERE condition ]

Ví dụ:

UPDATE favorite_books

SET books = ‘{“databases”, “data mining”, “machine learning”}’

WHERE id = ‘00013’;

21

Tạo bảng

Xen dữ liệu

Xóa dữ liệu

Cập nhật dữ liệu

Truy vấn dữ liệu

Page 22: KhoaCôngNghệThôngTin TrườngĐạiHọcCầnThơ Lệnh SQL cơ bảncit.ctu.edu.vn/~dtnghi/advDB/pgsql3.pdf · Ví dụ 2 9 Tạobảng Xen ... SELECT n+1 FROM t WHERE n

Tạo bảng

Xen dữ liệu

Xóa dữ liệu

Cập nhật dữ liệu

Truy vấn dữ liệu

22

Page 23: KhoaCôngNghệThôngTin TrườngĐạiHọcCầnThơ Lệnh SQL cơ bảncit.ctu.edu.vn/~dtnghi/advDB/pgsql3.pdf · Ví dụ 2 9 Tạobảng Xen ... SELECT n+1 FROM t WHERE n

Truy vấn dữ liệu

Cú pháp:SELECT [ ALL | DISTINCT [ ON ( distinct_expression [, ...] ) ] ]

target_expression [ AS output_name ] [, ...]

[ FROM from_item [ { , | CROSS JOIN } ...] ]

[ WHERE condition ]

[ GROUP BY aggregate_expression [, ...] ]

[ HAVING aggregate_condition [, ...] ]

[ { UNION | INTERSECT | EXCEPT [ALL] } select ]

[ ORDER BY order_expression [ ASC | DESC | USING operator ] [, ...] ]

[ FOR UPDATE [ OF update_table [, ...] ] ]

[ LIMIT { ALL | count } [ { OFFSET | , } start ] ]23

Tạo bảng

Xen dữ liệu

Xóa dữ liệu

Cập nhật dữ liệu

Truy vấn dữ liệu

Page 24: KhoaCôngNghệThôngTin TrườngĐạiHọcCầnThơ Lệnh SQL cơ bảncit.ctu.edu.vn/~dtnghi/advDB/pgsql3.pdf · Ví dụ 2 9 Tạobảng Xen ... SELECT n+1 FROM t WHERE n

Mệnh đề FROM

from_item ::=

{ [ ONLY ] table_name [ * ]

[ [ AS ] from_alias [ ( column_alias_list ) ] ] |

( select ) [ [ AS ] alias [ ( column_alias_list ) ] ] |

from_item [ NATURAL ] join_type from_item

[ ON ( join_condition ) | USING ( join_column_list ) ]

}

24

Tạo bảng

Xen dữ liệu

Xóa dữ liệu

Cập nhật dữ liệu

Truy vấn dữ liệu

Page 25: KhoaCôngNghệThôngTin TrườngĐạiHọcCầnThơ Lệnh SQL cơ bảncit.ctu.edu.vn/~dtnghi/advDB/pgsql3.pdf · Ví dụ 2 9 Tạobảng Xen ... SELECT n+1 FROM t WHERE n

Kiểu kết nối (JOIN)

join_type ::=

[ INNER |

LEFT [ OUTER ] |

RIGHT [ OUTER ] |

FULL [ OUTER ]

] JOIN

25

Tạo bảng

Xen dữ liệu

Xóa dữ liệu

Cập nhật dữ liệu

Truy vấn dữ liệu

Page 26: KhoaCôngNghệThôngTin TrườngĐạiHọcCầnThơ Lệnh SQL cơ bảncit.ctu.edu.vn/~dtnghi/advDB/pgsql3.pdf · Ví dụ 2 9 Tạobảng Xen ... SELECT n+1 FROM t WHERE n

Ví dụ 8

26

Tạo bảng

Xen dữ liệu

Xóa dữ liệu

Cập nhật dữ liệu

Truy vấn dữ liệu

Page 27: KhoaCôngNghệThôngTin TrườngĐạiHọcCầnThơ Lệnh SQL cơ bảncit.ctu.edu.vn/~dtnghi/advDB/pgsql3.pdf · Ví dụ 2 9 Tạobảng Xen ... SELECT n+1 FROM t WHERE n

Ví dụ 9

27

Tạo bảng

Xen dữ liệu

Xóa dữ liệu

Cập nhật dữ liệu

Truy vấn dữ liệu

Page 28: KhoaCôngNghệThôngTin TrườngĐạiHọcCầnThơ Lệnh SQL cơ bảncit.ctu.edu.vn/~dtnghi/advDB/pgsql3.pdf · Ví dụ 2 9 Tạobảng Xen ... SELECT n+1 FROM t WHERE n

Ví dụ 10

28

Tạo bảng

Xen dữ liệu

Xóa dữ liệu

Cập nhật dữ liệu

Truy vấn dữ liệu

Page 29: KhoaCôngNghệThôngTin TrườngĐạiHọcCầnThơ Lệnh SQL cơ bảncit.ctu.edu.vn/~dtnghi/advDB/pgsql3.pdf · Ví dụ 2 9 Tạobảng Xen ... SELECT n+1 FROM t WHERE n

Ví dụ 11

29

Tạo bảng

Xen dữ liệu

Xóa dữ liệu

Cập nhật dữ liệu

Truy vấn dữ liệu

Page 30: KhoaCôngNghệThôngTin TrườngĐạiHọcCầnThơ Lệnh SQL cơ bảncit.ctu.edu.vn/~dtnghi/advDB/pgsql3.pdf · Ví dụ 2 9 Tạobảng Xen ... SELECT n+1 FROM t WHERE n

Ví dụ 12

30

Tạo bảng

Xen dữ liệu

Xóa dữ liệu

Cập nhật dữ liệu

Truy vấn dữ liệu

Page 31: KhoaCôngNghệThôngTin TrườngĐạiHọcCầnThơ Lệnh SQL cơ bảncit.ctu.edu.vn/~dtnghi/advDB/pgsql3.pdf · Ví dụ 2 9 Tạobảng Xen ... SELECT n+1 FROM t WHERE n

Ví dụ 13

31

Tạo bảng

Xen dữ liệu

Xóa dữ liệu

Cập nhật dữ liệu

Truy vấn dữ liệu

Page 32: KhoaCôngNghệThôngTin TrườngĐạiHọcCầnThơ Lệnh SQL cơ bảncit.ctu.edu.vn/~dtnghi/advDB/pgsql3.pdf · Ví dụ 2 9 Tạobảng Xen ... SELECT n+1 FROM t WHERE n

Ví dụ 14

Tạo bảng

Xen dữ liệu

Xóa dữ liệu

Cập nhật dữ liệu

Truy vấn dữ liệu

32

Page 33: KhoaCôngNghệThôngTin TrườngĐạiHọcCầnThơ Lệnh SQL cơ bảncit.ctu.edu.vn/~dtnghi/advDB/pgsql3.pdf · Ví dụ 2 9 Tạobảng Xen ... SELECT n+1 FROM t WHERE n

Ví dụ 15

33

Tạo bảng

Xen dữ liệu

Xóa dữ liệu

Cập nhật dữ liệu

Truy vấn dữ liệu

Page 34: KhoaCôngNghệThôngTin TrườngĐạiHọcCầnThơ Lệnh SQL cơ bảncit.ctu.edu.vn/~dtnghi/advDB/pgsql3.pdf · Ví dụ 2 9 Tạobảng Xen ... SELECT n+1 FROM t WHERE n

Ví dụ 16

34

Tạo bảng

Xen dữ liệu

Xóa dữ liệu

Cập nhật dữ liệu

Truy vấn dữ liệu

Page 35: KhoaCôngNghệThôngTin TrườngĐạiHọcCầnThơ Lệnh SQL cơ bảncit.ctu.edu.vn/~dtnghi/advDB/pgsql3.pdf · Ví dụ 2 9 Tạobảng Xen ... SELECT n+1 FROM t WHERE n

Ví dụ 17

35

Tạo bảng

Xen dữ liệu

Xóa dữ liệu

Cập nhật dữ liệu

Truy vấn dữ liệu

Page 36: KhoaCôngNghệThôngTin TrườngĐạiHọcCầnThơ Lệnh SQL cơ bảncit.ctu.edu.vn/~dtnghi/advDB/pgsql3.pdf · Ví dụ 2 9 Tạobảng Xen ... SELECT n+1 FROM t WHERE n

Ví dụ 18

36

Tạo bảng

Xen dữ liệu

Xóa dữ liệu

Cập nhật dữ liệu

Truy vấn dữ liệu

Page 37: KhoaCôngNghệThôngTin TrườngĐạiHọcCầnThơ Lệnh SQL cơ bảncit.ctu.edu.vn/~dtnghi/advDB/pgsql3.pdf · Ví dụ 2 9 Tạobảng Xen ... SELECT n+1 FROM t WHERE n

Ví dụ 19

37

Tạo bảng

Xen dữ liệu

Xóa dữ liệu

Cập nhật dữ liệu

Truy vấn dữ liệu

Page 38: KhoaCôngNghệThôngTin TrườngĐạiHọcCầnThơ Lệnh SQL cơ bảncit.ctu.edu.vn/~dtnghi/advDB/pgsql3.pdf · Ví dụ 2 9 Tạobảng Xen ... SELECT n+1 FROM t WHERE n

Ví dụ 20

38

Tạo bảng

Xen dữ liệu

Xóa dữ liệu

Cập nhật dữ liệu

Truy vấn dữ liệu

Page 39: KhoaCôngNghệThôngTin TrườngĐạiHọcCầnThơ Lệnh SQL cơ bảncit.ctu.edu.vn/~dtnghi/advDB/pgsql3.pdf · Ví dụ 2 9 Tạobảng Xen ... SELECT n+1 FROM t WHERE n

Ví dụ 21

39

Tạo bảng

Xen dữ liệu

Xóa dữ liệu

Cập nhật dữ liệu

Truy vấn dữ liệu

Page 40: KhoaCôngNghệThôngTin TrườngĐạiHọcCầnThơ Lệnh SQL cơ bảncit.ctu.edu.vn/~dtnghi/advDB/pgsql3.pdf · Ví dụ 2 9 Tạobảng Xen ... SELECT n+1 FROM t WHERE n

Tạo chỉ mục

Cú pháp:

CREATE [ UNIQUE ] INDEX index_name ON table

[ USING method ] ( column [ op_class ] [, ...] )

CREATE [ UNIQUE ] INDEX index_name ON table

[ USING method ] ( func_name ( column [, ... ] ) [ op_class ])

B-Tree, Hash, R-Tree, GiST

Tăng tốc cho phép truy vấn

40

Tạo bảng

Xen dữ liệu

Xóa dữ liệu

Cập nhật dữ liệu

Truy vấn dữ liệu

Page 41: KhoaCôngNghệThôngTin TrườngĐạiHọcCầnThơ Lệnh SQL cơ bảncit.ctu.edu.vn/~dtnghi/advDB/pgsql3.pdf · Ví dụ 2 9 Tạobảng Xen ... SELECT n+1 FROM t WHERE n

Ví dụ 22

41

Tạo bảng

Xen dữ liệu

Xóa dữ liệu

Cập nhật dữ liệu

Truy vấn dữ liệu

Page 42: KhoaCôngNghệThôngTin TrườngĐạiHọcCầnThơ Lệnh SQL cơ bảncit.ctu.edu.vn/~dtnghi/advDB/pgsql3.pdf · Ví dụ 2 9 Tạobảng Xen ... SELECT n+1 FROM t WHERE n

Ví dụ 23

Dữ liệu binary:

CREATE TABLE fruit (

name char(30),

image OID);

INSERT INTO fruit VALUES ('peach', lo_import('/usr/images/peach.jpg'));

SELECT lo_export(fruit.image, '/tmp/outimage.jpg') FROM fruit

WHERE name = 'peach';

SELECT lo_unlink(fruit.image) FROM fruit;

42

Tạo bảng

Xen dữ liệu

Xóa dữ liệu

Cập nhật dữ liệu

Truy vấn dữ liệu

Page 43: KhoaCôngNghệThôngTin TrườngĐạiHọcCầnThơ Lệnh SQL cơ bảncit.ctu.edu.vn/~dtnghi/advDB/pgsql3.pdf · Ví dụ 2 9 Tạobảng Xen ... SELECT n+1 FROM t WHERE n

Ví dụ 24

Dữ liệu mảng:CREATE TABLE array_test (

col1 INTEGER[5],

col2 INTEGER[][],

col3 INTEGER[2][2][]);

INSERT INTO array_test VALUES (

'{1,2,3,4,5}',

'{{1,2},{3,4}}',

'{{{1,2},{3,4}},{{5,6}, {7,8}}}' );

SELECT * FROM array_test;

SELECT col1[4] FROM array_test;

SELECT col2[2][1] FROM array_test;

SELECT col3[1][2][2] FROM array_test;43

Tạo bảng

Xen dữ liệu

Xóa dữ liệu

Cập nhật dữ liệu

Truy vấn dữ liệu

Page 44: KhoaCôngNghệThôngTin TrườngĐạiHọcCầnThơ Lệnh SQL cơ bảncit.ctu.edu.vn/~dtnghi/advDB/pgsql3.pdf · Ví dụ 2 9 Tạobảng Xen ... SELECT n+1 FROM t WHERE n

Ví dụ 25

Câu truy vấn đệ quy: (suy diễn)CREATE TABLE parent (

f varchar(10),

c varchar(10));

f là cha của c hay

c là con của f

INSERT INTO parent VALUES('Paul', 'Henri');

INSERT INTO parent VALUES('Jean', 'Marie');

INSERT INTO parent VALUES('Louis', 'Paul');

INSERT INTO parent VALUES('Katie', 'Louis');

INSERT INTO parent VALUES('Nicole', 'Jean');

44

Tạo bảng

Xen dữ liệu

Xóa dữ liệu

Cập nhật dữ liệu

Truy vấn dữ liệu

Page 45: KhoaCôngNghệThôngTin TrườngĐạiHọcCầnThơ Lệnh SQL cơ bảncit.ctu.edu.vn/~dtnghi/advDB/pgsql3.pdf · Ví dụ 2 9 Tạobảng Xen ... SELECT n+1 FROM t WHERE n

Ví dụ 25

Câu truy vấn đệ quy: (suy diễn) tìm tổ tiên của Paul

WITH RECURSIVE anc(An, De) AS

(

SELECT f, c FROM parent

UNION ALL

SELECT a.An, p.c

FROM anc a, parent p

WHERE a.De = p.f

)

SELECT * FROM anc WHERE De = ‘Paul';

45

Tạo bảng

Xen dữ liệu

Xóa dữ liệu

Cập nhật dữ liệu

Truy vấn dữ liệu

Page 46: KhoaCôngNghệThôngTin TrườngĐạiHọcCầnThơ Lệnh SQL cơ bảncit.ctu.edu.vn/~dtnghi/advDB/pgsql3.pdf · Ví dụ 2 9 Tạobảng Xen ... SELECT n+1 FROM t WHERE n

Ví dụ 26

Câu truy vấn đệ quy: tính tổng dãy số nguyên 1, …, 100

WITH RECURSIVE t(n) AS

(

SELECT 1

UNION ALL

SELECT n+1

FROM t

WHERE n < 100

)

SELECT sum(n) FROM t;

46

Tạo bảng

Xen dữ liệu

Xóa dữ liệu

Cập nhật dữ liệu

Truy vấn dữ liệu

Page 47: KhoaCôngNghệThôngTin TrườngĐạiHọcCầnThơ Lệnh SQL cơ bảncit.ctu.edu.vn/~dtnghi/advDB/pgsql3.pdf · Ví dụ 2 9 Tạobảng Xen ... SELECT n+1 FROM t WHERE n

Ví dụ 27

Câu truy vấn đệ quy: tính giai thừa của 5

WITH RECURSIVE gt(n, r) AS

(

SELECT 1, 1

UNION ALL

SELECT n+1, (n+1)*r

FROM gt

)

SELECT r FROM gt OFFSET 4 LIMIT 1;

47

Tạo bảng

Xen dữ liệu

Xóa dữ liệu

Cập nhật dữ liệu

Truy vấn dữ liệu

Page 48: KhoaCôngNghệThôngTin TrườngĐạiHọcCầnThơ Lệnh SQL cơ bảncit.ctu.edu.vn/~dtnghi/advDB/pgsql3.pdf · Ví dụ 2 9 Tạobảng Xen ... SELECT n+1 FROM t WHERE n