Bài giảng SQL - Chương 5: Ngôn ngữ SQL
Khái niệm về cấu trúc vật lý
- Máy chủ (Server): là các máy tính cung cấp các tài
nguyên chia sẻ trên mạng.
- Máy trạm (Client): là các máy tính được phép truy xuất
các tài nguyên đã được chia sẻ trên mạng.
- Dây cáp mạng (Cable hoặc Media): là một hệ thống dây
cáp nối kết vật lý các máy tính, máy in lại với nhau
- Dữ liệu chung (Shared data):
là các tập tin, thư mục mà
người sử dụng trong hệ thống
mạng có thể truy xuất vào
máy chủ từ các máy trạm
atabase Diagram
- Nhấn nút Yes
- Chọn các bảng dữ liệu muốn tạo mô hình quan hệ
- Nhấn nút Add
92
Xây dựng 1 CSDL với SQL Server
Môn học: CƠ SỞ DỮ LiỆU
21-03-2012
47
Tạo mô hình quan hệ (Diagram)
- Chương trình tự động tạo mô hình quan hệ theo các ràng
buộc khóa ngoại đã khai báo.
93
Xây dựng 1 CSDL với SQL Server
Môn học: CƠ SỞ DỮ LiỆU
Nhập liệu
- Phải nhập liệu cho bảng quan hệ 1 trước (bảng có biểu
tượng chìa khóa)
Nhập bảng KHOA hoặc MONHOC trước, rồi đến bảng SINHVIEN,
cuối cùng mới nhập liệu cho bảng KETQUA .
94
Xây dựng 1 CSDL với SQL Server
Môn học: CƠ SỞ DỮ LiỆU
21-03-2012
48
Nhập liệu
- Cú pháp nhập liệu:
insert into Tên_bảng (Tên_cột_1, Tên_cột_2, U)
values (Giá _trị_1, Giá_trị_2, U)
- Lưu ý:
Giá _trị_1, Giá_trị_2, U là các giá trị nhập liệu tương ứng với
Tên_cột_1, Tên_cột_2, U
Có thể lược bỏ (Tên_cột_1, Tên_cột_2, U) nếu nhập liệu
đúng với thứ tự và cấu trúc các cột đã khai báo trong lúc tạo
bảng. Cú pháp trở thành:
insert into Tên_bảng values (Giá _trị_1, Giá_trị_2, U)
95
Xây dựng 1 CSDL với SQL Server
Môn học: CƠ SỞ DỮ LiỆU
Nhập liệu
- Qui cách nhập liệu:
Kiểu chuỗi: đặt trong cặp nháy đơn ‘ ’. Nếu nhập liệu có dấu (kiểu nchar
hoặc nvarchar) thì thêm ký tự N phía trước .
∗ Ví dụ:
insert into KHOA values ('AV', N'Anh Văn')
insert into KHOA values ('LS', N'Lịch sử')
insert into KHOA values ('TH', N'Tin học')
insert into KHOA values ('TR', N'Triết')
insert into KHOA values ('VL', N'Vật lý')
insert into KHOA values ('SH', N'Sinh học')
96
Xây dựng 1 CSDL với SQL Server
Môn học: CƠ SỞ DỮ LiỆU
21-03-2012
49
Nhập liệu
- Qui cách nhập liệu:
Kiểu số: nhập liệu các con số, không sử dụng cặp dấu nháy đơn.
∗ Ví dụ:
insert into MONHOC values('01', N'Nhập môn máy tính', 30)
insert into MONHOC values('02', N'Trí tuệ nhân tạo', 45)
insert into MONHOC values('03', N'Truyền tin', 45)
insert into MONHOC values('04', N'Đồ họa', 50)
insert into MONHOC values('05', N'Văn phạm', 40)
insert into MONHOC values('06', N'Đàm thoại', 30)
insert into MONHOC values('07', N'Vật lý nguyên tử', 30)
97
Xây dựng 1 CSDL với SQL Server
Môn học: CƠ SỞ DỮ LiỆU
Nhập liệu
- Qui cách nhập liệu:
Kiểu ngày: nhập giá trị tháng trước, ngày sau (yyyy-mm-dd) và đặt trong
cặp dấu nháy đơn ‘ ’
∗ Ví dụ:
insert into SINHVIEN values ('A01',N'Nguyễn Thu',N’Hải',0,'1980-02-23',N'TP.HCM','AV',100000)
insert into SINHVIEN values ('A02',N'Trần Văn',N'Chính',1,'1982-12-24',N'TP.HCM','TH',100000)
insert into SINHVIEN values ('A03',N'Lê Thu Bạch',N'Yến',0,'1982-12-12',N'Hà Nội','AV',140000)
insert into SINHVIEN values('A04',N'Trần Anh',N'Tuấn',1,'1984/12/08',N'Long An','LS',80000)
insert into SINHVIEN values('A05',N'Trần Thanh',N'Triều',1,'1980-02-01',N'Hà Nội','VL',80000)
insert into SINHVIEN values('B01',N'Trần Thanh',N'Mai',0,'1981-12-20',N'Bến Tre','TH',200000)
insert into SINHVIEN values('B02',N'Trần Thị Thu',N'Thủy',0,'1982-02-13',N'TP.HCM','TH',30000)
insert into SINHVIEN values('B03',N'Trần Thị',N'Thanh',0,'1982-12-31',N'TP.HCM','TH',50000)
98
Xây dựng 1 CSDL với SQL Server
Môn học: CƠ SỞ DỮ LiỆU
21-03-2012
50
Truy vấn dữ liệu
- Cấu trúc câu lệnh Select
Select [Tên_bảng.]Tên_cột [, ]
From Tên_bảng_1 Tên_bảng_2
Where Điều_kiện
Group by Các_cột_gom_nhóm
Having Điều_kiện_lọc_nhóm
Order by [Tên_bảng.]Tên_cột_cần_sắp_xếp [asc / desc, ]
Compute Hàm_thống_kê [By Tên_cột]
99
Xây dựng 1 CSDL với SQL Server
Môn học: CƠ SỞ DỮ LiỆU
Truy vấn dữ liệu
- Ghi chú:
Mệnh đề Select: chứa các cột, các hàm muốn hiển thị.
Nếu Tên_Cột tồn tại trong nhiều bảng, ta phải ghi
rõ:Tên_Bảng.Tên_Cột
Nếu hiển thị tất cả các cột trong bảng: Ten_Bang.*
100
Xây dựng 1 CSDL với SQL Server
Môn học: CƠ SỞ DỮ LiỆU
21-03-2012
51
Truy vấn dữ liệu
- Ghi chú:
Các toán tử dùng trên mệnh đề Select
∗ Cú pháp: Select Toán_tử [Tên_bảng.]Tên_cột [, U]
∗ Với 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
Top n with ties: lấy những dòng thuộc n cấp đầu tiên
theo giá trị của cột được sắp xếp
Top n percent: lấy N % số dòng trả về
101
Xây dựng 1 CSDL với SQL Server
Môn học: CƠ SỞ DỮ LiỆU
Truy vấn dữ liệu
- Ghi chú:
Trong mệnh đề Select ta có thể dùng cấu trúc lệnh:
Case
When Điều_kiện_1 Then Giá_trị_1
When Điều_kiện_2 Then Giá_trị_2
U
Else
Giá_trị_n
End
102
Xây dựng 1 CSDL với SQL Server
Môn học: CƠ SỞ DỮ LiỆU
21-03-2012
52
Truy vấn dữ liệu
- Ghi chú:
Mệnh đề From: cho biết dữ liệu trên câu truy vấn được lấy từ
các bảng nào
Nếu dữ liệu lấy từ nhiều bảng thì các bảng này phải có quan hệ
với nhau:
- Cú pháp:
Bảng_ 1 inner join Bảng_2 on Bảng_1.Tên_cột = Bảng_2.Tên_cột
103
Xây dựng 1 CSDL với SQL Server
Môn học: CƠ SỞ DỮ LiỆU
Truy vấn dữ liệu
- Ghi chú:
Nếu hai bảng liên kết với nhau qua mệnh đề inner join thì kết
quả trả về là những dòng của hai bảng có giá trị bằng nhau tại
cột liên kết.
Nếu hai bảng liên kết với nhau qua mệnh đề left join (right
join) thì kết quả trả về là những dòng của hai bảng có giá trị
bằng nhau tại cột liên kết và các dòng của bảng bên trái (bên
phải) có dữ liệu không bằng dữ liệu của cột liên kết trong bảng
kia.
Nếu hai bảng liên kết với nhau qua mệnh đề full join thì kết
quả trả về là những dòng của hai bảng có giá trị bằng nhau tại
cột liên kết và các dòng dữ liệu của cả hai bảng không bằng
nhau tại cột liên kết.
104
Xây dựng 1 CSDL với SQL Server
Môn học: CƠ SỞ DỮ LiỆU
21-03-2012
53
Truy vấn dữ liệu
- Ghi chú:
Mệnh đề Where: để lọc dữ liệu trả về hoặc để gom nhóm
Nếu có nhiều điều kiện lọc thì các điều kiện này phải kết với
nhau bằng toán tử and (và) hoặc or (hoặc).
Trong mệnh đề Where, có thể sử dụng các toán tử:
∗ Like tìm chuỗi gần đúng
% : đại diện 1 chuỗi các ký tự
_ (Gạch dưới): đại diện 1 ký tự
∗ Between Giá_trị_1 and Giá_trị_2
105
Xây dựng 1 CSDL với SQL Server
Môn học: CƠ SỞ DỮ LiỆU
Truy vấn dữ liệu
- Ghi chú:
Mệnh đề Group by: để gom nhóm dữ liệu
Mệnh đề này phải có khi câu truy vấn có sử dụng hàm thống kê
và có lấy thêm các cột không sử dụng hàm thống kê trên mệnh
đề Select
Cú pháp: Group By Danh_sách_cột, Biểu_thức
∗ Với Danh_sách_cột, Biểu_thức: là tất cả các cột không sử dụng hàm
thống kê trên mệnh đề Select, lược bỏ các nhãn (as ten_nhan)
106
Xây dựng 1 CSDL với SQL Server
Môn học: CƠ SỞ DỮ LiỆU
21-03-2012
54
Truy vấn dữ liệu
- Ghi chú:
Các Hàm thống kê:
∗ Sum (Tên_cột): tính tổng với cột có kiểu số
∗ Count (Tên_cột / *): đếm tổng số dòng
∗ Avg (Tên_cột): tính giá trị trung bình cộng
∗ Max (Tên_cột): giá trị lớn nhất
∗ Min (Tên_cột): giá trị nhỏ nhất
107
Xây dựng 1 CSDL với SQL Server
Môn học: CƠ SỞ DỮ LiỆU
Truy vấn dữ liệu
- Ghi chú:
Mệnh đề Having: dùng để lọc nhóm dữ liệu, chỉ tồn tại khi điều
kiện lọc dữ liệu có hàm thống kê.
Chú ý: trong câu truy vấn có hai mệnh đề lọc dữ liệu là Where
và Having
∗ Where: lọc dữ liệu để tạo nhóm (các điều kiện không sử
dụng hàm thống kê).
∗ Having: lọc nhóm (các điều kiện có sử dụng hàm thống kê).
108
Xây dựng 1 CSDL với SQL Server
Môn học: CƠ SỞ DỮ LiỆU
21-03-2012
55
Truy vấn dữ liệu
- Ghi chú:
Mệnh đề OrDer By: để sắp xếp dữ liệu.
∗ Asc: tăng dần (default)
∗ Desc: giảm dần
Mệnh đề Compute /Compute By : tạo giá trị thống kê cuối
kết quả hoặc thống kê theo cột.
∗ Compute Hàm_thống_kê: tạo thống kê cuối kết quả
∗ Compute Hàm_thống_kê By [Tên_bảng.]Tên_cột: thống kê theo cột,
dữ liệu phải được sắp xếp theo cột này.
Chú ý: Trong View không có mệnh đề này
109
Xây dựng 1 CSDL với SQL Server
Môn học: CƠ SỞ DỮ LiỆU
Truy vấn dữ liệu
- Toán tử UNION:
Dùng để nối kết quả của hai câu truy vấn thành một với điều
kiện:
∗ Số cột trả về của hai câu truy vấn giống nhau.
∗ Các cột từng đôi một phải cùng kiểu dữ liệu.
110
Xây dựng 1 CSDL với SQL Server
Môn học: CƠ SỞ DỮ LiỆU
21-03-2012
56
Thêm nhiều dòng vào bảng
- Cú pháp:
insert into Tên_bảng_đích (Tên_cột_1, Tên_cột_2 [,])
select Tên_bảng_nguồn.Tên_cột, Giá_trị, Biểu_thức,
from
111
Xây dựng 1 CSDL với SQL Server
Môn học: CƠ SỞ DỮ LiỆU
Sub Query
- Định nghĩa:
• Là câu truy vấn mà kết quả trả về là điều kiện để so sánh, gán giá
trị cho câu truy vấn khác.
- Đặc điểm:
• Chỉ trả về 1 cột dữ liệu. Có thể là:
1 dòng:
Dùng các toán tử so sánh giá trị: =, , =,
Nhiều dòng:
Dùng các toán tử so sánh tập hợp:
in (nằm trong), not in (không nằm trong), >=ALL (lớn nhất).
112
Xây dựng 1 CSDL với SQL Server
Môn học: CƠ SỞ DỮ LiỆU
21-03-2012
57
Sub Query
- Định nghĩa:
• Là câu truy vấn mà kết quả trả về là điều kiện để so sánh, gán giá
trị cho câu truy vấn khác.
- Đặc điểm:
• Chỉ trả về 1 cột dữ liệu. Có thể là:
1 dòng:
Dùng các toán tử so sánh giá trị: =, , =,
Nhiều dòng:
Dùng các toán tử so sánh tập hợp:
in (nằm trong), not in (không nằm trong), >=ALL (lớn nhất).
113
Xây dựng 1 CSDL với SQL Server
Môn học: CƠ SỞ DỮ LiỆU
Cập nhật dữ liệu bảng
- Cập nhật dữ liệu trên một bảng:
Cú pháp:
update Tên_bảng
set Tên_cột = giá_trị_hoặc_biểu_thức
[where điều_kiện_cập_nhật]
- Cập nhật dữ liệu trên một bảng, điều kiện cập nhật liên
quan nhiều bảng:
Cú pháp:
update Tên_Bảng
set Tên_cột = giá_trị_hoặc_biểu_thức
from ...
where điều_kiện_cập_nhật
Chú ý: Giá trị cập nhật không được dùng hàm thống kê
114
Xây dựng 1 CSDL với SQL Server
Môn học: CƠ SỞ DỮ LiỆU
21-03-2012
58
Xóa dữ liệu bảng
- Xóa dữ liệu trên một bảng:
Cú pháp:
deleteTên_bảng
where điều_kiện_xóa
- Xóa dữ liệu trên một bảng,điều kiện xóa liên quan nhiều
bảng:
Cú pháp:
deleteTên_bảng
from ...
where điều_kiện_xóa
Chú ý: Không thể xóa dữ liệu trên bảng quan hệ 1 mà dữ liệu này đã có bên
bảng quan hệ n (ràng buộc khóa ngoại)
115
Xây dựng 1 CSDL với SQL Server
Môn học: CƠ SỞ DỮ LiỆU
Tạo bảng có cấu trúc và dữ liệu từ câu truy vấn
- Cú pháp:
Select [Tên_bảng.]Tên_cột [, ]
Into Tên_bảng_mới
From ...
116
Xây dựng 1 CSDL với SQL Server
Môn học: CƠ SỞ DỮ LiỆU
File đính kèm:
Bài giảng SQL - Chương 5_Ngôn ngữ SQL.pdf

