Bài giảng Cơ sở dữ liệu - Bài 5: Ngôn ngữ CSDL – SQL - Vũ Văn Định

Để người sử dụng có thể giao tiếp được

với CSDL phải có một hệ thống ngôn ngữ

giao tiếp bao gồm:

• Ngôn ngữ định nghĩa dữ liệu .

• Ngôn ngữ thao tác dữ liệu

• Ngôn ngữ truy vấn dữ liệu

• Ngôn ngữ quản lý dữ liệu

Mỗi hệ quản trị CSDL đều có cách

cài đặt các ngôn ngữ khác nhau

nhưng đều dựa trên chuẩn của ngôn

ngữ truy vấn có cấu trúc SQL (

Structured- Query Language)

pdf49 trang | Chuyên mục: Hệ Quản Trị Cơ Sở Dữ Liệu | Chia sẻ: yen2110 | Lượt xem: 440 | Lượt tải: 2download
Tóm tắt nội dung Bài giảng Cơ sở dữ liệu - Bài 5: Ngôn ngữ CSDL – SQL - Vũ Văn Định, để xem tài liệu hoàn chỉnh bạn click vào nút "TẢI VỀ" ở trên
 mà ta có thể truy cập vào
- GROUP BY : dùng để gộp nhóm các bộ cùng giá trị tương ứng
ở các cột xuất hiện trong ds tên cột.
- HAVING: dùng để lọc các nhóm thoả điều kiện
- ORDER BY : quy định thứ tự trong các cột trả ra gồm : ASC
( tăng dần) và DESC ( giảm dần). Mặc định là ASC
TopTaiLieu.Com | Chia Sẻ Tài Liệu Miễn Phí
Ví dụ 1:
Tìm tên các dự án và mã các phòng
quản lý dự án tương ứng
SELECT ten_da, ma_p
FROM DU_AN;
Kết quả tra ra :
P1Giáo trình điện tử
P3Mạng B
P2Phần mềm A
Ma_pTen_da
TopTaiLieu.Com | Chia Sẻ Tài Liệu Miễn Phí
Chú ý :
a . Muốn hiển thị tất cả các cột trong bảng, ta có
thể dùng dấu * để thay thế
Ví dụ 2. Cho biết thông tin về nhân viên trong
công ty .
C1 : SELECT ma_nv, ho_ten, ng_sinh, gioi_tinh, 
ma_p, luong
FROM NHAN_VIEN;
C2: SELECT * 
FROM NHAN_VIEN ;
TopTaiLieu.Com | Chia Sẻ Tài Liệu Miễn Phí
b. Trong bảng kết quả, nếu muốn ta
có thể đặt tên mới cho cột sau từ khoá As
Ví dụ3 : Cho biết tên và lương mới của mỗi nhân
viên biết họ được tăng 10% .
Câu lệnh : 
C1: 
SELECT ho_ten, luong + luong*0.1
FROM NHAN_VIEN;
C2: 
SELECT ho_ten, luong+luong*0.1 AS
luong_moi
FROM NHAN_VIEN;
TopTaiLieu.Com | Chia Sẻ Tài Liệu Miễn Phí
c. SQL dùng các phép so sánh :
<= ( nhỏ hơn hoặc bằng) , 
>=( lớn hơn hoặc bằng) ,
 ( khác)
- Có thể kết hợp nhiều biểu thức logic 
bằng các phép AND, OR, NOT.
TopTaiLieu.Com | Chia Sẻ Tài Liệu Miễn Phí
Ví dụ 4:Tìm các nhân viên thuộc phòng có mã
phòng là P2 và có lương >=2tr.
SELECT ma_nv, ho_ten, ma_p, luong
FROM NHAN_VIEN
WHERE ma_p= 'P2' AND
luong>=2000000;
TopTaiLieu.Com | Chia Sẻ Tài Liệu Miễn Phí
Ví dụ 5:
Lập danh sách ( gồm mã sinh viên,họ
tên, ngày sinh, giới tính) của các sinh viên
nữ có học lực từ khá trở lên và các sinh
viên nam học lực giỏi.
SELECT SV#, HT, NS, GT
FROM SV
WHERE (GT= 'Nữ' AND HL>=6.5) 
OR ( GT= 'Nam' AND HL 
>=8.0 );
TopTaiLieu.Com | Chia Sẻ Tài Liệu Miễn Phí
d. Tìm kiếm có xử lý xâu kí tự
 SQL dùng toán tử LIKE để so sánh
