Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 10

Chương 4.

Ngô n ngữ SQL

1. Giớ i thiệu

SQL: Structured Query Language (ngô n ngữ truy vấ n có cấ u trú c)

3 nhó m:

- DDL: Data Definition Language-ngô n ngữ định nghĩa dữ liệu (tạ o ra đượ c CSDL:
Tạ o bả ng, chỉnh sử a cấ u trú c, nhậ p và hiệu chỉnh dữ liệu)
- DML: Data Manipulation Language- ngô n ngữ thao tá c dữ liệu (truy vấn, tính
toá n, tìm kiếm ….)
- DCL: Data Control Language –ngô n ngữ điều khiển dữ liệu (trao quyền, bả o
mậ t…)
2. Ngô n ngữ định nghĩa dữ liệu: DDL
Cho CSDL QLBH gồ m cá c bả ng:
Hang(mahang, tenhang, dvt)
Khach(makh, hoten, phai, diachi, dienthoai)
Hoadon(mahd, ngayhd, makh)
Chitiet(mahd, mahang, soluong, dongia)
khó a ngoạ i: mahd, mahang

2.1 Câ u lệnh tạ o bả ng
- Tạ o bả ng Hang
Create table Hang
(mahang text primary key,
Tenhang text(50),
Dvt text
)

VD: Viết câ u lệnh tạ o cá c bả ng sau


Monhoc(manh, tenmh, sotc)
Sotc: integer
Sinhvien(masv, hoten, ngaysinh, phai, quequan)
Thi(masv, mamh, ngaythi, diem)
Masv khó a ngoạ i liên hệ đến bả ng sinhvien(masv)
Mamh khó a ngoạ i liên hệ đến monhoc(mamh)
Diem: single/ double

2.2 Chỉnh sử a cấ u trú c bả ng

Cho CSDL QLBH gồ m cá c bả ng:


Hang(mahang, tenhang, dvt)

Khach(makh, hoten, phai, diachi, dienthoai)

Hoadon(mahd, ngayhd, makh)

Chitiet(mahd, mahang, soluong, dongia)

+ Thêm cộ t
Alter table tenbang add column tencot kieudulieu
VD: Thêm cộ t ncc (text) và o bả ng Hang
Alter table Hang add column ncc text
+Xó a cộ t
Alter table tenbang drop column tencot
VD: Xó a cộ t dienthoai ra khỏ i bả ng KHACH
Alter table Khach drop column dienthoai
+ Đổ i kiểu dữ liệu
Alter table tenbang alter column tencot kieudl_moi
VD: đổ i kiểu dữ liệu củ a dongia sang double
Alter table chitiet alter column dongia double
+ Xó a bả ng
Drop table tenbang
Drop table chitiet => oK
Drop table hoadon (chỉ xó a đượ c khi đã xó a chi tiết)
2.3 Câ u lệnh về dữ liệu

Hang(mahang, tenhang, dvt)

Khach(makh, hoten, phai, diachi, dienthoai)

Hoadon(mahd, ngayhd, makh)

Chitiet(mahd, mahang, soluong, dongia)

+ Thêm mớ i dữ liệu
Insert into tenbang values(cá c giá trị)
Insert into Hang values(“mh01”, “hoa hong”, “bó ”)
Insert into hang (mahang, tenhang) values (“mh02”, “ bá nh trung thu”)

