1. Trang chủ
  2. » Thể loại khác

LÝ THUYẾT CƠ SƠ DỮ LIỆU. GV: ĐỖ THỊ MAI HƯỜNG. BỘ MÔN: CÁC HỆ THÓNG THÔNG TIN KHOA: CÔNG NGHỆ THÔNG TIN

136 0 0
Tài liệu được quét OCR, nội dung có thể không chính xác

Đ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

Định dạng
Số trang 136
Dung lượng 9,02 MB

Nội dung

Trang 1

LY THUYET CO SO DU LIEU

GIÁO VIÊN: ĐỖ THỊ MAI ƯỜNG

BỘ MƠN: CÁC HỆ THĨNG THƠNG TIN KHOA: CƠNG NGHỆ THƠNG TIN

Trang 2

Ngơn ngữ SQL

Trang 3

Nội dung c

* Gidi thiệu

¢ Binh nghia dữ liệu

* Truy van dé liéu

* Cap nhật dữ liệu

* Tinh day dt ctla SQL

» Khung nhìn (view)

Trang 4

Giới thiệu

° _ Ngơn ngữ Đại số quan hệ

— Cách thức truy vấn dữ liệu

— Khĩ khăn cho người sử dụng

¢ SQL (Structured Query Language)

— Ngơn ngữ cấp cao

— Người sử dụng chỉ cần đưa ra nội dung cần truy vấn

— Được phát triển bởi IBM (19705)

— Được gọi là SEQUEL

— Được ANSI cơng nhận và phát triển thành chuẩn

* SQL-86

» SQL-92 » SQL-99

Trang 5

Giới thiệu (tt) * SQL gém — Định nghĩa dữ liệu (DDL) — Thao tác dữ liệu (DML) — Định nghĩa khung nhìn — Ràng buộc tồn vẹn

— Phân quyền và bảo mật

— Điều khiển giao tác

Trang 7

Dinh nghia dé liéu

* Langén ng mé ta

— Lược đồ cho mỗi quan hệ

— Miền giá trị tương ứng của từng thuộc tính

— Ràng buộc tồn ven

— Chỉ mục trên mỗi quan hệ

«Ổ Gồm

— CREATE TABLE (tao bảng) — DROP TABLE (x6a bang) — ALTER TABLE (stra bang)

— CREATE DOMAIN / CREATE TYPE (tao mién gia tri) — CREATE DATABASE

Trang 9

Kiểu dữ liệu (tt)

* Chuéi ky tu (character string)

— CHARACTER, CHARACTER(n)

* Chuéi bit (bit string)

~ BIT, BIT@)

« Ngay gio (datetime)

— DATE gém ngày, tháng và năm — TIME gồm giờ, phút và giây

— TIMESTAMP gồm ngày và giờ

Trang 10

Lénh tao bang

* Dé dinh nghia mét bang

— Tén bang

— Các thuộc tính

« Tên thuộc tính 5 Kiêu dữ liệu

* Cac rang buộc tồn vẹn trên thuộc tính (RBTV)

»° Cú pháp

CREATE TABLE <Tén_bang> (

<Tên cột> <Kiểu_dữ liệu> [<RBTV>], <Tên cột> <Kiểu dữ liệu> [<RBTV>],

[<RBTV>]

)

Trang 11

Vi du CSDL

* Choco sé dé lisu CONGTY gém các lược đồ:

— NHANVIEN(MANV, HONV, TENNV, NS, GT, DCHI, LUONG, MA_NQL, PHONG)

— PHONGBAN(MAPHONG, TENPHONG, TRPHONG, NG_NHANCHUC)

— DEAN(MADA, TENDA, DD_DA, PHONG)

— THANNHAN(MANV, TEN_ TN, NS, GT, QUANHE) —_NV_DEAN(MANV, MADA, SOGIO)

— PHONGBAN_DD(MAPB, DD)

Trang 12

Lý thuyết CSDL

Trang 13

Lénh tao bang (tt) * <RBTV> — NOT NULL — NULL — UNIQUE — DEFAULT — PRIMARY KEY

— FOREIGN KEY / REFERENCES — CHECK

¢ Dat tan cho RBTV

CONSTRAINT <Ten_RBTV> <RBTV>

Ly thuyét CSDL 13

Trang 14