xâu.
 SQL sử dụng kí tự ' %' để thay thế cho
một xâu con, dấu phân cách '_' để thay
thế cho một kí tự.
VD:
- A%B : xâu kí tự bất kì bắt dầu bằng
chữ A và kết thúc bằng chữ B
- A_B : xâu gồm 3 kí tự, có kí tự thứ
hai bất kì
TopTaiLieu.Com | Chia Sẻ Tài Liệu Miễn Phí
Ví dụ 6: Cho biết mã và tên các dự án mà
địa điểm có chứa từ UBND:
SELECT ma_da, ten_da
FROM DU_AN
WHERE dia_diem_da LIKE
'%UBND%';
TopTaiLieu.Com | Chia Sẻ Tài Liệu Miễn Phí
e. SQL cho phép sử dụng các giá trị NULL để
chỉ sự thiếu vắng thông tin về giá trị của một bộ
tại một thuộc tính. Với từ khoá IS NULL, SQL 
cho phép kiểm tra xem một giá trị có là NULL 
hay không ?
Ví dụ 7: Cho biết tên và mã số dự án mà
cột địa điểm có giá trị là NULL.
SELECT ma_da, ten_da
FROM DU_AN
WHERE dia_diem_da IS NULL;
TopTaiLieu.Com | Chia Sẻ Tài Liệu Miễn Phí
f. Truy vấn có sắp xếp thứ tự
Kết quả của câu truy vấn SQL có thể
được sắp theo thứ tự tăng dần (ASC ) 
hoặc giảm dần (DESC) bởi khoá
ORDER BY. Mặc định là tăng dần.
Ví dụ 8 :
Liệt kê các nhân viên nữ theo thứ tự
tăng dần của lương:
SELECT *
FROM NHAN_VIEN
WHERE GT = ' Nữ'
ORDER BY luong;
TopTaiLieu.Com | Chia Sẻ Tài Liệu Miễn Phí
 Việc sắp thứ tự có thể được thực
