Chương 5 Ngôn ngữ truy vấn có cấu trúc SQL

Một phần của tài liệu bài giảng hệ quản trị cơ sở dữ liệu (Trang 33 - 37)

5.1. Tổng quan về SQL

SQL là ngôn ngữ hỏi có cấu trúc được giới thiệu từ những năm 1970, nhờ SQL người sử dụng cơ sở dữ liệu có thể thao tác (bổ xung, chỉnh sửa, xoá bỏ, tìm kiếm) trên các dữ liệu trong quan hệ, tăng cường các luật toàn vẹn dữ liệu và thực hiện các phép toán của đại số quan hệ. Đây là ngôn ngữ tập trung vào việc khai thác dữ liệu, không giống như các ngôn ngữ lập trình khác. SQL được chỉnh sửa và bổ xung lần mới nhất là vào năm 1992. Hiện đây là ngôn ngữ truy vấn được cài đặt khá phổ biến trong các hệ quản trị cơ sở dữ liệu quan hệ.

Trong các hệ quản trị SQL đều được cài đặt thành 3 lớp ngôn ngữ:

- Ngôn ngữ định nghĩa (xác định) dữ liệu – DDL (data definition language): Gồm các câu lệnh cho phép xây dựng cơ sở dữ liệu, tức là các lệnh tạo mới, thay đổi và huỷ bỏ cơ sở dữ liệu cũng như các đối tượng trong cơ sở dữ liệu và các ràng buộc về dữ liệu.

- Ngôn ngữ khai thác dữ liệu – DML (data manipulation language): bao gồm các câu lệnh cho phép chỉnh sửa, truy vấn cơ sở dữ liệu, bao gồm các công việc như cập nhật, bổ xung, thay đổi và tìm kiếm dữ liệu.

- Ngôn ngữ điều khiển dữ liệu – DCL (data control language): Ngôn ngữ điều khiển dữ liệu gồm các câu lệnh dùng để điều khiển cơ sở dữ liệu, gồm các công việc như quyết định quyền truy cập và khẳng định việc cập nhật dữ liệu.

5.2. Truy vấn SQL cơ bản

5.2.1. Lệnh SELECT

Phép toán cơ bản trong SQL là phép ánh xạ được mô tả về cú pháp như một khối SELECT – FROM – WHERE.

Cấu trúc cơ sở của lệnh truy vấn SQL

Cấu trúc cơ sở của một biểu thức SQL bao gồm 3 mệnh đề: Select, from và where

- Mệnh đề SELECT trương ứng với phép chiếu của đại số quan hệ. Nó được sử dụng để liệt kê các cột mong muốn trong kết quả của một truy vấn.

- Mệnh đề FROM tương ứng với phép tích đề các của đại số quan hệ. Nó liệt kê các bảng cần tra cứu để đánh giá kết quả của biểu thức.

- Mệnh đề WHERE tương ứng với vị từ chọn của đại số quan hệ. Nó bao gồm một vị từ kéo theo các cột của các bảng xuất hiện trong mệnh đề FROM.

Ngoài ra, để mở rộng khả năng của ngôn ngữ này, khối SELECT – FROM – WHERE sẽ được bổ sung thêm các mệnh đề GROUP BY, HAVING, ORDER BY, và một số hàm mẫu.

Dạng tổng quát của câu lệnh SELECT được biểu diễn như sau: SELECT [DISTINCT] {<tên cột> | <biểu thức> [,]} | *

FROM {<tên bảng> | <tên view> [,]} [WHERE <biểu thức điều kiện>]

