770 likes | 895 Views
HỆ QUẢN TRỊ CSDL (tiếp). Một số khái niệm. Thuộc tính(column): Là đặc tính của các thực thể được xác theo một miền giá trị của nó. Miền giá trị thường là các kiểu số nguyên, số thực, xâu ký tự, kiểu datetime,…
E N D
Một số khái niệm • Thuộc tính(column): • Là đặc tính của các thực thể được xác theo một miền giátrị của nó. • Miền giá trị thường là các kiểu số nguyên, số thực, xâu ký tự, kiểu datetime,… • Một thuộc tính mà giá trị của nó xác định duy nhất mỗi thực thể trong tập được gọi là Khóa.
Một số khái niệm • Quan hệ(table): • Là một tập các thuộc tính xác định lên một tập các thực thể. • Mỗi quan hệ xác định duy nhất trong một CSDL => Là một bảng dữ liệu có cột là các thuộc tính và các hàng là các bộ dữ liệu cụ thể của quan hệ.
Một số khái niệm • Bộ dữ liệu(record): • Là một tập các miền giá trị của các thuộc tính xác định lên thực thể. • Là một bản ghi trong một quan hệ(table). • Không có hai bộ dữ liệu giống nhau trong một quan hệ(table)
Một số khái niệm 3 thuộc tính(column) 9 bộ dữ liệu (record) Quan hệ lớp học(table lophoc)
Một số khái niệm • Liên kết: • Là một liên kết kết hợp một số thực thể(hay quan hệ) với nhau. • Ví dụ: • Sinh viên - Lớp học ; Sinh viên – Khoa • Sinh viên – Môn học ; sinh viên – Bằng TN • Các loại liên kết • Liên kết một – một: 1 - 1 • Liên kết một – nhiều: 1 – n • Liên kết nhiều – nhiều: n - n
Một số khái niệm • Khóa của quan hệ • Siêu khóa: là một tập hợp một hay nhiều thuộc tính của quan hệ(table) có tính chất xác định duy nhất một bộ trong mỗi thể hiện của quan hệ(table) • Khóa: là một siêu khóa sao cho mọi tập con thực sự của nó không là siêu khóa => Khóa là siêu khóa tối thiểu về thuộc tính
Một số khái niệm • Khóa của quan hệ • Khóa ngoài: là một tập hợp gồm một hay nhiều thuộc tính là khóa của một lược đồ quan hệ(table) khác.
Một số khái niệm Khóa Chính(Primary Keys) Khóa Ngoài(Foreign Keys)
Một số khái niệm • Các ràng buộc toàn vẹn • Ràng buộc thực thể (Khóa) • Ràng buộc tham chiếu (Khóa ngoài) • Ràng buộc ngữ nghĩa
NGÔN NGỮ ĐỊNH NGHĨA DỮ LIỆU(DDL – Data Definition Language)
Ngôn ngữ định nghĩa dữ liệu - DDL • Tạo CSDL: cú pháp đơn giản • Create DatabaseTên_CSDL • Xóa CSDL: • Drop DatabaseTên_CSDL
Ngôn ngữ định nghĩa dữ liệu - DDL • Tạo bảng: • Cú pháp đơn giản: Create Table Tên_bảng ( Tên_cột_1Kiểu_dữ_liệu [default giá_trị] [Not Null] , Tên_cột_2Kiểu_dữ_liệu [default giá_trị] [Not Null] [,…] )
Ngôn ngữ định nghĩa dữ liệu - DDL • Tạo bảng: • Ví dụ: Create Table SinhVien ( Masv int not null, hoten nvarchar(100) not null, ngaysinh datetime, gioitinh nvarchar(50) default ‘Nam’, quequan nvarchar(255) )
Ngôn ngữ định nghĩa dữ liệu - DDL • Tạo bảng với ràng buộc duy nhất • Cú pháp: Create Table Tên_bảng ( Tên_cột_1Kiểu_dữ_liệu [default giá_trị] [Not Null] , Tên_cột_2Kiểu_dữ_liệu [default giá_trị] [Not Null] [,…] [ CONSTRAINTPK_Tênbảng_têncột PRIMARY KEY(Danh_sách_cột_khóa_chính) ] [,] [CONSTRAINT UQ_Tênbảng_têncột UNIQUE(Danh_sách_các_cột)] )
Ngôn ngữ định nghĩa dữ liệu - DDL • Tạo bảng với ràng buộc duy nhất Create Table SinhVien ( Masv int, hoten nvarchar(100) not null, gioitinh nvarchar(50) default ‘Nam’, CMTND nvarchar(10) not null CONSTRAINT PK_Sinhvien_masv PRIMARYKEY(Masv) , CONSTRAINT UQ_Sinhvien_cmtnd UNIQUE(CMTND) )
Ngôn ngữ định nghĩa dữ liệu - DDL • Tạo bảng với ràng buộc khóa ngoại • Cú pháp: Create Table Tên_bảng ( Tên_cột_1Kiểu_dữ_liệu [default giá_trị] [Not Null] , Tên_cột_2Kiểu_dữ_liệu [default giá_trị] [Not Null] [,…] [ CONSTRAINTFK_Tênbảng_têncột FOREIGN KEY(Danh_sách_khóa_ngoại) REFERENCES Tên_bảng_tham_chiếu(Danh_sách_cột_tham_chiếu)] )
Ngôn ngữ định nghĩa dữ liệu - DDL • Tạo bảng với ràng buộc miền giá trị: Create Table Tên_bảng ( Tên_cột_1Kiểu_dữ_liệu [default giá_trị] [Not Null] , Tên_cột_2Kiểu_dữ_liệu [default giá_trị] [Not Null] [,…] [ CONSTRAINTCK_Tênbảng_têncột CHECK(Biểu_thức_luận_lý)] ) Biểu thức luận lý: cho giá trị đúng/sai
Ngôn ngữ định nghĩa dữ liệu - DDL • Ví dụ tạo ràng buộc khóa ngoại Create Table DiemThi ( Masv int, Mamon int, Diem decimal(4,2) CONSTRAINT FK_Sinhvien_masv FOREIGNKEY(Masv) REFERENCES Sinhvien(Masv), CONSTRAINT FK_Monhoc_mamon FOREIGNKEY(Mamon) REFERENCES Monhoc(Mamon), CONSTRAINT CK_Sinhvien_diem CHECK (Diem>=0) )
Ngôn ngữ định nghĩa dữ liệu - DDL • Thay đổi cấu trúc của bảng: • Thêm cột: Alter TableTên_bảng AddTên_cột Kiểu_dữ_liệu • Xóa cột: Alter TableTên_bảng Drop ColumnTên_cột • Xóa bảng: Drop TableTên_bảng • Sửa đổi kiểu dữ liệu: Alter TableTên_bảng Alter Column Tên_cột Kiểu_dliệu_mới
Ngôn ngữ định nghĩa dữ liệu - DDL • Thay đổi cấu trúc của bảng: • Thêm ràng buộc: Alter TableTên_bảng Add CONSTRAINTPK_Tênbảng_têncột PRIMARY KEY(Danh_sách_cột_khóa_chính) Alter TableTên_bảng Add CONSTRAINTFK_Tênbảng_têncột FOREIGN KEY(Danh_sách_khóa_ngoại) REFERENCES Tên_bảng_tham_chiếu(Danh_sách_cột_tham_chiếu)
Ngôn ngữ định nghĩa dữ liệu - DDL • Thay đổi cấu trúc của bảng: • Thêm ràng buộc: Alter TableTên_bảng Add CONSTRAINTCK_Tênbảng_têncột CHECK(Biểu_thức_luận_lý) Alter TableTên_bảng Add CONSTRAINT UQ_Tênbảng_têncột UNIQUE(Danh_sách_các_cột)
Ngôn ngữ định nghĩa dữ liệu - DDL • Thay đổi cấu trúc của bảng: • Xóa ràng buộc: Alter TableTên_bảng Drop CONSTRAINT Tên_ràng_buộc
Ngôn ngữ định nghĩa dữ liệu - DDL • Ví dụ: • Thêm ràng buộc: Alter TableTên_bảng Add CONSTRAINTCK_Sinhvien_gioitinh CHECK (Gioitinh in(‘Nam’,N’Nữ’)) • Xóa ràng buộc: Alter TableTên_bảng Drop CONSTRAINTCK_Sinhvien_gioitinh
Lệnh hiển thị dữ liệu • Sử dụng cú pháp lệnh Select Select [Tên_Bảng1.]Tên_Cột [,…] FromTên_Bảng1 [,Tên_Bảng2,…] [ Where <Biểu_thức_điều_kiện>] [ Order by [Tên_bảng.]Tên_cột[asc/desc] [,…] Order by: sắp xếp thuộc tính theo thứ tự tăng/giảm
Lệnh hiển thị dữ liệu • Ví dụ đơn giản: SelectSinhVien.Masv, Sinhvien.hoten, DKMonHoc.Tenmon, DKMonHoc.SoTC FromSinhVien, DKMonHoc
Biểu thức điều kiện sau mệnh đề Where • Sử dụng phép toán so sánh: =, > ,< ,>=,<=,<> • Sử dụng phép toán logic: • And, or, not • tên_cộtIs null • tên_cột Betweengiá_trị_1andgiá_trị_2 • tên_cộtin(tập_hợp); • tên_cột Like ‘chuỗi’: _ : 1 ký tự bỏ qua % : chuỗi chưa biết số ký tự bỏ qua
Biểu thức điều kiện sau mệnh đề Where • Ví dụ 1: Đưa ra các mặt hàng có bán với giá >$30 và số lượng <2 • Câu truy vấn: Select * From Chi_Tiet_DH Where (gia>30) and (sluong_dat<2)
Biểu thức điều kiện sau mệnh đề Where • Ví dụ 2: Đưa ra các mặt hàng có bán với giá từ $30 cho đến $100 • Câu truy vấn: Select * From Chi_Tiet_DH Where Gia between 30 and 100
Biểu thức điều kiện sau mệnh đề Where • Ví dụ 3: đưa ra các cửa hàng đặt tại tỉnh bắt đầu bằng chữ ‘Hà’ • Câu truy vấn: Select * From cua_hang Where Tinh_CH like 'Hà_%'; Câu truy vấn sau? select * from cua_hang where Tinh_CH like 'Hà%';
Biểu thức điều kiện sau mệnh đề Where • Ví dụ 4: Đưa ra các khách hàng chưa có số điện thoạivà không có mã khách hàng dạng KH0* • Câu truy vấn: Select * From khach_hang Where Tel_KH isnulland Ma_KH notlike 'KH0%'
Biểu thức điều kiện sau mệnh đề Where • Ví dụ 5: đưa ra các cửa hàng có trụ sở đặt tại Hà Tây và Hà Nam • Câu truy vấn: Select * From cua_hang Where Tinh_CH=‘Hà Tây’ or Tinh_CH=‘Hà Nam’; Select * From cua_hang Where Tinh_CH in(‘Hà Tây’,‘Hà Nam’);
Gom nhóm dữ liệu SELECT [tên_cột,] hàm_nhóm_dữ_liệu(tên_cột) FROMtên_bảng [WHEREđiều_kiện] [GROUP BY tên_cột] [HAVINGđiều_kiện_nhóm] • Lưu ý: - Tên cột xuất hiện trong dòng Select phải xuất hiện trong • Group By hoặc trong hàm gom nhóm dữ liệu. • - Điều kiện nhóm đặt trong having không đặt trong where
Danh sách hàm nhóm dữ liệu • Count(biểu_thức): Đếm số bản ghi thỏa điều kiện • Max(biểu_thức): trả về giá trị lớn nhất của biểu thức thỏa điều kiện • Min(biểu_thức): trả về giá trị nhỏ nhất của biểu thức thỏa điều kiện • Sum(biểu_thức): tính tổng giá trị biểu thức thỏa điều kiện • Avg(biểu_thức): tính giá trị trung bình thỏa điều kiện
Nhóm dữ liệu • Ví dụ 7: Tìm ra giá cao nhất và giá thấp nhất của mặt hàng đã bán, số mặt hàng đã từng bán. • Câu truy vấn Select max(gia) as Max_Gia_MH, min(gia) as Min_Gia_MH, count(distinct ma_mh) as So_MH From chi_tiet_dh;
Gom nhóm dữ liệu Giá mặt hàng bán lớn nhất, nhỏ nhất Số mặt hàng đã bán
Gom nhóm dữ liệu • Ví dụ 8: Thống kê danh sách các mặt hàng đã từng bán với Tổng thành tiền, Giá từng bán cao nhất, từng bán thấp nhất. • Câu truy vấn Select Ma_MH, Sum(sluong_dat*gia) as Tong_Tien, Max(Gia) as Max_Gia, Min(Gia) as Min_Gia From chi_tiet_dh Groupby Ma_MH;
Nhóm dữ liệu Tổng tiền đã bán Giá lần bán Lớn nhất Nhỏ nhất đối với từng loại mặt hàng
Hiển thị những bản ghi đầu tiên • Topsố_người{*[,ds_cột]} • Ví dụ 9: Đưa ra danh sách 5 người đứng đầu trong danh sách khách hàng đầu tiên có số điện thoại. • Câu truy vấn: Selecttop 5* From khach_hang Where Tel_KH is not null;
Các hàm xử lý trong SQL • Hàm toán học • Hàm xử lý xâu • Hàm ngày tháng • Hàm chuyển đổi
Hàm toán học • Sqrt(n): căn bậc 2 • Square(n): hàm bình phương • Sign(n): hàm lấy dấu • Sign(10) = Sign(5) = 1, Sign(-2) = -1 • Pi(): trả về giá trị Pi • Round(n): làm tròn • Ceiling(n): làm tròn lên • Floor(n): làm tròn xuống
Hàm xử lý xâu • Upper(str) : chuyển đổi xâu sang chữ HOA • Upper(‘Hà Nội’) => ‘HÀ NỘI’ • Lower(str) : chuyển đổi xâu sang chữ thường • Lower(‘Hà Nội’) => ‘hà nội’ • Len(str) : trả về độ dài của xâu • + : phép toán ghép 2 xâu • ‘Hà Nội’ + ‘Hà Nam’ => ‘Hà NộiHà Nam’ • Ltrim(str) : loại bỏ ký tự trống bên trái xâu • Ltrim(‘ Hà Nội ’) => ‘ Hà Nội’ • Rtrim(str) : loại bỏ ký tự trống bên phải xâu • Rtrim(‘ Hà Nội ’) => ‘Hà Nội ’
Hàm xử lý xâu • Left(str,n) : trả về n ký tự bên trái xâu • Left(‘Hà Nội’,5) => ‘Hà Nộ’ • Right(str,n) : trả về n ký tự bên phải xâu • Left(‘Hà Nội’,5) => ‘à Nội’ • Substring(str,m,n) : trả về n ký tự bắt đầu từ vị trí thứ m trong xâu • Subtring(‘Hà Nội’,2,4) => ‘à Nộ’; • Replace(str,str1,str2) : trả về xâu str1 bằng xâu str2 nếu str xuất hiện trong str • Replace(‘Hà Nội’,‘Nội’,‘Nam’) => ‘Hà Nam’ • Reverse(str) : trả về xâu đảo ngược của xâu str • Reverse(‘Hà Nội’) => ‘iộN àH’