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

ch3 ngon ngu truy van sql

85 45 0

Đ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 85
Dung lượng 0,96 MB

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

Nội dung

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 P

Trang 1

CƠ SỞ DỮ LIỆU

( Databases )

Chương 3: Ngôn ngữ truy vấn SQL

Trang 2

6 Các lệnh liên quan tới cấu trúc

7 Các lệnh giao quyền truy cập CSDL

8 Bài tập

Trang 3

 1970: SQL (Structured Query Language) bắt nguồn từ

nhằm khi đưa ra hệ quản trị CSDL có tên là SYSTEM-R

Trang 4

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

Trang 5

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…

Trang 6

Lược đồ CSDL sử dụng

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)

Trang 7

3.2 lệnh SELECT – Truy vấn dữ liệu

• Nối các biểu thức: AND, OR, NOT

• Phép toán: >, <, <=, >=, =, <>, LIKE, BETWEEN

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

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

WHERE <điều kiện>

Trang 10

Mệnh đề SELECT

Trang 11

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=5  PHAI=‘Nam’ ( NHANVIEN )))

Trang 14

Mệnh đề SELECT (tt)

Loại bỏ các dòng trùng nhau

SELECT LUONG

FROM NHANVIEN

WHERE PHG=5 AND PHAI=‘ Nam ’

SELECT DISTINCT LUONG FROM NHANVIEN

WHERE PHG=5 AND PHAI=‘ Nam ’

Trang 15

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 ’

Trang 16

Mệnh đề WHERE

SELECT MANV, TENNV

FROM NHANVIEN, PHONGBAN

WHERE PHG=MAPHG AND TENPHG=‘ Nghien cuu ’

Biểu thức luận lý

Trang 17

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

Trang 18

WHERE LUONG>=2000000 AND LUONG<=3000000

SELECT MANV, TENNV

FROM NHANVIEN

WHERE LUONG BETWEEN 2000000 AND 3000000

SELECT MANV, TENNV

FROM NHANVIEN

WHERE LUONG NOT BETWEEN 2000000 AND 3000000

Trang 20

Mệnh đề WHERE (tt)

 LIKE

– Lấy tất cả chuỗi giống với mẫu

 NOT LIKE

– Lấy tất cả những chuỗi không giống

SELECT MANV, TENNV

FROM NHANVIEN

WHERE HONV LIKE ‘ Nguyen_ _ _ _’

SELECT MANV, TENNV

FROM NHANVIEN

WHERE HONV LIKE ‘Nguyen %’

1 Ký tự bất kỳ

Nhiều ký tự bất kỳ

Trang 21

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

Trang 22

Mệnh đề WHERE (tt)

Không sử dụng WHERE

– Kết quả là phép tích “đề-các”

Trang 23

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

Trang 24

Mệnh đề ORDER BY

 Dùng để hiển thị kết quả truy vấn theo thứ tự

 Cú pháp:

– ASC: Sắp xếp tăng (mặc định)– DESC: Sắp xếp giảm

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>

Trang 26

SELECT <danh sách cột>

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

WHERE <điều kiện>

GROUP BY <danh sách cột gom nhóm>

Trang 27

Mệnh đề GROUP BY (tt)

Ví dụ: Cho biết số lượng nhân viên ở mỗi phòng ban

SELECT PHG, COUNT(*) AS ‘So NV’

FROM NHANVIEN

GROUP BY PHG

Hoặc

SELECT T ENPHG, COUNT(*) AS ‘So NV’

FROM NHANVIEN, PHONGBAN

WHERE PHG=MAPHG

GROUP BY TENPHG

Trang 28

Mệnh đề GROUP BY (tt)

Ví dụ: Hãy cho biết mã nhân viên, số lượng đề án và tổng thời gian mà họ tham gia

SELECT MaNV, COUNT(*) AS ‘ So DA’,

SUM (THOIGIAN) AS ‘Tong TG’

FROM PHANCONG