CREATE TABLE NHANVIEN (

HODEM VARCHAR(30) NOT NULL, TENNV VARCHAR(10) NOT NULL,

MANV CHAR(9) PRIMARY KEY,

NS DATETIME,

DCHI VARCHAR(50),

GT CHAR(3) CHECK (GT IN (Nam’, ‘Nu’)), LUONG INT DEFAULT (10000),

MA_NQL CHAR(9), PHONG INT

Ly thuyét CSDL

Trang 15

CREATE TABLE PHONGBAN (

TENPB VARCHAR(20) UNIQUE, MAPHONG INT NOT NULL,

TRPHONG CHAR(9),

NG_NHANCHUC DATETIME DEFAULT (GETDATE())

)

CREATE TABLE PHANCONG (

MA_NVIEN CHAR(9) FOREIGN KEY (MA_NVIEN) REFERENCES NHANVIEN(MANV),

SODA INT REFERENCES DEAN(MADA), THOIGIAN DECIMAL(3,1)

Ly thupit CSDL

Trang 16

CREATE TABLE NHANVIEN (

)

HODEM VARCHAR(30) CONSTRAINT NV_HODEM_NN NOT NULL, TENNV VARCHAR(10) NOT NULL,

MANV CHAR(9) CONSTRAINT NV_MANV_PK PRIMARY KEY, NS DATETIME,

DCHI VARCHAR(50),

GT CHAR(3) CONSTRAINT NV_GT_CHK CHECK (GT IN (Nam’, ‘Nu’)),

LUONG INT CONSTRAINT NV_LUONG_DF DEFAULT (1000000), MA_NQL CHAR(9),

PHONG INT

Trang 17

CREATE TABLE PHANCONG ( MA_NVIEN CHAR(9), SODA INT,

THOIGIAN DECIMAL(3,1),

CONSTRAINT PC_MANVIEN_SODA_PK PRIMARY KEY (MA_NVIEN, SODA), CONSTRAINT PC_MANVIEN_FK FOREIGN KEY (MA_NVIEN)

REFERENCES NHANVIEN(MANV),

CONSTRAINT PC_SODA_FK FOREIGN KEY (SODA) REFERENCES DEAN(MADA)

Trang 18

Lénh stra bang

Được dùng dé

— Thay đổi cấu trúc bảng — Thay doi RBTV

Thêm cột ALTER TABLE <Tên_bảng> ADD COLUMN

<Tên cột> <Kiểu_dữ liệu> [<RBTV>]

Xĩa cột

ALTER TABLE <Tên_bảng> DROP COLUMN <Tên_cột>

° _ Mở rộng cột

ALTER TABLE <Tên_bảng> ALTER COLUMN

<Tên_cột> <Kiểu_dữ liệu_mới>

Trang 19

Lệnh sửa bảng (tt)

» Thêm RBTV

ALTER TABLE <Tên_bảng> ADD

CONSTRAINT <Ten_RBTV> <RBTV>, CONSTRAINT <Ten_RBTV> <RBTV>,

* Xda RBTV

ALTER TABLE <Tén_bang> DROP <Tén_RBTV>

Trang 20

Vi du - Tha

ALTER TABLE NHANVIEN ADD NGHENGHIEP CHAR(20)

ALTER TABLE NHANVIEN DROP COLUMN NGHENGHIEP

ALTER TABLE NHANVIEN ALTER COLUMN NGHENGHIEP CHAR(S0)

Trang 21

Ví dụ - Thay đổi RBTV

CREATE TABLE PHONGBAN ( TENPB VARCHAR(20),

MAPHONG INT NOT NULL, TRPHONG CHAR(9),

NG_NHANCHUC DATETIME

)

ALTER TABLE PHONGBAN ADD

CONSTRAINT PB_MAPHONG_PK PRIMARY KEY (MAPHONG), CONSTRAINT PB_TRPHONG FOREIGN KEY (TRPHONG)

REFERENCES NHANVIEN(MANV),

CONSTRAINT PB_NGNHANCHUC_DF DEFAULT (GETDATE()) FOR (NG_NHANCHUC),

Trang 22

* Dugc dùng để xĩa cấu trúc bảng

— Tất cả dữ liệu của bảng cũng bị xĩa

»° Cú pháp

DROP TABLE <Tên_bảng>

° Ví dụ

DROP TABLE NHANVTEN DROP TABLE PHONGBAN DROP TABLE PHANCONG

Lý thuyết CSDL

Trang 23

NHANVIEN

HONV | TENDEM | TENNV | MANV | NS CHI | GT | LUON | MA_NQL | PHO

G G

PHONGBAN

TENPHG (O | TRPHO | NG_NHANCHUC

Trang 24

Lénh tao mién gia tri

»_ Tạo ra một kiểu dữ liệu mới kế thừa những kiểu dữ liệt

cĩ sắn

*« Cú pháp

CREATE DOMAIN <Tén_kdl_mdi> AS <Kiểu_dữ,_liệu>

CREATE TYPE <Tên kdi mới> FROM <Kiểu đữ liệu>

° Ví dụ

CREATE DOMAIN Kieu_Ten AS VARCHAR(30)

CREATE TYPE Kieu _Ten FROM VARCHAR(30) not null

Trang 25

Ndi dung cr * Gidi thiéu

¢ Binh nghia dé liéu

* Truy van dir liéu — Truy vấn cơ bản

— Tập hợp, so sánh tập hợp và truy vấn lồng — Hàm kết hợp và gom nhĩm

— Một số kiểu truy vấn khác

» _ Cập nhật dữ liệu

* Tinh day đủ cla SQL

e Khung nhin (view)

Trang 26

Truy ván dữ liệu

- Là ngơn ngữ rút trích dữ liệu thỏa một số điều kiện nào đĩ

Dựa trên Phép tốn ĐSQH + Một số bổ sung

— Cho phép 1 bảng cĩ nhiều dịng trùng nhau

Trang 27

Truy van co’ ban * Gém 3 ménh dé SELECT <danh sách các cột> FROM <danh sách các bảng>

'WHERE <điều kiện>

— <danh sách các cột>

-_ Tên các cột cần được hiển thị trong kết quả truy ván

— <danh sách các bảng>

«_ Tên các bảng liên quan đến câu truy vấn

— <điều kiện>

«_ Biểu thức boolean xác định dịng nào sẽ được rút trích

«_ Nĩi các biểu thức: AND, OR, và NOT

» Phép tốn: <, >, <, >, z, =, LIKE và BETVEEN

Trang 28

Truy vấn cơ bản (tt) * SQL va DSQH Ly thuyét CSDL SELECT L

SELECT <danh sach cac cot>

PROM <danh sach cac bang>

WĐERE <điều kiện>

FRưMSc (R))————

WHERE C

Trang 29

Lấy tất cả các cột eee eda quan hé két qua

SELECT *

FROM NHANVTEN WHERE PHONG=5

MANV | HONV | rworM| TENNV| MS | DCHI | GT | LUONG| MA NQL | PHO

NG 333445555 | Nguyen| Thanh | Tung | 12/08/1955 |638 NVC Q5| Nam | 40000 |888665555| 5

987987987 | Nguyen| Manh | Hung | 09/15/1962| Ba Ria VT | Nam | 38000 |333445555| 5

Trang 30

SELECT MANV, HONV, TENDEM, TENNV FROM NHANVIEN

WHERE PHONG=5 AND GT='Nam’

MANV | HONV | TEMOEM | TENNV

333445555 Nguyen Thanh Tung

987987987 Nguyen Manh Hung

Trang 31

Mệnh dé S|

Tên bí danh

SELECT MANV, HONV AS HO, TENDEM AS ‘TEN DEM’, TENNV AS TEN FROM NHANVIEN

WHERE PHONG=5 AND GT='Nam’

MANV | HO | TENDEM | TEN

333445555 Nguyen Thanh Tung 987987987 Nguyen Manh Hung

Trang 32

Mở rộng

SELECT MANV, HONV + ` “+ TENDEM + ` “ + TENNV AS ‘HO TEN’ FROM NHANVIEN

WHERE PHONG=5 AND GT='Nam’

333445555 Nguyen Thanh Tung 987987987 Nguyen Manh Hung

Trang 33

Mở rộng

SELECT MANV, LUONG*1.1 AS ‘LUONG10%’ FROM NHANVIEN

WHERE PHONG=S AND GT='Nam’

LUONG10% 333445555 33000 987987987 27500

Trang 34

Loại bỏ các dịng trùng nhau SRHŒCDISKINGT LUONG FIEBMMINMMWIIN WWERRPHEDGSS 5 AD GGFNaan’ Ly thuyét CSDL LUONG 30000 25000 28000 38000 - Tốn chi phí

- Người dùng muốn thấy

Trang 35

* Cho biét MANV va TENNV lam viée & phong ‘Nghien cut

Trang 36

SELECT MANV, TENNV _., Bigu thitc logic

Trang 37

Mệnh đ Độ ưu tiên

SELECT MANV, TENNV

FROM NHANVIEN, PHONGBAN

WHERE (TENPHONG='Nghien cuu’ OR TENPHONG='Quan ly’) AND GT="Nam’ AND PHONG=MAPHONG

Trang 38

BETWEEN

SELECT MANV, TENNV FROM NHANVIEN

WHERE LUONG> 20000 AND LUONG<30000

SELECT MANV, TENNV FROM NHANVIEN

WHERE LUONG BETWEEN 20000 AND 30000

Trang 39

NOT BETWEEN

SELECT MANV, TENNV FROM NHANVIEN

WHERE LUONG NOT BETWEEN 20000 AND 30000

Trang 40

LIKE

SELECT MANV, TENNV FROM NHANVIEN

WHERE DCHI LIKE ‘Nguyen _ _ _ _’

SELECT MANV, TENNV KP BER]

FROM NHANVIEN

WHERE DCHI LIKE ‘Nguyen %‘

Chuỗi bất kỳ

Lý thuyết CSDL

Trang 41

NOT LIKE

SELECT MANV, TENNV FROM NHANVIEN

WHERE HONV LIKE ‘Nguyen’

SELECT MANV, TENNV FROM NHANVIEN

WHERE HONV NOT LIKE ‘Nguyen’

Ly thuyét CSDL

Trang 42

ESCAPE

SELECT MANV, TENNV FROM NHANVIEN

WHERE DCHI LIKE ‘% Nguyens_%’ ESCAPE ‘s’

|

*Nguyen_'

Trang 43

Ngay gid

SELECT MANV, TENNV FROM NHANVIEN

WHERE NGSINH BETWEEN *1955-12-08' AND ‘1966-07-19’

Trang 44

Ménh dé WHERE (tt) NULL — Sử dụng trong trường hợp

+ Khdng biét (value unknown)

* Khéng thé áp dung (value inapplicable) + Khdng tén tai (value withheld)

— Những biểu thức tính tốn cĩ liên quan đến giá trị NULL sẽ cho ra kết quả là NULL

* x cĩ giá trị là NULL

» x+ 3 cho ra kết quả là NULL

« x+ 3 là một biểu thức khơng hợp lệ trong S@L

— Những biểu thức so sánh cĩ liên quan đến giá trị NULL sẽ cho ra kết quả là UNKNOWN

* x= 3 cho ra kết qua la UNKNOWN

* x= 3 là một so sánh khơng hợp lệ trong SQL

Trang 45

NULL

Ly thuyét CSDL

SELECT MANV, TENNV FROM NHANVIEN

WHERE MA_NQL IS NULL

SELECT MANV, TENNV FROM NHANVIEN

WHERE MA_NQL IS NOT NULL

Trang 46

Khơng sử dụng mệnh đê WHERE

SELECT MANV, MAPHONG

Trang 47

Ménh dé FROM (tt) Tên bí danh

SELECT TENPHONG, DIADIEM

FROM PHONGBAN /SCHE)DBESH_PHG AS DD

WHERE PIẠPĐNỐNHAPIIOWHONG

SELECT TENNV, WÈBWẾốINH;NIEWTICSWffGSINH

FROM NHANVIEN,NV)JAIHMNHAN TN WHERE MANV=MA_NVIEN

