Bài 14. SQL – Ngôn ngữ truy vấn có cấu trúc

SQL – Ngôn ngữ truy vấn có cấu trúc SGK trang 69 lớp 11 Tin học ứng dụng – NXB Kết Nối Tri Thức, mời các em tham khảo cùng Bumbii.

Chủ đề 4. Giới thiệu các hệ cơ sở dữ liệu. Bài 14. SQL – Ngôn ngữ truy vấn có cấu trúc.

KHỞI ĐỘNG

Ở bài trước các em đã biết hệ QTCSDL với vai trò là một bộ phần mềm hỗ trợ khởi tạo, cập nhật, truy xuất CSDL để người dùng có thể cập nhật, truy xuất CSDL. Ngày nay người ta thực hiện công việc đó chủ yếu thông qua ngôn ngữ truy vấn có cầu trúc SQL. Sự khác biệt của việc sử dụng SQL so với việc truy xuất dữ liệu bằng ngôn ngữ lập trình là gì?

Đáp án:

Việc truy xuất dữ liệu bằng ngôn ngữ lập trình mất rất nhiều công sức, dễ nhầm lẫn. Kiểu lập trình “theo thủ tục” vì phải biết rõ thủ tục truy cập dữ liệu để xây dựng thuật toán. Ví dụ lập danh sách các học sinh có điểm trung bình môn Toán trên 8 phải viết lại chương trình với một thủ tục tương tự.

Việc sử dụng SQL người dùng chỉ cần viết ra yêu cầu dưới dạng một câu truy vấn – muốn làm gì, chứ không phải nghĩ cách thực hiện yêu cầu ấy. Mọi việc còn lại sẽ do hệ QTCSDL giải quyết.

1. LỢI ÍCH CỦA NGÔN NGỮ TRUY VẤN

Hoạt động 1. Thảo luận về hai cách truy xuất dữ liệu

Để lấy danh sách các bản nhạc do nhạc sĩ Văn Cao (mã định danh Aid = 1), sáng tác trong bảng dữ liệu Bản nhạc, ta có thể thực hiện theo một trong hai cách sau:

– Dùng một ngôn ngữ lập trình, viết chương trình mở tệp chứa bảng dữ liệu Bản nhạc, rồi lần lượt lấy ra từng nhóm dữ liệu liên quan đến từng bản nhạc, sau đó tách phần Aid để kiểm tra, nếu Aid = 1 thì đưa ra tên bản nhạc (TenBN).

– Dùng ngôn ngữ truy vấn, viết “CHỌN TenBN TỪ Bản nhạc VỚI Aid = 1” rồi gửi cho hệ QTCSDL thực hiện.

Sự khác biệt cơ bản trong cách truy vấn nhờ ngôn ngữ truy vấn so với lập trình trực tiếp theo em là gì?

Đáp án:

– Lập trình truy xuất dữ liệu trực tiếp bằng một ngôn ngữ lập trình là lập trình theo thủ tục: người lập trình phải biết chi tiết cấu trúc tệp dữ liệu, các bước (thủ tục) để lấy ra từng nhóm dữ liệu liên quan đến từng bản nhạc, phải xây dựng thuật toán để tách ra lấy thông tin cần thiết.

Việc này có thể phải thực hiện lặp đi lặp lại với mỗi yêu cầu truy xuất khác nhau.

– Ngôn ngữ truy vấn có cấu trúc cung cấp những câu truy vấn khái quát, dễ hiểu và dễ sử dụng để người lập trình chỉ cần viết ra yêu cầu “muốn làm gì/ lấy ra cái gì” rồi gửi hệ QTCSDL thực hiện, chứ không cần phải nghĩ, xây dựng thuật toán và viết chi tiết chương trình để thực hiện điều đó.

SQL có ba thành phần:

– DDL (Data Definition Language): ngôn ngữ định nghĩa dữ liệu.

– DML (Data Manipulation Language): ngôn ngữ thao tác dữ liệu.

– DCL (Data Control Language): ngôn ngữ kiểm soát dữ liệu.

2. KHỞI TẠO CSDL

Thành phần DDL của SQL cung cấp các câu truy vấn khởi tạo CSDL, khởi tạo bảng, thiết lập các khoá, tóm tắt trong các bảng sau.

Các câu truy vấn CSDL

Các kiểu dữ liệu được sử dụng cho các thuộc tính của các bảng trong SQL.

Kiểu dữ liệu trong SQL - Ngôn ngữ truy vấn có cấu trúc

Ví dụ: Khởi tạo CSDL âm nhạc, đặt tên là music và khởi tạo các bảng Nhạc sĩ, Bản nhạc có tên tương ứng là nhacsi và bannhac.

CÂU HỎI

Câu 1. Hãy viết câu truy vấn tạo bảng Ca sĩ như đã mô tả trong Bài 13 với tên bảng là casi.

Đáp án:

Câu truy vấn tạo bảng Ca sĩ:

CREATE TABLE casi(

          Sid INT,

TenCS VARCHAR(128)

);

Câu 2. Hãy viết câu truy vấn thêm khoá chính Sid cho bảng casi.

Đáp án:

Câu truy vấn thêm khoá chính Sid cho bảng casi:

ALTER TABLE casi ADD PRIMARY KEY (Sid);

3. CẬP NHẬT VÀ TRUY XUẤT DỮ LIỆU

Thành phần DML của SQL cung cấp các câu truy vấn cập nhật và truy xuất dữ liệu. Sau đây là một vài câu truy xuất dữ liệu để minh hoạ.

Câu truy xuất dữ liệu

Một số câu truy vấn cập nhật dữ liệu cho trong Bảng 14.4.

CÂU HỎI

Câu 1. Hãy viết câu truy vấn cấp quyền lấy tất cả các dòng của bảng nhacsi.

Đáp án:

SELECT Aid, tenNS FROM nhacsi;

Hay

SELECT * FROM nhacsi;

Câu 2. Hãy viết câu truy vấn thêm các dòng cho bảng casi với các giá trị là (‘TK’, ‘Nguyễn Trung Kiên’, ‘QD’, ‘Quý Dương’, ‘YM’, ‘Y Moan’).

Đáp án:

INSERT INTO casi VALUES ('TK', 'Nguyễn Trung Hiếu');

INSERT INTO casi VALUES ('QD', 'Quý Dương');

INSERT INTO casi VALUES ('YM', 'Y Moan');

4. KIỂM SOÁT QUYỀN TRUY CẬP

Thành phần DCL của SQL cung cấp các câu truy vấn kiểm soát quyền người dùng đối với CSDL, tóm tắt trong Bảng 14.5.

CÂU HỎI

Câu 1. Hãy viết câu truy vấn cấp quyền UPDATE đối với tất cả các bảng trong CSDL music cho người dùng mod.

Đáp án:

GRANT UPDATE ON music.* To mod;

Câu 2. Hãy viết câu truy vấn thu hồi quyền DELETE đối bảng nhacsi trong CSDL music cho người dùng mod.

Đáp án:

REVOKE DELETE ON music.nhacsi FROM mod;

LUYỆN TẬP

Câu 1

Hãy viết câu truy vấn tạo bảng Bản thu âm (banthuam) như đã mô tả trong Bài 13.

Đáp án:

CREATE TABLE banthuam (Mid CHAR (4), Sid INT);

Câu 2

Viết câu truy vấn tạo khoá ngoài Mid Sid cho bảng banthuam.

Đáp án:

ALTER TABLE banthuam ADD FOREIGN KEY(Mid) REFERENCES bannhac(Mid);

ALTER TABLE banthuam ADD FOREIGN KEY(Sid) REFERENCES bannhac(Sid);

Câu 3

Viết câu truy vấn lấy ra tất cả các dòng trong liên kết bảng banthuam với bảng bannhac, mỗi dòng lấy các cột: Mid, Sid của bảng banthuam và cột TenBN của bảng bannhac.

Đáp án:

SELECT banthuam.Mid, banthuam.Sid, bannhac.TenBN

    FROM banthuam INNER JOIN bannhac ON banthuam.Mid=bannhac.Mid;

Hay

SELECT a.Mid, a.Sid, b.TenBN

   FROM banthuam as a INNER JOIN bannhac as b ON a.Mid=b.Mid;

Hay

SELECT a.Mid, a.Sid, b.TenBN

    FROM banthuam a INNER JOIN bannhac b ON a.Mid = b.Mid;

Có thể thay INNER bởi LEFT, để dễ hiểu hơn

SELECT a.Mid, a.Sid, b.TenBN

    FROM banthuam a LEFT JOIN bannhac b ON a.Mid=b.Mid;

VẬN DỤNG

Viết câu truy vấn lấy ra tất cả các dòng trong liên kết bảng banthuam với bảng bannhac và bảng casi, mỗi dòng lấy các cột: Mid, Sid của bảng banthuam, cột TenBN của bảng bannhac và TenCS của bảng casi.

Đáp án:

SELECT a.Mid, a.Sid, b.TenBN, c.TenCS

    FROM banthuam a

       LEFT JOIN bannhac b ON a.Mid=b.Mid

       LEFT JOIN casi c ON a.Sid=c.Sid;

Xem các bài giải khác tại Giải bài tập SGK lớp 11 định hướng tin học ứng dụng – NXB Kết nối tri thức với cuộc sống

Thông tin liên hệ & mạng xã hội:
Website: https://bumbii.com/
Facebook: https://www.facebook.com/bumbiiapp
Pinterest: https://www.pinterest.com/bumbiitech

0 0 đánh giá
Article Rating
Theo dõi
Thông báo của
guest

0 Bình luận
Phản hồi nội tuyến
Xem tất cả bình luận
0
Cùng chia sẻ bình luận của bạn nào!x