Bài giảng Nhập môn Cơ sở dữ liệu - Bài 5: Ngôn ngữ SQL

Nội dung

1. Giới thiệu

2. Các ngôn ngữ giao tiếp

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

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

5. Ngôn ngữ truy vấn dữ liệu có cấu trúc

6. Ngôn ngữ điều khiển dữ liệu

pdf21 trang | Chia sẻ: hienduc166 | Lượt xem: 606 | Lượt tải: 0download
Bạn đang xem trước 20 trang tài liệu Bài giảng Nhập môn Cơ sở dữ liệu - Bài 5: Ngôn ngữ SQL, để xem tài liệu hoàn chỉnh bạn click vào nút TẢI VỀ ở trên
r(50)
ALTER TABLE KHACHHANG ALTER COLUMN GHI_CHU varchar(50)
„ Nếu sửa kiểu dữ liệu của cột Ghi_chu thành varchar(5), mà 
trước đó đã nhập giá trị cho cột Ghi_chu có độ dài hơn 5ký 
tự thì không được phép.
„ Hoặc sửa từ kiểu chuỗi ký tự sang kiểu số, 
3.2.3 Xóa thuộc tính
ALTER TABLE tên_bảng DROP COLUMN tên_cột
„ Ví dụ: xóa cột Ghi_chu trong bảng KHACHHANG
ALTER TABLE NHANVIEN DROP COLUMN Ghi_chu
3.2 Sửa cấu trúc bảng(2)
7Khoa HTTT - Đại học CNTT 13
3.2.4 Thêm ràng buộc toàn vẹn
ALTER TABLE 
ADD CONSTRAINT 
UNIQUE tên_cột
PRIMARY KEY (tên_cột)
FOREIGN KEY (tên_cột)
REFERENCES tên_bảng
(cột_là_khóa_chính) [ON 
DELETE CASCADE] [ON 
UPDATE CASCADE]
CHECK (tên_cột điều_kiện)
3.2 Sửa cấu trúc bảng(3)
Khoa HTTT - Đại học CNTT 14
Š Ví dụ
„ ALTER TABLE NHANVIEN ADD CONSTRAINT PK_NV 
PRIMARY KEY (MANV)
„ ALTER TABLE CTHD ADD CONSTRAINT FK_CT_SP
FOREIGN KEY (MASP) REFERENCES 
SANPHAM(MASP)
„ ALTER TABLE SANPHAM ADD CONSTRAINT 
CK_GIA CHECK (GIA >=500)
„ ALTER TABLE KHACHHANG ADD CONSTRAINT 
UQ_KH UNIQUE (CMND)
3.2 Sửa cấu trúc bảng(4)
8Khoa HTTT - Đại học CNTT 15
3.2.5 Xóa ràng buộc toàn vẹn
ALTER TABLE tên_bảng DROP CONSTRAINT 
tên_ràng_buộc
„ Ví dụ: 
z Alter table CTHD drop constraint FK_CT_SP
z Alter table SANPHAM drop constraint ck_gia
Š Lưu ý: đối với ràng buộc khóa chính, muốn xóa 
ràng buộc này phải xóa hết các ràng buộc khóa 
ngoại tham chiếu tới nó
3.2 Sửa cấu trúc bảng(5)
Khoa HTTT - Đại học CNTT 16
Š Cú pháp
DROP TABLE tên_bảng 
Š Ví dụ: xóa bảng KHACHHANG.
DROP TABLE KHACHHANG
Š Lưu ý: khi muốn xóa một bảng phải xóa tất 
cả những khóa ngoại tham chiếu tới bảng đó 
trước.
3.3 Lệnh xóa bảng
9Khoa HTTT - Đại học CNTT 17
Š Gồm các lệnh: 
4.1 Lệnh thêm dữ liệu (INSERT)
4.2 Lệnh sửa dữ liệu (UPDATE)
4.3 Lệnh xóa dữ liệu (DELETE)
4. Ngôn ngữ thao tác dữ liệu
Khoa HTTT - Đại học CNTT 18
Š Cú pháp
INSERT INTO tên_bảng (cột1,,cộtn) VALUES 
(giá_trị_1,., giá_trị_n)
INSERT INTO tên_bảng VALUES (giá_trị_1, 
giá_trị_2,, giá_trị_n)
Š Ví dụ:
„ insert into SANPHAM values('BC01','But chi', 'cay', 
'Singapore', 3000)
„ insert into SANPHAM(masp,tensp,dvt,nuocsx,gia) 
values ('BC01','But chi','cay','Singapore',3000)
4.1 Thêm dữ liệu
10
Khoa HTTT - Đại học CNTT 19
Š Cú pháp
UPDATE tên_bảng
SET cột_1 = giá_trị_1, cột_2 = giá_trị_2 .
[WHERE điều_kiện]
Š Lưu ý: cẩn thận với các lệnh xóa và sửa, nếu không 
có điều kiện ở WHERE nghĩa là xóa hoặc sửa tất cả.
Š Ví dụ: Tăng giá 10% đối với những sản phẩm do 
“Trung Quoc” sản xuất
UPDATE SANPHAM
SET Gia = Gia*1.1
WHERE Nuocsx=‘Trung Quoc’
4.2 Sửa dữ liệu
Khoa HTTT - Đại học CNTT 20
4.3 Xóa dữ liệu
Š Cú pháp
DELETE FROM tên_bảng [WHERE điều_kiện]
Š Ví dụ:
„ Xóa toàn bộ nhân viên
DELETE FROM NHANVIEN 
„ Xóa những sản phẩm do Trung Quốc sản xuất có giá thấp 
hơn 10000
DELETE FROM SANPHAM 
WHERE (Gia <10000) and (Nuocsx=‘Trung Quoc’)
11
Khoa HTTT - Đại học CNTT 21
5. Ngôn ngữ truy vấn dữ liệu có
cấu trúc
5.1 Câu truy vấn tổng quát 
5.2 Truy vấn đơn giản
5.3 Phép kết
5.4 Đặt bí danh, sử dụng *, distinct
5.5 Các toán tử
5.6 Câu truy vấn con (subquery)
5.7 Phép chia
5.8 Hàm tính toán, gom nhóm
Khoa HTTT - Đại học CNTT 22
SELECT [DISTINCT] *|tên_cột | hàm
FROM bảng 
[WHERE điều_kiện]
[GROUP BY tên_cột]
[HAVING điều_kiện]
[ORDER BY tên_cột ASC | DESC]
5.1Câu truy vấn tổng quát
12
Khoa HTTT - Đại học CNTT 23
5.2 Truy vấn đơn giản(1)
Š SELECT
„ Tương đương phép chiếu của ĐSQH
„ Liệt kê các thuộc tính cần hiển thị trong kết quả
Š WHERE
„ Tương ứng với điều kiện chọn trong ĐSQH
„ Điều kiện liên quan tới thuộc tính, sử dụng các phép nối 
luận lý AND, OR, NOT, các phép toán so sánh, 
BETWEEN
Š FROM
„ Liệt kê các quan hệ cần thiết, các phép kết
Khoa HTTT - Đại học CNTT 24
5.2 Truy vấn đơn giản(2)
Š Tìm masp, tensp do “Trung Quoc” sản xuất 
có giá từ 20000 đến 30000
Select masp,tensp
From SANPHAM
Where nuocsx=‘Trung Quoc’
and gia between 20000 and 30000
13
Khoa HTTT - Đại học CNTT 25
5.3 Phép kết(1)
Š Inner Join, Left Join, Right Join, Full Join
Š Ví dụ:
„ In ra danh sách các khách hàng (MAKH, 
HOTEN) đã mua hàng trong ngày 1/1/2007.
select KHACHHANG.makh,hoten 
from KHACHHANG inner join HOADON on 
KHACHHANG.makh=HOADON.makh 
where nghd='1/1/2007'
Khoa HTTT - Đại học CNTT 26
5.3 Phép kết (2)
Š Ví dụ: In ra danh sách tất cả các hóa đơn và họ tên 
của khách hàng mua hóa đơn đó (nếu có)
„ Select sohd, hoten
From HOADON left join KHACHHANG on 
HOADON.makh=KHACHHANG.makh
„ Select sohd, hoten
From HOADON ,KHACHHANG 
where HOADON.makh*=KHACHHANG.makh
14
Khoa HTTT - Đại học CNTT 27
5.4 Đặt bí danh, sử dụng *, distinct
Š Đặt bí danh – Alias: cho thuộc tính và quan hệ: 
tên_cũ AS tên_mới
„ Select manv,hoten as [ho va ten] From NHANVIEN
Š Liệt kê tất cả các thuộc tính của quan hệ: 
„ Select * from Nhanvien
„ Select NHANVIEN.* from NHANVIEN
Š Distinct: trùng chỉ lấy một lần
„ Select distinct nuocsx from SANPHAM
Š Sắp xếp kết quả hiển thị: Order by
„ Select * from SANPHAM order by nuocsx, gia DESC
Khoa HTTT - Đại học CNTT 28
5.5 Toán tử truy vấn(1)
Š Toán tử so sánh: =, >,=,
Š Toán tử logic: AND, OR, NOT
Š Phép toán: +, - ,* , /
Š BETWEEN . AND
Š IS NULL, IS NOT NULL
Š LIKE (_ %)
Š IN, NOT IN 
Š EXISTS , NOT EXISTS
Š SOME, ALL
15
Khoa HTTT - Đại học CNTT 29
5.5 Toán tử truy vấn(2)
Š IS NULL, IS NOT NULL
„ Select sohd from HOADON where makh is Null
„ Select * from HOADON where makh is Not Null 
Š Toán tử so sánh, phép toán
„ Select gia*1.1 as [gia ban] from SANPHAM where 
nuocsx’Viet Nam’
„ Select * from SANPHAM where (gia between 20000 and 
30000) OR (nuocsx=‘Viet Nam’)
Š Toán tử IN, NOT IN
„ Select * from SANPHAM where masp NOT IN 
(‘BB01’,’BB02’,’BB03’)
Khoa HTTT - Đại học CNTT 30
Toán tử LIKE
„ So sánh chuỗi tương đối
„ Cú pháp: s LIKE p, p có thể chứa % hoặc _
„ % : thay thế một chuỗi ký tự bất kỳ
„ _ : thay thế một ký tự bất kỳ
„ Ví dụ: Select masp,tensp from SANPHAM 
where masp like 'B%01‘
5.5 Toán tử so sánh(3)
16
Khoa HTTT - Đại học CNTT 31
5.6 Câu truy vấn con (1)
In hoặc Exists
Š Ví dụ: Tìm các số hóa đơn mua cùng lúc 2 sản phẩm 
có mã số “BB01” và “BB02”.
„ select distinct sohd 
from CTHD where masp='BB01' and sohd IN
(select distinct sohd from CTHD where masp='BB02')
„ select distinct A.sohd 
from CTHD A where A.masp='BB01' and 
EXISTS (select * from CTHD B 
where B.masp='BB02‘ and A.sohd=B.sohd)
Khoa HTTT - Đại học CNTT 32
5.6 Câu truy vấn con (2)
Not In hoặc Not Exists
Š Ví dụ: Tìm các số hóa đơn có mua sản phẩm mã số
‘BB01’ nhưng không mua sản phẩm mã số ‘BB02’.
„ select distinct sohd 
from CTHD where masp='BB01' and sohd NOT IN
(select distinct sohd from CTHD where masp='BB02')
„ select distinct A.sohd 
from CTHD A where A.masp='BB01' and 
NOT EXITST (select * from CTHD B 
where B.masp='BB02‘ and A.sohd=B.sohd)
17
Khoa HTTT - Đại học CNTT 33
5.7 Phép chia
Sử dụng NOT EXISTS
Š Ví dụ: Tìm số hóa đơn đã mua tất cả những sản 
phẩm do “Trung Quoc” sản xuất.
Š Select sohd from HOADON where not exists 
(select * from SANPHAM 
where nuocsx=‘Trung Quoc’ and not exists 
(select * from CTHD where 
HOADON.sohd=CTHD.sohd and 
CTHD.masp=SANPHAM.masp))
Khoa HTTT - Đại học CNTT 34
5.8.1 Các hàm tính toán cơ bản
„ COUNT: Đếm số bộ dữ liệu của thuộc tính
„ MIN: Tính giá trị nhỏ nhất
„ MAX: Tính giá trị lớn nhất
„ AVG: Tính giá trị trung bình
„ SUM: Tính tổng giá trị các bộ dữ liệu
5.8 Các hàm tính toán và gom 
nhóm (1)
18
Khoa HTTT - Đại học CNTT 35
2.000.000NCNV003NữNguyễn Kim AnhNV009
1.800.000NCNV003NữTrần Kim DuyênNV008
1.800.000NCNV003NamHà Duy LậpNV007
2.000.000DHNV002NamNguyễn MinhNV006
2.500.000
1.800.000
2.300.000
2.000.000
2.800.000
LUONG
NC
DH
NC
DH
NC
PHONG
Nguyễn Thị Hồng Vân
Trần Thanh Long
Nguyễn Văn Mạnh
Đinh Bá Tiến
Nguyễn Ngọc Linh
HOTEN
NV001NữNV005
NV002NamNV004
NV001NamNV003
NV002NamNV002
NullNữNV001
MANQLPHAIMANV
NHANVIEN
Khoa HTTT - Đại học CNTT 36
Ví dụ
1. Tính lương thấp nhất, cao nhất, trung bình và tổng 
lương của tất cả các nhân viên.
2. Có tất cả bao nhiêu nhân viên
3. Bao nhiêu nhân viên có người quản lý
4. Bao nhiêu phòng ban có nhân viên trực thuộc
5. Tính lương trung bình của các nhân viên
6. Tính lương trung bình của các nhân viên theo 
từng phòng ban
19
Khoa HTTT - Đại học CNTT 37
1. Tính lương thấp nhất, cao nhất, trung bình 
và tổng lương của tất cả các nhân viên.
SELECT min(luong) as thapnhat, 
max(luong) as caonhat, 
avg(luong) as trungbinh, 
sum(luong) as tongluong
FROM NhanVien
Khoa HTTT - Đại học CNTT 38
2. Có tất cả bao nhiêu nhân viên
SELECT count(*) FROM NhanVien
3. Bao nhiêu nhân viên có người quản lý
„ Select count(*) FROM NhanVien WHERE manql is not null
„ SELECT count(Manql) FROM NhanVien
4. Bao nhiêu phòng ban có nhân viên trực thuộc
SELECT count(distinct phong) FROM NhanVien
20
Khoa HTTT - Đại học CNTT 39
5.8 Các hàm tính toán và gom 
nhóm (2)
5.8.2 Gom nhóm: mệnh đề GROUP BY
Š Sử dụng hàm gom nhóm trên các bộ trong quan hệ.
Š Mỗi nhóm bộ bao gồm tập hợp các bộ có cùng giá trị trên 
các thuộc tính gom nhóm
Š Hàm gom nhóm áp dụng trên mỗi bộ độc lập nhau.
Š SQL có mệnh đề GROUP BY để chỉ ra các thuộc tính 
gom nhóm, các thuộc tính này phải xuất hiện trong mệnh 
đề SELECT
Khoa HTTT - Đại học CNTT 40
5. Tính lương trung bình của các nhân viên
SELECT avg(LUONG) as LUONGTB
FROM NhanVien
6. Tính lương trung bình của các nhân viên theo từng 
phòng ban.
SELECT phong, avg(LUONG) as LUONGTB
FROM NhanVien
GROUP BY phong
21
Khoa HTTT - Đại học CNTT 41
5.8 Các hàm tính toán và gom 
nhóm (3)
5.8.3 Điều kiện sau gom nhóm: mệnh đề HAVING
„ Lọc kết quả theo điều kiện, sau khi đã gom nhóm
„ Điều kiện ở HAVING được thực hiện sau khi gom nhóm, 
các điều kiện có liên quan đến thuộc tính Group By
Š Ví dụ: tìm phòng có số lượng nhân viên “Nữ” trên 5 người
SELECT phong
FROM NhanVien
WHERE phai = ‘Nữ’
GROUP BY phong
HAVING count(manv) > 5 

File đính kèm:

  • pdfBuoi_5,6.pdf
Bài giảng liên quan