CHƯƠNG III: NGÔN NGỮ SQL
SQL (Structured Query Language) – ngôn ngữ
truy vấn có cấu trúc là ngôn ngữ con dữ liệu
quan hệ rất mạnh, dễ sử dụng. Hiện nay SQL
được được cài đặt trong hầu hết các phần
mềm hệ quản trị CSDL như Oracle, Dbase,
Access, Foxpro, SQL serverCác câu lệnh trong ngôn ngữ SQL được
chia thành hai loại:
• Các câu lệnh định nghĩa dữ liệu cho phép
tạo các thành phần trong CSDL như bảng,
cột (thuộc tính) và các chỉ dẫn.
• Các câu lệnh thao tác dữ liệu để lấy về
các mẫu tin (bản ghi) từ cơ sở dữ liệu
              
                                            
                                
            
 
            
                 22 trang
22 trang | 
Chia sẻ: phuongt97 | Lượt xem: 551 | Lượt tải: 0 
              
            Bạn đang xem trước 20 trang nội dung tài liệu Bài giảng Hệ quản trị Cơ sở dữ liệu - Chương III: Ngôn ngữ SQL - Nguyễn Nhật Minh, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
CHƯƠNG III: NGÔN NGỮ SQL 
 SQL (Structured Query Language) – ngôn ngữ 
 truy vấn có cấu trúc là ngôn ngữ con dữ liệu 
 quan hệ rất mạnh, dễ sử dụng. Hiện nay SQL 
 được được cài đặt trong hầu hết các phần 
 mềm hệ quản trị CSDL như Oracle, Dbase, 
 Access, Foxpro, SQL server 
 Các câu lệnh trong ngôn ngữ SQL được 
 chia thành hai loại:
• Các câu lệnh định nghĩa dữ liệu cho phép 
 tạo các thành phần trong CSDL như bảng, 
 cột (thuộc tính) và các chỉ dẫn.
• Các câu lệnh thao tác dữ liệu để lấy về 
 các mẫu tin (bản ghi) từ cơ sở dữ liệu
3.1. Các câu lệnh định nghĩa 
 dữ liệu:
 Tạo bảng
Câu lệnh tạo bảng có dạng tổng quát:
CREATE TABLE Tablename(FieldName 
 DataType [Not null],...)
Trong đó:
• FieldName là một từ đơn không có 
 khoảng trống, bắt đầu là chữ cái tiếp theo 
 là chữ cái (hoa hoặc thường) hoặc chữ số 
 hoặc dấu nối.
• DataType là kiểu dữ liệu 
 Ví dụ:
CREATE TABLE Sinhvien(Masv 
 smalliterger, Ho char(18), Ten char(8), 
 Ngsinh date, Gtinh char(3), Mtinh char(3), 
 Mhuyen char(3), Mlop char(3), Cogiadinh 
 logical)
 Thêm một trường mới
ALTER TABLE ADD [COLUMN] 
 DATATYPE()  ADD 
 [COLUMN] 
 DATATYPE()
 Thêm vào bảng các trường mới 
 có tên là  < 
 New_Field_Name_n> có kiểu dữ liệu là 
 DATATYPE với độ rộng là một cách 
 tương ứng. 
Ví dụ:
ALTER TABLE Sinhvien ADD Nganh char(3) ADD 
 Ngaynhaphoc date
 Xoá bảng 
 DROP TABLE TableName
 Xoá bảng được chỉ định bởi tên 
 (TableName) ra khỏi CSDL
• Ví dụ:
• DROP TABLE SINHVIEN
3.2. Các câu lệnh truy tìm 
 dữ liệu
Dạng tổng quát của câu lệnh truy 
 tim dữ liệu có dạng: 
SELECT *|[Field1|Expression1 [AS alias1], 
Field2| Expression2 [AS alias2], FieldN| 
ExpressionN [AS aliasN]] [DISTINCT]
[FROM Table1 | View1, Table2 | 
View2,,TableN | ViewN]
[WHERE ]
[GROUPE BY Field1, Field2,,FieldN]
[HAVING ]
[ORDER BY <Field_Name| Field_order | 
Expression> [ASC | DESC]] 
 Giải thích ý nghĩa các thành phần 
SELECT Xác định, tìm kiếm nội dung thông tin từ các trường:
 Dấu “*” hiểu là từ tất cả các trường.
FROM Xác định nguồn thông tin:
 Thông tin có thể từ các bảng hoặc các khung nhìn trong danh sách 
 liệt kê
