1. Trang chủ
  2. » Công Nghệ Thông Tin

Giáo trình Cơ sở dữ liệu (Tập 1): Phần 2 - TS. Nguyễn Thị Thu Thuỷ (Chủ biên)

58 13 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Giáo Trình Cơ Sở Dữ Liệu (Tập 1): Phần 2
Định dạng
Số trang 58
Dung lượng 2,22 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Giáo trình Cơ sở dữ liệu (Tập 1) trình bày các kỹ thuật tổ chức dữ liệu ở dạng mô hình liên kết thực thể, hay mô hình quan hệ, chuẩn hóa mô hình cơ sở dữ liệu quan hệ, cũng như sử dụng các phép toán đại số quan hệ hoặc SQL để truy vấn thông tin từ cơ sở dữ liệu. Giáo trình kết cấu gồm 3 chương và chia thành 2 phần, phần 2 trình bày những nội dung về: ngôn ngữ khai thác cơ sở dữ liệu quan hệ;... Mời các bạn cùng tham khảo!

Trang 1

Chương 3 NGÔN NGỮ KHAI THẤC CSDL QUAN HỆ

Chương này trình bày khái quát những kiến thức cơ bản về các ngôn ngữ cho phép định nghĩa các đối tượng của một cơ sở dữ liệu vàbiểudiễncác yêu cầutrên cơsở dữ liệuđó màmộthệ quàn trị cơ sở dữ liệucó thể hỗ trợ Cụ thể, chúngta sẽ đitìm hiểu hai ngôn ngữ khai thác

cơ sở dữliệu quan hệ đó là đại số quan hệ và ngôn ngữ truy vấn có cấutrúc SQL

3.1 Các phép toán quan hệ

Ngôn ngữ đại sốquanhệ làcơ sở quantrọngcủamột ngôn ngữ bậc cao được sử dụng để thao tác ữên các quanhệ Với dữliệuđược lưu trữ

là những quan hệ nào đó, có thể sử dụng các phép toán của đại số quan

hệ để tạo ra các quanhệ mới, quanhệ mới này làthôngtinđược hiển thị

ratheoyêucầucủa người dùng

Đại số quan hệlàloại ngôn ngữ thủ tục, bao gồmtập hợp các phép

toán được áp dụng trên các thể hiện cùaquanhệ Kết quả trả về của một câu truy vấn làmột thể hiện của quan hệ Chuỗi các phép toán đại sổ

quan hệ hình thành nên biểu thức đại số quan hệ (câu truyvấn) mà kếtquảcủanó cũngtràvềmộtthể hiện của quanhệ

Đối với ngônngữnày, mỗi câu hỏi được biểu diễn thông qua việc

áp dụng một tập hợp các phép toán đặc biệt đối với các quan hệ Cácphép toán của đại số quan hệ thường được chiathành ba nhóm Nhómthứ nhất gồm các phép toán tập hợp (phép hợp, phép giao, phép trừ vàphép tích Đề-các) Nhóm thứ hai gồm các phéptoán đặc biệt trên quan

hệ (phép chọn, phép chiếu, phép chia, phép kết nối và phép đặt lại tên) Nhóm thứ ba gồm các phép toánquanhệ bổ sung (các hàm kếttập và các phép gộp nhóm)

Trang 2

3.1.1 Các phép toán tập hợp

Một quanhệ là một tập hợp các n-bộ được tạo ravới n là số ngôi hay bậc cố định của một quan hệ Trong lý thuyết tập hợp, nhóm các phép toán tập hợp bao gồm phép hợp, phép giao, phéptrừ, và phéptíchĐề-các của hai tập hợp là những phép toán hai ngôi Khi sử dụng các phéptoánnày trong các cơ sở dữliệu quan hệ cần phải có cácđiều kiện đảmbảo ràng quan hệ kết quả cùa các phép toán cũngphải làmộtquan

hệ hợp lệ Điều kiện nàygọi là điều kiệnkhả hợp

Định nghĩa 3.1: Chohai lượcđồ quanhệ R(A1, A2, , An) và S(B1, B2, , Bm) làkhả hợp nếu chúng cùng bậc(có nghĩa là n=m) và có cùngmiền giá trị DOM(Aj) = DOM(Bj), 1< i < n

Định nghĩa 3.2: Cho r và s làhai quanhệ Khi đó, r và s được gọi

là khả hợp nếu chúng được xác định ưên cùng tập thuộc tính và các thuộc tính cùng têncó cùng miềngiá trị

Ví dụ 3.1: Cho 2 quan hệ NHANVIEN và THANNHAN với cácthể hiện:

NHAN.VIEN TENNV NGSINH GT

Tung 12/08/1955 Nam Hang 07/19/1968 Nu Nhu 06/20/1951 Nu Hung 09/15/1962 Nam

THAN NHAN TENTN NG SINH GTTN

Trinh 04/05/1986 Nu Khang 10/25/1983 Nam Phuong 05/03/1958 Nu Minh 02/28/1942 Nam Chau 12/30/1988 Nu

Trang 3

Khi đó ta có:

- Bậccủahaiquanhệ: n=3;

- Miền giá tri của các thuộc tính:

Biểudiễnhình thức của phép này có dạng: r u s= { 11 ter Vtes}

Ví dụ 3.2: Cho 2 quan hệ NHACC và KHACHHANG với các thể hiện:

NHACC lliỉỉẨ >55?

Lan

Hà OanhTùng MậnLê

Hà NộiBắc NinhThanh Hóa NamĐịnhBắc GiangHải Dương

KỐACHHANG

TùngLâm LanĐào

Nam ĐịnhHải Phòng

