Khoa Công Nghệ Thông Tin Trường Đại Học Cần Thơ. Những hỗ trợ tiên tiến khác của SQL. Đỗ Thanh Nghị

Similar documents
TÀI LIỆU THỰC HÀNH MÔN CƠ SỞ DỮ LIỆU NÂNG CAO

CẤU TRÚC DỮ LIỆU NÂNG CAO

Bộ môn HTMT&TT, Khoa Công Nghệ Thông Tin và TT, ĐH Cần Thơ

Chương 5. Network Layer. Phần 1 - Địa chỉ IPv4. Tài liệu : Forouzan, Data Communication and Networking

Internet Protocol. Bởi: Phạm Nguyễn Bảo Nguyên

BÀI 6 LÀM VIỆC VỚI THÀNH PHẦN MỞ RỘNG CỦA CSS3

TỔNG QUAN VỀ.NET VÀ C#

Bộ môn MMT&TT, Khoa Công Nghệ Thông Tin và TT, ĐH Cần Thơ

PHÁT TRIỂN ỨNG DỤNG WEB

Entity Framework (EF)

Chương 5. Network Layer 19/09/2016 1

Tình huống 1: PPPoE với Username và Password

Cụ thể những công việc mà AndroidManifest.xml thực hiện: - Đặt tên cho Java package của ứng dụng.

HƯỚNG DẪN CÀI ĐẶT PHẦN MỀM DIỆT VIRUS AVIRA

Tài liệu hướng dẫn: Stored Procedure

HƯỚNG DẪN SỬ DỤNG HỆ THỐNG CẬP NHẬT CHỨNG THƯ SỐ HOTLINE:

Nội dung chính của chương. Các công nghệ đĩa cứng Cấu tạo vật lý của đĩa cứng Cấu tạo logic của đĩa cứng Cài đặt đĩa cứng như thế nào?

Chương 6. Transport Layer. Tài liệu : Forouzan, Data Communication and Networking

BÀI 1: VBA LÀ GÌ? TẠO MACRO, ỨNG DỤNG CÁC HÀM TỰ TẠO (UDF), CÀI ĐẶT ADD-INS VBA là gì?

CHƯƠNG 2: CÁC ĐẶC ĐIỂM VỀ MÔI TRƯỜNG PHÁT TRIỂN (IDE)

Hướng dẫn cài đặt FPT

Cài đặt và cấu hình StarWind iscsi trên Windows. iscsi SAN là gì?

Chương 7. Application Layer. Tài liệu : Forouzan, Data Communication and Networking

LÂ P TRI NH WEB ASP.NET

BÀI TẬP THỰC HÀNH LẬP TRÌNH WINDOWS C#

BẢO MẬT TRONG SQL SERVER

NHẬP MÔN LẬP TRÌNH KHOA HỌC DỮ LIỆU. Bài 10: Thư viện Pandas (2)

Exceptions. Outline 7/31/2012. Exceptions. Exception handling is an important aspect of objectoriented. Chapter 10 focuses on:

Bài 13: C++11. EE3490: Kỹ thuật lập trình HK1 2017/2018 TS. Đào Trung Kiên ĐH Bách khoa Hà Nội

Phần 2. SỬ DỤNG POWERPOINT ĐỂ CHUẨN BỊ NỘI DUNG TRÌNH BÀY

Mô hình dữ liệu quan hệ (Relational data model)

Khoa KH & KTMT Bộ môn Kỹ Thuật Máy Tính

Giáo trình này được biên dịch theo sách hướng dẫn của Sun Light. Vì là hướng dẫn kỹ thuật, trong này những thuật ngữ kỹ thuật bằng tiếng Anh tôi chỉ

Khối: Cao Đẳng nghề và Trung Cấp Năm 2009

GIẢI THUẬT ĐỊNH TUYẾN (ROUTING ALGORITHM)

Mạng máy tính - Computer Network: Hệ. Giao thức - Protocol:

Cập nhật ResultSet trong JDBC

HƯỚNG DẪN SỬ DỤNG PLESK PANEL

Tính kế thừa-2. Bởi: Thanh Hiền Vũ. Định nghĩa lại các thành viên lớp cơ sở trong một lớp dẫn xuất:

Môn Học: Cơ Sở Dữ Liệu 2. Chương 3 LẤY DỮ LIỆU TỪ NHIỀU NGUỒN

SIMULATE AND CONTROL ROBOT

Nhấn nút New để tạo 1 biến mới Trang 17

STACK và QUEUE. Lấy STACK

HƯỚNG DẪN QUẢN TRỊ HỆ THỐNG

GV: Phạm Đình Sắc or

Bài thực hành 1: Chỉ mục trong SQL Server

Bài Thực hành Asp.Net - Buổi 1 - Trang: 1

