Tải bản đầy đủ (.ppt) (102 trang)

SQL (STRUCTURED QUERY LANGUAGE) (DATA WARE HOUSE SLIDE)

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (885.56 KB, 102 trang )


Giới thiệu



SQL: Structured Query Language
SQL là ngôn ngữ chuẩn cho mơ hình dữ liệu quan hệ:









Có nguồn gốc từ SEQUEL (Structured English QUEry
Language) được nghiên cứu bởi IBM cho SYSTEM R
Đã trở thành ngơn ngữ chuẩn cho mơ hình dữ liệu quan hệ
Đã qua nhiều phiên bản: SQL-86 (SQL1), SQL-89, SQL-92
(SQL2),…

Là chuẩn, do vậy dễ dàng thay đổi HQTCSDL
Nhiều ngôn ngữ lập trình cho phép nhúng câu lệnh SQL:
Visual Basic, C#, java,…
Được cài đặt trong hầu hết các DBMS quan hệ
SQL là ngôn ngữ đầy đủ: Cho phép định nghĩa dữ liệu,
truy vấn dữ liệu và cập nhật dữ liệu,…


Các kiểu dữ liệu cơ cản


 Số



Số nguyên: INTEGER, INT, SMALLINT
Số thực:





FLOAT, REAL, DOUBLE PRECISION
DEC(i,j), DECIMAL(i,j) hay NUMERIC(i,j): i là độ chính xác, j: số lượng chữ
số sau dấu chấm thập phân

Chuỗi ký tự:





Đồ dài cố định: CHAR(n) hay CHARACTER(n)
Độ dài biến đổi: VARCHAR(n) hay CHAR VARYING(n)
Quy ước: Hằng chuỗi viết giữa cặp nháy đơn (móc lửng):
‘Nguyen Van Tu’, ‘CSDL1’,…
So sánh theo thứ tự alphabetic


Các kiểu dữ liệu cơ cản



Chuỗi bit:







Kiểu luận lý: Boolean





Độ dài cố định: BIT(n) : n là số lượng BIT
Đồ dài biến đổi: BIT VARYING(n) – n là số lượng tối đa các
BIT
Mặc định: Độ dài bằng 1
Quy ước: Hằng chuỗi BIT (B’010110’, B’…’)
Giá trị: TRUE, FALSE

Kiểu ngày: DATE (dạng YYYY-MM-DD)
Kiểu giờ: TIME (dạng HH:MM:SS)


Một số tóan tử


Tốn tử số học


+
cộng
trừ
*
nhân
/
chia
• Tốn tử so sánh
>
Lớn hơn.
>=
Lớn hơn hoặc bằng.
=
Bằng.
<
Nhỏ hơn.
<=
Nhỏ hơn hoặc bằng.
<>
Khác


Một số tóan tử
Tốn tử logic
NOT
Phủ định.
AND

OR

Hoặc
• Tốn tử tập hợp
UNION
Hợp
INTERSECT
Giao
MINUS
Hiệu
• Tốn tử so khớp chuỗi:
LIKE <mẫu cần so khớp>
+ Kí tự đại diện cho nhóm kí tự % (trong một số DBMS như Access sử
dụng kí tự *)
+ Kí tự đại diện cho một kí tự _ (trong một số DBMS như Access sử
dụng kí tự ?)


Một số hàm tính tóan
COUNT()
SUM()
AVG()
MAX()
MIN()

Đếm số bộ trong quan hệ.
Tính tổng.
Tính trị trung bình.
Tìm trị lớn nhất.
Tìm trị nhỏ nhất.

Chi tiết sẽ được xem xét sau



Các nhóm lệnh của SQL






Nhóm lệnh tạo kiến tạo CSDL:
Tạo cấu trúc các quan hệ, khai báo các ràng buộc tồn vẹn,

Nhóm lệnh thao tác dữ liệu:
Dùng để thay đổi dữ liệu trong cơ sở dữ liệu (thêm, xóa, sửa
dữ liệu)
Nhóm lệnh truy vấn:
Cung cấp thơng tin cần thiết người dùng qua việc truy vấn
dữ liệu từ CSDL.


SQL


1. DẠNG TRUY VẤN CƠ BẢN
SELECT

A1, A2,…., An

FROM


r1, r2, …, rm

[WHERE

<điều kiện>]

Trong đó:
• A1, A2,…., An: Các thuộc tính cần truy vấn


r1, r2,…, rm: Các quan hệ chứa nguồn dữ liệu



<điều kiện>: Điều kiện chọn các bộ


1.1 Truy vấn tương ứng với
phép chiếu
SELECT [DISTINCT] A1, A2, ..., An
FROM
r
Ý nghĩa: Lấy ra giá trị trên các thuộc tính A1, A2, ..., An từ
quan hệ r (DISTINCT : Loại bỏ các bộ trùng lặp)
Biểu thức đại số quan hệ tương ứng: ∏ A1, A2, ..., An (r)
Ví dụ:
SELECT A, B
FROM r

Kết quả

Cho phép trùng lặp

SELECT DISTINCT A, B
FROM r

Kết quả
Loại bỏ bộ trùng lặp


Thuộc tính truy vấn có thể được
dẫn xuất (được tính) từ các
thuộc tính khác
Ví dụ: Xét LĐQH ChiTiet_PX(SOPX, MAMH, SOLG, DONGIA)
Lệnh SQL lấy các dòng chi tiết xuất với các thông tin: SOPX, MAMH,
SOLG, DONGIA, SOLG*DONGIA
SELECT SOPX, MAMH, SOLG, DONGIA, SOLG*DONGIA
FROM Chitiet_PX

Kết quả