hiện trên nhiều thuộc tính
Ví dụ 9: Hiển thị các thông tin chấm
công của các dự án có mã thuộc tập
D1, D2, D8 theo thứ tự tăng dần của
số giờ và giảm dần của mã dự án:
SELECT *
FROM CHAM_CONG
WHERE ma_da IN ('D1', 'D2', 'D8')
ORDER BY so_gio ASC, ma_da
DESC;
TopTaiLieu.Com | Chia Sẻ Tài Liệu Miễn Phí
g. Tìm kiếm nhờ sử dụng IN và
BETWEEN
Ví dụ 10: 
Tìm những nhân viên có lương từ 2000000 
đến 3000000 , sắp xếp tên theo thứ tự tăng
dần.
SELECT *
FROM NHAN_VIEN
WHERE luong BETWEEN 2000000 AND
3000000
ORDER BY ho_ten ASC;
TopTaiLieu.Com | Chia Sẻ Tài Liệu Miễn Phí
2. Các hàm thư viện
SQL có 5 hàm kết tập được cài sẵn : 
- COUNT :đếm số giá trị
- SUM : tính tổng các giá trị trong một cột
- MAX : tính giá trị lớn nhất trong một cột
- MIN : tính giá trị nhỏ nhất trong một cột
- AVG : tính giá trị trung bình của một cột
Chú ý : Các hàm sum và avg chỉ áp dụng cho
các cột có kiểu số
TopTaiLieu.Com | Chia Sẻ Tài Liệu Miễn Phí
Ví dụ 1: Tìm lương cao nhất, lương thấp
nhất, và trung bình cộng lương toàn cơ
quan
SELECT MAX (luong) AS max, MIN 
(luong) AS min, AVG (luong) AS tb
FROM NHAN_VIEN;
Kết quả câu truy vấn này trả ra như sau :
235000012000003000000
tbminmax
TopTaiLieu.Com | Chia Sẻ Tài Liệu Miễn Phí
Ví dụ 2: Cho biết số nhân viên thực hiện dự
án có mã là D8
SELECT COUNT (*)
FROM CHAM_CONG
WHERE ma_da = 'D8';
Chú ý :
- Hàm Count khi có đối số (*) có
nghĩa là đếm số bản ghi thoả mãn
yêu cầu mà không cần quan tâm đến
bất kì cột nào .
TopTaiLieu.Com | Chia Sẻ Tài Liệu Miễn Phí
- Dùng từ khoá DISTINCT ngay
trước tên cột được áp dụng hàm, 
khi cần loại bỏ các bộ trùng nhau.
Ví dụ 3: Đếm số tỉnh có sinh viên
theo học
SELECT COUNT (DISTINCT Que)
FROM SINHVIEN;
TopTaiLieu.Com | Chia Sẻ Tài Liệu Miễn Phí
3.Tìm kiếm nhờ mệnh đề GROUP BY 
Ví dụ 1: In ra danh sách sinh viên theo
từng quê của sinh viên? 
SELECT SV#, HT, NS
FROM SV
GROUP BY Que;
TopTaiLieu.Com | Chia Sẻ Tài Liệu Miễn Phí
4. Tìm kiếm có sử dụng mệnh đề HAVING
Mệnh đề HAVING thường sử dụng cùng mệnh
đề GROUP BY. Sau HAVING là biểu thức điều kiện. 
Biểu thức này không tác động vào toàn bảng mà chỉ tác
động vào từng nhóm các bản ghi đã chỉ ra tại mệnh đề
GROUP BY 
VÍ DỤ : Tìm mã số những sinh viên thực hiện ít nhất 2 
đề tài:
SELECT SV#
FROM SD
GROUP BY SV#
HAVING COUNT (DT# ) >=2;
TopTaiLieu.Com | Chia Sẻ Tài Liệu Miễn Phí
5. Tìm kiếm với câu hỏi phức tạp
Tìm kiếm với nhiều bảng qua việc sử dụng ánh xạ
lồng nhau hoặc qua phép kết nối.
 Phép kết nối :
ĐK: Các miền tham gia kết nối phải có miền trị là
sánh được với nhau. Tên của các cột khác nhau có thể
được viết tường minh qua tên bảng theo cú pháp :
Tên_ bảng. Tên_ cột
Ví dụ : Với mỗi đề tài có sinh viên tham gia thực tập. 
Hãy cho biết tên đề tài, tên chủ nhiệm đề tài và kinh phí
thực hiện đề tài đó.
TopTaiLieu.Com | Chia Sẻ Tài Liệu Miễn Phí
Câu lệnh :
SELECT TDT, CN, KP
FROM DT, SD
WHERE SD.DT# = DT.DT#;
Chú ý : Trong câu truy vấn có hơn một
bảng, nếu tên cột là không duy nhất thì bắt buộc
phải viết tên cột dạng tường minh.
TopTaiLieu.Com | Chia Sẻ Tài Liệu Miễn Phí
 Ánh xạ lồng
Ví dụ 1: 
Tìm tên những sinh viên thực tập tại Hà Nội .
SELECT HT
FROM SV
WHERE SV# IN (SELECT SV# 
FROM SD
WHERE NTT= ‘Hà Nội ‘);
TopTaiLieu.Com | Chia Sẻ Tài Liệu Miễn Phí
Ví dụ 2: 
Tìm những sinh viên thực hiện ít nhất một đề tài nào
đó:
SELECT * 
FROM SV
WHERE EXISTS ( SELECT * 
FROM SD
WHERE
SV.SV# = SD.SV#);
SQL còn có thể tìm kiếm trên nhiều bảng
nhờ mênh đề EXISTS ( tồn tại )
TopTaiLieu.Com | Chia Sẻ Tài Liệu Miễn Phí
 Tìm kiếm có sử dụng lường từ ANY và
ALL
Ví dụ 3 : Tìm tên những đề tài mà sinh viên có mã số 5 
đã thực hiện:
SELECT TDT 
FROM DT
WHERE DT# = ANY ( SELECT DT# 
FROM SD
WHERE SV# = 5);
TopTaiLieu.Com | Chia Sẻ Tài Liệu Miễn Phí
Ví dụ 4 : 
Tìm tên sinh viên có điểm học lực
cao hơn tất cả các sinh viên
SELECT HT 
FROM SV
WHERE HL >= ALL ( SELECT HL 
FROM SV );
Mệnh đề trên tương đương với : 
SELECT HT 
FROM SV
WHERE HL = ( SELECT MAX (HL) 
FROM SV ); 
TopTaiLieu.Com | Chia Sẻ Tài Liệu Miễn Phí
IV. CÁC MỆNH ĐỀ CẬP NHẬT DỮ LIỆU
1. Thêm một bộ :
Dạng tổng quát :
INSERT INTO Tên _ bảng ( ds_tên _cột)
VALUES (các_ giá_trị )
[ câu hỏi con]
Có thể bổ sung vào một tập các bản ghi là kết quả xử lý của
một câu hỏi nào đó. 
VD: Chèn vào bảng SVG các sinh viên giỏi trong bảng SV.
INSERT INTO SVG
SELECT * 
FROM SV
WHERE HL >= 8.0;
TopTaiLieu.Com | Chia Sẻ Tài Liệu Miễn Phí
2. Xoá bản ghi
Có thể xoá một hay nhiều bản ghi thoả mãn một điều kiện
nào đó.
Dạng tổng quát:
DELETE [tên_bảng]
[FROM { Tên_bảng / Tên_ view}]
[WHERE Biểu_ thức _điều _kiện]
Ví dụ : Xoá những sinh viên có điểm HL kém (HL<=3.5):
DELETE
FROM SV
WHERE HL<=3.5;
TopTaiLieu.Com | Chia Sẻ Tài Liệu Miễn Phí
3. Sửa đổi dữ liệu
Sửa đổi các giá trị của các bản ghi theo một điều kiện nào
đó: 
Dạng tổng quát :
UPDATE [ tên_bảng]
SET [ tên_cột = biểu_thức,...]
FROM tên _ bảng
WHERE Biểu _ thức _điều _kiện
Ví dụ : Sửa điểm học lực của bạn Phan Ngọc Hà thành 8.5
UPDATE SV
SET HL = 8.5 
WHERE HT=‘ Phan Ngọc Hà’;
TopTaiLieu.Com | Chia Sẻ Tài Liệu Miễn Phí
4. Tạo chỉ mục.
Việc tạo chỉ mục là tạo ra một bảng lưu trữ vị trí các
bản ghi dựa trên giá trị tăng dần của một ( hay một số) 
cột nào đó. Việc này có tác dụng làm tăng tốc độ tìm
kiếm thông tin trong CSDL.
Dạng tổng quát :
CREATE INDEX tên_bảng_chỉ_mục
ON Tên_bảng ( tên _cột [ASC | DESC]);
Bỏ chỉ mục thì sử dụng mệnh đề :
DROP INDEX tên_chỉ_mục;
TopTaiLieu.Com | Chia Sẻ Tài Liệu Miễn Phí
Ví dụ : 
Tạo chỉ mục CMHT trên cột Ho_ten của bảng
sinh viên:
CREATE INDEX CMHT
ON SV ( HT ASC);
Ví dụ: Xoá chỉ mục CMHT ra khỏi bảng SV
DROP INDEX CMHT;
TopTaiLieu.Com | Chia Sẻ Tài Liệu Miễn Phí
5. Tạo View của người sử dụng
Tạo ra một khung nhìn của người sử dụng :
Dạng tổng quát :
CREATE VIEW Tên_View (Danh_ sách_ tên _cột)
AS mệnh_đề_Select ;
Ví dụ : Tạo View DSSVG gồm những sinh viên giỏi bao
gồm thông tin về họ tên, ngày sinh, giới tính của các sinh
viên từ bảng SV.
CREATE VIEW DSSVG ( Hoten, NS, GT)
AS SELECT HT , NS, GT
FROM SV
WHERE HL >= 8.0;
TopTaiLieu.Com | Chia Sẻ Tài Liệu Miễn Phí
6. SQL nhúng
Có thể truy cập vào CSDL từ một ngôn ngữ lập
trình bậc cao nếu có SQL "nhúng" trong ngôn ngữ
này. Một ngôn ngữ trong đó các câu hỏi được SQL 
được nhúng vào gọi là ngôn ngữ chủ, còn các cấu trúc
của SQL được phép trong ngôn ngữ này làm thành
SQL nhúng 
 - Sơ đồ xử lý các chương trình có nhúng câu lệnh SQL:
TopTaiLieu.Com | Chia Sẻ Tài Liệu Miễn Phí
Ngôn ngữ chủ
+
SQL nhúng
Tiền xử lý
Ngôn ngữ chủ
Các lời gọi hàm
Biên dịch
ngôn ngữ chủ Thư viện SQL
Chương trình ngôn ngữ chủ
+
TopTaiLieu.Com | Chia Sẻ Tài Liệu Miễn Phí

File đính kèm:

  • pdfbai_giang_co_so_du_lieu_bai_5_ngon_ngu_csdl_sql_vu_van_dinh.pdf