lOMoARcPSD|21861747
SQL - sql
Cơ Sở Dữ Liệu (Học viện Công nghệ Bưu chính Viễn thơng)
Studocu is not sponsored or endorsed by any college or university
Downloaded by Tr?n Du?n Official ()
lOMoARcPSD|21861747
Ngôn ngữ truy vấn SQL
Downloaded by Tr?n Du?n Official ()
lOMoARcPSD|21861747
Nội dung
1.
2.
3.
4.
5.
6.
7.
8.
Khái quát về ngôn ngữ truy vấn dữ liệu
Câu lệnh SELECT
Các hàm thao tác dữ liệu
Truy vấn thông tin từ nhiều bảng
Các lệnh cập nhật dữ liệu
Các lệnh liên quan tới cấu trúc
Các lệnh giao quyền truy cập CSDL
Bài tập
2
Downloaded by Tr?n Du?n Official ()
lOMoARcPSD|21861747
3.1. Giới thiệu SQL
SQL được xem là yếu tố chính đóng góp vào sự thành
cơng của CSDL quan hệ khi áp dụng trong thực tế.
Là ngôn ngữ mức cao, người dùng chỉ cần xác định kết
quả của truy vấn là gì, phần cịn lại là tính tốn và tối ưu
hoá câu lệnh được DBMS đảm nhiệm.
1970: SQL (Structured Query Language) bắt nguồn từ
ngôn ngữ SEQUEL (Structured English QUEry
Language), ngơn ngữ được thiết kế tại tập đồn IBM
nhằm khi đưa ra hệ quản trị CSDL có tên là SYSTEM-R
3
Downloaded by Tr?n Du?n Official ()
lOMoARcPSD|21861747
3.1. Giới thiệu SQL (tt)
Năm 1976: SEQUEL được cải tiến thành SEQUEL2
Năm 1978-1979: SEQUEL2 được nâng cấp và đổi
tên thành SQL (nhưng vẫn đọc là SEQUEL)
Chuẩn SQL đầu tiên có tên gọi SQL-86 (SQL1) được
cơng nhận và chuẩn hóa bởi ANSI và ISO.
Năm 1992: SQL1 được mở rộng với nhiều tính năng
mới và được gọi là SQL-92 (SQL2).
Năm 1999: Chuẩn SQL-99 (SQL3) ra đời
Phiên bản mới nhất hiện nay là SQL-2011
4
Downloaded by Tr?n Du?n Official ()
lOMoARcPSD|21861747
3.1. Giới thiệu SQL (tt)
Ngôn ngữ giao thiết CSLD gồm:
–
–
–
–
DDL – Data Definition Language
DML – Data Manipulation Language
SQL – Structured Query Language
DCL – Data Control Language
SQL gồm 2 nhóm lệnh
– DDL: Tạo cấu trúc CSDL
– DML: Thao tác trên CDSDL
• CREATE
• SELECT
• INSERT, UPDATE, DELETE…
5
Downloaded by Tr?n Du?n Official ()
lOMoARcPSD|21861747
Cho các lược đồ quan hệ
NHANVIEN (MANV,HONV, TENLOT, TENNV, PHAI,
LUONG, DIACHI, NGAYSINH, MA_NQL, PHG)
PHONGBAN (MAPB, TENPB, TRPHG, NGAYBĐ)
DIADIEM_PHG (MAPB, DIADIEM)
DEAN (MADA, TENDA, NGAYBD, PHONG, DIADIEM_DA)
PHANCONG (MANV, MADA, THOIGIAN)
THANNHAN (MANV,TENTN,PHAI,NGAYSINH,QUANHE)
6
Downloaded by Tr?n Du?n Official ()
lOMoARcPSD|21861747
3.2. lệnh SELECT – Truy vấn dữ liệu
Gồm 3 mệnh đề cơ bản
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 hiển thị ở kết quả truy vấn
– <danh sách các bảng>
• Tên các bảng (nguồn) dữ liệu khi truy vấn
– <điều kiện>
• Xác định biểu thức boolean xác định dịng (bộ) nào được trích
ra
• Nối các biểu thức: AND, OR, NOT
• Phép tốn: >, <, <=, >=, =, <>, LIKE, BETWEEN
7
Downloaded by Tr?n Du?n Official ()
lOMoARcPSD|21861747
2.
lệnh SELECT (tt)
SQL và Đại số quan hệ
SELECT <danh sách các cột>
x
FROM <danh sách các bảng>
WHERE <điều kiện>
SELECT
L
FROM
R
WHERE C
L(
C(R ))
8
Downloaded by Tr?n Du?n Official ()
lOMoARcPSD|21861747
Ví dụ
Lấy tất cả các cột
của quan hệ
SELECT *
FROM NHANVIEN
WHERE PHG=5
PHG=5(NHANVIEN)
9
Downloaded by Tr?n Du?n Official ()
lOMoARcPSD|21861747
Mệnh đề SELECT
10
Downloaded by Tr?n Du?n Official ()
lOMoARcPSD|21861747
Mệnh đề SELECT (tt)
Tên, Bí danh
SELECT MANV, HONV AS 'Họ', TENLOT AS ‘Tên lót’, TENNV AS 'Tên'
FROM NHANVIEN
WHERE PHG=5 AND PHAI=‘Nam’
(
MANV,HO,TEN LOT,TEN
MaNV,HONV,TENLOT,TENNV
PHG=5PHAI=‘Nam’(NHANVIEN)))
11
Downloaded by Tr?n Du?n Official ()
lOMoARcPSD|21861747
Mệnh đề SELECT (tt)
Mở rộng:
SELECT MANV, HONV +’ ‘+ TENLOT+’ ‘ TENNV AS ‘HO TEN’
FROM NHANVIEN
WHERE PHG=5 AND PHAI=‘Nam’
12
Downloaded by Tr?n Du?n Official ()
lOMoARcPSD|21861747
Mệnh đề SELECT (tt)
Mở rộng:
SELECT MANV, LUONG*1.1 AS ‘LUONG10%’
FROM NHANVIEN
WHERE PHG=5 AND PHAI=‘Nam’
13
Downloaded by Tr?n Du?n Official ()
lOMoARcPSD|21861747
Mệnh đề SELECT (tt)
Loại bỏ các dòng trùng nhau
SELECT LUONG
FROM NHANVIEN
SELECT DISTINCT LUONG
WHERE PHG=5 AND PHAI=‘Nam’
FROM NHANVIEN
WHERE PHG=5 AND PHAI=‘Nam’
14
Downloaded by Tr?n Du?n Official ()
lOMoARcPSD|21861747
Ví dụ
Cho biết MANV và TENNV làm việc ở phòng ‘Nghien
cuu’
SELECT MANV, TENNV
FROM NHANVIEN, PHONGBAN
WHERE PHG=MAPHG AND TENPGH=‘Nghien cuu’
15
Downloaded by Tr?n Du?n Official ()
lOMoARcPSD|21861747
Mệnh đề WHERE
Biểu thức luận lý
SELECT MANV, TENNV
FROM NHANVIEN, PHONGBAN
WHERE PHG=MAPHG AND TENPHG=‘Nghien cuu’
TRUE
TRUE
16
Downloaded by Tr?n Du?n Official ()
lOMoARcPSD|21861747
Mệnh đề WHERE (tt)
Độ ưu tiên
– Viết trước thực hiện trước
– Trong ngoặc thực hiện trước
SELECT MANV, TENNV
FROM NHANVIEN, PHONGBAN
WHERE (TENPHG=‘Nghien cuu’ OR TENPHG=‘Quan ly’) AND PHG=MAPHG
17
Downloaded by Tr?n Du?n Official ()
lOMoARcPSD|21861747
Mệnh đề WHERE (tt)
BETWEEN
SELECT MANV, TENNV
FROM NHANVIEN
WHERE LUONG>=2000000 AND LUONG<=3000000
SELECT MANV, TENNV
FROM NHANVIEN
WHERE LUONG BETWEEN 2000000 AND 3000000
NOT BETWEEN
SELECT MANV, TENNV
FROM NHANVIEN
WHERE LUONG NOT BETWEEN 2000000 AND3000000
18
Downloaded by Tr?n Du?n Official ()
lOMoARcPSD|21861747
Mệnh đề WHERE (tt)
IN
NOT IN
SELECT MANV, TENNV
SELECT MANV, TENNV
FROM NHANVIEN
FROM NHANVIEN
WHERE PHG IN (4,5)
WHERE PHG NOT IN (4,5)
SELECT MANV, TENNV
FROM NHANVIEN
WHERE PHG = 4 OR PHG=5
19
Downloaded by Tr?n Du?n Official ()
lOMoARcPSD|21861747
Mệnh đề WHERE (tt)
LIKE
– Lấy tất cả chuỗi giống với mẫu
SELECT MANV, TENNV
FROM NHANVIEN
WHERE HONV LIKE ‘Nguyen_ _ _ _’
1 Ký tự bất kỳ
SELECT MANV, TENNV
FROM NHANVIEN
WHERE HONV LIKE ‘Nguyen %’
Nhiều ký tự bất kỳ
NOT LIKE
– Lấy tất cả những chuỗi không giống
20
Downloaded by Tr?n Du?n Official ()
lOMoARcPSD|21861747
Mệnh đề WHERE (tt)
NULL
– Sử dụng trong trường hợp:
• Khơng biết (value unknown)
• Khơng thể áp dụng (value inapplicable)
• Không tồn tại (value un witheld)
SELECT MANV, TENNV
FROM NHANVIEN
WHERE MA_NQL IS NULL
SELECT MANV, TENNV
FROM NHANVIEN
WHERE MA_NQL IS NOT NULL
21
Downloaded by Tr?n Du?n Official ()
lOMoARcPSD|21861747
Mệnh đề WHERE (tt)
Không sử dụng WHERE
– Kết quả là phép tích “đề-các”
22
Downloaded by Tr?n Du?n Official ()
lOMoARcPSD|21861747
Mệnh đề FROM
Tên, Bí danh
SELECT TENPHG, DIADIEM
FROM PHONGBAN, DDIEM_PHG
WHERE MAPHG=MAPHG
SELECT TENPHG, DIADIEM
FROM PHONGBAN, DDIEM_PHG
WHERE PhongBan.MAPHG=DDiem_PHG.MAPHG
Bí danh
23
Downloaded by Tr?n Du?n Official ()
lOMoARcPSD|21861747
Mệnh đề ORDER BY
Dùng để hiển thị kết quả truy vấn theo thứ tự
Cú pháp:
SELECT <danh sách cột>
FROM <danh sách các bảng>
WHERE <điều kiện>
ORDER BY <danh sách cột sắp xếp>
– ASC: Sắp xếp tăng (mặc định)
– DESC: Sắp xếp giảm
24
Downloaded by Tr?n Du?n Official ()