[GROUP BY {<tên cột> | <tên biểu thức> [,]} [HAVING <biểu thức điều kiện>]] [ORDER BY {<tên cột> | <tên biểu thức> [ASC | DESC] [,]}

Trong đó mệnh đề WHERE được biểu diễn với các dạng câu WHERE [NOT] <biểu thức> <phép so sánh> <biểu thức> WHERE [NOT] <tên cột> [NOT] LIKE <xâu ký tự>

WHERE [NOT] <biểu thức> [NOT] IN (<danh sách> | <Câu truy vấn con>) WHERE [NOT] EXISTS (<Câu truy vấn con>)

WHERE [NOT] <biểu thức> <phép so sánh> {SOME | ANY | ALL (<Câu truy vấn con>)} WHERE [NOT] <biểu thức logic>

WHERE [NOT] <biểu thức logic> <AND | OR> <biểu thức logic> * Các phép toán logic sử dụng trong mệnh đề WHERE: AND, OR, NOT * Các phép toán so sánh sử dụng trong mệnh đề WHERE: >, <, =, >=, <=, <>

5.2.2. Sử dụng biểu thức và chuỗi trong lệnh SELECT

* Một số các phép toán đặc biệt:

- BETWEEN <giá trị đầu> AND <giá trị cuối> - LIKE <Chuỗi tìm kiếm>

Trong chuỗi tìm kiếm sử dụng ký tự % để đại diện cho một xâu con, ký tự _ để đại diện cho một ký tự.

- Phép toán đổi tên AS

5.3. Truy vấn sử dụng các hàm thống kê

Hàm AVG(column)

Hàm AVG trả về giá trị trung bình tính theo cột được chỉ định của các dòng được chọn. Các giá trị NULL sẽ không được xét đến khi tính giá trị trung bình.

Ví dụ: Câu lệnh sau sẽ tính số tuổi trung bình của những người có tuổi trên 20: SELECT AVG(Age) FROM Persons WHERE Age > 20

Hàm MAX(column)

Hàm MAX trả về giá trị lớn nhất trong cột. Các giá trị NULL sẽ không được xét đến. Ví dụ: SELECT MAX(Age) FROM Persons

Hàm MIN(column)

Hàm MIN trả về giá trị nhỏ nhất trong cột. Các giá trị NULL sẽ không được xét đến. Ví dụ: SELECT MIN(Age) FROM Persons

Lưu ý: Hàm MIN và MAX cũng có thể áp dụng cho các cột có dữ liệu là chuỗi văn bản. Dữ liệu trong cột sẽ được so sánh theo thứ tự tăng dần của từ điển

Hàm SUM(column)

Hàm SUM trả về tổng giá trị của cột. Các giá trị NULL sẽ không được xét đến. Ví dụ: Tìm tổng số tuổi của tất cả những người có trong bảng:

SELECT SUM(Age) FROM Persons

Ví dụ: Tìm tổng số tuổi của tất cả những người có tuổi lớn hơn 20: SELECT SUM(Age) FROM Persons WHERE Age > 20

5.4. Các lệnh sửa đổi dữ liệu

5.4.1. Lệnh chèn một bản ghi- INSERT

- Thao tác thêm một bản ghi mới:

INSERT INTO <tên bảng>[(danh sách tên cột)] VALUES(Các giá trị) Ví dụ 4.9:

Insert into Mat_hang(Ma_hang, Ten_hang, Don_vi, Quy_cach) Values(„0001‟, „Tivi‟, „Chiếc‟, „Sony 29”‟)

Chú ý: Trong trường hợp không liệt kê danh sách tên cột thì tương đương với việc liệt kê toàn bộ tên các cột của bảng theo thứ tự khi tạo ra bảng.

5.4.2. Lệnh cập nhật các bản ghi- UPDATE

- Thao tác sửa đổi dữ liệu:

Trong những tình huống nhất định, chúng ta có thể muốn thay đổi một số giá trị trong một dòng mà không thay đổi mọi giá trị trong dòng đó. Lệnh sửa đổi các giá trị của các dòng trong bảng thỏa mãn một điều kiện nào đó có cú pháp tổng quát là:

UPDATE <tên bảng>

SET {<tên cột> = <biểu thức> [,]} [WHERE <biểu thức điều kiện>] Ví dụ 4.12:

Update Mat_hang Set Quy_cach = „Sony 21”‟ Where Ma_hang = „0001‟

Chú ý: Trong trường hợp không nêu mệnh đề WHERE thì toàn bộ các bản ghi của bảng sẽ bị tác động.

5.4.3. Lệnh xóa các bản ghi- DELETE

- Thao tác xóa:

Chúng ta có thể xóa một hoặc nhiều bộ trong một bảng thỏa mãn một điều kiện. Cú pháp tổng quát:

DELETE FROM <tên bảng> [WHERE <biểu thức logic>] Ví dụ 4.11:

Delete from Mat_hang Where Ma_hang = „0001‟

Bài tập

Cho lược đồ cơ sở dữ liệu

Sinhvien(MASV, HOTENSV, NU, NGAYSINH, NOISINH,TINH,MALOP) Lop(MALOP,TENLOP, MAKHOA)

Khoa(MAKHOA,TENKHOA)

Monhoc(MAMH,TENMH,DONVIHT)

Giangvien(MAGV,HOTENGV,HOCVI,CHUYENNGANH,MAKHOA) Ketqua(MASV, MAMH, LANTHI, DIEMTHI)

Phancong(MALOP,MAMH,MAGV) Thực hiện các yêu cầu sau:

a. Lập danh sách những sinh viên có hộ khẩu thường trú ở HẢI PHÒNG gồm các thông tin: MASV, HOTENSV, NGAYSINH, TENLOP

b. Lập danh sách các sinh viên của lớp có mã là CNT43ĐH gồm các thông tin: MASV, HOTENSV, NGAYSINH, TINH.

Một phần của tài liệu bài giảng hệ quản trị cơ sở dữ liệu (Trang 33 - 37)

Tải bản đầy đủ (PDF)

(54 trang)