Trang 48

Vi du 1

»_ Với những đề án ở 'Ha Nọ', cho biết mã đề án, mã phịng,

tên phịng chủ trì đề án, họ tên trưởng phịng cùng với ngày sinh và địa chỉ của người ây

Trang 49

» _ Tìm họ tên của nhân viên phịng số 5 cĩ tham gia vào đề án

“Sản phẩm X” với số giờ làm việc trên 10 giờ

Trang 50

* Tim ho tén cla tleng nhan vién va nguéi phụ trách trực tiếp

nhân viên đĩ

Trang 51

* Tim ho tên của những nhân viên được “Nguyen Thanh Tung”

phụ trách trực tiếp

Trang 52

Ménh dé ORDER BY

* Dung dé hién thi kết quả câu truy vấn theo một thứ tự nào đĩ

5° Cú pháp

SELECT <danh sách các cột>

FROM <danh sách các bảng>

WHERE <diéu kién>

ORDER BY <danh sach cac cét>

- ASC:

— DESC: giam

Trang 53

Mệnh đề :

° Ví dụ

SELECT MA_NVIEN, SODA

FROM PHANCONG

ORDER BY MA_NVIEN DESC, SODA

Trang 55

Phép tốn tập hợp trong SQL ¢ SQL cé cai đặt các phép tốn — Hợp (UNION) — Giao (INTERSECT) — Triv (EXCEPT) * Két qua trả về là tập hợp — Loại bỏ các bộ trùng nhau