HàNội Phú Thọ

Trang 4

Khi đó, phép hợp của 2 quan hệ NHACC vàKHACHHANG được biểu diễn và có kếtquả như sau:

Tùng Nam ĐịnhMận Bắc Giang

Lê Hải Dương

Biểu diễn hình thức củaphépnàycó dạng: rn s = 11 ter Ates)

Ví dụ 3.3: Cho 2 quan hệ NHACC và KHACHHANG với các thểhiện như ví dụ 3.2

Khi đó, phép giao của2 quan hệ NHACCvà KHACHHANG được biểu diễn và có kếtquả như sau:

• Phép trừ

Lan Tùng

Hà NộiNam Định

Cho 2 quan hệ r và s khả hợp Khi đó, phép trừ của rvà s là một quan hệ gồm tập tất cả các bộ thuộcr nhưng không thuộc s và được kýhiệu làr - s

Trang 5

Biểudiễnhình thức củaphépnày có dạng: r - s = {11ter A tỂs}

Ví dụ 3.4: Cho 2 quan hệ NHACC và KHACHHANG với các thểhiện như ví dụ 3.2

Khi đó, phép trừ của 2 quan hệ NHACC và KHACHHANG được biểu diễn và cókếtquà như sau:

Oanh Thanh Hóa

KHACHHANG - NHACC SIB

Trang 6

{A],A2, ,An} và {Bl,Bĩ, —, Bm) và r và s là hai quan hệthuộc hai lược

đồ R và s tương ứng Khi đó phép tích Đề - các cùa 2 quan hệ r và s làmột quan hệ gồm tập tất cả các (m+n) - bộ có n thành phần đầu tiên làmộtbộ thuộc r và mthành phần saulàmộtbộ thuộc svà được ký hiệu là

rx s

Biểu diễn hình thức củaphépnàycódạng:

r X s = {t I t=(ai, an,b1, bni)A (ab an) e rA(b15 bm) e s}

Kết quàtrả về là mộtquan hệ q Mỗi bộ của q làtổ hơp giữa 1 bộtrong r và 1 bộ trong s:

Ti vi LCDMáy giặt

Tủ lạnh

Khi đó, tích Đề-các của 2 quanhệ NHACC và HANGHOA được biểu diễn và có kếtquả như dưới đây:

Trang 7

NHACC X HANGHOA MaNCC Ten MaHH TenHH

và được kýhiệulà r -ỉ-s

Biểu diễn hình thức củaphépnàycó dạng:

r -5- s={t I t=(am+b an): V (ậa™) e s, (aba2, ,am,am+b an) e r}

Ví dụ 3.6: Cho 2 quan hệ CUNGCAP vàHANGHOA với các thểhiện như saụ

Trang 8

CUNGCAP MaNCÇ MaHH

Khi đó, tích phép chia của quan hệ CUNGCAP cho quan hệHANGHOAđược biểu diễn và có kết quà như dưới đây:

100102

3.1.2 Các phép toán đặc biệt trên quan hệ

Các phép toán đặc biệt trên quan hệ bao gồm các phép toán liênquan chặt chẽ đến các thao tác cơbàn làm thay đổi quan hệ (như cácthaotácthêm, sửa, xóa các bộ giá trị trongmột quan hệ) Các phép toánnày là một cách tiếp cận khác trong việc biểu diễn câu truy vấn củangôn ngữđại số quanhệ

• Phép chọn

Phép chọn được dùng để lọc ra một tập con các bộ của quan hệ đã cho thỏa mãn một điều kiện xác định Điều kiện đó được gọi là điều kiện chọn hay biểu thức chọn.

Trang 9

Biểu thức chọn F được biểu diễn bởi mộtbiểu thức logic bao gồm các toán hạng, mỗitoán hạng là một phépso sánh đơn giản giữa hai biến

là hai thuộc tínhhoặc giữa một biếnlà một thuộc tính và một biến làgiátrị hằng Biểu thức chọn F cho giá trị là đúng hoặc sai (TRUE hoặcFALSE) đối với mỗi bộ đã kiểm ứa

Như vậy, điều kiện chọn F là một biểu thứclogic gồm các mệnh đề

có dạng:

- <tên thuộc tính> <phép so sánh><hằngsố>

- <tên thuộc tính><phép so sánh> <tên thuộctính>

Các phép so sánhtrongđiều kiện chọnF là <, >, <, >, =

Các mệnh đề được nối lại nhờ các phép logic A (và), V (hoặc), -I (phủ định)

Cho r là một quan hệ và F là một biểu thức logic trên các thuộc tính của r Phép chọn trên quan hệ r các bộ thỏa mãn điều kiện chọn F,

kỉ hiệu là ơf(r) là tập tất cả các bộ của r thỏa mãn F.

Biểu diễn hình thứccủaphép này có dạng:

ơF(r) = {11 ter A F(t) = TRUE}

Ví dụ 3.7: Cho quan hệ HANGHOA vớicác thể hiện như sau

Trang 10

ƠMausac= “Xám” (HANGHOA) MaHH Mausac Trongluoog