Insert into Hoadon values (“hd01”, #01/10/2021#, “kh01”)


Insert into chitiet values (“hd01”, “mh01”, 23, 3.5)
+ Hiệu chỉnh (cậ p nhậ t) dữ liệu

Update tenbang
Set bieuthuc_capnhat
Where dieukien
Vd1: Cậ p nhậ t đơn giá cho mặ t hà ng mh02 là 5000
Update chitiet
Set dongia=5000 where mahang=”mh02”
Vd2: tă ng số lượ ng mỗ i mặ t hà ng lên 10 cho hó a đơn hd01
Update chitiet
Set soluong=soluong+10

Where mahd=”hd01”

+ Xó a dữ liệu
Delete from tenbang where dieu kien
VD: xó a nhữ ng khá ch chưa có địa chỉ
Delete from khach where diachi is null
Xó a hết dữ liệu trong bả ng:
Delete * from tenbang
Vd: delete * from hoadon
Chú ý: delete * from tenbang # drop table

3. Ngô n ngữ khai thá c dữ liệu


DML – Data Manipultion Language

Cho CSDL QLBH gồ m cá c lượ c đồ quan hệ

Khachhang(makh, họ ló t, tenkh, phai, diachi, dienthoai

Nhacungcap(mancc, hoten, diachi, dienthoai)

Dmhang(mahang, tenhang, dvt, mancc)

Hoadon(mahd, ngayhd, makh, loaihd)

Chitiethoadon(mahd, mahang, soluong, dongia)

3.1 Truy vấ n từ bả ng

Select tencot1, tencot2, bieuthuc as bidanh

From tenbang

[Where điều kiện] // Tù y chọ n

Liệt kê nhữ ng mặ t hàng có số lượ ng >=50. Mahang, soluong, dongia.

Select mahang, soluong, don gia

From Chitiethoadon

Where soluong>=50

VD3: Lấy ra nhữ ng hó a đơn củ a KH02. Makh, mahd, ngayhd

Select makh, mahd, ngayhd

From Hoadon

Where makh = “KH02”

VD4: Lấy ra nhữ ng mặ t hà ng “hoa*”. Mahang, tenhang.

Select mahang,tenhang

From Dmhang

Where tenhang like “hoa*”

VD5 :

Select mahd, year(ngayhd) as nam

From Hoadon
Where year(ngayhd) = 2020

* Các tùy chọn trong câu lệnh select

- Tù y chọ n sau select

+ Distinct: để lấ y nhữ ng dò ng khô ng trù ng nhau

+ Top n : chỉ lấ y n dò ng đầ u tiên

+ *: dấ u * đạ i diện cho tấ t cả cá c cộ t trong cá c bả ng chỉ ra sau from

- Tù y chọ n sau from :

+ Where: thiết lậ p điều kiện lọ c dữ liệu

+ Order by tencot(s): sắ p xếp dữ liệu tă ng dầ n (asc)/giả m dầ n (desc)

VD7: Liệt kê cá c mặ t hà ng có đơn vị tính là bó . Mahang, tenhang, dvt

Select *

From Dmhang

Where dvt = “bó”

VD8: Lấy ra mặ t hà ng có đơn giá cao nhấ t: mahang, dongia

Select top 1 mahang, dongia

From Chitiethoadon

Oder by dongia desc

Vd9: Lấy ra 3 mặ t hà ng trong HD01. Sắ p xếp số lượ ng tă ng dầ n

Select Top 3 *

From Chitiethoadon

Oder by soluong asc

3.2 Truy vấ n từ nhiều bả ng

Khachhang(makh, họ ló t, tenkh, phai, diachi, dienthoai)

Nhacungcap(mancc, hoten, diachi, dienthoai)

Dmhang(mahang, tenhang, dvt, mancc)

Hoadon(mahd, ngayhd, makh, loaihd)


Chitiethoadon(mahd, mahang, soluong, dongia)

Select tencot(s), bieuthuc as bidanh

From bang1, bang2

Where(dk_kết nố i bả ng) and (dk_lọ c dữ liệu).

VD10: Lấy ra nhữ ng hó a đơn củ a khá ch hà ng nam. Makh, hoten, phai, mahd

C1:

Select hoadon.makh, holot+tenkh as hoten , phai, mahd

From khachhang, hoadon

Where (khachhang.makh = hoadon.makh) and (phai = yes)

C2:

Select a.makh, holot+tenkh as hoten , phai, mahd

From khachhang a, hoadon b

Where (a.makh = b.makh) and (phai = yes)

VD11: Lấy ra nhữ ng hó a đơn có mua Hoa. Mahd, ngayhd, mahang, tenhang

Select b.mahd, ngayhd,a.mahang, tenhang

From Dmhang a, Hoadon b, Chitiethoadon c

Where (a.mahang = c.mahang) and (b.mahd = c.mahd) and (tenhang like “Hoa*”)

VD12: Liệt kê cá c hó a đơn trong thá ng 9 củ a kh01. Makh, hoten, mahd, thang.

Select makh, holot+tenkh as hoten , mahd, month(ngayhd) as thang

From khachhang, hoadon

Where (khachhang.makh = hoadon.makh) and (month(ngayhd)=9)

VD13: Lấy nhữ ng mặ t hà ng mà nhà cung cấ p cc01 đã cung cấ p. Mancc, hoten, tenhang.

Select mancc, holot+tenkh as hoten , tenhang

From Nhacungcap, Dmhang

Where (Nhacungcap.mancc = Dmhang.mancc) and mancc = “cc01”


VD14: Tính thà nh tiền cho cá c mặ t hà ng trong hd01 củ a khá ch hà ng họ lê. Makh, hoten,
mahd, mahang, thanhtien

Select makh, holot+tenkh as hoten , mahd, mahang, thanhtien as soluong*dongia

From khachhang, chitiethoadon, hoadon

Where (khachhang.makh = hoadon.makh) and (Chitiethoadon.mahd = Hoadon.mahd)


and thanhtien = soluong*dongia

3.3 Truy vấ n có sử dụ ng hà m

Tên hà m : Sum, Max, Min, Count, Avg

Select Tenham(tencot bieuthuc)

From bang(s)

Where dieukien

Ý nghĩa : tính toá n và cho ra giá trị tương ứ ng vớ i tenham

Select count(mahang) as so_mon

From dmhang

=> Trả về kq : 15 mó n hà ng

Vd : Tính tổ ng tiền hd01

Select sum(soluong*dongia) as tongtien

From chitiethoadon

Where mahd = “hd01”

=> Tổ ng tiền cá c hd01

3.4 Truy vấ n gộ p nhó m

Select tencot, bieuthuc, tenham (cot bieuthuc)

From bang(s)

Where dieukien

Group by tencot, bieuthuc


VD:

Khachhang(makh, họ ló t, tenkh, phai, diachi, dienthoai)

Nhacungcap(mancc, hoten, diachi, dienthoai)

Dmhang(mahang, tenhang, dvt, mancc)

Hoadon(mahd, ngayhd, makh, loaihd)

Chitiethoadon(mahd, mahang, soluong, dongia)

1. Đếm số mó n hà ng có trong hd01

C1 : Select count(mahang) as somon

From Chitiethoadon

Where mahd = “hd01”

2. Tính tổ ng số lượ ng củ a mh02

Select sum(soluong) as tongsoluong

From Chitiethoadon

Where mahang = “mh02”

3. Tính số lượ ng cao nhấ t củ a hd02

Select max(soluong) as soluongmax

From Chitiethoadon

Where mahd = “hd02”

4. Tính tổ ng tiền củ a mỗ i hó a đơn

Select mahd, sum(soluong*dongia) as tongtien

From Chitiethoadon

Group by mahd
5. Tính trung bình số lượ ng củ a mỗ i thá ng

6. Đưa ra nhữ ng hó a đơn có tổ ng >= 1000000

Select mahd, sum(soluong*dongia) as tongtien

From Chitiethoadon

Group by mahd having sum(soluong*dongia)>=1000000

7. Lấy ra nhữ ng hó a đơn có từ 3 mó n trở lên

Select mahd, count(mahang) as somon

From Chitiethoadon

Group by mahd having count(mahang)>=3

8. Lấy ra mó n hà ng có đơn giá cao nhấ t

Select mahang, max(dongia) as dongiamax

From Chitiethoadon

Group by mahang

9. Lấy hó a đơn mua tấ t cả cá c mặ t hà ng

Select mahd,

3.4 Truy vấ n lồ ng nhau

Khachhang(makh, họ ló t, tenkh, phai, diachi, dienthoai)

Nhacungcap(mancc, hoten, diachi, dienthoai)

Dmhang(mahang, tenhang, dvt, mancc)

Hoadon(mahd, ngayhd, makh, loaihd)

Chitiethoadon(mahd, mahang, soluong, dongia)

Truy vấ n lồ ng nhau là câ u truy vấ n mà có thêm câ u truy vấn con trong mệnh đề where
hoặ c having

Cấ u truy vấ n con : select from where

Truy vấn con trong where


VD1: lấ y ra nhữ ng mặ t hà ng có soluong > soluong trung bình

B1: số lượ ng trung bình củ a tấ t cả cá c mặ t hà ng

SELECT avg(soluong) as tbsl from Chitiethoadon

B2: Lấy ra nhữ ng mặ t hà ng có số lượ ng >= số lượ ng tb

SELECT mahang,soluong

From Chithiethoadon

Where soluong >= (SELECT avg(soluong) as tbsl from Chitiethoadon)

VD2: Lấy ra mặ t hà ng có đơn giá cao nhấ t. Mahang,dongia

Select mahang, dongia

From chitiethoadon

Where dongia = (select max(dongia) as dongiacaonhat from chitiethoadon)

VD3: Lấy ra mặ t hà ng chưa có ngườ i mua: mahang, tenhang

Select *

From mahang

Where mahang not in (select distinct mahang from Chitiethoadon)

Truy vấ n con nằ m trong mệnh đề having


VD4: Lấ y ra hó a đơn mua tấ t cả cá c mặ t hà ng

Select mahd, count (mahang) as somon

From chitiethoadon

Group by mahd having count(mahang)=(select count(mahang) from dmhang)

VD5: Lấy ra hó a đơn có tổ ng tiền nhiều nhấ t

Select mahd, sum(dongia*soluong) as tongtien

From chitiethoadon

Group by mahd having sum(dongia*soluong)>= all(select sum(soluong*dongia) as


tongtien from chitiethoadon Group by mahd)

You might also like