— Để giữ lại các bộ trùng nhau

« UNION ALL

Trang 56

Phép toan tap hop trong SQL (tt)

Âô Cú pháp

SELECT <ds cột> FROM <ds bảng> WHERE <điều kiện>

UNION [ALL]

SELECT <ds c6t> FROM <ds bang> WHERE <diéu kién>

SELECT <ds cOt> FROM <ds bang> WHERE <diéu kién>

INTERSECT

SELECT <ds c6t> FROM <ds bang> WHERE <diéu kién>

SELECT <ds c6t> FROM <ds bang> WHERE <diéu kién>

EXCEPT

SELECT <ds c6t> FROM <ds bang> WHERE <diéu kién>

Trang 57

«_ Cho biết các mã đề án cĩ

— Nhân viên với họ là ‘Nguyen’ tham gia hoặc,

— Trưởng phịng chủ trì đề án đĩ với họ là 'Nguyen'

Trang 58

» - Tìm nhân viên cĩ người thân cùng tên và cùng giới tink

Trang 59

» - Tìm những nhân viên khơng cĩ thân nhân nào

Trang 60

Truy vấn lồng

SELECT MANV, TENNV

FROM NHANVIEN, PHONGBAN

WHERE TENPHG='Nghien cuu’ AND PHONG=MAPHONG