Cho r là một quan hệ n ngôi xác định trên tập thuộc tính U={A i ,A2,

và một tập con thuộc tínhXcU Phép chỉếu của quan hệ r trên

tập thuộc tính X được ký hiệu là Iĩx(R, là một quan hệ gồm tập tất cả các

bộ của r xác định trên tập thuộc tỉnh X).

Biểu diễn hình thức củaphép nàycó dạng: nx(r)={t[X] I ter}

Trang 11

Ví dụ 3.8: Cho quan hệHANGHOA với cácthể hiện nhưsau:

HANGHOA MaHH Másac •• ;,;'í Trongluong,

TV01 Ti viLCD Đen 2.5

TL01 Tủ lạnh Xanh 10TV02 Ti vi LCD Xám 3.5MG02 Máy giặt Trắng 8Khi đĩ, yêucầu đưa ra thơng tin về mãhàng, tênhàng củacác mặt hàng sẽ đượcbiểu diễn và cĩkếtquả như sau:

nMarai,TenHH (HẤNGHốẨ)^

TV01MG01TL01TV02MG02

Ti vi LCDMáy giặt

Tủ lạnh

Ti vi LCDMáy giặtYêu cầu 2: Đưa rathơng tin về mã hàng, màu sắc củanhững hànghĩa cĩ trọng lượng lớn hơn 7 kg được biểu diễnvà cĩ kếtquà như dướiđây:

n^aHH, Mausac(ƠTrongluong>7 (BÌẰNGHỮẤ)^ *ỊỊSS

TL01MG02

XanhTrắng

Phép chiếu tổng quát là sự mở rộng phép chiếu bằng cách cho phép sử dụng các phép tốn sổ học trong danh sách thuộc tỉnh, và được

kí hiệu.là n FI F2'Fn (E) trong đĩ:

- E là biểu thức đại sổ quan hệ;

Trang 12

- Fl, F2, ,Fn là các biểu thức số học liên quan đến hằng số hoặc các thuộc tính trong E.

Ví dụ 3.9: Cho quan hệ THETINDUNG (Mathe, trigiathe,SotienSD)

Yêu cầu: Hãy cho biết số tiền còn lại trong mỗithẻ?

Khi đó ta có câu truy vấn: n Mathe, trigiathe - SotienSD (THETINDƯNG)

Phép kếtnối được dùng để tổ hợp hai bộ có liên quantừ hai quan

hệ thànhmộtbộ mới trongmộtquanhệ mới

Khái niệm“ ghép bộ ”: giảsử cho hai bộ u =(ai, a2, , a„) và V =(bi, b2, bm), phép ghépbộ u với bộV được kí hiệulà(u,v) được định nghĩa như sau: (u,v)=(ab a2, , an,bb b2,bm)

Phép kết nổi hai quan hệ thực chất là phép ghép các cặp bộ của hai

quan hệ thỏa mãn một điều kiện nào đó trên chúng Điều kiện đó được gọi là điều kiện kết nối hay biểu thức kết nổi.

Cho quan hệ r xác định trên tập thuộc tính (A ị , A2, A„), s là

quan hệ xác định trên tập thuộc tỉnh (Bj, B 2 , , Bn), và 6 là một trong các phép so sảnh * ,=,<,>,<,> Kết quả của phép kết nổi 0 quan hệ r

với quan hệ s theo điều kiện Ai ỡ Bj và được kí hiệu r [><! s là và được

A10 Bj

xác định như sau:

r l><l s={(t,u)| ter, UGSvà t[Ai] 0 u[ Bj] }

Trang 13

Tất nhiên ở đây cần giả thiết rằng các phép so sánh của các cặpthuộc tính của hai quan hệ là có nghĩa, tức là mỗi giá trị thuộc Dom(Ai)

cóthể so sánh được với mỗigiá trị thuộcDom(Bj)qua phép so sánh 0

Ta có thể sử dụng kí hiệu r [><1s nếu F được kí hiệu thay cho

s (hoặcr [X]s) choquanhệkết quả

Ví dụ 3.10: Cho 4 quan hệ NHACC, CUNGCAP, HANGHOAvà KHACHHANG vớicầc thểhiện

NHACC MaNCC TenNCC DiachiNCC KHACHHANG TenKH DiachiKH

102 Oanh Thanh Hóa Đào Phú Thọ

MG02

Ti vi LCD Máy giặt

Tủ lạnh

Ti vi LCD

Máy giặt

Hà Nội Hải Dương

Thanh Hóa Bắc Ninh Hải Phòng

Khi đó giả sửta có các truy vấnsau:

Truy vấn 1: Đưa ra thông tin về các nhà cung cấp có tên khác với tên khách hàng

Trang 14

NHACC lI KBACHHANG

ta có thể viếtmột biểu thức đại số quan hệ mà các phép toán cóthể xếplồng với nhau Cáchviếtbiểu thức này có thể đon giảnhon bằng cách sử

Trang 15

dụng nhữngquan hệ kết quàtrung gian tương ứng với mỗi phép toán tại mộtthòi điểm và tạo ra các quan hệ là các kết quả trung gian đó Nhữngquanhệ trung gian như vậy ẹần phải đượcđặt tên.

Ví dụ 3.11: Đưara thông tin về Mã nhàcungcấp, tênnhàcung cấp

đã cung ứng mặt hàngMG01 Khi đó ta có thể viết theo các cách nhưsau:Không dùngquanhệ trung gian:

ri-MaNCC, TenNCc(^MaHH=“MG01” (NHACC * CUNGCAP))

Dùng quanhệtrung gian:

TG <- ƠMaHH=“MGOi”(NHACC * CUNGCAP))

KQ <— nMaNCC> TenNCc(TG)

Ta cũng có thể đặt lại tên cho các thuộc tính trong các quan hệtrung gian và kếtquả Để đạt lại tên cho các thuộc tínhtrongmột quan hệkết quả, chúngta có thể liệt kê tên mới của các thuộc tính trong cặpdấu

“0” theo tênquanhệ kết quả hoặc sửdụng phép đặt lại tênp

Xét quan hệ r với các thuộctínhB, c, D

Đổi tên quan hệ' Phép đổi tên quan hệ r thành quan hệ được kíhiệu làPr(s)

Đổi tên thuộc tính: Phép đổi tên thuộctính B trong quanhệ r thànhthuộc tínhX được kí hiệu là Px, c, D(r)

Đổi tên thuộc tỉnh và đổi tên quan hệ'. Phép đổi tênquanhệ r thànhquanhệ s và thuộctính B thànhthuộc tính X được kí hiệu là ps(X) c,D(r)

Ví dụ 3.12: Xét lại ví dụ 3.9 trongtrường hợp sửdụng phép đặtlại tên:

TG <—ơMaHH=“MG0i” (NHACC * CUNGCAP))

KQ (Ma, Ten)<- nMaNcc,TenNcc(TG)

Hoặc p kq (Ma, Ten) (nMaNCC, TenNCc(TG))

Trang 16

3.1.3 Các phép toán quan hệ bổ sung

Trong ngôn ngữ đại số quan hệ nếu chỉ sử dụng các phép toán cơbản ở trênthì có nhiều truy vấn cơ sở dữ liệusẽ khôngthực hiện được

Vì vậy, ưong các hệ quản trị cơ sở dữ liệu thìhầu hếtcác ngôn ngữ thaotác dữ liệu đã có những phép toán quan hệ bổ sung để thực hiện đượcnhững truy vấn như vậy Các phép toánquan hệ bổ sung thường dùng làcác hàm kết tập và các phép gộp nhóm Các phép toán này làm tăng cường sứcmạnhkhai thác cơ sở dữ liệu củađại số quan hệ

- Các hàm kết tập: Kiểu truy vấnđầutiên không thểbiểu diễn được trong đại số quan hệlà các truyvấnmôtà bằngcáchàm toánhọc cótínhchất kết hợp trênmộttập hợpcác giátrị củacơ sờ dữ liệu Ví dụ như các yêu cầu được truy vấn là “cho biết tổng doanh thu đãbán?” hay “thống

kê tổng số lượng hàng hóa đã được bán?” hoặc “cho biết giá cả trungbình của các mặt hàng được bán?”, Mỗi hàm kếttập nhận vào tập hợp các giá trị và trảvềmộtgiá trị đơn Các hàm hayáp dụng để thu thập các giá trị số đó là:

Trang 17

Với truy vấn đưa ra tổng số hàng hóa đã được bán, ta có truy vấn:SUM(Soluong) -> kếtquả là 100.

Chú ý: Kết quảtrà về của việc áp dụng một hàm kết tập đó là một quan hệ Các bộ trùng lặp trong mỗi nhóm không bị loại bỏ khỏi nhóm khi thực hiện một hàm kết tập

- Các phép gộp nhóm' Một kiểu truy vấn hay dùng khác cũng không thực hiện được trong đại số quan hệ với các phép toán cơ bản ởtrên là yêu cầu nhóm các bộ trong một quan hệ theo một giátrị của một

số các thuộc tính của chúng và sau đó áp dụng cáchàm nhómmột cáchđộc lập cho từng nhóm Ví dụ, nhóm các bộ của quan hệ CUNGCAP theo MaNCC như vậy mỗi nhóm bao gồm các mặt hàng đã được cung cấp bởi mỗi nhà cungcấp Sau đó chúng ta có thể đưa ra thông tin: Đốivới mỗi nhà cung cấp đã cung ứng bao nhiêu loại mặthàng với tổng sổlượng các mặt hàng đã cung ứng Ta có thể định nghĩa một phép gộp nhóm như sau:

<Các thuộc tínhgộpnhóm>3<Danhsách hàm kết tập> (r)

Trong đó:

o 3 là kí hiệu của phép toán gộp nhóm

o <Các thuộc tính gộp nhóm> là danh sách các thuộc tính củaquan hệr;

Trang 18

SQL(Structured Query Language) là một ngôn ngữmáy tính dùng

để tạo, chỉnh sửa, và truy vấn dữ liệu từ mộthệ quàn trị cơ sở dữ liệu quan hệ

Ngôn ngữSQL xuấtpháttừbài báo“Môhình quanhệ chodữ liệu dùng trong ngân hàng dữ liệu dùng chung có khối lượng lớn” của tiến

sĩEdgarF Codd, 1970, và mô hình này sau đó đã được chấp nhận rộngrãi làmô hìnhtiêu chuẩndùng cho hệ thống quàn lýcơ sở dữ liệuquanhệ.Giữa những năm 1970, một nhóm các nhà phát triển thuộc trungtâm nghiên cứu của IBM dựa trên mô hình của tiến sT Edgar F Codd

đãphát triển mộthệ thống quàn lý và truy vấn cơ sởdữ liệu được đặtt'ên là Structured English Query Language, viết tắt là “SEQUEL” Saunày, tên viếttắt SEQUEL được rút gọn thành SQL Mặc dù SQL bị ảnhhưởng bởi công trìnhcủa tiến sĩ Codd nhưng nó không do tiếnsĩ Coddthiết kế mà được thiết kế bởi Donald D Chamberlin và Raymond F Boyce tại IBM

Trang 19

Năm 1986, SQLđược thừa nhận làtiêuchuẩncủaANSI(AmericanNational Standards Institute) và được ISO(International OrganizationforStandardization) thừanhận một năm sau đó, năm 1987 Tiêu chuẩnSQL

đã trải qua một số phiên bản: SQL-86, SQL-89, SQL-92,SQL:1999, SQL:2003, SQL:2008,SQL:2011

3.2.1 Tổng quan về ngôn ngữ SQL

Bất kỳ một ngônngữ xây dựngvàkhai thác cơ sở dữliệu quan hệnàophải cho phép ngườidùng thực hiện các côngviệc sau:

- Tạo một cơ sở dữ liệu và cấu trúc các quan hệ

- Thực hiệncácthaotácquản lý dữ liệu cơbản, như thêmmới, hiệuchỉnh và xóa dữ liệu thuộc một quanhệnào đó

- Thực hiện các truyvấnđơngiảnvàphức tạp

SQL giúp cho ngườidùng thực hiện các nhiệmvụ trên một cách dễ dàng, với các cấu trúc và cú pháp lệnh đơn giản dễ học

SQL cũng là một ngôn ngữ có tính dịch chuyển cao, do ngônngữ tuân theo những chuẩn đã đượcxác định nên người dùng có thể sử dụngcùng một cấu trúc và cú pháp lệnh khihọ chuyển từmộthệquản trị cơ sở

dữ liệu này sang một hệ quản trị cơsở dữ liệu khác

SQL là một ngôn ngữ hướng chuyển đổi” (transform - orientedlanguage), ngôn ngữ được thiết kế để sử dụng các quan hệ trong việc chuyểnđổi cácđầuvàothành các đầura yêu cầu

Theo chuẩnISO, ngôn ngữ SQL có hai thành phần chính:

- Thành phần ngôn ngữ định nghĩa dữ liệu (Data DefinitionLanguage - DDL) dùng để định nghĩa các cấu trúc cơ sở dữ liệu và quản

lý các truy cập đến dữ liệu Chi tiếtvềthànhphầnDDL sẽ được trìnhbày

ởphần3.2.3

- Thành phần ngôn ngữ quản trị dữ liệu (Data Manipulation Language - DML) dùng để truy vấn và cậpnhật dữ liệu Chi tiếtvềthànhphần DML sẽđượctrìnhbàyở phần 3.2.4 và 3.2.5

Trang 20

Cho đếnphiênbản SQL:1999,ngôn ngữ SQL chibao gồm các lệnhđịnhnghĩa và quàntrị dữ liệu mà không bao gồm các câu lệnh điều khiển luồng công việc nhưIF THEN ELSE, GO TO, hay While Nhữngcâu lệnh này được càỉ đặt bằng các ngôn ngữ lập trình hay ngôn ngữquản lý công việc, hoặc được người dùngquyết định thôngqua các tươngtác trực tiếp Do sự thiếu hụtnày, SQL có thể được sử dụng theo 2 cách.Cáchthứnhất là dùng SQL cùng với các chỉ thị được thêm vàotại thiết

bị đầu cuối hoặc cách thứ hai là nhúng SQL vào một ngôn ngữ lập trìnhnàođó (cách này được sử dụng rộng rãi trong việcxâydựng các hệ thống thông tintrongdoanh nghiệp)

Ngôn ngữ SQL làmột ngôn ngữ dễhọc:

- SQL làngôn ngữ không hướng thủtục: người dùng sẽ chỉ rõ đâu

làthông tinhọ cần, mà không cầnchì ra làm cách nào để có được thông tin đó Nói cách khác, SQL không yêu cầu người dùng chi rõ phương thức truy cập dữ liệumột cách tườngminh Do chi cầnxác định yêu cầuthông tin nên ngôn ngữ SQL trở nênđơn giản với người học

- Giống hàu hết các ngôn ngữ hiện đại khác, SQL là ngôn ngữkhông có định dạng, có nghĩa là các phần khác nhau của một chi thị không cầnphảiđặt tại mộtvị trí cụthểfrênmàn hình

- Cấu trúc các câu lệnh bao gồmnhững từ tiếng Anh đơn giản như CREATETABLE, INSERT, UPDATE, SELECT v.v

- SQL có thể sừ dụng bởi nhiều đối tượngngười dùng, như ngườiquản trị cơ sở dữ liệu (DBA), người quàn lý, người pháttriển ứng dụng,

và rất nhiều kiểu người dùngkhác

Trong ngôn ngữ SQL không sửdụng các kháiniệm quan hệ, thuộctính và các thể hiện như đã định nghĩa ưong phần đại số quan hệ mà thay vào đó SQL sử dụng các khái niệm bàng, cột và hàng Một bảng tươngđương với mộtquan hệ, một cộttương đương với một thuộctính và mộthàng tương đương với một thể hiện Cũng nên chú ý răng, SQL không tuyệt đối tuân theo định nghĩa của mô hình quan hệ được miêu tả ở

Trang 21

chương trước Ví dụ, SQLcho phép một bảng kếtquả của mộtphép “tìmkiếm” cóthể baogồm những hànggiốngnhau(duplicate rows), SQLcònquy định thứ tự trên các cột, và cho phép người dùng sử dụng một sốphép toánưên bảng kếtquả, ví dụsửdụng phép sắp xếp cáchàng trong bảng kết quả.

3.2.2 Các kiểu dữ liệu

Các thuộc tính trong cơsở dữ liệu quan hệ, hay các cộttrong một bảng của SQL luôn thuộc một kiểu dữ liệu xác định Trong ngôn ngữSQL, thành phàn ngôn ngữđịnh nghĩa dữ liệu (DLL) xây dựng sẵn các kiểudữliệu cơbản Các kiểudữ liệucơ bản của DLL được chỉ ra trong bảng sau:

Kiểu dữ liệu Khai từkhóa dùng trong khai báo

Xâu ký tự CHAR VARCHAR

Số chính xác NUMERIC DECIMAL INTEGER SMALLINT

Interval INTERVAL

Đối tượng lớn CHARACTER LARGE

OBJECT

BINARY LARGEOBJECT

Chi tiết về miền giá trị của các kiểu dữ liệutrong ngônngữ SQLnhư sau:

Kiểu logic: Dữ liệu thuộc kiểu logic thường nhậnmộttronghai giátrị TRUEhoặc FALSE Ngoại trừtrường hợp dữ liệu được mặc định bởi rằng buộc NOTNULL, dữliệukiểu logic còn hỗ trợmột giá trị khác làgiá trị UNKNOWN (không xác định) và được coi như là giá trị trống Kiểu logic frong SQL hỗ trợ các phép toán so sánh và gán, trong đó giá

Trang 22

tri TRUE lớn hơn giá trị FALSE, và các phép so sánh bao gồm giá trị UNKNOWN sẽtràvềkếtquả UNKNOWN.

Kiểu xâu ký tự: Dữliệu thuộckiểu xâu ký tự bao gồm một chuỗi các kýtựthuộc nhóm ký tự đã định nghĩa trước, phụ thuộc vào bảng mã

mànhà phát triển ứng dụng SQL lựachọn, thườnglàASCII và EBCDIC Khi định nghĩa một cột trong bảng thuộc kiểu xâu kýtự, có thể chỉ rõsố

ký tự tối đa mà cột đó có thể chứa Một xâu ký tự có thể có độ dài cố định hoặc độ dài động Trong trường hợp sử dụng độ dài cố định, nếungười dùng nhập vào một chuỗiký tựcó độ dài nhỏ hơnsố ký tự tối đa,các ký tự trắng sẽ được thêm vào cuối đểchuỗi đó đạt được kích thướctối đa Ngược lại, trong trường hợp sửdụng độ dài động, nếu người dùngnhập vào một chuỗi ký tự nhỏ hơn số ký tự tối đa,chì các ký tự nhập vào được lưutrữ, do đó tiếtkiệmđượcbộ nhớ sử dụng

Trong ngôn ngữ SQL, kiểu dữ liệu CHAR làkiểu dữ liệucó độ dài

cố định và kiểu dữ liệuVARCHARlàkiểu dữ liệu có độ dàithayđổi

Kiểu nhị phân: Dữ liệu thuộc kiểu nhị phân là mộtdãy tuần tự các bit (binary digits), mỗi bit nhận một trong hai giá trị 0 hoặc 1 Định dạngdùng để khai báo kiểu nhị phân giống với khai báo của kiểu ký tự: BIT [VARYING] (length) Trong đó, length là độ dài tối đa của của kiểu dữ liệu và từ khóa VARYING dùng để chỉ độ dài dữ liệuthuộc kiểu độ dài

cố định hay độdài động

Kiểu sổ chính xác: Là kiểu dữ liệu được sử dụng để định nghĩa các

số một cách chính xác Các số thuộc kiểu này bao gồm một phần số nguyên, có thể có phần thập phân và dấu Mộtkiểu dữ liệu chính xác bao gồm hai thành phần precision và scale Thànhphần presision chì ra tổng

số các chữ số thuộc kiểu và thành phần scale chỉ ra số các số sau dấuphẩy thuộckiểu này Ví dụ, giátrị số -12.345 cóprecision = 5 và scale= 3.Trong các kiểu dữ liệu thuộc nhóm kiểu số chính xác, kiểu NUMERIC và DECIMAL chứa các số thập phân, trong đóphầnscale cógiá trị mặc định là 0 Kiểu INTEGER dùng cho các số nguyên lớn vàSMALLINT dùng cho các số nguyên nhỏ

Trang 23

Ví dụ: DECIMAL (7,2), là kiểu dữ liệu có tổngsố ký tự tốiđa là 7, trong đó có thể có 2 ký tự phần thậpphân Dữ liệuđược định nghĩatheođịnh nghĩanàycóthể chứa giátrị tối đa99999,99.

Kiểu số gần đúng: Các kiểu dữliệusố gần đúng được sửdụng đểxác định con số mà không thể có mộtthể hiện chính xác, chẳng hạn như các số thực Số gần đúng sử dụng trong SQL bởi khai báo kiểu sau:FLOAT(precision); REAL; DOUBLE PRECISION

Trong đó, thành phần [precision] (độ chính xác) là một số nằmtrong khoảng [l-^-ốS] qui địnhkích thước bộ nhớdùng để lưutrữ các giátrị số trong kiểu định nghĩa Độ chính xác của kiểu FLOAT do người dùng tự định nghĩa, trong khi độ chính xác của kiểu REAL và DUBLE PRECISION được quy định sẵn bởihệ thống

Kiểu dữ liệu thòi gian: Các kiểu dữ liệuvề thờigian được sửdụng

để xác định các thời gian trong ngày ở một mức độ chính xác nhất định:

Ví dụnhư ngày, giờ, vàthời điểm trong ngày Tiêu chuẩn ISO chia nhỏ

dữ liệu về thời gian thành nhiều kiểu như: YEAR, MONTH, DAY,HOUR, MINUTE, SECOND, TIMEZONE HOUR, và TIMEZONE _MINUTE Trong SQL hỗ frợ các kiểu thời gian sau: DATE; TIME [presicion] [múigiờ];TIMESTAMP[độ chính xác] [múi giờ]

Trong đó, độ chính xác là số lượng các chữ số phần thập phân của giá trị đo thời gian Trong kiểuTIME, độ chính xác ngầm định là0 (đothời gian theo từng giây) và trong kiểu TIMESTAMP, độ chính xácngầm định là 6 (đo thời gian theo một phầntriệu giây) Trong kiểuthời gian, múigiờ mặcđịnhlàmúi giờ củahệ thông

3.2.3 Các lệnh định nghĩa dữ liệu

Thành phần ngôn ngữ định nghĩa dữ liệu (DDL) trong SQL cho phép định nghĩa và hiệu chỉnh các đối tượng trong một cơ sở dữ liệu quan hệ như các lược đồ, cơ sở dữ liệu, bàng (quan hệ), các chỉ mục.Trong phần này, chúng tôi chỉ giới thiệu ngắn gọn cách xây dựng hiệu chỉnh và hủy các bảng trong một cơ sờ dữ liệuquan hệ Các câu lệnh chính được dùng là: CREATE TABLE;ALTER TABLE và DROP TABLE

Trang 24

Tạo bảng

Trong quá trình xây dựng cơ sở dữ liệu quan hệ bằng ngôn ngữSQL, một trong những yêu cầu quan trọng nhất là xây dựng các bảngnằm trong cơ sở dữ liệu đó Xây dựng các bảng trong cơ sở dữliệu bao gồm việc chỉ rõ chi tiết thành phần của bảng và mối quan hệ giữa các bảng Trong ngôn ngữ SQL, các bảng và mối quan hệ được định nghĩabởi câulệnhCREATE TABLE

Cú pháp của câu lệnh CREATE TABLE:

CREATE TABLE tênbàng

(

[Cột 1] [kiểu dữ liệu 1] [NOT NULL] [UNIQUE] ,

[Cột 2] [kiểu dữ liệu 2] [NOT NULL] [UNIQUE] ,

[Cộtn] [kiểu dữ liệu n] [NOT NULL] [UNIQUE] ,

[ CONSTRAINT [tên_khóa_chính]

PRIMARY KEY ([Cộtlàm khóa chinhl] [Cột làm khóa chínhn]),]

[ CONSTRAINT[tên_khóa_ngoài]

FOREIGN KEY ([Cột làm khóangoàil], ,[Cột làm khóangoài n])

REFERENCES tên_bảng_tham_chiếu ([tên khóachínhbảngthamchiếu])]

);

Trong đó, các thành phần được in đậm là từ khóa của SQL, các thành phần được viết trong dấu đỏng ngoặc vuông [] là các thành phần có thểcóxuấthiệnhoặckhông

Trang 25

Chức năng của câu lệnh CREATE TABLE:

Câu lệnh CREATE TABLE thực hiệnviệctạo mộtbảng cótên [tên bảng] bao gồm một hoặc nhiều thuộc tính (cột) được liệt kê trong dấungoặc đơn tiếp theo Một cột bất kỳ được định nghĩa như sau: [ Cột i][kiểu dữ liệu i] [NOT NULL] [UNIQUE] trong đó kiểu dữ liệu là một trong các kiểudữ liệu cơ sở đượcgiới thiệu tạiphần 3.2.2, từkhóaNOTNULL được dùng để chỉ dữ liệu thuộc cột tương ứng không được để trống, từkhóa UNIQUE được dùng để chỉ dữ liệu thuộc cộttương ứng không được lặp lại trong các hàng khác nhau

Một bàng trongcơ sở dữ liệu có thể có khóa chính hoặc không.Khimuốn liệt kê các thuộc tính được sử dụng làmkhóachính,sửdụngcú pháp:CONSTRAINT [tên_khóa_chính]

PRIMARY KEY ([Cột làmkhóachínhl], ,[Cột làm khóachính n]),Trong đó tên khóa chính có thềcó hoặc không, vàđược chỉ rõ sau

từ khóa CONSTRAINT và danhsáchtên thuộc tínhdùng làm khóa chính được liệt kê sau từ khóa PRIMARY KEY và cách nhau bởi dấu phẩy Cácthuộctính được sử dụng làm khóa chính phải được định nghĩa trước trongdanh sách thuộctínhcủabảng

Chú ý: trong câu lệnh tạo bảng, nếu một thuộc tính được chọn làm khóa chính thì thuộc tính đóphải được định nghĩa NOT NULL

Ví dụ 3.15: Tạobảngmột bảng khôngcó khóa chính

CREATE TABLE Nhanvien

(

Manv char(10),Ho_ten vachar(30),Ngay_sinhdatetime,Luongdecimal(7,2),);

Trang 26

Câu lệnh trên thực hiện tạo một bảng có tên Nhan_vien có bốnthuộc tính: Manv thuộc kiểuxâukýtựcóđộdài tốiđa 10 kýtự và khôngđược để trống, Ho_tenthuộc kiểu xâu ký tự có độ dài động, số ký tự tối

đa là 30, Ngay sinh thuộc kiểu thòi gian (ngàytháng), Luong thuộckiểu

số thực có độ dài tối đa 7 chữ số

Một bảng trong cơsở dữ liệu cũng có thể cókhóachính ngoài hoặckhông Khimuốn tạomột khóa ngoài chobảng, sử dụng cú pháp:

[ CONSTRAINT [tên_khóa_ngoài]

FOREIGN KEY ( [Cột làm khóangoàil], ,[Cột làm khóangoài n])

REFERENCES tên bâng tham chiểu ([tên khóachínhbảng thamchiếu])]

Trong đó tênkhóa ngoài có thể có hoặc không, và được chỉ rõ sau

từ khóaCONSTRAINT và danh sáchtên thuộc tínhdùng làm khóa ngoàiđược liệtkê sautừ khóa FOREIGNKEY và cách nhau bởi dấu phẩy Tên bảng tham chiếu bằng khóa ngoài được chỉ rõ sau từ khóa REFERENCES

Trang 27

và đi cùng với tên khóa chínhcủa bảng tham chiếu hoặc danh sách các cột được sử dụng làm khóachính của bảng tham chiếu.

Ví dụ 3.17: tạobảng với khóachínhvà khóa ngoài

CREATE TABLE Phong

(

Maphong char(10) NOT NULL UNIQUE,

Ten_phong_ban varchar(30), Dia_diem varchar (300), Truong_phong char(10) NOT NULL, CONSTRAINT pk_phongPRIMARY KEY (Maphong), CONSTRAINT fk_phong_nhan_vien

FOREIGN KEY (Truong phong)

Cú pháp của lệnh ALTER TABLE dùng để thêm hoặc xóa cộtnhư sau:

ALTER TABLE tên_bảng

[ ADD COLUMN Tên_cọtKiểu dữ liệu [NOT NULL] [UNIQUE],] [ DROP COLUMN Tên_cột [RESTRICT][CASCADE]];

Trang 28

Trong đó mệnh đềADD COLUMN dùng để chỉ thao tác thêm một cột vào trong bàng, và mệnh đề DROP COLUMN dùng để xóa một cộttrong bảng.

Trong mệnh đề ADD COLUMN, một cột mới được định nghĩa giống như cách định nghĩa cộttrìnhbàytrong lệnh CREATE TABLE.Trong mệnh đề DROPCOLUMN, cóthể chỉ rõ điều kiện thực hiện hành động xóa cột bằng từ khóa RESTRICT và CASCADE Sử dụng từ khóa RESTRICT có nghĩa làcột đó chi được xóa nếu không có cột nàophụ thuộc vào nó Từ khóa CASCADE có nghĩa là cột đó đượcxóa vàmọi cột phụ thuộc vào nócũng bị xóa

Thêm cột cho một bảng dữ liệu:

Ví dụ 3.18: thêm mới mộtcột vào bảngnhan_vien

ALTER TABLE nhan vien

ADDCOLUMN dia_chi varchar(lOO);

Câu lệnh trên thực hiện việc thêm một cộtcổ tên dia_chi có kiểu varchar (kiểu xâu ký tự có độ dài động), độ dài tối đa 100 ký tự, vào trong bảng quanhệ nhan_vien

Hoặc: Thêm mới mộtcột vào bảng nhan vien

ALTER TABLEnhan vien

ADD COLUMN gioi_tinh varchar(lO) NOT NULL;

Câu lệnh trên thực hiệnviệc thêmmột cột có tên gioi_tinh có kiểu varcharcó độ dài tối đa 10 ký tự và không được để trống vào ưong bảngquan hệnhan_vien

Xóa cột khỏi một bảng dữ liệu:

Khikhông muốntiếptục sử dụngmộtcột trong bàng nào đó, ngườidùngcó thể xóa cột đó khỏi bảngbằng lệnh ALTER TABLE và mệnhđềDROP COLUMN

Trang 29

Ví dụ 3.19: Xóa mộtcột khỏi bàngnhan vien

ALTER TABLE nhan vien

DROP COLUMNgioi-tinh RESTRICT;

Câu lệnh trên thực hiện việc xóa cột gioi_tinh khỏi bảng dữ liệu nhan vien Chú ý, trong mệnh đề DROP COLUMN chỉ yêu cầu chi ra tên cột mà không cần miêu tả về kiểu dữ liệu của cột Từ khóaRESTRICT được sử dụng nhằm tránh khả năng xóacột gioi_tinhnếu có mộtcột nào đó phụ thuộc vào nó

Ví dụ 3.20: xóa mộtcộtcóphụ thuộc khỏi bảngnhan_vien

ALTER TABLEPhong

DROP COLUMN ManvRESTRICT;

Câu lệnh trên không thể thực hiện việc xóa cộtManv khỏi bảng dữ liệu nhan_vien do có sự phụ thuộc từ bàng Phong vào cột Manv này.Nếuđổi từ khóa RESTRICT trong câu lệnh trên thành từ khóa CASCADE,cột Manv sẽ bị xóa, tuy nhiên các cột dữ liệu phụ thuộc vào nó cũng bịxóa Việc sử dụngtừkhóaCASCADEcầnđượccân nhắc kỹ lưỡng

Đỗi tên bảng

Quá trình xây dựng một cơ sở dữ liệu, SQL cho phép người dùng được đổi tênnhững bảngdữ liệu đã được định nghĩa trước đó băng câu lệnh ALTER TABLE và mệnh đề RENAME TO

ALTER TABLE tên_bảng

Ngày đăng: 15/07/2022, 14:24

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
[1] . Hồ Thuần, Hồ cẩm Hà, Các hệ cơ sở dữ liệu lý thuyết và thực hành, Nhà xuất bản Giáo dục, 2009 Khác
[2] . Nguyễn Kim Anh, Nguyên lý của các hệ cơ sở dữ liệu, Nhà xuất bản Đại học Quốc gia Hà Nội, 2008 Khác
[3] . Phương Lan, Giáo trình nhập môn cơ sở dữ liệu, Nhà xuất bản Lao động - Xã hội, 2007 Khác
[4] . Thomas Connolly, Carolyn Begg. Database systems: A practical approach to Design, Implementation and Management. Addison Wesley, Pearson Education Limited. 2005 Khác
[5] . Ramez Elmasri, Shamkant B. Navathe. Fundamentals of database Systems. The sixth edition. Addison Wesley, Pearson Education Limited. 2011 Khác

HÌNH ẢNH LIÊN QUAN

Bảng  khách hàng có tên KhachHang  và  các dữ liệu sau: - Giáo trình Cơ sở dữ liệu (Tập 1): Phần 2 - TS. Nguyễn Thị Thu Thuỷ (Chủ biên)
ng khách hàng có tên KhachHang và các dữ liệu sau: (Trang 47)

TỪ KHÓA LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm