SlideShare una empresa de Scribd logo
1 de 10
Descargar para leer sin conexión
Giaùo Trình Heä Quaûn Trò CSDL SQLServer 2000

Trang 46

Bài 07

TRUY XUẤT DỮ LIỆU BẰNG CÂU LỆNH SQL
Truy vấn đơn giản
Biến đổi dữ liệu
Truy vấn có điều kiện
Truy vấn nhiều Table
Sau khi bạn đã có thông tin trong CSDL của mình, bạn muốn trích ra những dữ liệu bạn mong
muốn. Từ các phát biểu SELECT đơn giản lấy các cột chỉ định. Sau đó mở rộng bằng các kỹ thuật
thao tác và chuyển đổi dữ liệu hạn chế dữ liệu trùng. Cuối cùng với các truy vấn cao cấp như các truy
vấn con, truy vấn kết nối và tương quan dữ liệu (truy vấn nhiều table).
Cú pháp đầy đủ của câu lênh SELECT
SELECT [ALL | DISTINCT] [TOP N [PERCENT]] <DS các cột> [INTO <Tên Table>]
FROM <DS Các Table>
[Where <Điều kiện>]
[GROUP BY <DS các cột gom nhóm>]
[HAVING <Điều kiện của Group by>]
[ORDER BY <Tên cột> Asc|Desc , . . .]
Các truy vấn lấy thông tin từ CSDL bằng cách sử dụng câu lênh SQL từ công cụ SQL Query
Analyzer. Ngòai ta ta cũng có thể sử dụng các công cụ kác và các tiện ích của hãng thứ 3.
I. PHÁT BIỂU SELECT ĐƠN GIẢN
1. Lệnh SELECT đơn giản
SELECT <DS Các cột>
FROM <Tên Table >
Mệnh đề :
SELECT : Xác định các cột cần lấy dữ liệu
FROM : Xác định Bảng (Table) chứa cột được lấy
Sử dụng dấu hoa thị (*) thay thế cho DS tất cả các cột trong bảng.
VD: SELECT *
FROM KHACHHANG

Để chọn các cột rõ ràng bạn phải
phân mỗi cột bằng dấu (,)
SELECT <Tên cột 1> [, <Tên cột 2> . . . .]
FROM <Tên Table>
VD: SELECT MaKH, TenKH, DiaChiKH
FROM KHACHHANG
Ghi chú : Khi sử dụng lệnh SELECT * , trật tự các cột sẽ
giống trật tự đã chỉ định khi tạo Table. Khi sử dụng lệnh
SELECT <DS các cột> thì trật tự là trật tự theo <DS các
cột>
2. Thay Thế Tiêu Đề Cột
Thay vì sử dụng các tiêu đề cột như đã chỉ định khi thiết kế Table bạn có thể thay đổi các tiêu
đề cột theo ý mình bằng cách đặt các bí danh cho tiêu đề. Có 2 cách:
SELECT <Têu đề cột>=<Tên cột>
FROM <Tên Table>
Giaùo Trình Heä Quaûn Trò CSDL SQLServer 2000

Trang 47

SELECT <Tên cột> As <Tiêu đề cột>
FROM <Tên Table>
Ghi chú:
Nếu bí danh có sử dụng khoảng trắng thì phải đặt bí danh trong cặp nháy ‘ ‘
VD:
SELECT MaKH as 'M Khch Hng', TenKH Tenkhachhang, 'Địa Chỉ KH' =DiaChiKH
FROM khachhang

3. Sử dụng Literals
Sử dụng Literals để làm cho dữ liệu dễ đọc hơn. Một Literals là một chuỗi được đặt trong ngoặc kép
đơn. Thể hiển như một cột khác trong câu truy vấn.
VD: SELECT TenKH, DiaChiKH, 'M Khch Hng: ' , MaKH
From KhachHang

II. BIẾN ĐỔI DỮ LIỆU
1. Hàm toán học
Các hàm tóan học cho phép thực hiện xử lý các dữ liệu số
cú pháp:
SELECT <Tên hàm> (<Các tham số>)
VD: SELECT SQRT(9)
Hàm
Power(X,Y)
Round(X,n)
Square(X)
SQRT(X)

Diễn Giải
Giá trị của X lũy thừa Y
Số X làm tròn n chữ số tính từ dấu thập phân.
Bình phương giá trị X
Căn bậc 2 của giá trị X

2. Các hàm về chuỗi
Thực hiện xử lý dữ liệu chuổi ký tự .
Cú pháp:
SELECT <Tên hàm>(<Các tham số>)
VD: Select Right('ABCDE',3)
Hàm
‘Chuỗi 1’ + ‘Chuỗi 2’
Lower(Chuỗi kí tự)
Upper(Chuỗi kí tự)
LTrim(Chuỗi kí tự)
RTrim(Chuỗi kí tự)
Left(Chuỗi kí tự, n)
Right(Chuỗi kí tự, n)
SubString(Chuỗi kí tự, n1, n2)
Replace(‘Chuỗi1’,’Chuổi2’,’Chuỗi3’)

Diễn Giải
Nối 2 Hay nhiều chuổi ký tự
Chuyển thành chữ thường
Chuyển thành chữ Hoa
Trả về dữ liệu không có khảng trắng bên trái
Trả về dữ liệu không có khảng trắng bên phải
Trả về một chuổi n ký tự tính từ bên trái
Trả về một chuổi n ký tự tính từ bên phải
Trả về 1 chuổi ký tự bắt đầu từ vị trí n1 có chiều dài n2 kí tự
Thay thế tất cả lần xuất hiện Chuỗi2 trong Chuỗi1 bằng Chuỗi3

3. Các hàm ngày tháng
Để biến đổi các giá trị kiểu DateTime
Giaùo Trình Heä Quaûn Trò CSDL SQLServer 2000

Trang 48

Cú pháp:
SELECT <Tên hàm>(<Các tham số>)
VD: SELECT GetDate()
Đối với các hàm có sử dụng tham số gọi là DatePart các giá trị của DatePart liệt kê như sau:
DatePart
DD
MM
QQ
DW
YY

Giá Trị
1-31
1-12
1-4
1-7(Sun-Sat)
1753-9999

Diễn Giải
Ngày trong tháng
Tháng trong năm
Quý trong năm
Thứ trong tuần
Năm

Các hàm về ngày
Hàm

Diễn Giải

GetDate()
DateAdd(Datepart, n, Ngày)
DateDiff(DatePart, Ngày1, Ngày 2)
DatePart(Datepart, Ngày)
Day(Ngày)
Month(Ngày)
Year(Ngày)

Trả về ngày giờ hiện hành
Thêm n DateParts vào Ngày
Trả Về Số Datepart Giữa 2 Ngày
Trà về giá trị DatePart của Ngày
Trả về trị thể hiện ngày của Ngày
Trả về trị thể hiện tháng của Ngày
Trả về trị thể hiện năm của Ngày

VD:
Select DateAdd(mm,-3,’10/6/2004’)
III. CHỌN LỰA CÁC DÒNG KẾT XUẤT
Cú pháp:
SELECT <DS Các cột>
FROM <Tên Table>
WHERE <Biểu thức điều kiện>
Để xác định các dòng nào cần trích xuất dựa trên dựa trên mệnh đề tìm kiếm WHERE của phát biểu
SELECT. Các điều kiện tìm kiếm bao gồm các phép toán so sánh, các phạm vi, các danh sách, so
khớp chuỗi, các giá trị không xác định và sự phủ định của các điều kiện này
1. Các phép toán so sánh
Phép toán
=
>
<
>=
<=