Cau truy van ngoai (Outer query) Ly thuyét CSDL SELECT <danh sách các cột> FROM <danh sách các bảng> 'WHERE <so sánh tập hợp> ( SELECT <danh sách các cột> FROM <danh sách các bảng>

WHERE <điều kiện>)

Câu truy vấn trong (Subquery)

Trang 61

Truy van lồng (tt)

* Cac cau lệnh SELECT cĩ thể lồng nhau ở nhiều mức

* Cau truy van con thường trả về một tập các giá trị

* Cac cau truy van trong trong cling mét ménh dé WHERE được kết hợp bằng phép nỗi logic

» _ Mệnh đề WHERE của câu truy vấn ngồi

— <biễu thức> <so sánh tập hợp> <truy vấn con>

— So sánh tập hợp thường đi cùng với một số tốn tử

+ IN, NOTIN

 ALL

Âô ANY hoc SOME

— Kiểm tra sự tồn tại

« EXISTS

+ NOT EXISTS

Trang 62

Truy van lồng (tt)

* C6 2 loai truy van léng

— Lồng phân cấp

+ Mệnh đề WHERE của truy vấn trong khơng tham chiếu đến thuộc

tính của các quan hệ trong mệnh đề FROM ở truy vẫn ngồi

«_ Khi thực hiện, câu truy ván trong sẽ được thực hiện trước

— Lồng tương quan

- Mệnh đề WHIEERE của truy vấn trong tham chiếu ít nhát một thuộc

tính của các quan hệ trong mệnh đê FROM ở truy vẫn ngồi

+_ Khi thực hiện, câu truy ván trong sẽ được thực hiện nhiều lần, mỗi

lần tương ứng với một bộ của truy vẫn ngồi

Trang 63

Ví dụ - Lồng

SELECT MANV, TENNV

FROM NHANVIEN, DIADIEM_PHG

WHERE DIADIEM="TP HCM’ AND PHONG=MAPHONG -“§ELECT MANV, TENNV

._ FROM NHANVIEN /

“WHERE PHONG IN @,5)-

£ˆ FROM DIADIEM_PHG :

~ WHERE DIADIEM="TP HCM’ )

Trang 64

* Tim ho tên của những nhân viên được “Nguyen Thanh Tung”

phụ trách trực tiếp

Trang 65

» - Tìm những nhân viên khơng cĩ thân nhân nào

Trang 66

» _ Tìm những nhân viên cĩ lương lớn hơn lương của ít

nhất một nhân viên phịng 4

Trang 67

* Tim nhtng nhan vién cé lvong Ion hon lương của tất cả nhân viên phịng 4

Trang 68

» Tìm những trưởng phịng cĩ tếi thiểu một thân nhân

Trang 69

Ví dụ - Lồng :

SELECT MANV, TENNV

FROM NHANVIEN, PHONGBAN

WHERE TENPHONG='Nghien cuu’ AND PHONG=MAPHONG

SELECT MANV, TENNV FROM NHANVIEN

WHERE EXISTS (0

_ SELECT *

“FROM PHONGBAN

° WHERE TENPHONG="Nghien cuu’ AND PHONG=MAPHONG )

Ngày đăng: 14/06/2023, 23:02

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w