1. Trang chủ
  2. » Công Nghệ Thông Tin

Bài giảng Cơ sở dữ liệu: Chương 3 - ThS. Hồ Đắc Quán

24 3 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 24
Dung lượng 347 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Bài giảng Cơ sở dữ liệu - Chương 3 giới thiệu về ngôn ngữ truy vấn SQL. Chương này trình bày các nội dung chính như sau: Giới thiệu SQL, môi trường SQL, dùng DDL để định nghĩa CSDL, dùng DML để thao tác trên CSDL, các phép kết dữ liệu trên nhiều bảng, Subquery – truy vấn con. Mời các bạn cùng tham khảo.

Trang 1

Môn CƠ SỞ DỮ LIỆU

Chương 3: Ngôn ngữ

truy vấn SQL

Trang 3

 Structured Query Language – Ngôn ngữ truy vấn có cấu trúc

 Ngôn ngữ chuẩn cho các RDBMS (relational database management systems - hệ quản trị CSDL quan hệ)

 Chuẩn SQL-92:

◆ Định nghĩa cấu trúc/ngữ nghĩa của việc định

nghĩa/thao tác trên dữ liệu

◆ Định nghĩa cấu trúc dữ liệu

◆ Hai chuẩn: level 1 (minimal) và level 2

(complete)

◆ Khả năng mở rộng

1 SQL là gì?

Trang 4

 Data Definition Language

thao tác truy vấn dữ liệu

(DCL): Các lệnh điều khiển CSDL,

gồm việc quản lý quyền hạn của user

2 Môi trường SQL

Trang 5

 Data Definition Language (DDL)

 Lệnh tạo bảng: CREATE TABLE

 Lệnh sửa bảng: ALTER TABLE

 Lệnh xóa bảng: DROP TABLE

3 Dùng DDL để định nghĩa CSDL

Trang 6

Cú pháp lệnh CREATE TABLE Các bước tạo bảng:

1 Kiểu dữ liệu cho các

Trang 8

 Thêm dữ liệu (bản ghi, hàng) vào bảng

CUSTOMER_T VALUES (001, ‘CONTEMPORARY

Casuals’, 1355 S Himes Blvd.’, ‘Gainesville’, ‘FL’, 32601);

 Thêm dữ liệu vào các cột được chỉ định rõ trong bảng, các cột còn lại nhận giá trị mặc định hoặc NULL: INSERT INTO

PRODUCT_T (PRODUCT_ID,

PRODUCT_DESCRIPTION,PRODUCT_FINISH,

STANDARD_PRICE, PRODUCT_ON_HAND) VALUES (1, ‘End

Table’, ‘Cherry’, 175, 8);

SELECT * FROM CUSTOMER_T WHERE STATE = ‘CA’;

4 DML - Lệnh INSERT

Trang 9

4 DML - Lệnh DELETE - Lệnh

UPDATE

 Lệnh Delete: Xoá dữ liệu (bản ghi, hàng) trong bảng

 Xoá các hàng theo điều kiện: DELETE FROM CUSTOMER_T WHERE STATE =

‘HI’;

 Xoá tất cả các hàng trong bảng: DELETE FROM CUSTOMER_T;

 Lệnh Update: Sửa dữ liệu (bản ghi, hàng) trong bảng: UPDATE

PRODUCT_T SET UNIT_PRICE = 775 WHERE

PRODUCT_ID = 7;

Trang 10

 Truy vấn (xem) dữ liệu trong các bảng, view

 Các mệnh đề của lệnh SELECT:

SELECT: Danh sách các cột kết quả của lệnh truy vấn

FROM: Danh sách các bảng hoặc view để lấy dữ liệu

WHERE: Điều kiện lựa chọn các hàng trong bảng

GROUP BY: Nhóm các hàng dữ liệu theo loại

HAVING: Điều kiện cho các nhóm để lựa chọn nhóm kết quả

ORDER BY: Sắp xếp dữ liệu thu được

4 DML - Lệnh SELECT

Trang 11

Thứ tự xử lý các mệnh đề

trong lệnh SELECT

Trang 13

4 DML - Lệnh SELECT dùng ALIAS, hàm

 Alias là tên thay thế cho bảng hoặc cột, khi đó cột kết quả lấy tên alias: SELECT

CUST.CUSTOMER AS NAME, CUST.CUSTOMER_ADDRESS

FROM CUSTOMER_V CUST

WHERE NAME = ‘Nguyen Van A’;

 Dùng hàm tập hợp COUNT để tìm tổng số các hoá đơn có trong bảng hoá đơn