GROUP BY MaNV

SELECT NV.MaNV, TENV,

COUNT(*) AS ‘So DA’, SUM (THOIGIAN) AS ‘Tong TG’

FROM PHANCONG PC, NHANVIEN NV

WHERE PC.MaNV = NV.MaNV

GROUP BY PC MaNV, TenNV

Trang 30

WHERE <điều kiện>

GROUP BY <danh sách cột gom nhóm>

HAVING <điều kiện chọn nhóm>

SELECT MaNV, COUNT(*) AS ‘ So DA’, FROM PHANCONG

GROUP BY MaNV HAVING COUNT (*) > 2

Trang 31

SELECT NV.PHG, PB.TenPB, Avg(NV.Luong) AS "TB Luong"

FROM NhanVien AS NV , PhongBan AS PB

WHERE NV.Phg = PB.MaPB

GROUP BY NV.PHG, PB.TenPB

Trang 32

3.3 Các hàm thao tác dữ liệu (tt)

Các hàm tính toán trên bản ghi

– ABS: tính trị tuyệt đối

– POWER(x, y): trả về xy– SQRT: Tính căn bậc 2

– LOG: Tính Log tự nhiên

– EXP: Tính ex– SIGN (x): Kiểm tra dấu của x (trả về -1 | 0 | 1)

– ROUND (x, n): làm tròn x tới n số lẻ (Access là RND)– Các hàm lượng giác: SIN, COS, TAN, ASIN, ACOS,…

Trang 33

3.3 Các hàm thao tác dữ liệu (tt)

Các hàm xử lý chuỗi

– LEN (str) : Cho chiều dài chuỗi ký tự

– LEFT (str, n): Lấy n ký tự phía trái của chuỗi str

– RIGHT (str, n): Lấy n ký tự phía phải của chuỗi str

– MID (str, p, n): Lấy n ký tự của chuỗi str kể từ vị trí p trong dãy

Trang 34

3.3 Các hàm thao tác dữ liệu (tt)

Các hàm xử lý thời gian

– DATE(): Cho ngày tháng năm hiện tại

– DAY (dd): Cho số thứ tự ngày trong tháng của biểu thức ngày dd

– MONTH (dd) Cho số thứ tự tháng trong năm của biểu thức ngày dd

– YEAR (dd) Cho năm của biểu thức ngày dd

– HOUR (tt) Cho giờ trong ngày (0- 23)

– MINUTE (tt) Cho số phút của thời gian tt

– SECONDS (tt) Cho số giây của biểu thức giờ tt

Trang 36

WHERE <điều kiện kết nối>

SELECT HoNV, Tenlot, TenNV, TenPB FROM Nhanvien, PhongBan

SELECT <danh sách cột>

FROM <bảng 1> INNER JOIN <bảng 2> ON <điều kiện kết nối>

WHERE <điều kiện chọn dòng>

Trang 37

3.4 Truy vấn từ nhiều bảng (tt)

 Ví dụ: Tìm mã và họ tên các nhân viên làm việc ở

phòng ‘Kinh doanh’

SELECT MaNV, HoNV +’ ‘ + Tenlot + ‘ ‘ + TenNV AS ‘Ho ten’, TenPB

FROM Nhanvien INNER JOIN PhongBan ON PHG = MaPB

WHERE TenPB LIKE ‘%Kinh doanh’

Hoặc:

SELECT MaNV, HoNV +’ ‘ + Tenlot + ‘ ‘ + TenNV AS ‘Ho ten’, TenPB

FROM Nhanvien, PhongBan WHERE PHG = MaPB AND TenPB LIKE ‘%Kinh doanh’

Trang 43

Truy vấn lồng nhau (tt)

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

– IN – NOT IN– ALL

– ANY / SOME– EXISTS

– NOT EXISTS

Trang 44

• Mệnh đề WHERE của Subquery tham chiếu đến ít nhất

1 thuộc tính của bảng trong mệnh đề FROM của truy vấn cha