Diễn giải
Bằng
Lớn hơn
Nhỏ hơn
Lớn hơn hoặc bằng
Nhỏ hơn hoặc bằng

Phép toán
<>
!=
!>
!<
()

Diễn giải
Không bằng
Không bằng
Không lớn hơn
Không nhỏ hơn
Thứ tự ưu tiên
Giaùo Trình Heä Quaûn Trò CSDL SQLServer 2000
VD:

Trang 49

Select Masv, Tensv, Hocbong
From Sinhvien
Where Hocbong >=200000
2. Phạm Vi
Trích xuất dữ liệu dựa trên điều kiện là 1 phạm
vi các giá trị sử dụng
từ khoá BETTWEEN.
Cú pháp :
SELECT <DS các cột>
FROM <TênTable>
WHERE <Tên cột> [Not] BetWeen <Giá trị đầu> and <Giá trị cuối>
VD: Select Masv, Tensv,Ngaysinh
From Sinhvien
Where Ngaysinh Between '1/1/1978' and '12/31/1980'
3. Danh Sách
Trích xuất dữ liệu dựa trên điều kiện là 1 danh sách các giá trị bằng
cách sử dụng từ khoá IN
Cú pháp :
SELECT <DS các cột>
FROM <TênTable>
WHERE <Tên cột> [Not] IN(<DS các giá trị>)
VD: Select Masv, Hosv,TenSV
From Sinhvien
Where Masv IN ('SV01','SV03','SV06')
4. Chuỗi ký tự
Trích xuất các dòng dữ liệu dựa trên 1 phần của chuổi ký tự ta sử dụng từ khoá LIKE, Có thể sử dụng
4 ký tự thay thế trong biểu thức.
% : Đại diện không hay nhiều ký tự
- : Một ký tự
[] : Một ký tự bên trong phạm vi xác định
[^] : Một ký tự không nằm trong phạm vi xác định
Cú pháp :
SELECT <DS các cột>
FROM <TênTable>
WHERE <Tên cột> [Not] LIKE ‘Chuỗi ký tự’
VD: Select masv, Hosv,TenSV, DiaChi
From sinhvien
Where DiaChi Like '%Q3%'

VD:

Select masv, Hosv,TenSV, DiaChi
From sinhvien
Where Tensv Like '[DM]%'
Giaùo Trình Heä Quaûn Trò CSDL SQLServer 2000

Trang 50