SELECT COUNT(*) FROM ORDER_LINE_V

WHERE ORDER_ID = 1004

Trang 14

 Các toán tử AND , ORNOT dùng trong mệnh đề WHERE

SELECT PRODUCT_DESCRIPTION,

PRODUCT_FINISH, STANDARD_PRICE

FROM PRODUCT_V

LIKE dùng để so sánh chuỗi Dấu % trong chuỗi

‘%Desk’ chỉ mọi chuỗi kết thúc bằng “Desk”

4.(tt)Lệnh SELECT dùng toán tử luận lý

Trang 15

 Sắp xếp kết quả theo thứ tự STATE tăng dần, cùng state thì sắp theo CUSTOMER_NAME tăng dần Dùng từ khóa ASC, DESC

SELECT CUSTOMER_NAME, CITY, STATE

FROM CUSTOMER_V

ORDER BY STATE, CUSTOMER_NAME;

IN lựa chọn các hàng có giá trị STATE là FL, TX,

CA, hoặc HI Tốt hơn OR

4 (tt) Lệnh SELECT dùng ORDER BY

Trang 16

Muốn dùng cột đơn trị với hàm tập hợp thì phải đưa cột này vào mệnh đề GROUP BY

Trang 17

 Chỉ dùng với GROUP BY, làm điều kiện lựa chọn các nhóm hàng

SELECT STATE, COUNT(STATE)

Trang 18

 Cho biết mọi thông tin cần thiết để xuất hoá đơn có số 1006

SELECT CUSTOMER_T.CUSTOMER_ID, CUSTOMER_NAME, CUSTOMER_ADDRESS, CITY, SATE, POSTAL_CODE, ORDER_T.ORDER_ID, ORDER_DATE, QUANTITY, PRODUCT_NAME, UNIT_PRICE, (QUANTITY * UNIT_PRICE)

FROM CUSTOMER_T, ORDER_T, ORDER_LINE_T, PRODUCT_T

WHERE CUSTOMER_T.CUSTOMER_ID = ORDER_LINE.CUSTOMER_ID AND

Trang 19

 Hai loại subquery:

◆ Non correlated – chỉ thực thi một lần, không phụ thuộc vào dữ liệu từ câu truy vấn ngoài

◆ Correlated – thực thi đối với mỗi hàng trả về từ câu truy vấn ngoài, có thể dùng với toán tử EXISTS

6 Subquery – Truy vấn con

Trang 20

 Cho biết các khách hàng nào có hoá đơn

SELECT CUSTOMER_NAME FROM CUSTOMER_T

WHERE CUSTOMER_ID IN

(SELECT DISTINCT CUSTOMER_ID FROM ORDER_T);

Subquery nằm trong dấu ngoặc đơn, kết quả từ subquery được dùng trong mệnh đề WHERE

6 Subquery – Ví dụ

IN kiểm tra giá trị CUSTOMER_ID của một hàng có nằm trong danh sách kết quả của subquery

Trang 21

Quá trình

xử lý một

correlated

được thực thi chỉ một lần

Trang 22

 Cho biết các hoá đơn có sản phẩm được hoàn tất trong natural ash

SELECT DISTINCT ORDER_ID FROM ORDER_LINE_T

WHERE EXISTS

(SELECT * FROM PRODUCT_T

WHERE PRODUCT_ID = ORDER_LINE_T.PRODUCT_ID

AND PRODUCT_FINISH = ‘Natural ash’);

Subquery kiểm tra các giá trị có

từ câu truy vấn ngoài

EXISTS cho giá trị TRUE nếu kết quả của subquery khác rỗng, ngoài ra là FALSE

6 (tt) Thí dụ correlated subquery

Trang 23

Subquery thực thi đối với mỗi hàng

dữ liệu từ câu truy vấn ngoài

Trang 24

 Cho biết các sản phẩm có giá cao hơn giá trung bình

SELECT PRODUCT_DESCRIPTION, STANDARD_PRICE, AVGPRICE

FROM

(SELECT AVG(STANDARD_PRICE) AVGPRICE FROM PRODUCT_T),

PRODUCT_T

WHERE STANDARD_PRICE > AVG_PRICE;

Mệnh đề WHERE không thể chứa các hàm tập hợp,

Cột subquery là một hàm tập hợp có tên alias, tên này được dùng trong câu truy vấn ngoài

Subquery tạo nên

Ngày đăng: 20/05/2021, 01:36

🧩 Sản phẩm bạn có thể quan tâm