Nhận viết luận văn đại học, thạc sĩ trọn gói, chất lượng, LH ZALO=>0909232620
Tham khảo dịch vụ, bảng giá tại: https://baocaothuctap.net
Download luận văn đồ án tốt nghiệp ngành công nghệ thông tin với đề tài: Xây dựng Website quản lý điểm trường Phổ thông nhiều cấp học Nguyễn Tất Thành, cho các bạn làm luận văn tham khảo
Bài 2 : Các đối tượng trong CSDL - SQL serverMasterCode.vn
Khái niệm về cơ sở dữ liệu
• Database dùng để
− Chứa các bảng, bảng ảo, thủ tục nội,…
− Mỗi database có một danh sách các người dùng
• Người dùng phải có quyền truy cập database
• Có thể phân nhóm người dùng để cấp quyền
• Tử phiên bản SQL Server 2000 hỗ trợ Application Role
• Các database hệ thống
− Master, Model, Tempdb, msdb
• Các database ví dụ
− AdventureWorks
− AdventureWorkDWs
Nhận viết luận văn Đại học , thạc sĩ - Zalo: 0917.193.864
Tham khảo bảng giá dịch vụ viết bài tại: vietbaocaothuctap.net
Download luận văn đồ án tốt nghiệp ngành công nghệ thông tin với đề tài: Xây dựng phần mềm quản lý quán cà phê, cho các bạn có thể tham khảo
Tìm hiểu câu lệnh SELECT trên nhiều bảng
Tìm hiểu 3 nhóm lệnh SQL:
Nhóm định nghĩa dữ liệu (DDL): Gồm các lệnh tạo, thay đổi các
bảng dữ liệu(Create, Drop, Alter, …)
Nhóm thao tác dữ liệu (DML): Gồm các lệnh làm thay đổi dữ liệu
(Insert, Delete, Update,…) lưu trong các bảng
Nhóm điều khiển dữ liệu (DCL): Gồm các lệnh quản lý quyền truy
nhập vào dữ liệu và các bảng (Grant, Revoke, …
Slide báo cáo đồ án tốt nghiệp "Website cửa hàng điện thoại trực tuyến"Tú Cao
Slide báo cáo đồ án tốt nghiệp, Website cửa hàng điện thoại trực tuyến MSmobile. Nó chỉ mang tính chất tham khảo, hy vọng là các bạn khi xem có thêm gợi ý, nhưng đừng lấy nó ra để nộp.
Nhận viết luận văn đại học, thạc sĩ trọn gói, chất lượng, LH ZALO=>0909232620
Tham khảo dịch vụ, bảng giá tại: https://baocaothuctap.net
Download luận văn đồ án tốt nghiệp ngành công nghệ thông tin với đề tài: Xây dựng Website quản lý điểm trường Phổ thông nhiều cấp học Nguyễn Tất Thành, cho các bạn làm luận văn tham khảo
Bài 2 : Các đối tượng trong CSDL - SQL serverMasterCode.vn
Khái niệm về cơ sở dữ liệu
• Database dùng để
− Chứa các bảng, bảng ảo, thủ tục nội,…
− Mỗi database có một danh sách các người dùng
• Người dùng phải có quyền truy cập database
• Có thể phân nhóm người dùng để cấp quyền
• Tử phiên bản SQL Server 2000 hỗ trợ Application Role
• Các database hệ thống
− Master, Model, Tempdb, msdb
• Các database ví dụ
− AdventureWorks
− AdventureWorkDWs
Nhận viết luận văn Đại học , thạc sĩ - Zalo: 0917.193.864
Tham khảo bảng giá dịch vụ viết bài tại: vietbaocaothuctap.net
Download luận văn đồ án tốt nghiệp ngành công nghệ thông tin với đề tài: Xây dựng phần mềm quản lý quán cà phê, cho các bạn có thể tham khảo
Tìm hiểu câu lệnh SELECT trên nhiều bảng
Tìm hiểu 3 nhóm lệnh SQL:
Nhóm định nghĩa dữ liệu (DDL): Gồm các lệnh tạo, thay đổi các
bảng dữ liệu(Create, Drop, Alter, …)
Nhóm thao tác dữ liệu (DML): Gồm các lệnh làm thay đổi dữ liệu
(Insert, Delete, Update,…) lưu trong các bảng
Nhóm điều khiển dữ liệu (DCL): Gồm các lệnh quản lý quyền truy
nhập vào dữ liệu và các bảng (Grant, Revoke, …
Slide báo cáo đồ án tốt nghiệp "Website cửa hàng điện thoại trực tuyến"Tú Cao
Slide báo cáo đồ án tốt nghiệp, Website cửa hàng điện thoại trực tuyến MSmobile. Nó chỉ mang tính chất tham khảo, hy vọng là các bạn khi xem có thêm gợi ý, nhưng đừng lấy nó ra để nộp.
HQT2 Người dùng có thể sử dụng EC2 Amazon để khởi tạo nhiều tài nguyên máy chủ theo nhu cầu sử dụng, cấu hình mạng, bảo mật và dung lượng lưu trữ. EC2 cho phép người dùng tăng, giảm quy mô tùy thích để xử lý nhu cầu công việc một cách nhanh chóng với các đặc điểm nổi bật:
Môi trường ảo thực hiện các tính toán được gọi là instances.
Có các template cấu hình sẵn cho các instances, gọi là Amazon Machine Images, gồm các gói dịch vụ cần thiết cho máy chủ người dùng.
Instance type bao gồm các cấu hình khác nhau cho instances về CPU, dung lượng lưu trữ, bộ nhớ, hệ thống mạng.
Thông tin login của instances được bảo mật bằng cách dùng key pair AWS để lưu key public, còn người dùng sẽ lưu key private.
Khi bạn tạm dừng hoặc ngắt các instances, dữ liệu tạm thời sẽ bị xóa bỏ, gọi là instance store volumes.
Amazon Elastic Block Store (Amazon EBS volumes) được dùng để lưu trữ dung lượng liên tục cho dữ liệu người dùng.
Tài nguyên người dùng được lưu trữ ở nhiều vị trí khác nhau, ví dụ như Amazon EBS volumes và instance được gọi là regions and Availability Zones.
Dịch vụ tường lửa cho phép bạn tùy chỉnh các cổng, giao thức, các giải nguồn IP có thể tiếp cận instances bạn đang sử dụng.
Địa chỉ IPv4 tĩnh được gọi là Elastic IP addresses.
Bạn có thể gán các siêu dữ liệu cho tài nguyên Amazon EC2.
Hệ thống mạng ảo có thể được tách biệt với phần còn lại của hệ thống đám mây AWS. Người dùng có thể kết nối với mạng riêng của mình, gọi là Virtual Private Clouds.
Lưu trữ trên Amazon Simple Storage Service – Amazon S3
Amazon S3 là không gian để lưu trữ và trích xuất bất cứ dữ liệu nào ở bất cứ đâu. Dịch vụ lưu trữ này có độ bền và độ sẵn sàng cực kỳ cao, hiệu suất, tính bảo mật luôn dẫn đầu trong ngành, không giới hạn khả năng thay đổi quy mô với mức chi phí cực kỳ thấp.
2. I. Tạo lập dữ liệu cho bảng
Chèn dữ liệu
Xem dữ liệu
Cập nhật dữ liệu
Xóa các dòng thỏa mãn điều kiện
Xóa các dòng nhưng giữ nguyên cấu trúc bảng
2
3. 1. Chèn dữ liệu
Cú pháp:
INSERT INTO <tên bảng>(ds cột) VALUES (giá trị cần chèn
của hàng 1), (giá trị cần chèn của hàng 2), …
INSERT INTO <tên bảng> VALUES (Giá trị cần chèn của
một hàng)
INSERT <tên bảng> VALUES (Giá trị cần chèn của một
hàng)
Chú ý:
- Nếu dữ liệu kiểu text và kiểu Date, khi chèn phải có ‘ ‘, nếu là kiểu
Nvachar thì phải có tiếp đầu ngữ N’ ’.
- Dữ liệu kiểu Date yêu cầu nhập tháng/ngày/năm hoặc
năm/tháng/ngày
- Dữ liệu dạng tự tăng thì không cần nhập.
- Với dữ liệu mặc định, nếu không thay đổi giá trị mặc định khi chèn dữ
liệu cần liệt kê danh sách các cột mà không có cột có ràng buộc mặc
3
4. Vd: Chèn thông tin vào bảng SINHVIEN
4Ngôn ngữ truy vấn
insert into sinhvien (TenSV,GT,Ngaysinh, Que, Lop)
values (N'Trần Bảo Trọng‘ , 'Nam‘ , '1995/12/14', N'Hà Giang‘ ,
'L02‘), (N'Lê Thùy Dung', N'Nữ‘, '05/12/1997', N'Hà Nội','L03')
insert into Sinhvien values (N'Lê Trường An‘ , N'Nam‘ ,
'11/20/1995‘ , N'Ninh Bình', 'L04').
insert sinhvien values ( N'Đoàn Duy Thức ‘ , N'Nam‘ ,
'4/12/1994', N'Hà Nội', 'L01')
5. 2. Xem d li u trên b ngữ ệ ả
SELECT * FROM <tên b ng>ả
3. C p nh t d li u:ậ ậ ữ ệ
UPDATE <Tên b ng> SET <tên c t>= <giá trả ộ ị
m i>[ WHERE < i u ki n>]ớ Đ ề ệ
4. Xóa các dòng th a mãn i u ki n:ỏ đ ề ệ
DELETE FROM table_name
WHERE <tên c t>=<giá tr >;ộ ị
5. Xóa t t c các dòng nh ng v n gi nguyên c u trúc b ng:ấ ả ư ẫ ữ ấ ả
DELETE FROM table_name;
5
7. 7
Được sử dụng để truy xuất dữ liệu từ các dòng, các cột của một hay nhiều bảng
Thực hiện phép toán: Chọn - Chiếu- Kết nối - Tính toán cơ bản
Ngôn ngữ truy vấn
II. Mệnh đề Select..from..where
8. 8
*Câu lệnh SELECT đầy đủ
SELECT [DISTINCT |Top n |* ] <biểu thức/ cột [AS <tên mới>],..>
[INTO <tên bảng mới>]
FROM <tên bảng> as [<bí danh>],...
[WHERE <điều kiện chọn>]
[GROUP BY < ds tên cột gom nhóm>]
[HAVING <điều kiện lọc nhóm>]
[ORDER BY <tên cột>[ASC|DESC],…];
Ngôn ngữ truy vấn
9. 9
Truy vấn có ba loại:
- Truy vấn trên một bảng
- Truy vấn trên nhiều bảng
- Truy vấn lồng
Ngôn ngữ truy vấn
10. 10
1. Truy vấn trên một bảng
a. Truy v n n gi n:ấ đơ ả
<danh sách các c t>ộ
- Tên các thu c tính (c t) s c hi n th trong k t qu truy v n.ộ ộ ẽđượ ể ị ế ả ấ
<danh sách các b ng>ả
- Tên các b ng liên quan l y k t quả để ấ ế ả
<bi u th c i u ki n>ể ứ đ ề ệ
- là i u ki n a vào ch n l c d li u, th ng g m:đ ề ệ đư để ọ ọ ữ ệ ườ ồ
Các phép toán so sánh: < , > , ≤ , ≥ , ≠ , =
Các phép toán logic: AND, OR, và NOT
Các t khóa: BETWEEN … AND, IN, EXISTS, LIKE…ừ
SELECT <danh sách các cột>
FROM <danh sách các bảng>
[WHERE <biểu thức điều kiện>]
Ngôn ngữ truy vấn
11. 11
SELECT <danh sách các
cột>
FROM <danh sách các bảng>
WHERE <điều kiện>
σ
π
×
SELECT L
FROM R
WHERE C
πL (σC (R))
SQL và ĐSQH
Ngôn ngữ truy vấn
12. 12
Ví dụ
Ví dụ 1: Cho danh sách sinh viên gồm Mã SV, Họ tên, Ngày sinh của
tất cả các sinh viên
Select MaSV, TenSV, Ngaysinh
from Sinhvien
Ví dụ 2: Cho danh sách sinh viên nữ thuộc lớp L02
Select *
From Sinhvien
Where (GT=N'Nữ') and (Lop='L02‘)
Ví dụ 3: Thêm định danh cho bảng và cho cột (sử dụng từ khóa as)
select sv.MaSV, TenSV as 'Tên Sinh Viên'
from Sinhvien as sv
/* sau khi định danh cho bảng thì từ đó sử dụng tên định danh*/
Ngôn ngữ truy vấn
13. Ví dụ 4: Xử lý dữ liệu kiểu chuỗi dùng Like hoặc not like để
tìm chuỗi gần đúng
%: Thay thế 1 chuỗi
-: thay thế 1 ký tự
VD 4.1: Cho danh sách các sinh viên có tên là ‘Nga’
select *
from sinhvien
where TenSV like N'% Nga'
VD 4.2: Cho danh sách những sinh viên họ Trần
select *
from sinhvien
where TenSV like N'Trần %'
13Ngôn ngữ truy vấn
14. Ví dụ 5: Sử dụng BETWEEN <GT1> AND <GT2> để lấy
những bản ghi thỏa mãn nằm giữa GT1 và GT2.
Cho danh sách gồm mã sinh viên, ma môn học của sinh viên có
điểm từ 5 đến 7
select MaSv, MaMH
from ketqua
where diem between 5 and 7
Note: Not Between .. and … có ý nghĩa ngược lại.
14Ngôn ngữ truy vấn
15. Ví dụ 6: Sử dụng NULL/NOT NULL cho các trường hợp sau:
- Không biết - không xác định (value unknown)
- Không thể áp dụng (value inapplicable)
- Không tồn tại (value withheld)
VD: Cho danh sách gồm Mã Sinh viên và mã môn học của
sinh viên không có điểm thi
select MaSV, MaMH
from ketqua
where Diem is Null
15Ngôn ngữ truy vấn
16. Ví dụ 7: Sử dụng in: Cho danh sách các sinh viên có quê ở
Hà Nội hoặc Phú Thọ
Select *
From Sinhvien
where que in (N'Hà nội', N'Phú Thọ')
Ví dụ 8: Sử dụng các toán tử
- Distinct : loại bỏ các dòng dữ liệu trùng
- Top n : lấy n dòng đầu tiên
VD 8.1: Liệt kê danh sách các tỉnh có sinh viên theo học tại
trường
select distinct Que
from Sinhvien
16Ngôn ngữ truy vấn
17. VD 8.2: Cho thông tin của hai sinh viên đầu tiên trong danh
sách sinh viên
select top (2) MaSV, TenSV,Que
from Sinhvien
17Ngôn ngữ truy vấn
18. Bài tập 1
Bảng KHACHHANG( MK, TenK, DChi, SoDT )
Bảng BAOCHI( MB, TenBao, Gia)
Bảng DATBAO( MK, MB, NgayDat, SoLuong)
Viết câu lệnh SQL các truy vấn thực hiện các yêu cầu sau:
1. Cho biết tên và thành tiền đặt mua báo của khách hàng
tương ứng với từng ngày đặt
2. Cho biết họ tên – địa chỉ của khách hàng đặt mua báo có tên
Nhân Dân trong năm 2014
3. Thông tin về các loại báo khách hàng đã đặt mua trong năm
2000.
4. Cho thông tin của báo chí có giá đắt nhất
19
19. b. Hàm kết hợp
Được sử dụng để tính giá trị thống kê trên toàn bảng hoặc trên
mỗi nhóm dữ liệu
Các hàm cơ bản:
- Sum( [All | Distinct] biểu-thức), Avg( [All | Distinct] biểu-thức)
- Count( [All | Distinct] biểu-thức) : đếm số dòng khác Null
trong cột, biểu thức.
- Count(*) : đếm số dòng được chọn trong bảng, kể cả Null
- Max( biểu-thức ), Min( biểu-thức )
Các hàm thực hiện tính toán trên toàn bộ dữ liệu, bỏ bớt giá trị
trùng nhau thêm từ distinct
Ngôn ngữ truy vấn 20
20. 21
Ví dụ 9:
Tìm tổng lương, lương cao nhất, lương thấp nhất và lương
trung bình của các nhân viên
NHANVIEN(MaNV, TenNV, GT, NS, DChi, Luong, MaPB)
SELECT sum(Luong) AS [Tổng lương] ,
max(Luong) AS [Lương cao nhất] ,
min(Luong) AS [Lương thấp nhất] ,
avg(Luong) AS [Lương trung bình]
FROM NhanVien
LUONG
3.000.000
2.500.000
2.500.000
4.000.000
Tổng lương Lương cao nhất Lương thấp nhất Lương trung bình
12.000.00
0
3.000.0002.500.0004.000.000
Ngôn ngữ truy vấn
22. 23
Ví dụ 11: Cho biết số lượng nhân viên của phòng 5
NHANVIEN(MaNV, TenNV, GT, NS, DChi, Luong, MaPB)
SELECT count(MNV) AS [Số nhân viên]
FROM NhanVien
WHERE MaPB = 5
Ngôn ngữ truy vấn
23. 24
c. Mệnh đề GROUP BY
Để thực hiện gom nhóm các bộ theo một tiêu chí xác định
để thực hiện tính toán
Cú pháp
Sau khi gom nhóm
- Mỗi nhóm các bộ sẽ có cùng giá trị tại các thuộc tính gom nhóm
CSDL gồm:
- NHANVIEN(MaNV, TenNV, GT, NS, DChi, Luong, MaPB)
- PHONG(MaP, TenP, DIADIEM)
- DU_An(MaDA, TenDA, DiaDiem, MAPB)
SELECT <DS cột gom nhóm>, <Hàm tính toán>
FROM <danh sách các bảng>
[WHERE <biểu thức điều kiện>]
GROUP BY <DS cột gom nhóm>
HAVING <điều kiện tính toán nhóm>
Ngôn ngữ truy vấn
24. 25
Ví dụ 12:
Với mỗi phòng, cho biết số dự án mà phòng đó điều phối
MaPB So du an
5
4
1
3
2
1
SELECT MaPB, count (Ma_DuAn) AS [So du an]
FROM DUAN
GROUP BY MaPB
Kết quả:
Cột gom nhóm [Group By (MaPB)]Cột tính toán [count (Ma_DuAn)]
X
Y
Z
1
2
3
Da Nang
Chu Lai
Hue
5
5
5
Tin học hóa
Phúc lợi
10
20
Quang Nam
Quang Tri
4
4
Tái tổ chức 15 Da Nang 1
DUAN Ten_DuAn Ma_DuAn DiaDiem
MaPB
Ngôn ngữ truy vấn
25. 26
Ví dụ 13:
Cho biết số lượng nhân viên của từng phòng ban
Số NV
5
4
3
3
PHG
1 1
TENNV NGSINH DCHI PHAI LUONG MaPB
TungNguyen 12/08/1955 638 NVC
Q5
Nam 40000 5
HungNguyen 09/15/1962 Ba Ria VT Nam 38000 5
33344555
5
98798798
7
MANV MA_NQL
88866555
5
33344555
5
Thanh
Manh
TamTran 07/31/1972 543 MTL
Q1
Nu 25000 5
HangBui 07/19/1968 33 NTH Q1 Nu 38000 4
45345345
3
99988777
7
33344555
5
98765432
1
Thanh
Ngoc
NhuLe 07620/1951 219 TD Q3 Nu 43000 498765432
1
88866555
5
Quynh
QuangTran 04/08/1969 980 LHP
Q5
Nam 25000 4
VinhPham 11/10/1945 450 TV HN Nam 55000 1
98798798
7
88866555
5
98765432
1
NULL
Hong
Van
SELECT PHG, count (MaNV) AS [Số NV]
FROM NHANVIEN
GROUP BY MaPB
Ngôn ngữ truy vấn
26. 27
Ví dụ 14:
Cho biết những phòng ban tham gia từ 2 đề án trở lên
SELECT MaPB, count (Ma_DuAn) AS [So du an]
FROM DUAN
GROUP BY MaPB
HAVING Count (Ma_DuAn) >= 2
X
Y
Z
1
2
3
Da Nang
Chu Lai
Hue
5
5
5
Tin học hóa
Phúc lợi
10
20
Quang Nam
Quang Tri
4
4
Tái tổ chức 15 Da Nang 1
DUAN Ten_DuAn Ma_DuAn DiaDiem MaPB
MaPB So du an
Kết quả:
5
4
3
2
bị loại ra
Ngôn ngữ truy vấn
27. Nhận xét
Thứ tự thực hiện câu truy vấn có mệnh đề GROUP
BY và HAVING
- (1) Chọn ra những dòng thỏa điều kiện trong
mệnh đề WHERE
- (2) Những dòng này sẽ được gom thành nhiều
nhóm tương ứng với mệnh đề GROUP BY
- (3) Áp dụng các hàm kết hợp cho mỗi nhóm
- (4) Bỏ qua những nhóm không thỏa điều kiện
trong mệnh đề HAVING
- (5) Rút trích các giá trị của các cột và hàm kết hợp
trong mệnh đề SELECT
29Ngôn ngữ truy vấn
28. 30
4. Mệnh đề ORDER BY
Hiển thị kết quả câu truy vấn theo một thứ tự nào đó trên
các cột
Cú pháp
- ASC (ASCending): tăng (mặc định)
- DESC (DESCending): giảm
SELECT <danh sách các thuộc tính>
FROM <danh sáchcác bảng>
WHERE <biểu thức điều kiện>
ORDER BY <thuộc tính sắp xếp> [ASC | DESC]
Ngôn ngữ truy vấn
29. 31
Ví dụ 12:
Với mỗi phòng ban, cho biết mã phòng và mã nhân viên
trong phòng đó. Sắp xếp theo thứ tự giảm dần của mã phòng
và tăng dần của mã nhân viên.
02
03
05
04
06
Nguyen
Tung
Le Loi -DN Nam 5
Le Thi Buoi Tran Phu -DN Nu 5
01
TENNV DCHI GT MaPBMANV
Le Nam Yen Bay -DN Nam 4
Tran Thi B Le Duan -DN Nu 4
Thai Thi Hoa Hoa Khanh -DNNu 1
Tran A Dien Ban -QN Nam 5
SELECT MaPB, MaNV
FROM NHANVIEN
ORDER BY MaPB DESC,
MaNV
Ngôn ngữ truy vấn
30. 2. Truy vấn dữ liệu trên nhiều bảng
Có hai cách kết nối bảng:
- Sử dụng mệnh đề where
- Sử dụng Join/inner Join/Left Join/Right Join/Full Join
Trong đó: Join, inner Join và where là tương đương
nhau
Cú pháp:
SELECT <ds cột>
FROM <Tên bảng>
WHERE <điều kiện nối hai bảng>
Ví dụ:
SELECT TENNV, TENPB
FROM NHANVIEN, PHONGBAN
WHERE NHANVIEN.MAPB = PHONGBAN.MAPB 32Ngôn ngữ truy vấn
31. Nối bảng với INNER|LEFT|RIGHT|FULL JOIN
Cú pháp:
SELECT <danh sách cột>
FROM table1 INNER|LEFT|RIGHT|FULL JOIN table2
ON <điều kiện nối>
33Ngôn ngữ truy vấn
32. Nối bảng với INNER|LEFT|RIGHT|FULL JOIN
INNER JOIN/JOIN: trả về các dòng của hai bảng thỏa
mãn điều kiện nối
LEFT JOIN: trả về các dòng của bảng thứ nhất dù ở
bảng 2 không thỏa mãn điều kiện nối. Nếu dữ liệu có ở
bảng 1 không có ở bảng 2 vẫn hiển thị
RIGHT JOIN: trả về các dòng của bảng2 dù ở bảng 1
không thỏa mãn điều kiện nối. Nếu dữ liệu có ở bảng 2
không có ở bảng 1 vẫn hiển thị.
FULL JOIN: trả về các dòng của hai bảng, nếu không có
dữ liệu thỏa mãn điều kiện thì gán bằng NULL.
34Ngôn ngữ truy vấn
33. Ví dụ:
Cho bảng dữ liệu: Khachhang và Hoadon
35
MaKH TenKH
01 Trần Nhật Lệ
02 Lê Thị Nhàn
03 Hoàng Lê Minh
04 Bùi Ngọc Quang
MaKH MaSP TenSP
01 A100 Quạt máy
01 A102 Tủ lạnh
03 A120 Máy giặt
05 A230 Ti vi
Ngôn ngữ truy vấn
34. INNER JOIN
SELECT TenKH, TenSP
FROM Khachhang INNER JOIN hoadon
ON Khachhang.MaKH = Hoadon.MaKH
36
TenKH TenSP
Trần Nhật Lệ Quạt máy
Trần Nhật Lệ Tủ lạnh
Hoàng Lê Minh Máy giặt
Ngôn ngữ truy vấn
35. SELECT TenKH, TenSP
FROM Khachhang LEFT JOIN hoadon
ON Khachhang.MaKH = Hoadon.MaKH
37
TenKH TenSP
Trần Nhật Lệ Quạt máy
Trần Nhật Lệ Tủ lạnh
Lê Thị Nhàn NULL
Hoàng Lê Minh Máy giặt
Bùi Ngọc Quang NULL
Ngôn ngữ truy vấn
36. SELECT TenKH, TenSP
FROM Khachhang RIGHT JOIN hoadon
ON Khachhang.MaKH = Hoadon.MaKH
38
TenKH TenSP
Trần Nhật Lệ Quạt máy
Trần Nhật Lệ Tủ lạnh
Hoàng Lê Minh Máy giặt
NULL Tivi
Ngôn ngữ truy vấn
37. SELECT TenKH, TenSP
FROM Khachhang FULL JOIN hoadon
ON Khachhang.MaKH = Hoadon.MaKH
39
TenKH TenSP
Trần Nhật Lệ Quạt máy
Trần Nhật Lệ Tủ lạnh
Lê Thị Nhàn NULL
Hoàng Lê Minh Máy giặt
Bùi Ngọc Quang NULL
NULL Tivi
Ngôn ngữ truy vấn
38. Thứ tự xử lý của lệnh SELECT
40Ngôn ngữ truy vấn
39. 3. Truy vấn lồng
Là thực hiện lồng ghép nhiều câu lệnh SELECT với
nhau
Câu truy vấn con thường trả về một tập các giá trị
Các câu truy vấn con trong cùng một mệnh đề WHERE
được kết hợp bằng phép nối logic với Mệnh đề WHERE
của câu truy vấn cha:
- <biểu thức> <so sánh tập hợp> <truy vấn con>
- So sánh tập hợp thường đi cùng với một số toán tử
IN, NOT IN
ALL
ANY hoặc SOME
- Kiểm tra sự tồn tại
EXISTS
NOT EXISTS
41Ngôn ngữ truy vấn
40. Cú pháp truy vấn lồng:
42
SELECT <danh sách các cột>
FROM <danh sách các bảng>
WHERE <biểu thức> <so sánh tập hợp> (
SELECT <danh sách các cột>
FROM <danh sách các bảng>
WHERE <điều kiện>)
Câu truy
vấn cha
(Outer
query)
Câu truy
vấn con
(Subquery)
Ngôn ngữ truy vấn
41. Có 2 loại truy vấn lồng
- Lồng phân cấp
Mệnh đề WHERE của truy vấn con không tham chiếu đến
thuộc tính của các quan hệ trong mệnh đề FROM ở truy
vấn cha
Khi thực hiện, câu truy vấn con sẽ được thực hiện trước
- Lồng tương quan
Mệnh đề WHERE của truy vấn con tham chiếu ít nhất một
thuộc tính của các quan hệ trong mệnh đề FROM ở truy
vấn cha
Khi thực hiện, câu truy vấn con sẽ được thực hiện nhiều
lần, mỗi lần tương ứng với một bộ của truy vấn cha
43Ngôn ngữ truy vấn
42. 44
Ví dụ 1: cho danh sách mã sinh viên, tên sv có điểm thi >8
Cách 1: sử dụng truy vấn thông thường
select a.masv, tensv
from sinhvien as a, ketqua as b
where (a.masv=b.masv) and (diem>8)
Cách 2: sử dụng truy vấn lồng phân cấp
select Masv, tensv
from sinhvien
where Masv in ( select Masv
from ketqua
where (diem>8))
Ngôn ngữ truy vấn
43. 45
Cách 3:
select Masv, tensv
from sinhvien as a
where exists (select *
from ketqua as b
where (a.MaSV=b.MaSV) and (diem>8))
Ngôn ngữ truy vấn
44. Giả sử có các bảng CSDL như sau:
- Nhanvien(MaNV, HT, NS, GT, Luong, MaP)
- Phong(MaP, TenP, MNQL, NgayQL)
- DuAn(MaDa,TenDA, DiaDiem,MaP)
- NV_DA(MaNV, MaDA, Sogio)
46Ngôn ngữ truy vấn
45. Ví dụ 2: Tìm những nhân viên thực hiện ít nhất một dự án
nào đó
SELECT * FROM NHANVIEN
WHERE EXISTS (SELECT * FROM NV_DA
WHERE NHANVIEN.manv= NV_DA.manv);
47Ngôn ngữ truy vấn
46. Ví dụ 3: Tìm tên nhân viên có lương cao hơn tất cả các
nhân viên khác?
SELECT Hoten FROM NHANVIEN
WHERE luong >= ALL (SELECT luong
FROM
NHANVIEN);
Mệnh đề trên tương đương với
SELECT Hoten FROM NHANVIEN
WHERE luong = (SELECT MAX (luong)
FROM NHANVIEN);
48Ngôn ngữ truy vấn
47. Ví dụ 4: Tìm tên những dự án mà nhân viên có mã số 7 đã
thực hiện?
SELECT tenda FROM DUAN
WHERE mada= ANY(SELECT mada FROM NV_DA
WHERE manv = 7);
Select tenda from Duan, NV_DA
Where Duan.MaDA=NV_DA.MaDA and MaNV=7
49Ngôn ngữ truy vấn
48. 4. Phép toán tập hợp
Gồm:
- UNION Hợp
- INTERSECT Giao
- EXCEPT Trừ
Chú ý: Các trường trong select phải giống nhau mới
thực hiện được
50Ngôn ngữ truy vấn
49. Ví dụ
+ Ví dụ 1: Cho danh sách mã sinh viên của những
sinh viên không có bất kỳ một điểm thi của một môn
học nào.
select MasV
from Sinhvien
Except
select Masv
from ketqua
where diem not null
51Ngôn ngữ truy vấn
50. Ví dụ 2: Cho danh sách tên của các sinh viên có đủ
điểm hai môn với mã môn học là 1 và 3
select distinct tensv
from Sinhvien as a, Ketqua as b
where a.MaSV = b.MaSV and MaMH=1
Intersect
select distinct tensv
from Sinhvien as a, Ketqua as b
where a.MaSV = b.MaSV and MaMH=3
52Ngôn ngữ truy vấn
51. III. Hàm trong SQL
SQL có các loại hàm sau:
- Các hàm tập hợp
- Hàm chuyển đổi kiểu dữ liệu
- Hàm ngày tháng
- Hàm toán học
- …
53Ngôn ngữ truy vấn
54. Được dùng để thao tác giá trị ngày tháng
Gồm:
- GETDATE( )
- DAY( date ), MONTH( date ), YEAR( date )
- DATEDIFF( datepart, date1, date2 )
- DATEADD( datepart, number, date )
- DATENAME( datepart, date )
- DATEPART( datepart, date )
*Hàm ngày tháng
58Ngôn ngữ truy vấn
55. 59Ngôn ngữ truy vấn
Đơn vị thời gian Ký hiệu Values
Hour hh 0-23
Minute Mi, n 0-59
Second Ss, s 0-59
Day of Year Dy, y 1-366
Day Dd, d 1-31
Week Wk, www 1-53
Month Mm, m 1-12
Quarter Qq, q 1-4
Year Yy, yyyy 1753-9999
56. *Hàm xử lý chuỗi
Dùng để tách, thay thế và tương tác với chuỗi ký tự
Gồm:
- LEFT( string, number), RIGHT( string, number )
- LOWER( string ), UPPER( string )
- LTRIM( string ), RTRIM( string )
- LEN( string )
Ngôn ngữ truy vấn 60
57. Cho một cơ sở dữ liệu gồm các bảng và các trường tương ứng như sau:
SACH ( Masach, Tensach, Tentacgia, Nhaxuatban, Soluong)
DOCGIA( Sothe, Tendocgia, Khoa, Khoahoc, Thoihanthe)
PHIEUMUON( Masach, Sothe, ngaymuon, ngaytra, datra, ghichu)
- Thiết lập các ràng buộc dữ liệu trên các bảng: PK, FK, CHECK, DEFAULT,..
- Nhập 1 bản ghi vào mỗi bảng
- Thực hiện xóa, cập nhật dữ liệu trên một bảng bất kì với điều kiện phù hợp.
- Hiển thị tên, khoa của các độc giả và sắp xếp theo khoa?
- Tìm những độc giả mượn sách Toán cao cấp vào ngày 20/5/2003?
- Hiển thị tên, số thẻ, tên sách của tất cả độc giả mượn sách trong tháng 5/2003
- Danh sách các sách không ai mượn
- Cho biết độc giả tên A mượn sách bao nhiêu lần
Ngôn ngữ truy vấn 61
58. Bài tập áp dụng
NHANVIEN(MaNV, Hoten, DiaChi, SDT, NgaySinh, GT, HSL)
HANG(MaHang, TenHang, NhaSX, TGianBaoHanh)
KHACHHANG(MaKH, TenKH, CMT, DiaChi, SoDienThoai, Email)
HOADONXUAT(MaHD, MaKH, NgayLapHD, MaNV, PhuongThucTT)
CT_HOADON(MaHD, MaHang, SoLuongMua, DonGia)
Viết câu lệnh truy vấn đầy đủ thực hiện yêu cầu sau:
- Cho danh sách họ tên của nhân viên sinh vào tháng 3 hoặc tháng 10
- Cho danh sách họ tên và địa chỉ của các khách hàng có sử dụng gmail
- Cho biết tuổi cao nhất hiện nay của các nhân viên
- Cho danh sách khách hàng có địa chỉ không thuộc quận Đống Đa hoặc quận
Hoàng Mai
- Cho danh sách các tên hàng không bán được mặt hàng nào
- Tính tổng số tiền của từng hóa đơn xuất
- Liệt kê danh sách các khách hàng đã mua trên 10 triệu
- Cho danh sách các mặt hàng đã được mua trong năm 2014 và tổng tiền trên 10
triệu
Ngôn ngữ truy vấn 62
59. Bài tập áp dụng (tiếp)
NHANVIEN(MaNV, Hoten, DiaChi, SDT, NgaySinh, GT, HSL)
HANG(MaHang, TenHang, NhaSX, TGianBaoHanh)
KHACHHANG(MaKH, TenKH, CMT, DiaChi, SoDienThoai, Email)
HOADONXUAT(MaHD, MaKH, NgayLapHD, MaNV, PhuongThucTT)
CT_HOADON(MaHD, MaHang, SoLuongMua, DonGia)
Viết câu lệnh truy vấn đầy đủ thực hiện yêu cầu sau:
- Tính tổng số tiền đã bán được của từng hóa đơn
- Tính tổng số lượng và tổng số tiền đã bán được của từng
mặt hàng
- Tính tổng số lượng và tổng số tiền đã bán được của từng
mặt hàng trong năm 2013
- Tính tổng số tiền đã mua hàng của từng khách hàng, thống
kê dựa vào tên khách hàng
- Cho biết tên mặt hàng đã bán với số lượng nhiều nhất
Ngôn ngữ truy vấn 63
60. Ví dụ
NHANVIEN ( MANV, HOTen, NS, GT, HSL, DC, MAPB, NgayVL)
PHONGBAN ( MAPB, TENDV , MaTP, NgayBD, SoNV)
DIADIEM_PB ( MaPB, DiaDiem)
DUAN ( MADA, TENDA, DIADIEM, NgBD, MAPB)
THANNHAN ( HOTEN, NS, GT, QuanHe, MANV)
PHANCONG ( MADA, MANV, SoGio, NgLamDA)
Xây dựng câu lệnh truy vấn thực hiện yêu cầu sau:
1. Cho biết tổng lương của từng phòng ban
2. Cho tên phòng ban có tổng lương trên 10 triệu
3. Cho tên phòng ban có tổng số nhân viên dưới 5
4. Cho biết tên nhân viên và tổng số giờ đã tham gia dự án của nhân viên đó
5. Cho biết tổng số nhân viên đã tham gia làm cho từng dự án theo tên dự án
6. Cho biết số dự án đã thực hiện của từng phòng ban
7. Cho biết tên dự án và tổng số giờ làm của các nhân viên cho dự án đó
8. Cho biết tên của nhân viên có số giờ làm cho dự án là nhiều nhất
9. Cho biết tên của phòng ban có tổng lương thấp nhất
Ngôn ngữ truy vấn 64
61. Bài tập về nhà
Thiết kế CSDL của Bài tập lớn
Sử dụng câu lệnh Create để tạo các bảng
tương ứng
In (vẽ) sơ đồ liên kết giữa các bảng nộp đầu
giờ cho GV kiểm tra
- Ghi rõ tên đề bài
- Tên sinh viên và tên lớp tương ứng
Chuẩn bị bộ dữ liệu có nghĩa để chèn vào
các bảng
Ngôn ngữ truy vấn 65
62. Bài tập áp dụng
NHANVIEN( MaNV, Hoten, DiaChi, SDT, NgaySinh, GT, HSL)
HANG( MaHang, TenHang, NhaSX, TGianBaoHanh, DonGia)
KHACHHANG( MaKH, TenKH, CMT, DiaChi, SoDienThoai, Email)
HOADONXUAT( MaHD, MaKH, NgayLapHD, MaNV, PhuongThucTT)
CT_HOADON( MaHD, MaHang, SoLuongMua, GiamGia)
Viết câu lệnh truy vấn đầy đủ thực hiện yêu cầu sau:
- Cho danh sách các nhân viên nữ đã bán được hàng vào tháng 3
- Cho danh sách khách hàng sử dụng thuê bao Viettel đã thanh toán tiền
trực tiếp khi mua hàng
- Cho danh sách tên các mặt hàng chưa bán được hàng nào
- Cho danh sách nhân viên có lương cao nhất
- Cho danh sách khách hàng ở Đống Đa đã đến mua hàng
- Thống kê tổng số tiền của từng hóa đơn đã bán trong tháng 3
- In ra danh sách các hóa đơn trong tháng 3 đã tổng trị giá > 10 triệu
- Cho biết tổng số loại hàng đã được bán của từng hóa dơn
Ngôn ngữ truy vấn 66
63. Bài tập thực hành (tiếp)
NHANVIEN( MaNV, Hoten, DiaChi, SDT, NgaySinh, GT, HSL)
HANG( MaHang, TenHang, NhaSX, TGianBaoHanh, DonGia)
KHACHHANG( MaKH, TenKH, CMT, DiaChi, SoDienThoai, Email)
HOADONXUAT( MaHD, MaKH, NgayLapHD, MaNV, PhuongThucTT)
CT_HOADON( MaHD, MaHang, SoLuongMua, GiamGia)
Viết câu lệnh truy vấn đầy đủ thực hiện yêu cầu sau (tiếp)
- Cho biết tổng số hóa đơn đã được lập của mỗi nhân viên
- Cho biết tổng số tiền đã bán hàng của mỗi nhân viên trong tháng 3
- Cho biết tổng số tiền đã mua hàng của từng khách hàng theo tên
khách hàng
- Cho biết tổng số lượng đã bán của từng mặt hàng, theo tên trong
tháng 3
- Cho biết đã lập bao nhiêu hóa đơn trong năm 2012
Ngôn ngữ truy vấn 67
Editor's Notes
BTVN: Tạo CSDL “Quản lý dự án”
BTVN: Tạo CSDL “Quản lý dự án”
NHANVIEN (MANV, TENNV, NS, DCHI, GT, LUONG, PHG)
BTVN: Tạo CSDL “Quản lý dự án”
Danh sach cac thuoc tinh can duoc cach nhau boi dau ,
Sum, Avg, Count, Min, Max: bỏ qua giá trị NULL khi tính toán
Count(*): không bỏ quá giá trị NULL
Mệnh đề WHERE của cấu truy vấn cơ bản gồm các thuộc tính đơn, phép so sánh với hằng số
Hàm là tập lệnh SQL để thực hiện công việc nào đó
Hàm trong SQL làm việc với dữ liệu, nhóm dữ liệu để trả về một kết quả mong đợi
SUM( col_name )
Hàm tính tổng, trả về tổng giá trị của col_name
SELECT SUM(OrderQty) AS Total FROM Purchasing.PurchaseOrderDetail
AVG( col_name )
Trả tính giá trị trung bình
SELECT AVG(UnitPrice * OrderQty) AS AveragePrice FROM Purchasing.PurchaseOrderDetail
COUNT
Đếm số bản ghi trong bảng
SELECT COUNT(*) AS ‘Number of Large Orders’ FROM Purchasing.PurchaseOrderDetail WHERE OrderQty &gt; 100
MAX( col_name )
Trả về giá trị lớn nhất
SELECT MAX(OrderQty * UnitPrice) AS ‘Largest Order’ FROM Purchasing.PurchaseOrderDetail
MIN( col_name )
Trả về giá trị nhỏ nhất
SELECT MIN(OrderQty * UnitPrice) AS ‘Smallest Order’ FROM Purchasing.PurchaseOrderDetail
CEILING(num_expr)
Trả về giá trị nhỏ nhất lớn hơn hoặc bằng num_expr
SELECT CEILING(43.5) returns 44
FLOOR(num_expr)
Trả về giá trị lớn nhất nhỏ hơn hoặc bằng num_expr
SELECT FLOOR(43.5) returns 43
ABS(num_expr): Trả về giá trị tuyệt đối
SELECT ABS(-43) return 43
POWER(num_expr,y):Hàm lũy thừa
SELECT POWER(5,2) returns 25
ROUND(num_expr,length):Hàm làm tròn
SELECT ROUND(43.543,1) returns 43.500
SQRT(float_expr):Hàm căn bậc hai
SELECT SQRT(9) returns 3
Với cú pháp hàm CAST bên dưới cho phép bạn có thể chuyển đổi một biểu thức nào đó sang một kiểu dữ liệu bất kỳ mong muốn. Thông thường đối với các kiểu dữ liệu image, text, ntext rất hạn chế trong việc chuyển đổi qua lại các kiểu dữ liệu khác.
CAST ( expression AS data_type [ ( length ) ] )
expressionIs any valid expression.
data_typeIs the target data type. This includes xml, bigint, and sql_variant. Alias data types cannot be used.
lengthIs an optional integer that specifies the length of the target data type. The default value is 30.
styleIs an integer expression that specifies how the CONVERT function is to translate expression. If style is NULL, NULL is returned. The range is determined by data_type. For more information, see the Remarks section.
Với cú pháp hàm CONVERT bên dưới cho phép bạn có thể chuyển đổi một biểu thức nào đó sang một kiểu dữ liệu bất kỳ mong muốn nhưng có thể theo một định dạng nào đó (đặc biệt đối với kiểu dữ liệu ngày).
CONVERT ( data_type [ ( length ) ] , expression [ , style ] )
DECLARE @myval decimal (5, 2);
SET @myval = 193.57;
SELECT CAST(CAST(@myval AS varbinary(20)) AS decimal(10,5));
-- Or, using CONVERT
SELECT CONVERT(decimal(10,5), CONVERT(varbinary(20), @myval));
Với cú pháp hàm STR bên dưới cho phép bạn có thể chuyển đổi kiểu dữ liệu số sang kiểu dữ liệu chuỗi. Phải đảm bảo đủ vùng trắng để chứa các ký số khi chuyển đổi sang kiểu dữ liệu chuỗi.
STR ( float_expression [ , length [ , decimal ] ] )
float_expressionIs an expression of approximate numeric (float) data type with a decimal point.
Length Is the total length. This includes decimal point, sign, digits, and spaces. The default is 10.
decimalIs the number of places to the right of the decimal point. decimal must be less than or equal to 16. If decimal is more than 16 then the result is truncated to sixteen places to the right of the decimal point.
VD:
SELECT STR(123.45, 6, 1)
Kết quả: 123.5
SELECT STR(123.45, 2, 2) GO
Kết quả: **
Hàm ngày tháng
Được dùng để thao tác giá trị ngày tháng
Hàm ngày tháng cho phép chúng ta lấy một phần của giá trị ngày tháng như: lấy ngày, tháng hoặc năm
DATEPART: là một phần giá trị ngày tháng, được kết hợp sử dụng trong hàm ngày tháng để lấy một phần nào đó của giá trị ngày tháng
GETDATE(): Trả về ngày hiện tại của hệ thống
SELECT GETDATE()
DATEADD(datepart,number,date): Cộng vào thêm number giá trị vào date
SELECT DATEADD(mm,4,’01/01/99’) - returns 05/01/99 in the current date format
DATEDIFF(datepart,date1,date2): So sánh giữa hai giá trị ngày tháng
SELECT DATEDIFF(mm,’01/01/99’,’05/01/99’) - returns 4
DATENAME(datepart,date): Trả về giá trị ngày tháng dưới dạng chuỗi
SELECT DATENAME(dw,’01/01/2000’) - returns Saturday
DATEPART(datepart,date): Trả về một phần giá trị ngày tháng
SELECT DATEPART(day,’01/15/2000’) - returns 15
DAY(date), MONTH(date), YEAR(date)
REPLACE( string1, string2, string3 ): thay thế trong chuỗi 1, các chuỗi 2 thành chuỗi 3
CHARINDEX(string1, string2 [,start]):Hàm trả về vị trí đầu tiên tính từ vị trí start tại đó chuỗi string1 xuất hiện trong chuỗi string2.
CHAR(ascii_code): Hàm trả về ký tự có mã ASCII tương ứng với đối số
ASCII(string): Hàm trả về mã ASCII của ký tự đầu tiên bên trái của chuỗi đối số
Ký tự đại diện
%: đại diện cho sự xuất hiện của nhiều ký tự
_: đại diện cho sự xuất hiện của một ký tự
ASCII( char )
CHAR( ascii_code )
CHARINDEX( string1, string2 [, start] )
REPLACE( string1, string2, string3 )
REVERSE( string )
Cho danh sách tên các khách hàng đã mua hàng trong 3 ngày gần đây
Cho biết danh sách các mặt hàng đã được bán trong 1 tuần gần đây
Lập danh sách gồm các thông tin: tên khách hàng, tên mặt hàng, số lượng, đơn giá, thành tiền và ngày mua hàng
Cho biết tên mặt hàng đã bán với số lượng ít nhất trong năm 2013
Cho biết danh sách các mặt hàng chưa bán được sản phẩm nào
Cho biết tên mặt hàng đã bán với số lượng ít nhất trong năm 2013
Cho biết danh sách các mặt hàng chưa bán được sản phẩm nào