5. Các giá trị không xác định
Một giá trị Nul là giá trị rỗng (không có dữ liệu. Dó đó để xác định các dòng có chứa giá trị
Null trong table ta sử dụng các từ khóa IS NULL và IS NOT NULL.
Cú pháp:
SELECT <DS các cột>
FROM <TênTable>
WHERE <Tên cột> IS [NOT] NULL
VD: Select Makh,Tenkh,Diachikh
From Khachhang
Where Dienthoaikh IS NULL
VD:

Select Makh,Tenkh,Diachikh, Dienthoaikh, Emailkh
From Khachhang
Where EmailKH IS NOT NULL

6. Sử dụng nhiều điều kiện để trích xuất các dòng
Chúng ta có thể liên kết nhiều điều kiện tìm kiếm bằng cách sử dụng các tóan tử logic
• AND trả về kết quả khi tất cả điều kiện là đúng,
• OR trả về kết quả khi bất kỳ điều kiện nào đúng.
Cú pháp:
SELECT <DS các cột>
FROM <TênTable>
WHERE <Điều kiện 1> AND | OR <Điều kiện 2> . . .
VD:
Select *
From Sanpham
Where Maloai in (1,2,3) and Dongia>100000
7. Giới hạn các thông tin trùng DISTINCT
Khi chọn thông tin từ một Table có thể nhận được các dòng thông tin trùng nhau. Để giới hạn thông
tin trùng dùng từ khoá DISTINCT nằm trong mệnh đề SELECT
Cú pháp:
SELECT
DISTINCT <DS Các cột>
FROM
<Tên Table>
WHERE
<Điều kiện>
VD:
Select Distinct Masp
Select Distinct Masp,sldat
From Chitietdh
From Chitietdh
Giaùo Trình Heä Quaûn Trò CSDL SQLServer 2000

Trang 51

8. Sắp xếp dữ liệu với mệnh đề ORDER BY
Để sắp xếp kết quả truy vấn theo một trật tự nào đó ta sử dụng mệnh đề Order By
Cú pháp :
SELECT <DS các cột>
FROM <TênTable>
WHERE <Điều kiện>
Order By
<DS Các cột> ASC | DESC
Asc: Tăng dần
Desc: Giảm dần
VD: Select Maloai, MaSP, TenSp
From SanPham
Order By MaSP Desc
9. Các hàm tập hợp
Các hàm tập hợp có thể trả về các giá trị tóm tắt đối với tòan bộ một bảng hoặc đối với các
nhóm của các dòng trong bảng. Các hàm tập hợp thông thường được sử dụng với các mệnh đề Group
By và trong mệnh đề Having
Hàm
Kết Quả
COUNT(*)
Trả về số dòng được chọn
MAX(Tên cột)
Trả về giá trị lớn nhất trong cột
MIN(Tên cột)
Trả về giá trị nhỏ nhất trong cột
AVG(Tên cột)
Trả về trị trung bình cộng của các giá trị trong cột
SUM(Tên cột)
Trả về tổng số các giá trị trong cột
VD: Select count(*)
From KhachHang
VD:

Select Max(DonGia) as GiaCaoNhat
From SanPham
a. Group By và Having
Mệnh đề Group By nhóm dữ liệu tổng hợp thỏa mãn điều kiện Where để trả về như dòng đơn.
Mệnh đề Having thiết lập các điều kiện để định rõ dòng nào sẽ được trả về bởi mệnh đề Group By
Cú pháp:
SELECT <DS các cột>
FROM <TênTable>
WHERE <Điều kiện>
[Group By <DS Các cột gom nhóm>]
[HAVING
<Điều kiện cho Group By>]
VD: Select MaKH, Count(*) As SolanDH
From Dondathang
Group By Makh
Having Count(*) >=2
Giaùo Trình Heä Quaûn Trò CSDL SQLServer 2000

Trang 52

b. Compute và Compute By
Các mệnh đề Compute và Conpute By sinh ra các dòng dữ liệu tổng hợp và chi tiết mới.
• Mênh đề Compute trả về các dòng chi tiết và một dòng tổng chính.
• Mệnh đề Compute By trả về các dòng mới của dữ liệu tổng hợp, giống với mệnh đề Group By
nhưng trả về các dòng như các nhóm con cùng với các giá trị tổng hợp. Muốn sử dụng
Compute By bạn phải sử dụng mệnh đề Group By, trật tự các cột trong Compute By phải giống
trật tự trong Order By
Cú pháp:
SELECT <DS các cột>
FROM <TênTable>
WHERE <Điều kiện>
[COMPUTE <BT Tính toán >]
[BY <Tên cột phân nhóm>]
VD: Mênh đề Group By
Select Maloai, Sum(SLTon) as TongSLTon
From SanPham
Group By MaLoai
VD: Mênh đề Compute
Select Maloai, SLTon
From SanPham
Compute Sum(SLTon)
VD: Mênh đề Compute By
Select Maloai, SLTon
From SanPham
Order By Maloai
Compute Sum(SLTon) By MaLoai

10. Siêu tập hợp Rollup và Cube
Để thêm các dòng tóm tắt bổ sung tham khảo như là các
tóan tử Rollup và Cube với mệnh đề Group By
Cú pháp:
SELECT <DS các cột>
FROM <TênTable>
WHERE <Điều kiện>
[Group By <DS Các cột gom nhóm> ]
[With ROLLUP | CUBE]
Tóan tử Rollup sinh ra các dòng siêu kết hợp
VD:
Select Sodh,Masp, Sum(SLDat) as TongSLDat
From Chitietdh
Where Sodh in('00001','00002','00003')
Group By sodh,masp
With RoLLup

siêu tập hợp, sử dụng các
Giaùo Trình Heä Quaûn Trò CSDL SQLServer 2000

Trang 53

Sinh ra một dòng đối với mỗi đơn hàng cùng với thông tin tổng hợp các dòng với giá trị Null
trong MaSP thể hiển tổng số của tất cả các MaSP. Và sinh ra một dòng tổng cộng cho tất cả các đơn
đặt hàng
Tóan tử Cube sinh ra các dòng siêu kết hợp
Giống như tóan tử Rollup tóan tử Cube chẳng những sinh ra các giá trị trung
bình và tổng cộng động mà còn trả về các dòng tổng bổ sung.
VD: Select Sodh,Masp, Sum(SLDat) as TongSLDat
From chitietDH
Where Sodh in('00001','00002')
Group By Sodh,Masp
With Cube
IV. TƯƠNG QUAN DỮ LIỆU
Cách thực hiện kết nối để trích dữ liệu từ 1 hoặc nhiều bảng. Các kết quả
sẽ xuất hiện như một bảng đơn với các cột từ tất cả các bảng được chỉ định
trong SELECT Column_List và so khớp với điều kiện tìm kiếm. Khi sử dụng nhiều Table nguồn
chúng ta cần chú ý đến mối liên kết giữa các Table nguồn.
1. Khái niệm
a. Loại kết nối - JoinType
• Inner Join (Liên kết trong bảng A và B) : Khi chọn các thông tin của bảng A hoặc bảng B thì
các thông tin ấy bắt buột phải có mặt đồng thời trong cả 2 bảng A,B
• Left Join (Liên kết ngoài bên trái của A với B ):
Khi chọn thông tin của A: Thông tin ấy mặc nhiên được lấy
Khi chọn thông tin của B : Thông tin ấy phải có mặt trong A thì mới lấy được
• Right Join: (Liên kết ngoài bên phải của A với B ):
Khi chọn thông tin của A: Thông tin ấy phải có mặt trong B thì mới lấy được
Khi chọn thông tin của B : Thông tin ấy mặc nhiên được lấy
• Full Join (Liên kết ngoài toàn phần):
Khi chọn thông tin của A: Thông tin ấy mặc nhiên được lấy
Khi chọn thông tin của B : Thông tin ấy mặc nhiên được lấy
b. Toán tử kết nối- JoinOperator
Trong SQL Server 2000 có toán tử kết nối =
2. Cú pháp kết nối
Khi thực hiện kết nối các bảng bạn có thể sử dụng 2 cú pháp:
SELECT <Tên Table>.<Tên cột> [, . . .]
FROM <DS Các Table>
WHERE <Tên Table 1>.<Tên cột> <Toán tử> <Tên Table2>.<Tên cột>[, . .]
Hoặc
SELECT <Tên Table>.<Tên cột>[, . . .]
FROM <Tên Table 1> [Loại kết nối> <Tên Table 2>
ON <Tên Table 1>.<Tên cột>=<Tên Table 2>.<Tên cột> [, . . .]
WHERE <BT Điều kiện>
VD: Liệt kê kết quả học tập sinh viên khoa “TH” thông tin gồm : Masv, Hosv, Tensv, Phai, Ngaysinh,
Makhoa, Mamh, Diem
SELECT Sinhvien.masv, Sinhvien.hosv, Sinhvien.tensv, Sinhvien.phai, Sinhvien.ngaysinh,
Sinhvien.makhoa, Ketqua.mamh, Ketqua.diem;
FROM sinhvien , Ketqua
WHERE sinhvien.masv=ketqua.masv and Sinhvien.makhoa = "TH"
Hoặc
Giaùo Trình Heä Quaûn Trò CSDL SQLServer 2000

Trang 54

SELECT Sinhvien.masv, Sinhvien.hosv, Sinhvien.tensv, Sinhvien.phai, Sinhvien.ngaysinh,
Sinhvien.makhoa, Ketqua.mamh, Ketqua.diem;
FROM sinhvien INNER JOIN ketqua ON Sinhvien.masv = Ketqua.masv;
WHERE Sinhvien.makhoa = "TH"
Ghi chú: Tập kết quả của 2 cú pháp này sẽ giống nhau. Tuy nhiên có một sự khác nhau
VD: Liệt kê các sản phNm thuộc loại 1 chưa có đặt hàng
Cú pháp 1:
Select MaSp, TenSP, QuiCach
From SanPham
Where MaLoai=1 and MaSP N ot In
(Select MaSP
From ChitietDH)
Cú pháp 2:
Select MaSp, TenSP, QuiCach
From SanPham Left Join ChiTietDH ON SanPham.MaSP=ChiTietDh.MaSP
Where MaLoai=1
Nhận xét:
• Đối với các câu truy vấn thông thường thì sử dụng cú pháp 1 rõ ràng và dễ hiểu hơn
• Đối câu truy vấn liên kết thì cú pháp 2 ngắn gọn hơn. Tuy nhiên nếu câu truy vấn có nhiều
bảng thì sẽ phức tạp hơn.
• Sử dụng cú pháp nào tùy theo người sử dụng.
3. Làm việc với các truy vấn con
Một truy vấn con có thể trả về một cột đơn hoặc một giá trị đơn ở bất kỳ nơi đâu 1 giá trị đơn
có thể sử dụng. Và có thể được so sanh bởi các toá tử so sánh. Các từ khoá In và Exist
VD : Liệt kê các sản phNm Mã loại là 1 có đặt hàng
Cú pháp 1 :
Select MaSp, TenSP, QuiCach
From SanPham
Where MaLoai=1 and MaSP In (Select MaSP From ChitietDH)
Cú pháp 2 :
Select MaSp, TenSP, QuiCach
From SanPham
Where Exists (Select * From ChiTietDh Whrere MaSP=SanPham.MaSP and MaLoai=1)
4. Tạo Union Query – Query Hợp Nhất
SELECT <DS Các cột>
FROM <DS Các Table>
[WHERE <Điều kiện>]
UNION
SELECT <DS Các cột>
FROM <DS Các Table>
[WHERE <Điều kiện>]
UNION . . . .
DSVùng chọn phải giống nhau trong các mệnh đề SELECT
VD: Lliệt kê ds khách mời dự họp tất niên gồm khách hàng và nhân viên
Select TenKH AS TenKM, DiaChiKh As DiaChiKM, DienThoaiKh As DienThoaiKM
From KhachHang
Giaùo Trình Heä Quaûn Trò CSDL SQLServer 2000

Trang 55

UN ION
Select Trim(HoN V)+” “+ Trim(TenN V) , DiaChiN V, DienThoaiN V
From N hanVien
5. SELECT INTO
Phát biểu Select InTo cho phép tạo kết quả mới dựa trên kết quả truy vấn. Bảng mới được tạo
dựa trên các cột bạn xác định trong danh sách chọn lựa.
Cú pháp :
Select <DS Các cột> Into <Tên Table>
From <DS Các Table>
[Where <Điều kiện>]
VD: Select * Into TempKhachHang
From KhachHang
Có 2 loại bảng:
Bảng thường trực : Sử dụng Select InTo định nghĩa một bảng và đưa dữ liệu vào trong đó
Bảng tạm thời : Các bảng này sẽ nằm trong CSDL TempDb
VD: Select * Into #TempKhachHang
From KhachHang
Ghi chú :
N ếu muốn thêm các dòng vào một bảng đã có ta sử dụng IN SERT Hoặc IN SERT IN TO
VD: IN SERT TempKhachHang
Select *
From KhachHang

Más contenido relacionado

La actualidad más candente

04 chuong4-sapxeptimkiemlocdulieu-140404115538-phpapp01
04 chuong4-sapxeptimkiemlocdulieu-140404115538-phpapp0104 chuong4-sapxeptimkiemlocdulieu-140404115538-phpapp01
04 chuong4-sapxeptimkiemlocdulieu-140404115538-phpapp01huynhtrong774129
 
Bài 11 tạo bảng và sử dụng các kiểu dữ liệu
Bài 11 tạo bảng và sử dụng các kiểu dữ liệuBài 11 tạo bảng và sử dụng các kiểu dữ liệu
Bài 11 tạo bảng và sử dụng các kiểu dữ liệuzzsunzz
 
Bài 2 : Các đối tượng trong CSDL - SQL server
Bài 2 : Các đối tượng trong CSDL - SQL serverBài 2 : Các đối tượng trong CSDL - SQL server
Bài 2 : Các đối tượng trong CSDL - SQL serverMasterCode.vn
 
Ngon ngu truy van sql
Ngon ngu truy van sqlNgon ngu truy van sql
Ngon ngu truy van sqlPhùng Duy
 
04 chuong 4 - sap xep, tim kiem, loc du lieu
04   chuong 4 - sap xep, tim kiem, loc du lieu04   chuong 4 - sap xep, tim kiem, loc du lieu
04 chuong 4 - sap xep, tim kiem, loc du lieutruong le hung
 
04 chuong 4 - cap nhat du lieu
04   chuong 4 - cap nhat du lieu04   chuong 4 - cap nhat du lieu
04 chuong 4 - cap nhat du lieutruong le hung
 
Bài 3: Ngôn ngữ truy vân có cấu trúc (SQL) - Giáo trình FPT
Bài 3: Ngôn ngữ truy vân có cấu trúc (SQL) - Giáo trình FPTBài 3: Ngôn ngữ truy vân có cấu trúc (SQL) - Giáo trình FPT
Bài 3: Ngôn ngữ truy vân có cấu trúc (SQL) - Giáo trình FPTMasterCode.vn
 
Bài 4: NGÔN NGỮ TRUY VẤN CÓ CẤU TRÚC (SQL)
Bài 4: NGÔN NGỮ TRUY VẤN CÓ CẤU TRÚC (SQL)Bài 4: NGÔN NGỮ TRUY VẤN CÓ CẤU TRÚC (SQL)
Bài 4: NGÔN NGỮ TRUY VẤN CÓ CẤU TRÚC (SQL)MasterCode.vn
 
Bài 6: Bảo mật trong SQL SERVER 2008 - Giáo trình FPT
Bài 6: Bảo mật trong SQL SERVER 2008 - Giáo trình FPTBài 6: Bảo mật trong SQL SERVER 2008 - Giáo trình FPT
Bài 6: Bảo mật trong SQL SERVER 2008 - Giáo trình FPTMasterCode.vn
 
Cursor & Function trong SQL Server
Cursor & Function trong SQL ServerCursor & Function trong SQL Server
Cursor & Function trong SQL ServerHuy Vũ
 
Bài 1: Làm quen với SQL Server 2008 - Giáo trình FPT
Bài 1: Làm quen với SQL Server 2008 - Giáo trình FPTBài 1: Làm quen với SQL Server 2008 - Giáo trình FPT
Bài 1: Làm quen với SQL Server 2008 - Giáo trình FPTMasterCode.vn
 
Bai1 xaydung csdl-access
Bai1 xaydung csdl-accessBai1 xaydung csdl-access
Bai1 xaydung csdl-accessHào Kiệt
 
Slide Hệ Quản Trị Cơ sở dữ liệu - CHƯƠNG 2
Slide Hệ Quản Trị Cơ sở dữ liệu - CHƯƠNG 2Slide Hệ Quản Trị Cơ sở dữ liệu - CHƯƠNG 2
Slide Hệ Quản Trị Cơ sở dữ liệu - CHƯƠNG 2pisu412
 
Chuong 5 toi_uu_hoa_van_tin
Chuong 5 toi_uu_hoa_van_tinChuong 5 toi_uu_hoa_van_tin
Chuong 5 toi_uu_hoa_van_tinMasterCode.vn
 

La actualidad más candente (20)

2 co ban ve sql
2 co ban ve sql2 co ban ve sql
2 co ban ve sql
 
04 chuong4-sapxeptimkiemlocdulieu-140404115538-phpapp01
04 chuong4-sapxeptimkiemlocdulieu-140404115538-phpapp0104 chuong4-sapxeptimkiemlocdulieu-140404115538-phpapp01
04 chuong4-sapxeptimkiemlocdulieu-140404115538-phpapp01
 
nngu sql
 nngu sql nngu sql
nngu sql
 
Bài 11 tạo bảng và sử dụng các kiểu dữ liệu
Bài 11 tạo bảng và sử dụng các kiểu dữ liệuBài 11 tạo bảng và sử dụng các kiểu dữ liệu
Bài 11 tạo bảng và sử dụng các kiểu dữ liệu
 
Bài 2 : Các đối tượng trong CSDL - SQL server
Bài 2 : Các đối tượng trong CSDL - SQL serverBài 2 : Các đối tượng trong CSDL - SQL server
Bài 2 : Các đối tượng trong CSDL - SQL server
 
Com201 slide 4
Com201   slide 4Com201   slide 4
Com201 slide 4
 
Ngon ngu truy van sql
Ngon ngu truy van sqlNgon ngu truy van sql
Ngon ngu truy van sql
 
Com201 slide 3
Com201   slide 3Com201   slide 3
Com201 slide 3
 
04 chuong 4 - sap xep, tim kiem, loc du lieu
04   chuong 4 - sap xep, tim kiem, loc du lieu04   chuong 4 - sap xep, tim kiem, loc du lieu
04 chuong 4 - sap xep, tim kiem, loc du lieu
 
04 chuong 4 - cap nhat du lieu
04   chuong 4 - cap nhat du lieu04   chuong 4 - cap nhat du lieu
04 chuong 4 - cap nhat du lieu
 
Slide duyetgiang
Slide duyetgiangSlide duyetgiang
Slide duyetgiang
 
Bài 3: Ngôn ngữ truy vân có cấu trúc (SQL) - Giáo trình FPT
Bài 3: Ngôn ngữ truy vân có cấu trúc (SQL) - Giáo trình FPTBài 3: Ngôn ngữ truy vân có cấu trúc (SQL) - Giáo trình FPT
Bài 3: Ngôn ngữ truy vân có cấu trúc (SQL) - Giáo trình FPT
 
Bài 4: NGÔN NGỮ TRUY VẤN CÓ CẤU TRÚC (SQL)
Bài 4: NGÔN NGỮ TRUY VẤN CÓ CẤU TRÚC (SQL)Bài 4: NGÔN NGỮ TRUY VẤN CÓ CẤU TRÚC (SQL)
Bài 4: NGÔN NGỮ TRUY VẤN CÓ CẤU TRÚC (SQL)
 
02 access
02 access02 access
02 access
 
Bài 6: Bảo mật trong SQL SERVER 2008 - Giáo trình FPT
Bài 6: Bảo mật trong SQL SERVER 2008 - Giáo trình FPTBài 6: Bảo mật trong SQL SERVER 2008 - Giáo trình FPT
Bài 6: Bảo mật trong SQL SERVER 2008 - Giáo trình FPT
 
Cursor & Function trong SQL Server
Cursor & Function trong SQL ServerCursor & Function trong SQL Server
Cursor & Function trong SQL Server
 
Bài 1: Làm quen với SQL Server 2008 - Giáo trình FPT
Bài 1: Làm quen với SQL Server 2008 - Giáo trình FPTBài 1: Làm quen với SQL Server 2008 - Giáo trình FPT
Bài 1: Làm quen với SQL Server 2008 - Giáo trình FPT
 
Bai1 xaydung csdl-access
Bai1 xaydung csdl-accessBai1 xaydung csdl-access
Bai1 xaydung csdl-access
 
Slide Hệ Quản Trị Cơ sở dữ liệu - CHƯƠNG 2
Slide Hệ Quản Trị Cơ sở dữ liệu - CHƯƠNG 2Slide Hệ Quản Trị Cơ sở dữ liệu - CHƯƠNG 2
Slide Hệ Quản Trị Cơ sở dữ liệu - CHƯƠNG 2
 
Chuong 5 toi_uu_hoa_van_tin
Chuong 5 toi_uu_hoa_van_tinChuong 5 toi_uu_hoa_van_tin
Chuong 5 toi_uu_hoa_van_tin
 

Similar a sqlKey

b34-dml-sql-190213084703.pdf
b34-dml-sql-190213084703.pdfb34-dml-sql-190213084703.pdf
b34-dml-sql-190213084703.pdfQuyVo27
 
Cơ sở dữ liệu SQL qua các vi du cu the.pptx
Cơ sở dữ liệu SQL qua các vi du cu the.pptxCơ sở dữ liệu SQL qua các vi du cu the.pptx
Cơ sở dữ liệu SQL qua các vi du cu the.pptxNguynNgcTn10
 
Cau lenh truy_van_sql
Cau lenh truy_van_sqlCau lenh truy_van_sql
Cau lenh truy_van_sql. .
 
Cau lenh truy_van_sql
Cau lenh truy_van_sqlCau lenh truy_van_sql
Cau lenh truy_van_sqlLiễu Hồng
 
Note4_ThucHanh.pdf
Note4_ThucHanh.pdfNote4_ThucHanh.pdf
Note4_ThucHanh.pdfimquang
 
csdl - buoi7-8-9
csdl - buoi7-8-9csdl - buoi7-8-9
csdl - buoi7-8-9kikihoho
 
Cau lenh truy_van_sql
Cau lenh truy_van_sqlCau lenh truy_van_sql
Cau lenh truy_van_sqlNguyen Quyen
 
THCS_W14_BaiDocThem
THCS_W14_BaiDocThemTHCS_W14_BaiDocThem
THCS_W14_BaiDocThemCNTT-DHQG
 
05 acc201 bai 3_v1.0011103225
05 acc201 bai 3_v1.001110322505 acc201 bai 3_v1.0011103225
05 acc201 bai 3_v1.0011103225Yen Dang
 
Baigiang query
Baigiang queryBaigiang query
Baigiang queryViet Hoa
 
csdl bai-thuchanh_02
csdl bai-thuchanh_02csdl bai-thuchanh_02
csdl bai-thuchanh_02kikihoho
 
OVERVIEW ABOUT MS SQL SERVER FOR BEGINNING
OVERVIEW ABOUT MS SQL SERVER FOR BEGINNINGOVERVIEW ABOUT MS SQL SERVER FOR BEGINNING
OVERVIEW ABOUT MS SQL SERVER FOR BEGINNINGTonMnh13
 
bai_giang_access_phan_query.ppt
bai_giang_access_phan_query.pptbai_giang_access_phan_query.ppt
bai_giang_access_phan_query.pptTonc15
 
[Bachkhoa-Aptech] Hướng dẫn sử dụng Microsoft Office Excel 2003
[Bachkhoa-Aptech] Hướng dẫn sử dụng Microsoft Office Excel 2003[Bachkhoa-Aptech] Hướng dẫn sử dụng Microsoft Office Excel 2003
[Bachkhoa-Aptech] Hướng dẫn sử dụng Microsoft Office Excel 2003Phạm Văn Hưng
 

Similar a sqlKey (20)

b34-dml-sql-190213084703.pdf
b34-dml-sql-190213084703.pdfb34-dml-sql-190213084703.pdf
b34-dml-sql-190213084703.pdf
 
Cơ sở dữ liệu SQL qua các vi du cu the.pptx
Cơ sở dữ liệu SQL qua các vi du cu the.pptxCơ sở dữ liệu SQL qua các vi du cu the.pptx
Cơ sở dữ liệu SQL qua các vi du cu the.pptx
 
Cau lenh truy_van_sql
Cau lenh truy_van_sqlCau lenh truy_van_sql
Cau lenh truy_van_sql
 
Cau lenh truy_van_sql
Cau lenh truy_van_sqlCau lenh truy_van_sql
Cau lenh truy_van_sql
 
Note4_ThucHanh.pdf
Note4_ThucHanh.pdfNote4_ThucHanh.pdf
Note4_ThucHanh.pdf
 
csdl - buoi7-8-9
csdl - buoi7-8-9csdl - buoi7-8-9
csdl - buoi7-8-9
 
Phan3
Phan3Phan3
Phan3
 
ORACLE_ch2_SQL.pptx
ORACLE_ch2_SQL.pptxORACLE_ch2_SQL.pptx
ORACLE_ch2_SQL.pptx
 
Cau lenh truy_van_sql
Cau lenh truy_van_sqlCau lenh truy_van_sql
Cau lenh truy_van_sql
 
THCS_W14_BaiDocThem
THCS_W14_BaiDocThemTHCS_W14_BaiDocThem
THCS_W14_BaiDocThem
 
05 acc201 bai 3_v1.0011103225
05 acc201 bai 3_v1.001110322505 acc201 bai 3_v1.0011103225
05 acc201 bai 3_v1.0011103225
 
Excel 2007
Excel 2007Excel 2007
Excel 2007
 
Baigiang query
Baigiang queryBaigiang query
Baigiang query
 
csdl bai-thuchanh_02
csdl bai-thuchanh_02csdl bai-thuchanh_02
csdl bai-thuchanh_02
 
OVERVIEW ABOUT MS SQL SERVER FOR BEGINNING
OVERVIEW ABOUT MS SQL SERVER FOR BEGINNINGOVERVIEW ABOUT MS SQL SERVER FOR BEGINNING
OVERVIEW ABOUT MS SQL SERVER FOR BEGINNING
 
bai_giang_access_phan_query.ppt
bai_giang_access_phan_query.pptbai_giang_access_phan_query.ppt
bai_giang_access_phan_query.ppt
 
Chuong4
Chuong4Chuong4
Chuong4
 
Lý thuyết excel csdl
Lý thuyết excel   csdlLý thuyết excel   csdl
Lý thuyết excel csdl
 
[Bachkhoa-Aptech] Hướng dẫn sử dụng Microsoft Office Excel 2003
[Bachkhoa-Aptech] Hướng dẫn sử dụng Microsoft Office Excel 2003[Bachkhoa-Aptech] Hướng dẫn sử dụng Microsoft Office Excel 2003
[Bachkhoa-Aptech] Hướng dẫn sử dụng Microsoft Office Excel 2003
 
Baigiang8
Baigiang8Baigiang8
Baigiang8
 

Más de vacbalolenvadi90 (7)

Java day9n
Java day9nJava day9n
Java day9n
 
Quiz test JDBC
Quiz test JDBCQuiz test JDBC
Quiz test JDBC
 
Ass2 1 (2)
Ass2 1 (2)Ass2 1 (2)
Ass2 1 (2)
 
Bai day1
Bai day1Bai day1
Bai day1
 
Final
FinalFinal
Final
 
Abcxyz
AbcxyzAbcxyz
Abcxyz
 
SQL DdaHKH Huế
SQL DdaHKH HuếSQL DdaHKH Huế
SQL DdaHKH Huế
 

sqlKey

  • 1. Giaùo Trình Heä Quaûn Trò CSDL SQLServer 2000 Trang 46 Bài 07 TRUY XUẤT DỮ LIỆU BẰNG CÂU LỆNH SQL Truy vấn đơn giản Biến đổi dữ liệu Truy vấn có điều kiện Truy vấn nhiều Table Sau khi bạn đã có thông tin trong CSDL của mình, bạn muốn trích ra những dữ liệu bạn mong muốn. Từ các phát biểu SELECT đơn giản lấy các cột chỉ định. Sau đó mở rộng bằng các kỹ thuật thao tác và chuyển đổi dữ liệu hạn chế dữ liệu trùng. Cuối cùng với các truy vấn cao cấp như các truy vấn con, truy vấn kết nối và tương quan dữ liệu (truy vấn nhiều table). Cú pháp đầy đủ của câu lênh SELECT SELECT [ALL | DISTINCT] [TOP N [PERCENT]] <DS các cột> [INTO <Tên Table>] FROM <DS Các Table> [Where <Điều kiện>] [GROUP BY <DS các cột gom nhóm>] [HAVING <Điều kiện của Group by>] [ORDER BY <Tên cột> Asc|Desc , . . .] Các truy vấn lấy thông tin từ CSDL bằng cách sử dụng câu lênh SQL từ công cụ SQL Query Analyzer. Ngòai ta ta cũng có thể sử dụng các công cụ kác và các tiện ích của hãng thứ 3. I. PHÁT BIỂU SELECT ĐƠN GIẢN 1. Lệnh SELECT đơn giản SELECT <DS Các cột> FROM <Tên Table > Mệnh đề : SELECT : Xác định các cột cần lấy dữ liệu FROM : Xác định Bảng (Table) chứa cột được lấy Sử dụng dấu hoa thị (*) thay thế cho DS tất cả các cột trong bảng. VD: SELECT * FROM KHACHHANG Để chọn các cột rõ ràng bạn phải phân mỗi cột bằng dấu (,) SELECT <Tên cột 1> [, <Tên cột 2> . . . .] FROM <Tên Table> VD: SELECT MaKH, TenKH, DiaChiKH FROM KHACHHANG Ghi chú : Khi sử dụng lệnh SELECT * , trật tự các cột sẽ giống trật tự đã chỉ định khi tạo Table. Khi sử dụng lệnh SELECT <DS các cột> thì trật tự là trật tự theo <DS các cột> 2. Thay Thế Tiêu Đề Cột Thay vì sử dụng các tiêu đề cột như đã chỉ định khi thiết kế Table bạn có thể thay đổi các tiêu đề cột theo ý mình bằng cách đặt các bí danh cho tiêu đề. Có 2 cách: SELECT <Têu đề cột>=<Tên cột> FROM <Tên Table>
  • 2. Giaùo Trình Heä Quaûn Trò CSDL SQLServer 2000 Trang 47 SELECT <Tên cột> As <Tiêu đề cột> FROM <Tên Table> Ghi chú: Nếu bí danh có sử dụng khoảng trắng thì phải đặt bí danh trong cặp nháy ‘ ‘ VD: SELECT MaKH as 'M Khch Hng', TenKH Tenkhachhang, 'Địa Chỉ KH' =DiaChiKH FROM khachhang 3. Sử dụng Literals Sử dụng Literals để làm cho dữ liệu dễ đọc hơn. Một Literals là một chuỗi được đặt trong ngoặc kép đơn. Thể hiển như một cột khác trong câu truy vấn. VD: SELECT TenKH, DiaChiKH, 'M Khch Hng: ' , MaKH From KhachHang II. BIẾN ĐỔI DỮ LIỆU 1. Hàm toán học Các hàm tóan học cho phép thực hiện xử lý các dữ liệu số cú pháp: SELECT <Tên hàm> (<Các tham số>) VD: SELECT SQRT(9) Hàm Power(X,Y) Round(X,n) Square(X) SQRT(X) Diễn Giải Giá trị của X lũy thừa Y Số X làm tròn n chữ số tính từ dấu thập phân. Bình phương giá trị X Căn bậc 2 của giá trị X 2. Các hàm về chuỗi Thực hiện xử lý dữ liệu chuổi ký tự . Cú pháp: SELECT <Tên hàm>(<Các tham số>) VD: Select Right('ABCDE',3) Hàm ‘Chuỗi 1’ + ‘Chuỗi 2’ Lower(Chuỗi kí tự) Upper(Chuỗi kí tự) LTrim(Chuỗi kí tự) RTrim(Chuỗi kí tự) Left(Chuỗi kí tự, n) Right(Chuỗi kí tự, n) SubString(Chuỗi kí tự, n1, n2) Replace(‘Chuỗi1’,’Chuổi2’,’Chuỗi3’) Diễn Giải Nối 2 Hay nhiều chuổi ký tự Chuyển thành chữ thường Chuyển thành chữ Hoa Trả về dữ liệu không có khảng trắng bên trái Trả về dữ liệu không có khảng trắng bên phải Trả về một chuổi n ký tự tính từ bên trái Trả về một chuổi n ký tự tính từ bên phải Trả về 1 chuổi ký tự bắt đầu từ vị trí n1 có chiều dài n2 kí tự Thay thế tất cả lần xuất hiện Chuỗi2 trong Chuỗi1 bằng Chuỗi3 3. Các hàm ngày tháng Để biến đổi các giá trị kiểu DateTime
  • 3. Giaùo Trình Heä Quaûn Trò CSDL SQLServer 2000 Trang 48 Cú pháp: SELECT <Tên hàm>(<Các tham số>) VD: SELECT GetDate() Đối với các hàm có sử dụng tham số gọi là DatePart các giá trị của DatePart liệt kê như sau: DatePart DD MM QQ DW YY Giá Trị 1-31 1-12 1-4 1-7(Sun-Sat) 1753-9999 Diễn Giải Ngày trong tháng Tháng trong năm Quý trong năm Thứ trong tuần Năm Các hàm về ngày Hàm Diễn Giải GetDate() DateAdd(Datepart, n, Ngày) DateDiff(DatePart, Ngày1, Ngày 2) DatePart(Datepart, Ngày) Day(Ngày) Month(Ngày) Year(Ngày) Trả về ngày giờ hiện hành Thêm n DateParts vào Ngày Trả Về Số Datepart Giữa 2 Ngày Trà về giá trị DatePart của Ngày Trả về trị thể hiện ngày của Ngày Trả về trị thể hiện tháng của Ngày Trả về trị thể hiện năm của Ngày VD: Select DateAdd(mm,-3,’10/6/2004’) III. CHỌN LỰA CÁC DÒNG KẾT XUẤT Cú pháp: SELECT <DS Các cột> FROM <Tên Table> WHERE <Biểu thức điều kiện> Để xác định các dòng nào cần trích xuất dựa trên dựa trên mệnh đề tìm kiếm WHERE của phát biểu SELECT. Các điều kiện tìm kiếm bao gồm các phép toán so sánh, các phạm vi, các danh sách, so khớp chuỗi, các giá trị không xác định và sự phủ định của các điều kiện này 1. Các phép toán so sánh Phép toán = > < >= <= Diễn giải Bằng Lớn hơn Nhỏ hơn Lớn hơn hoặc bằng Nhỏ hơn hoặc bằng Phép toán <> != !> !< () Diễn giải Không bằng Không bằng Không lớn hơn Không nhỏ hơn Thứ tự ưu tiên
  • 4. Giaùo Trình Heä Quaûn Trò CSDL SQLServer 2000 VD: Trang 49 Select Masv, Tensv, Hocbong From Sinhvien Where Hocbong >=200000 2. Phạm Vi Trích xuất dữ liệu dựa trên điều kiện là 1 phạm vi các giá trị sử dụng từ khoá BETTWEEN. Cú pháp : SELECT <DS các cột> FROM <TênTable> WHERE <Tên cột> [Not] BetWeen <Giá trị đầu> and <Giá trị cuối> VD: Select Masv, Tensv,Ngaysinh From Sinhvien Where Ngaysinh Between '1/1/1978' and '12/31/1980' 3. Danh Sách Trích xuất dữ liệu dựa trên điều kiện là 1 danh sách các giá trị bằng cách sử dụng từ khoá IN Cú pháp : SELECT <DS các cột> FROM <TênTable> WHERE <Tên cột> [Not] IN(<DS các giá trị>) VD: Select Masv, Hosv,TenSV From Sinhvien Where Masv IN ('SV01','SV03','SV06') 4. Chuỗi ký tự Trích xuất các dòng dữ liệu dựa trên 1 phần của chuổi ký tự ta sử dụng từ khoá LIKE, Có thể sử dụng 4 ký tự thay thế trong biểu thức. % : Đại diện không hay nhiều ký tự - : Một ký tự [] : Một ký tự bên trong phạm vi xác định [^] : Một ký tự không nằm trong phạm vi xác định Cú pháp : SELECT <DS các cột> FROM <TênTable> WHERE <Tên cột> [Not] LIKE ‘Chuỗi ký tự’ VD: Select masv, Hosv,TenSV, DiaChi From sinhvien Where DiaChi Like '%Q3%' VD: Select masv, Hosv,TenSV, DiaChi From sinhvien Where Tensv Like '[DM]%'
  • 5. Giaùo Trình Heä Quaûn Trò CSDL SQLServer 2000 Trang 50 5. Các giá trị không xác định Một giá trị Nul là giá trị rỗng (không có dữ liệu. Dó đó để xác định các dòng có chứa giá trị Null trong table ta sử dụng các từ khóa IS NULL và IS NOT NULL. Cú pháp: SELECT <DS các cột> FROM <TênTable> WHERE <Tên cột> IS [NOT] NULL VD: Select Makh,Tenkh,Diachikh From Khachhang Where Dienthoaikh IS NULL VD: Select Makh,Tenkh,Diachikh, Dienthoaikh, Emailkh From Khachhang Where EmailKH IS NOT NULL 6. Sử dụng nhiều điều kiện để trích xuất các dòng Chúng ta có thể liên kết nhiều điều kiện tìm kiếm bằng cách sử dụng các tóan tử logic • AND trả về kết quả khi tất cả điều kiện là đúng, • OR trả về kết quả khi bất kỳ điều kiện nào đúng. Cú pháp: SELECT <DS các cột> FROM <TênTable> WHERE <Điều kiện 1> AND | OR <Điều kiện 2> . . . VD: Select * From Sanpham Where Maloai in (1,2,3) and Dongia>100000 7. Giới hạn các thông tin trùng DISTINCT Khi chọn thông tin từ một Table có thể nhận được các dòng thông tin trùng nhau. Để giới hạn thông tin trùng dùng từ khoá DISTINCT nằm trong mệnh đề SELECT Cú pháp: SELECT DISTINCT <DS Các cột> FROM <Tên Table> WHERE <Điều kiện> VD: Select Distinct Masp Select Distinct Masp,sldat From Chitietdh From Chitietdh
  • 6. Giaùo Trình Heä Quaûn Trò CSDL SQLServer 2000 Trang 51 8. Sắp xếp dữ liệu với mệnh đề ORDER BY Để sắp xếp kết quả truy vấn theo một trật tự nào đó ta sử dụng mệnh đề Order By Cú pháp : SELECT <DS các cột> FROM <TênTable> WHERE <Điều kiện> Order By <DS Các cột> ASC | DESC Asc: Tăng dần Desc: Giảm dần VD: Select Maloai, MaSP, TenSp From SanPham Order By MaSP Desc 9. Các hàm tập hợp Các hàm tập hợp có thể trả về các giá trị tóm tắt đối với tòan bộ một bảng hoặc đối với các nhóm của các dòng trong bảng. Các hàm tập hợp thông thường được sử dụng với các mệnh đề Group By và trong mệnh đề Having Hàm Kết Quả COUNT(*) Trả về số dòng được chọn MAX(Tên cột) Trả về giá trị lớn nhất trong cột MIN(Tên cột) Trả về giá trị nhỏ nhất trong cột AVG(Tên cột) Trả về trị trung bình cộng của các giá trị trong cột SUM(Tên cột) Trả về tổng số các giá trị trong cột VD: Select count(*) From KhachHang VD: Select Max(DonGia) as GiaCaoNhat From SanPham a. Group By và Having Mệnh đề Group By nhóm dữ liệu tổng hợp thỏa mãn điều kiện Where để trả về như dòng đơn. Mệnh đề Having thiết lập các điều kiện để định rõ dòng nào sẽ được trả về bởi mệnh đề Group By Cú pháp: SELECT <DS các cột> FROM <TênTable> WHERE <Điều kiện> [Group By <DS Các cột gom nhóm>] [HAVING <Điều kiện cho Group By>] VD: Select MaKH, Count(*) As SolanDH From Dondathang Group By Makh Having Count(*) >=2
  • 7. Giaùo Trình Heä Quaûn Trò CSDL SQLServer 2000 Trang 52 b. Compute và Compute By Các mệnh đề Compute và Conpute By sinh ra các dòng dữ liệu tổng hợp và chi tiết mới. • Mênh đề Compute trả về các dòng chi tiết và một dòng tổng chính. • Mệnh đề Compute By trả về các dòng mới của dữ liệu tổng hợp, giống với mệnh đề Group By nhưng trả về các dòng như các nhóm con cùng với các giá trị tổng hợp. Muốn sử dụng Compute By bạn phải sử dụng mệnh đề Group By, trật tự các cột trong Compute By phải giống trật tự trong Order By Cú pháp: SELECT <DS các cột> FROM <TênTable> WHERE <Điều kiện> [COMPUTE <BT Tính toán >] [BY <Tên cột phân nhóm>] VD: Mênh đề Group By Select Maloai, Sum(SLTon) as TongSLTon From SanPham Group By MaLoai VD: Mênh đề Compute Select Maloai, SLTon From SanPham Compute Sum(SLTon) VD: Mênh đề Compute By Select Maloai, SLTon From SanPham Order By Maloai Compute Sum(SLTon) By MaLoai 10. Siêu tập hợp Rollup và Cube Để thêm các dòng tóm tắt bổ sung tham khảo như là các tóan tử Rollup và Cube với mệnh đề Group By Cú pháp: SELECT <DS các cột> FROM <TênTable> WHERE <Điều kiện> [Group By <DS Các cột gom nhóm> ] [With ROLLUP | CUBE] Tóan tử Rollup sinh ra các dòng siêu kết hợp VD: Select Sodh,Masp, Sum(SLDat) as TongSLDat From Chitietdh Where Sodh in('00001','00002','00003') Group By sodh,masp With RoLLup siêu tập hợp, sử dụng các
  • 8. Giaùo Trình Heä Quaûn Trò CSDL SQLServer 2000 Trang 53 Sinh ra một dòng đối với mỗi đơn hàng cùng với thông tin tổng hợp các dòng với giá trị Null trong MaSP thể hiển tổng số của tất cả các MaSP. Và sinh ra một dòng tổng cộng cho tất cả các đơn đặt hàng Tóan tử Cube sinh ra các dòng siêu kết hợp Giống như tóan tử Rollup tóan tử Cube chẳng những sinh ra các giá trị trung bình và tổng cộng động mà còn trả về các dòng tổng bổ sung. VD: Select Sodh,Masp, Sum(SLDat) as TongSLDat From chitietDH Where Sodh in('00001','00002') Group By Sodh,Masp With Cube IV. TƯƠNG QUAN DỮ LIỆU Cách thực hiện kết nối để trích dữ liệu từ 1 hoặc nhiều bảng. Các kết quả sẽ xuất hiện như một bảng đơn với các cột từ tất cả các bảng được chỉ định trong SELECT Column_List và so khớp với điều kiện tìm kiếm. Khi sử dụng nhiều Table nguồn chúng ta cần chú ý đến mối liên kết giữa các Table nguồn. 1. Khái niệm a. Loại kết nối - JoinType • Inner Join (Liên kết trong bảng A và B) : Khi chọn các thông tin của bảng A hoặc bảng B thì các thông tin ấy bắt buột phải có mặt đồng thời trong cả 2 bảng A,B • Left Join (Liên kết ngoài bên trái của A với B ): Khi chọn thông tin của A: Thông tin ấy mặc nhiên được lấy Khi chọn thông tin của B : Thông tin ấy phải có mặt trong A thì mới lấy được • Right Join: (Liên kết ngoài bên phải của A với B ): Khi chọn thông tin của A: Thông tin ấy phải có mặt trong B thì mới lấy được Khi chọn thông tin của B : Thông tin ấy mặc nhiên được lấy • Full Join (Liên kết ngoài toàn phần): Khi chọn thông tin của A: Thông tin ấy mặc nhiên được lấy Khi chọn thông tin của B : Thông tin ấy mặc nhiên được lấy b. Toán tử kết nối- JoinOperator Trong SQL Server 2000 có toán tử kết nối = 2. Cú pháp kết nối Khi thực hiện kết nối các bảng bạn có thể sử dụng 2 cú pháp: SELECT <Tên Table>.<Tên cột> [, . . .] FROM <DS Các Table> WHERE <Tên Table 1>.<Tên cột> <Toán tử> <Tên Table2>.<Tên cột>[, . .] Hoặc SELECT <Tên Table>.<Tên cột>[, . . .] FROM <Tên Table 1> [Loại kết nối> <Tên Table 2> ON <Tên Table 1>.<Tên cột>=<Tên Table 2>.<Tên cột> [, . . .] WHERE <BT Điều kiện> VD: Liệt kê kết quả học tập sinh viên khoa “TH” thông tin gồm : Masv, Hosv, Tensv, Phai, Ngaysinh, Makhoa, Mamh, Diem SELECT Sinhvien.masv, Sinhvien.hosv, Sinhvien.tensv, Sinhvien.phai, Sinhvien.ngaysinh, Sinhvien.makhoa, Ketqua.mamh, Ketqua.diem; FROM sinhvien , Ketqua WHERE sinhvien.masv=ketqua.masv and Sinhvien.makhoa = "TH" Hoặc
  • 9. Giaùo Trình Heä Quaûn Trò CSDL SQLServer 2000 Trang 54 SELECT Sinhvien.masv, Sinhvien.hosv, Sinhvien.tensv, Sinhvien.phai, Sinhvien.ngaysinh, Sinhvien.makhoa, Ketqua.mamh, Ketqua.diem; FROM sinhvien INNER JOIN ketqua ON Sinhvien.masv = Ketqua.masv; WHERE Sinhvien.makhoa = "TH" Ghi chú: Tập kết quả của 2 cú pháp này sẽ giống nhau. Tuy nhiên có một sự khác nhau VD: Liệt kê các sản phNm thuộc loại 1 chưa có đặt hàng Cú pháp 1: Select MaSp, TenSP, QuiCach From SanPham Where MaLoai=1 and MaSP N ot In (Select MaSP From ChitietDH) Cú pháp 2: Select MaSp, TenSP, QuiCach From SanPham Left Join ChiTietDH ON SanPham.MaSP=ChiTietDh.MaSP Where MaLoai=1 Nhận xét: • Đối với các câu truy vấn thông thường thì sử dụng cú pháp 1 rõ ràng và dễ hiểu hơn • Đối câu truy vấn liên kết thì cú pháp 2 ngắn gọn hơn. Tuy nhiên nếu câu truy vấn có nhiều bảng thì sẽ phức tạp hơn. • Sử dụng cú pháp nào tùy theo người sử dụng. 3. Làm việc với các truy vấn con Một truy vấn con có thể trả về một cột đơn hoặc một giá trị đơn ở bất kỳ nơi đâu 1 giá trị đơn có thể sử dụng. Và có thể được so sanh bởi các toá tử so sánh. Các từ khoá In và Exist VD : Liệt kê các sản phNm Mã loại là 1 có đặt hàng Cú pháp 1 : Select MaSp, TenSP, QuiCach From SanPham Where MaLoai=1 and MaSP In (Select MaSP From ChitietDH) Cú pháp 2 : Select MaSp, TenSP, QuiCach From SanPham Where Exists (Select * From ChiTietDh Whrere MaSP=SanPham.MaSP and MaLoai=1) 4. Tạo Union Query – Query Hợp Nhất SELECT <DS Các cột> FROM <DS Các Table> [WHERE <Điều kiện>] UNION SELECT <DS Các cột> FROM <DS Các Table> [WHERE <Điều kiện>] UNION . . . . DSVùng chọn phải giống nhau trong các mệnh đề SELECT VD: Lliệt kê ds khách mời dự họp tất niên gồm khách hàng và nhân viên Select TenKH AS TenKM, DiaChiKh As DiaChiKM, DienThoaiKh As DienThoaiKM From KhachHang
  • 10. Giaùo Trình Heä Quaûn Trò CSDL SQLServer 2000 Trang 55 UN ION Select Trim(HoN V)+” “+ Trim(TenN V) , DiaChiN V, DienThoaiN V From N hanVien 5. SELECT INTO Phát biểu Select InTo cho phép tạo kết quả mới dựa trên kết quả truy vấn. Bảng mới được tạo dựa trên các cột bạn xác định trong danh sách chọn lựa. Cú pháp : Select <DS Các cột> Into <Tên Table> From <DS Các Table> [Where <Điều kiện>] VD: Select * Into TempKhachHang From KhachHang Có 2 loại bảng: Bảng thường trực : Sử dụng Select InTo định nghĩa một bảng và đưa dữ liệu vào trong đó Bảng tạm thời : Các bảng này sẽ nằm trong CSDL TempDb VD: Select * Into #TempKhachHang From KhachHang Ghi chú : N ếu muốn thêm các dòng vào một bảng đã có ta sử dụng IN SERT Hoặc IN SERT IN TO VD: IN SERT TempKhachHang Select * From KhachHang