• Khi thực hiện, câu truy vấn con được thực nhiều lần – mỗi lần ứng với 1 bộ của câu truy vấn cha

Trang 45

Ví dụ - Truy vấn lồng phân cấp

 Đưa ra mã nhân viên, họ tên nhân viên thuộc phòng

‘Tài chính’ hoặc phòng ‘Kế hoạch’

SELECT MaNV, HoNV, TenLot, TenNV

Trang 46

FROM PHANCONG PC, NHANVIEN NV

WHERE PC.MaNV = NV.MaNV AND

NV.HoNV LIKE ‘%Nguyễn%’

)

Trang 49

Ví dụ - Truy vấn lồng phân cấp (tt)

 Tìm những trưởng phòng có tối thiểu 1 thân nhân

 Tìm những Nhân viên có lương cao hơn lương của mọi nhân viên phòng 4

SELECT *

FROM NHANVIEN

WHERE MANV IN (SELECT MaNV FROM THANNHAN) AND

MANV IN (SELECT TRPHG FROM PHONGBAN)

Trang 50

Truy vấn lồng tương quan

– Mệnh đề WHERE của Subquery tham chiếu đến ít nhất 1 thuộc tính của bảng trong mệnh đề FROM của

WHERE EXISTS ( SELECT * FROM THANNHAN TN

WHERE TN.MaNV = NV.MaNV) AND