WHERE Xác định điều kiện:
 Điều kiện là một biểu thức Boolean, chỉ các bản ghi (bộ|hàng) thoả 
 mãn điều kiện mới được đưa ra
Mẫu câu lệnh thường dùng nhất là:
 SELECT *|[Field1|Expression1 [AS alias1], Field2| Expression2 [AS 
 alias2], FieldN| ExpressionN [AS aliasN]] [DISTINCT]
 [FROM Table1 | View1, Table2 | View2,,TableN | ViewN]
 [WHERE ]
• GROUPE BY Phân nhóm hoặc gộp nhóm dữ liệu trong bảng:
 Có nghĩa rằng các bản ghi (bộ|hàng) có cùng giá trị trường sẽ được 
 gộp thành nhóm, trong quan hệ kết quả ta chỉ thấy các giá trị đại diện 
 của nhóm. Chú ý rằng danh sách cột sau mệnh đề GROUPE BY phải 
 bao hàm danh sách trường sau mệnh đề SELECT.
• HAVING thường đi kèm với GROUPE BY 
 trong đó biểu thức điều kiện , trong quan hệ 
 kết quả chỉ chứa các hàng thoả điều kiện . 
 Trong biểu thức điều kiện (xem) nếu có chứa toán hạng là một biến 
 trường thì biến trường đó phải có mặt trong danh sách trường sau 
 mệnh đề GROUPE BY.
• ORDER BY [ASC | DESC] Khi 
 tìm kiếm thông tin, các thông tin lấy về sẽ được sắp xếp theo giá trị 
 của các cột chỉ ra trong danh sách theo thứ tự tăng nếu dùng ASC, 
 giảm nếu dùng DESC (mặc định là ASC), các giá trị bằng nhau được 
 sắp liên tiếp liền kề nhau. Nếu có nhiều trường thứ tự sắp xếp ưu tiên 
 theo danh sách trường từ trái sang phải. Nếu trong lệnh có dùng 
 GROUPE BY việc sắp xếp sẽ chỉ có tác dụng cho từng nhóm được 
 tạo ra bởi GROUPE BY.
Câu lệnh SQL với những 
 tình huống phổ biến
 Tìm kiếm không điều kiện
• SELECT * FROM 
 Câu lệnh này có nghĩa rằng trả về tất cả các bản ghi với đầy đủ các trường 
 của bảng chỉ ra bởi .
 Ví dụ: SELECT * FROM Sinhvien
• SELECT FROM 
 Câu lệnh này có nghĩa rằng trả về tất cả các bản ghi với các trường chỉ ra 
 trong danh sách của bảng chỉ ra bởi . 
 Ví dụ: SELECT ho, ten, lop, nganh FORM Sinhvien
• SELECT DISTINCT FROM 
 Câu lệnh này có nghĩa rằng trả về bản ghi với các trường chỉ ra trong danh 
 sách của bảng chỉ ra bởi và không có bản ghi 
 (bộ) nào trùng nhau.
 Ví dụ: SELECT Tinh, Huyen DISTINCT FROM Sinhvien
 Tìm kiếm theo điều kiện. 
 dùng mệnh đề WHERE 
Ví dụ:
 SELECT Ho, Ten, Lop FROM Sinhvien WHERE nganh=404
Ví dụ:
 SELECT Ho, Ten, Lop FROM Sinhvien WHERE Mtinh BETWEEN 
 “01” and “03”
Ví dụ:
 SELECT Ho, Ten, Lop FROM Sinhvien WHERE nganh IN 
 (“101”,”102”,”103”)
 Các phép so sánh, các phép toán BETWEEN, LIKE, IN được tổ hợp 
 bởi các phép toán logic sẽ cho ta những mệnh đề logic biểu diễn 
 các điều kiện phức tạp hơn trong phép lọc với mệnh đề WHERE.
Ví dụ:
 SELECT Ho, Ten, Lop FROM Sinhvien WHERE Mtinh BETWEEN 
 “01” and “03” and nganh IN (“101”,”103”)
 trong quan hệ kết quả gồm các cột ho, ten, lop các sinh viên có que 
 quán thuộc các tỉnh có mã là 01, 02 hoặc 03 và có mã ngành học là 
 101 hoặc 103.
Các câu lệnh truy vấn lồng
 Trong câu lệnh truy vấn (chính) thành 
 phần sau HAVING hoặc WHERE ta lại 
 có một câu lệnh SELECT gọi là câu 