ĐỌC, GHI XML VỚI C# TRONG ADO.NET --- SỬ DỤNG VISUAL STUDIO

Google Search Engine. 12/24/2014 Google Search Engine 1

BELGIUM ONLINE APPOINTMENT

Các kiểu định địa chỉ họ MSC-51

I. Hướng Dẫn Đăng Nhập:

HƯỚNG DẪN CÁCH SỬ DỤNG WINDOWS MOVIE MAKER

HỢP ĐỒNG MUA BÁN HÀNG HÓA QUỐC TẾ GV: NGUYỄN THỊ BÍCH PHƯỢNG

Online Appointment System will work better with below conditions/ Hệ thống đặt hẹn online sẽ hoạt động tốt hơn với điều kiện sau đây:

Tạo repository mới. The working tree. The staging index. Lệnh git init tạo một repository loại git. tại thư mục hiện tại: $ git init

B5: Time to coding. Tới thư mục src/example.java và thay đổi nội dung file như sau: Mã: package at.exam;

HƯỚNG DẪN SỬ DỤNG ĐẦU GHI H.264 DVR VISION VS (4CH - 8CH - 16CH)

B6: Time to coding. Đi tới src\at.exam tạo một class mới là CustomViewGroup với nội dung sau: Mã: package at.exam;

HƢỚNG DẪN TRIỂN KHAI KASPERSKY - MOBILE DEVICE MANAGEMENT

Bài 10: Cấu trúc dữ liệu

Dọn "rác" Windows 7 vào dịp cuối năm

Bài thực hành số 2 QUYỀN và ROLE

LẬP TRÌNH WINDOWS FORM VỚI CÁC CONTROL NÂNG CAO (Các control trình bày dữ liệu dưới dạng danh sách)

Lecture 12. Trees (1/2) Nội dung bài học:

BÀI 6a LẬP TRÌNH ĐA TUYẾN (MULTI THREAD)

SIEMENS INDUSTRIAL NETWORKS

CHƯƠNG 5: LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG TRONG VB.NET

Tạo Project với MPLAB

Kỹ thuật thu nhỏ đối tượng trong Design (Layout)

1 Bước 1: Test thử kit LaunchPad.

Ôn tập Thiết bị mạng và truyền thông DH07TT - Lưu hành nội bộ (không sao chép dưới mọi hình thức)

BÀI THỰC HÀNH SỐ 1. Quản trị tập tin: 1/ Tạo các thư mục sau: Bài tập thực hành linux Linuxlab. bt1 bt11 bt111. bt121. bt12. bh1 bh11 bh111.

Bài 10. Cấu trúc liên nối. khác nhau được gọi là cấu trúc liên nối. nhu cầu trao đổi giữa các module.

LINQ TO SQL & ASP.NET

Khoa Công Nghệ Thông Tin Trường Đại Học Cần Thơ. Lập Trình JavaScript. Đỗ Thanh Nghị

Làm việc với Database

dụng một chính sách, điều này giúp dễ dàng quản lý và cung cấp tính năng Load Balancing (cân bằng tải) phục vụ tốt hơn các yêu cầu của tổ chức.

Chủ đề 7: Triển khai và Bảo trì. COMP1026 Introduction to Software Engneering CH7-1 HIENLTH

Tìm hiểu Group Policy Object và các ví dụ

ĐỀ CƯƠNG CHI TIẾT HỌC PHẦN

Bài tập căn bản Visual Basic.Net Vòng lặp. txtn. txtketqua. btntinh. txtn. txtketqua. btntinh. Trang 1

2.4. GIAO THỨC MQTT Các khái niệm cơ bản MQTT được phát triển bởi IBM và Eurotech, phiên bản mới nhất là MQTT 3.1 MQTT (Giao vận tầm xa) là

LẬP TRÌNH TRÊN MÔI TRƯỜNG WINDOWS *** ADO.NET

HTML DOM - Forms. MSc. nguyenhominhduc

Bài 7: Các cấu trúc điều khiển

Bài tập lớn số 1. Giả lập bộ định thời

Time Picker trong Android

Lập trình chuyên nâng cao. Lập trình phân tán (Distributed computing

HƯỚNG DẪN SỬ DỤNG DỊCH VỤ CDN

Đa ngôn ngữ (Internationalization) trong Servlet

CÁC KIỂU DỮ LIỆU TRỪU TƯỢNG CƠ BẢN TẬP HỢP

biến Global có thể được áp dụng cho tất cả các extension trong tất cả các context trong Dialplan.

Nội dung. Thêm về Java 2. Nguyễn Việt Hà

HƯỚNG DẪN SỬ DỤNG DỊCH VỤ CDN

BÀI GIẢNG CHƯƠNG 3 GIAO TIẾP KẾT NỐI SỐ LIỆU

- Chạy file cài đặt: kerio-kwf-whql win32.exe. Hộp thoại Choose Setup Language chọn English (United States), chọn

BÀI 5 LÀM VIỆC VỚI CSS3

METAPOST. 1.1 Cấu trúc file Metapost. 1.2 Cấu trúc trong Preamble. beginfig(...) endfig;... extra_beginfig(...) extra_endfig... begingraph(...

Bài thực hành số 1 QUẢN LÝ NGƯỜI DÙNG

Transcription:

Khoa Công Nghệ Thông Tin Trường Đại Học Cần Thơ Những hỗ trợ tiên tiến khác của SQL Đỗ Thanh Nghị dtnghi@cit.ctu.edu.vn Cần Thơ 24-04-2005

Nội dung 2

3

Định nghĩa kế thừa CREATE TABLE Hỗ trợ cho định nghĩa kế thừa (INHERITES) Phép truy vấn cũng làm việc trên dữ liệu thừa kế SELECT (ONLY) 4

Ví dụ 1 5

Ví dụ 2 6

Ví dụ 3 7

Ví dụ 4 với kế thừa 8

Ví dụ 5 với kế thừa 9

Ví dụ 6 với kế thừa 10

11

Định nghĩa kiểu Cú pháp: CREATE TYPE typename ( INPUT = input_function, OUTPUT = output_function, INTERNALLENGTH = { internallength VARIABLE } [, DEFAULT = default ] [, ELEMENT = element ] [, DELIMITER = delimiter ] [, PASSEDBYVALUE ] [, ALIGNMENT = alignment ] [, STORAGE = storage ]) CREATE TYPE typename AS (column_name data_type [,... ]) 12

Ví dụ 7 13

Ví dụ 7 (cont.) 14

15

Định nghĩa hàm Cú pháp: CREATE FUNCTION name ( [ ftype [,...] ] ) RETURNS rtype AS definition LANGUAGE 'langname ' [ WITH ( attribute [,...] ) ] CREATE FUNCTION name ( [ ftype [,...] ] ) RETURNS rtype AS obj_file, link_symbol LANGUAGE 'C' [ WITH ( attribute [,...] ) ] 16

Ví dụ 8 17

Ví dụ 9 18

Ví dụ 10 19

Ví dụ 11 20

Ví dụ 11(cont.) 21

22

Định nghĩa ràng buộc dữ liệu CREATE TABLE hỗ trợ cho định nghĩa những ràng buộc: NOT NULL UNIQUE CHECK PRIMARY KEY (UNIQUE và NOT NULL) REFERENCES (Khóa ngoài) 23

Ví dụ 12 test=# CREATE TABLE cities ( test(# nc smallint PRIMARY KEY, test(# name varchar(30), test(# pop bigint NOT NULL, test(# nb_museums smallint DEFAULT 0); test=# CREATE TABLE hotels ( test(# nh integer PRIMARY KEY, test(# nc smallint REFERENCES cities, test(# name varchar(30), test(# category varchar(12) test(# CHECK (category IN ('modeste','confortable','luxe'))); 24

Ví dụ 13 test=# CREATE TABLE tourists ( test(# nt integer PRIMARY KEY, test(# name varchar(20), test(# last_name varchar(20), test(# age smallint CHECK (age > 0), test(# type varchar(14) test(# CHECK (type IN ('sportif','intellectuel','ecologiste'))); test=# CREATE TABLE museums ( test(# nm integer, test(# nc smallint REFERENCES cities, test(# name varchar(30) NOT NULL, test(# PRIMARY KEY (nm,nc)); 25

Ví dụ 14 test=# CREATE TABLE bookings ( test(# nt integer REFERENCES tourists, test(# nh integer REFERENCES hotels, test(# begin_date date NOT NULL, test(# nb_days smallint NOT NULL, test(# PRIMARY KEY (nt,nh,begin_date)); test=# CREATE TABLE ut ( test(# id integer PRIMARY KEY, test(# acc_no integer UNIQUE); 26

Ví dụ 15 27

Ví dụ 16 28

Kiểm tra ràng buộc: primary key, not null, references test=# INSERT INTO cities(nc, name, pop) VALUES (3, 'Waterloo', 150000); ERROR: duplicate key violates unique constraint "cities_pkey" test=# INSERT INTO museums VALUES (2, 2, NULL); ERROR: null value in column "name" violates not-null constraint test=# INSERT INTO museums VALUES (1, 10, 'CULTURE'); ERROR: insert or update on table "museums" violates foreign key constraint "museums_nc_fkey" DETAIL: Key (nc)=(10) is not present in table "cities". 29

Kiểm tra ràng buộc: check, unique test=# INSERT INTO tourists VALUES (8, 'Dinh', 'Gia Bao', 34, 'foo'); ERROR: new row for relation "tourists" violates check constraint "tourists_type_check" test=# INSERT INTO tourists VALUES (8, 'Dinh', 'Gia Bao', 0, 'sportif'); ERROR: new row for relation "tourists" violates check constraint "tourists_age_check" test=# INSERT INTO ut VALUES (1,1072); test=# INSERT INTO ut VALUES (2,1072); ERROR: duplicate key violates unique constraint "ut_acc_no_key" 30

31

Định nghĩa Trigger Cú pháp: CREATE TRIGGER name { BEFORE AFTER } { event [OR...] } ON table FOR EACH { ROW STATEMENT } EXECUTE PROCEDURE func ( arguments ) 32

Ví dụ 17 Tạo trigger để đảm bảo khi cập nhật dữ liệu trong bảng museums, cột nb_museums trong bảng cities là tổng số museum có trong thành phố 33

Ví dụ 18 34

Ví dụ 19 35

Ví dụ 20 Tạo trigger để đảm bảo khi cập nhật dữ liệu trong bảng bookings, một người du lịch thuộc típ intellectuel chỉ ở trong khách sạn của một thành phố có ít nhất 1 bảo tàng 36

Ví dụ 21 37

Ví dụ 22 Tạo trigger để đảm bảo khi cập nhật dữ liệu trong bảng bookings, một người du lịch thuộc típ ecologiste chỉ ở trong khách sạn của một thành phố có dân số ít hơn 1000 38

Ví dụ 23 39

Kiểm tra những triggers: trigger_insert_update_bookings1 & trigger_insert_update_bookings2 test=# INSERT INTO bookings VALUES (3, 3, '1999-04-30', 2); ERROR: A tourist of the ecologiste type only books the hotel in a city having less 1000 populations test=# INSERT INTO bookings VALUES (2, 3, '1999-04-30', 2); ERROR: A tourist of the intellectuel type only books the hotel in a city having at least one museum 40

41

Định nghĩa View Cú pháp: CREATE VIEW view_name AS SELECT query Từ ver. 9.2 trở về trước postgres không cho phép insert, update, delete trên view. Cần kết hợp với CREATE RULE để thực hiện insert, update, delete Nhưng từ ver. 9.3 postgres cho phép insert, update, delete trên view đơn giản (không có mệnh đề WITH, DISTINCT, GROUP BY, HAVING, LIMIT, OFFSET, UNION, INTERSECT, EXCEPT, etc.) 42

Ví dụ 43

Ví dụ 44

Ví dụ 45

Ví dụ 46

47

Truy cập cạnh tranh Nhiều người dùng chia sẻ cơ sở dữ liệu Cập nhật, truy vấn đồng thời Làm thế nào để đảm bảo được tính nhất quán của dữ liệu từ phía các người dùng? Khái niệm giao dịch (TRANSACTION) ACID (Atomic, Consistent, Isolated, Durable) MVCC (MultiVersion Concurrency Control) BEGIN, ABORD, END, COMMIT, ROLLBACK, SAVEPOINT, CHECKPOINT, SET TRANSACTION, START TRANSACTION, SET CONSTRAINTS, LOCK 48

Truy cập cạnh tranh Tính nguyên tử Giao dịch kết thúc làm «all-or-nothing» trên cơ sở dữ liệu Giao dịch bắt đầu bằng BEGIN Lệnh trong giao dịch chỉ được thực hiện khi gặp «COMMIT» Lệnh trong giao dịch sẽ bị hủy bỏ khi gặp «ROLLBACK» Mọi câu SQL đều nên thực thi trong một giao dịch 49

Truy cập cạnh tranh Tính nguyên tử Một giao dịch nhóm nhiều phép toán thành phép toán nguyên tử Kết quả của giao dịch là «all-or-nothing» 50

Truy cập cạnh tranh Tính cô lập Có 4 mức độ cô lập: SERIALIZABLE, REPEATABLE READ, READ COMMITTED, READ UNCOMMITTED 3 hiện tượng thường gặp: dirty read, nonrepeatable read, phantom read 51

Truy cập cạnh tranh Tính cô lập Mặc định PostgreSQL sử dụng READ COMMITTED 52

Truy cập cạnh tranh Tính cô lập: READ COMMITTED => nonrepeatable read 53

Truy cập cạnh tranh Tính cô lập Sử dụng SERIALIZABLE Cho phép chỉ thấy dữ liệu đã được committed trước thời điểm bắt đầu của giao dịch Cho phép thấy sự thay đổi bởi các lệnh trước đó trong cùng giao dịch mặc dù chưa được committed 54

Truy cập cạnh tranh Công cụ LOCK Sử dụng LOCK tường minh hay SELECT FOR UPDATE 55

Savepoints Đánh dấu bên trong một giao dịch Giúp cho việc hủy bỏ những phép toán từ vị trí Savepoint đến lệnh Rollback trong một giao dịch Một giao dịch có thể có nhiều Savepoints 56