Có thể đặt lại tên cho thuộc tính
cần truy vấn (<thuộc tính> AS
<tên mới>)
SELECT SOPX, MAMH, SOLG, DONGIA, SOLG*DONGIA AS TTIEN
FROM Chitiet_PX

Kết quả



1.2.Truy vấn tương ứng với
phép chọn
SELECT
*
FROM
r
WHERE <điều kiện chọn>
Ý nghĩa: Lấy các bộ trong quan hệ r thỏa <điều kiện chọn> (*: tất
cả các thuộc tính)
Biểu thức ĐSQH tương ứng:

σ<điều kiện chọn> (r)

SELECT *
FROM r
WHERE B=‘b2’

Kết quả


Truy vấn tương ứng với phép
chọn
Ví dụ: NV(MANV, HO, TEN, NS, GT, LCB, MAPB)
b) Lệnh SQL lấy ra danh sách nhân viên nam có LCB>200
SELECT *
FROM NV
WHERE GT=‘Nam’
AND LCB>200

Kết quả


NV


Truy vấn tương ứng với phép
chọn
Ví dụ: Xét LĐQH NV(MANV, HO, TEN, NS, GT, LCB,
MAPB) trong ví dụ trước

a) Lệnh SQL lấy ra danh sách nhân viên sinh
NV
trước năm 1980
SELECT *
FROM NV
WHERE NS<1980
Kết quả


1.3. Truy vấn tương ứng với
phép chọn và chiếu
SELECT

A1, A2,…., An

FROM
WHERE

r
<điều kiện>


Biểu thức ĐSQH tương ứng
∏ A1, A2,..,An(σ<điều kiện> (r))
Các bộ thỏa
<điều kiện>

Các thuộc tính cần truy xuất


Truy vấn tương ứng với phép
chọn và chiếu
Vi dụ:
SELECT A,B
FROM r
WHERE B=‘b2’

SELECT A,B
FROM r
WHERE A=‘a1’ AND C=‘c3’

Kết quả

Kết quả


Truy vấn tương ứng với phép
chọn và chiếu
Ví dụ : Xét lược đồ QH:
SINHVIEN(MASV,HOSV,TENSV,PHAINU,NGAYSINH,QQUAN,MANGANH)
- Lệnh SQL lấy danh sách gồm mã số, họ, tên, quê quán của các sinh viên ngành
TH.

Biểu thức đại số quan hệ:

∏ MASV, HOSV,TENSV,QQUAN(σ MANGANH=‘TH’ (SINHVIEN))
 Câu lệnh SQL:
SELECT MASV, HOSV, TENSV, QQUAN
FROM SINHVIEN
SINHVIEN
WHERE
MANGANH=‘TH’
Kết quả


Truy vấn tương ứng với phép
chọn và chiếu
Ví dụ : xét LĐQH: KETQUA(MASV, MAMH, LANTHI,
DIEM)
Lệnh SQL lấy MASV, DIEM lần 1 môn CSDL1
SELECT MASV, DIEM
FROM KETQUA
WHERE MAMH=‘CSDL1’ AND LANTHI=1
KETQUA

Kết quả



Xét LĐCSDL trong bài tập số
2
“Quản lý thuê bao”







KHÁCH(Mã_KH, Tên, Địa_Chỉ_K, Số_CMND)
Tân từ: Mỗi khách hàng được gán một mã số để phân biệt với các khách
hàng khác. Tên, Địa_Chỉ_K, Số_CMND lần lượt là tên, địa chỉ và số
CMND của khách hàng.
THUE_BAO(Số_TB, Mã_KH, Ngày_ĐK, Nơi_Đặt)
Tân từ: Mỗi điện thoại có một số thuê bao (Số_TB) duy nhất, thuộc về
một chủ thuê bao (Mã_KH), đăng ký vào một ngày (Ngày_ĐK) xác định
và đặt (NƠI_ĐẶT) tại một nơi duy nhất. Một khách hàng có thể là chủ
của nhiều số thuê bao khác nhau.
CUOC(Số_TB, Tháng, Năm, Cước_PS)
Tân từ: Cước phát sinh (Cước_PS) từng tháng trong năm của mỗi số thuê
bao được ghi nhận bởi một bộ trong quan hệ. Cước này được tính dựa
trên nhật ký cuộc gọi phát sinh thực tế của số thuê bao.


Viết lệnh SQL đáp ứng yêu
cầu sau
a) Lấy tên và địa chỉ của khách hàng có Số CMND là
‘0198345’
b) Cho biết số thuê bao có cước tháng 5 năm 2012 trên 400000
c) Cho biết Nơi đặt của số thuế bao 8251469
d) Cho biết thông tin cước (tháng, Cước_PS) của số thuê bao
8251469 trong các tháng 5 và 6 năm 2012
e) Cho biết danh sách các số thuê bao có cước phát sinh tháng
06 năm 2012 từ 600000 đến 700000



1.4. Thực hiện phép
Descartes
SELECT [DISTINCT ] *|A1,A2,… ,An
FROM

r1, r2, …, rm

Biểu thức ĐSQH tương ứng: r1× r2× … × rn
Ví dụ:

SELECT *
FROM r1, r2


Chỉ định tường minh tên quan
hệ cho thuộc tính
<quan hệ>.<thuộc tính>


Nếu có nhiều thuộc tính cùng tên giữa các quan hệ khác
nhau, khi dùng chúng trong SQL, phải chỉ định tường
minh tên quan hệ chứa thuộc tính đó

r1

r2

SELECT A,B,r2.C,D

FROM r1,r2

Thuộc tính C tồn tại trong cả 2 quan hệ, do vậy phải dùng r2.C để nói
rằng muốn lấy giá trị trên thuộc tính C từ quan hệ r2.


×