EXISTS (SELECT TrgPHG FROM PHONGBAN

Trang 51

Ví dụ - Truy vấn lồng lương quan (tt)

 Tìm những nhân viên không có thân nhân nào

Trang 52

Ví dụ - Truy vấn lồng lương quan (tt)

 Tìm những nhân viên có lương cao hơn lương trung bình của phòng

Trang 53

Ví dụ - Truy vấn lồng lương quan (tt)

 Tìm những nhân viên có lương bằng lương cao hơn lương của ít nhất 1 nhân viên thuộc phòng ‘Tài chính’

SELECT *

FROM NHANVIEN NV1

WHERE EXISTS (

SELECT *

FROM NHANVIEN NV2, PHONGBAN PB

WHERE NV2.Phg = PB.MaPB AND

PB.TenPB LIKE ‘%Tài chính%’ AND

NV1.Luong > NV2.Luong

Trang 54

Nhận xét IN và EXISTS

 IN

– <tên cột> IN <câu truy vấn con>

– Thuộc tính ở mệnh đề SELECT câu truy vấn con phải

có cùng kiểu dữ liệu với thuộc tính ở mệnh đề WHERE trong câu truy vấn cha

Trang 56

Phép toán tập hợp trong SQL (tt)

Ví dụ: Tìm các mã đề án có nhân viên họ ‘Nguyễn’

tham gia hoặc trưởng phòng chủ trì đề án có họ

‘Nguyễn’

SELECT MaDA

FROM PHANCONG PC, NHANVIEN NV

WHERE (PC.MaNV = NV.MaNV) AND (HoNV = ‘Nguyễn’)

UNION (

SELECT MaDA

FROM NHANVIEN NV, PHONGBAN PB, DEAN DA

WHERE (NV.MaNV=PB.TrgPhg) AND (DA.Phong= PB.MaPB)

AND (NV.HoNV = ‘Nguyễn’)

Trang 58

3.5.1 Thêm dòng vào bảng

Cú pháp

Ví dụ:

INSERT INTO <tên bảng> ( <danh sách các thuộc tính>)

VALUES (<danh sách các giá trị>)

Trang 60

3.5.1 Thêm dòng vào bảng (tt)

Thêm nhiều dòng

Ví dụ:

INSERT INTO <tên bảng> ( <danh sách các thuộc tính>)

<câu truy vấn con>

Trang 61

3.5.2 Sửa dòng trong bảng

Cú pháp

Ví dụ: Tăng lương 30% cho những người là ‘nữ’

UPDATE <tên bảng>

SET <tên thuộc tính> = <giá trị mới>,

<tên thuộc tính> = <giá trị mới>,

Trang 62

• Không cho chỉnh sửa

• Sửa luôn dòng có giá trị tham chiếu đến (CASCADE)

Trang 63

3.5.3 Xóa dòng trong bảng

Cú pháp

Ví dụ:

DELETE FROM <tên bảng>

WHERE <điều kiện>

Trang 64

3.5.3 Xóa dòng trong bảng (tt)

Ví dụ: Xóa đi những nhân viên làm ở phòng ‘Dự án’

DELETE FROM NHANVIEN

WHERE PHG IN (

SELECT MaPB

FROM PHONGBAN

WHERE TenPB = ‘Phòng Dự án’ )

Trang 65

3.5.3 Xóa dòng trong bảng (tt)

Nhận xét

– Số dòng bị xóa phụ thuộc vào điều kiện sau WHERE

– Nếu không chỉ rõ điều kiện sau WHERE tất cả các dòng trong bảng sẽ bị xóa

– Lệnh DELETE FROM có thể gây ra vi phạm RBTV

• Không cho xóa

• Xóa luôn những dòng có giá trị đang tham chiếu đến

• Đặt Null cho những giá trị tham chiếu

Trang 66

3.5.3 Xóa dòng trong bảng (tt)

Trang 67

3.5.4 Tạo bảng từ CSDL

Cú pháp:

SELECT <danh sách cột/biểu thức>

FROM <tên bảng nguồn>

Trang 68

3.5.4 Tạo bảng từ CSDL (tt)

Ví dụ

FROM NHANVIEN NV, PHONGBAN PB

Trang 69

3.6 Các lệnh liên quan cấu trúc CSDL

Các kiểu dữ liệu trong SQL

Char (w) Kiểu ký tự độ rộng cố định (w)

Varchar(w) Kiểu ký tự có độ rộng thay đổi 0  w

Integer Kiểu số nguyên

Byte Kiểu số nguyên nhỏ (0  255)

Numberic (w,s) Số thực rộng w vị trí (cả dấu chấm) có s chữ số thập

phân Real, Double Số thực dấu phẩy động

Float (n) Số thực dấu phẩy động có ít nhất n chữ số

Time Kiểu thời gian (giờ/phút/giây)

Trang 70

3.6.1 Lệnh tạo bảng CREATE TABLE

Để định nghĩa 1 bảng cần chỉ ra:

– Tên bảng– Các thuộc tính

• Tên thuộc tính

• Kiểu dữ liệu

• RBTV trên thuộc tính

Cú pháp

Trang 71

3.6.1 CREATE TABLE (tt)

Ví dụ:

Trang 72

3.6.1 CREATE TABLE (tt)

 RBTV

– NOT NULL– NULL

– UNIQUE– DEFAUL– PRIMARY KEY– FOREIGN KEY / REFERENCES– CHECK

Đặt tên cho RBTV

Trang 73

3.6.1 CREATE TABLE (tt)

Ví dụ RBTV

Trang 74

3.6.1 CREATE TABLE (tt)

Ví dụ:

Trang 75

3.6.1 CREATE TABLE (tt)

Ví dụ - đặt tên cho RBTV

Trang 76

3.6.1 CREATE TABLE (tt)

Ví dụ - đặt tên cho RBTV

Trang 78

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

Thay đổi RBTV

– Thêm RBTV

– Xóa RBTV

Trang 79

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

Ví dụ - thay đổi cấu trúc

Trang 80

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

Ví dụ - thay đổi RBTV

Trang 81

3.6.3 Xóa bảng

Cú pháp:

Ví dụ:

Trang 82

3.6.3 Xóa bảng (tt)

Trang 83

3.7 Lệnh giao quyền truy cập CSDL

(Đọc tài liệu)

Trang 85

3.8 Bài tập

(Tài liệu, trang 59 – 62)

Ngày đăng: 05/11/2019, 11:43

w