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