lệnh SELECT phụ và ta nói có câu lệnh 
 SELECT lồng. 
 Biểu thức so sánh sau HAVING hoặc WHERE 
 của các câu lệnh lồng có thể như sau:
 e[ANY | ALL | SOME] (SELECT)
 trong đó e là biểu thức,  là phép so sánh nào đó, ANY 
 hoặc SOME được hiểu là bất kỳ, ALL là tất cả
 Kết quả truy vấn ta sẽ được các mẩu tin của câu lệnh 
 SELECT chính thoả mãn phép so sánh với bất kỳ (ANY | 
 SOME) hoặc tất cả (ALL) mẩu tin thu được từ câu lệnh 
 SELECT phụ
Ví dụ:
 SELECT sobaodanh,hoten,nganh FROM Tuyensinh 
 WHERE diemtong>= ALL(SELECT diemtong FROM 
 Tuyensinh)
 Câu lệnh trên sẽ cho kết quả là danh sách những thí 
 sinh đạt điểm cao nhất 
 e [NOT] IN (SELECT)
 ở đây e cũng là biểu thức.
 Kết quả của truy vấn là những bản ghi có giá trị bằng 
 một giá trị trong kết quả của câu SELECT phụ.
Ví dụ:
SELECT DISTINCT MãsốNV
FROM NHÂNVIÊN_DỰ ÁN
WHERE (MãsốDA, Sốgiờ) 
IN (SELECT MãsốDA, Sốgiờ 
FROM NHÂNVIÊN_DỰ ÁN
WHERE MãsốNV = ‘NV001’); 
 Truy vấn này lấy ra mã nhân viêncủa tất cả các nhân 
 viên có cặp (mãsốDA, Sốgiờ) bằng với nhân viên 
 MãsốNV = ‘NV001’.
[NOT] EXISTS (SELECT)
 Kết quả của truy vấn là những bản ghi có 
 mặt trong kết quả của câu SELECT phụ
 Nối nhiều bảng với mệnh đề 
 INNER JOIN
SELECT  FROM Tablename1 INNER JOIN 
Tablename2 ON Tablename1.fieldname1 
Tablename2.fieldname2  [WHERE ]
Câu lệnh này tổ hợp bản ghi từ hai bảng 
Tablename1và Tablename2 nếu có giá trị so 
khớp bởi phép so sánh  các giá trị trên trường 
fieldname1 của bảng Tablename1 với trường 
fieldname2 của bảng Tablename2. 
 Ví dụ có hai bảng sau
KHACHHANG 
Makhach Hoten Congty 
001 Trần Văn Chung Hoàng Hà 
002 Nguyễn Tứ Kỳ Đông Đô 
003 Lê Hồng Hải Bình Minh 
 DONHANG 
 Makhach Sodonhang 
 001 123 
 005 127 
 003 125 
 Câu lệnh sau:
 SELECT Makhach, Hoten, Congty, Sodonhang FROM Khachhang 
 INNER JOINT Donhang ON Khachhang.Makhach=Donhang.Makhach
 sẽ cho kết quả là:
Makhach Hoten Congty Sodonhang 
001 Trần Văn Chung Hoàng Hà 123 
003 Lê Hồng Hải Bình Minh 125 
 Các câu lệnh cập nhật dữ liệu
• Nhập dữ liệu 
 INSERT INTO TableName(Field1, Fiel2, ...Fieldn) VALUES (Val1, Val2, 
 ...Valn)
 Khi các trường có vị trí cố định thì lệnh nhập có thể viết ngắn gọn:
 INSERT INTO TableName VALUES (Val1, Val2, ...Valn)
Ví dụ:
• Xoá bản ghi
 DELETE FROM [WHERE ]
 Xoá bản ghi thoả mãn điều kiện của mệnh đề WHERE của bảng 
 Ví dụ:
• Sửa đổi dữ liệu
 UPDATE SET <Field_Name1=Exp1, Field_Name1=Exp2,  
 Field_Name1=Exp3> WHERE .
 Các trường (sau SET) của những bản ghi thoả mãn 
 của bảng được thay thế bằng các giá trị của biểu thức tương 
 ứng.
            Các file đính kèm theo tài liệu này:
 bai_giang_he_quan_tri_co_so_du_lieu_chuong_iii_ngon_ngu_sql.pdf bai_giang_he_quan_tri_co_so_du_lieu_chuong_iii_ngon_ngu_sql.pdf