Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 22 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
22
Dung lượng
63,5 KB
Nội dung
CHƯƠNG III: NGÔN NGỮ SQL SQL (Structured Query Language) – ngôn ngữ truy vấn có cấu trúc ngôn ngữ liệu quan hệ mạnh, dễ sử dụng Hiện SQL được cài đặt hầu hết phần mềm hệ quản trị CSDL Oracle, Dbase, Access, Foxpro, SQL server Các câu lệnh ngôn ngữ SQL chia thành hai loại: • Các câu lệnh định nghĩa liệu cho phép tạo thành phần CSDL bảng, cột (thuộc tính) dẫn • Các câu lệnh thao tác liệu để lấy mẫu tin (bản ghi) từ sở liệu 3.1 Các câu lệnh định nghĩa 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 từ đơn khoảng trống, bắt đầu chữ chữ (hoa thường) chữ số dấu nối • DataType kiểu 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 trường ALTER TABLE ADD [COLUMN] DATATYPE() … ADD [COLUMN] DATATYPE() Thêm vào bảng trường có tên < New_Field_Name_1> … < New_Field_Name_n> có kiểu liệu DATATYPE với độ rộng 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 định tên (TableName) khỏi CSDL • Ví dụ: • DROP TABLE SINHVIEN 3.2 Các câu lệnh truy tìm liệu Dạng tổng quát câu lệnh truy tim 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 [ASC | DESC]] Giải thích ý nghĩa thành phần SELECT Xác định, tìm kiếm nội dung thông tin từ trường: Dấu “*” hiểu từ tất trường FROM Xác định nguồn thông tin: Thông tin từ bảng khung nhìn danh sách liệt kê WHERE Xác định điều kiện: Điều kiện biểu thức Boolean, ghi (bộ|hàng) thoả mãn điều kiện đưa Mẫu câu lệnh thường dùng 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 gộp nhóm liệu bảng: Có nghĩa ghi (bộ|hàng) có giá trị trường gộp thành nhóm, quan hệ kết ta thấy giá trị đại diện nhóm Chú ý 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 kèm với GROUPE BY biểu thức điều kiện , quan hệ kết chứa hàng thoả điều kiện Trong biểu thức điều kiện (xem…) có chứa toán hạng biến trường biến trường phải có mặt danh sách trường sau mệnh đề GROUPE BY • ORDER BY [ASC | DESC] Khi tìm kiếm thông tin, thông tin lấy xếp theo giá trị cột danh sách theo thứ tự tăng dùng ASC, giảm dùng DESC (mặc định ASC), giá trị liên tiếp liền kề Nếu có nhiều trường thứ tự xếp ưu tiên theo danh sách trường từ trái sang phải Nếu lệnh có dùng GROUPE BY việc xếp có tác dụng cho nhóm tạo GROUPE BY Câu lệnh SQL với tình phổ biến Tìm kiếm không điều kiện • SELECT * FROM Câu lệnh có nghĩa trả tất ghi với đầy đủ trường bảng Ví dụ: SELECT * FROM Sinhvien • SELECT FROM Câu lệnh có nghĩa trả tất ghi với trường danh sách bảng Ví dụ: SELECT ho, ten, lop, nganh FORM Sinhvien • SELECT DISTINCT FROM Câu lệnh có nghĩa trả ghi với trường danh sách bảng ghi (bộ) trùng 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, phép toán BETWEEN, LIKE, IN tổ hợp phép toán logic cho ta mệnh đề logic biểu diễn điều kiện phức tạp 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”) quan hệ kết gồm cột ho, ten, lop sinh viên có que quán thuộc tỉnh có mã 01, 02 03 có mã ngành học 101 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 WHERE ta lại có câu lệnh SELECT gọi câu lệnh SELECT phụ ta nói có câu lệnh SELECT lồng Biểu thức so sánh sau HAVING WHERE câu lệnh lồng sau: eθ[ANY | ALL | SOME] (SELECT…) e biểu thức, θ phép so sánh đó, ANY SOME hiểu bất kỳ, ALL tất Kết truy vấn ta mẩu tin câu lệnh SELECT thoả mãn phép so sánh với (ANY | SOME) tất (ALL) mẩu tin thu 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 cho kết danh sách thí sinh đạt điểm cao e [NOT] IN (SELECT…) e biểu thức Kết truy vấn ghi có giá trị giá trị kết 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 lấy mã nhân viêncủa tất nhân viên có cặp (mãsốDA, Sốgiờ) với nhân viên MãsốNV = ‘NV001’ [NOT] EXISTS (SELECT…) Kết truy vấn ghi có mặt kết 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 tổ hợp ghi từ hai bảng Tablename1và Tablename2 có giá trị so khớp phép so sánh θ giá trị trường fieldname1 bảng Tablename1 với trường fieldname2 bảng Tablename2 Ví dụ có hai bảng sau Câu lệnh sau: SELECT Makhach, Hoten, Congty, Sodonhang FROM Khachhang INNER JOINT Donhang ON Khachhang.Makhach=Donhang.Makhach cho kết là: Các câu lệnh cập nhật liệu • Nhập liệu INSERT INTO TableName(Field1, Fiel2, Fieldn) VALUES (Val1, Val2, Valn) Khi trường có vị trí cố định lệnh nhập viết ngắn gọn: INSERT INTO TableName VALUES (Val1, Val2, Valn) Ví dụ: • Xoá ghi DELETE FROM [WHERE ] Xoá ghi thoả mãn điều kiện mệnh đề WHERE bảng Ví dụ: • Sửa đổi liệu UPDATE SET WHERE Các trường (sau SET) ghi thoả mãn bảng thay giá trị biểu thức tương ứ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 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à: Các câu lệnh cập nhật dữ liệu • Nhập dữ liệu INSERT INTO TableName(Field1,... BETWEEN “01” and “ 03 Ví dụ: SELECT Ho, Ten, Lop FROM Sinhvien WHERE nganh IN (“101”,”102”,”1 03 ) 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”,”1 03 ) trong quan hệ kết...• 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 ... 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 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 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... FROM Sinhvien WHERE Mtinh BETWEEN “01” and “ 03 and nganh IN (“101”,”1 03 ) 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 1 03 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... 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ệnh ngôn ngữ SQL chia thành hai loại: • Các câu lệnh định nghĩa liệu cho phép tạo thành phần CSDL bảng, cột (thuộc tính) dẫn • Các câu lệnh thao tác liệu để lấy mẫu tin (bản ghi) từ sở liệu 3. 1... dấu nối • DataType kiểu 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)... WHERE Mtinh BETWEEN “01” and “ 03 and nganh IN (“101”,”1 03 ) quan hệ kết gồm cột ho, ten, lop sinh viên có que quán thuộc tỉnh có mã 01, 02 03 có mã ngành học 101 1 03 Các câu lệnh truy vấn lồng