Phần này chủ yếu giúp các em ôn tập kỹ hơn về các thao tác trên CSDL quan hệ bao gồm: tạo lập, cập nhật, khai thác và sao lưu, phục hồi dữ liệu trên ngôn ngữ SQL.
Ở thao tác tạo lập, các em cần quan tâm kỹ hơn đến: Các kiểu dữ liệu của trường, ràng buộc về khóa ngoại của các bảng.
Ở thao tác cập nhật: Cần quan tâm đến mối quan hệ giữa các bản, ví dụ khi xóa một dòng dữ liệu ở bảng này, phải xem xét đến sự ảnh hưởng của nó đến các bảng khác như thế nào.
Ở thao tác khai thác, thông thường nhất truy vấn qua lên SELECT của SQL, chúng ta sẽ thực hiện các yêu cầu truy vấn nâng cao hơn như truy vấn liên bảng, truy vấn có gom nhóm dữ liệu,...
Cần nắm được các thao tác sao lưu, phục hồi dữ liệu để có thể linh động sử dụng CSDL của mình.
Tạo lập CSDL là bước rất quan trọng, quyết định vào hiệu suất làm việc trong tương lai của toàn bộ hệ thống. Các bước tạo lập CSDL là:
Bước 1: Phân tích yêu cầu
Bước 2: Xác định các bảng, các trường trong bảng và khóa chính của bảng
Bước 3: Xác định ràng buộc khóa ngoại (mối quan hệ giữa các bảng)
Bước 4: Nhập dữ liệu mẫu cho các bảng
Bước 5: Kiểm tra thử các ràng buộc.
Người ta muốn quản lý các bản thu âm các bài hát, đăng tải lên web để mọi người có thể truy cập vào nghe bất cứ lúc nào. Tuy nhiên, với cùng một bản nhạc, người nghe cũng muốn lựa chọn ca sĩ thể hiện. Hoặc thính giả cũng có nhu cầu chọn nghe những bản nhạc của ca sĩ mà mình yêu thích hay cũng có người thích tìm nhạc của một một nhạc sĩ nhất định nào đó.
Trang chủ Zing mp3
Bước 1. Phân tích yêu cầu
Chúng ta thấy rõ được yêu cầu ở đây chủ yếu là quản lý các bài hát đã được thu âm hoàn chỉnh và đăng tải để người dùng web có thể nghe được. Đồng thời, họ cũng cần thực hiện các thao tác truy vấn các bài hát của ca sĩ nào hay nhạc sĩ nào.
Các thông tin chi tiết của bản thu âm như vậy có thể được thể hiện như sau:
Nguồn: Phạm Thế Long, SGK Tin học 11 kết nối tri thức và cuộc sống, NXB GD Việt Nam
Bước 2. Xác định các bảng
Chúng ta đã phân tích ở chủ đề trước về các yêu cầu của CSDL, rõ ràng ta không thể gom hết tất cả dữ liệu vào một bảng như trên. Điều này ảnh hướng đến tính nhất quán, tính không dư thừa dữ liệu trong quá trình sử dụng.
Vây chúng ta cần các bảng riêng biệt để lưu thông tin của Nhạc Sĩ, Ca Sĩ, Bản Nhạc và Bản Thu Âm
Có thể tạm đưa ra các trường cho các bảng trên như sau:
Nguồn: Phạm Thế Long, SGK Tin học 11 kết nối tri thức và cuộc sống, NXB GD Việt Nam
Các trường gạch chân là khóa chính của mỗi bảng.
Bước 3. Xác định ràng buộc khóa ngoại
Trong các bảng trên, chúng ta đã có khóa chính, việc xác định khóa ngoại giờ đây đơn giản hơn nhiều. Chúng ta cần đi tìm xem các khóa chính này xuất hiện lại ở đâu.
Trong bảng bannhac, chúng ta cần biết thông tin người sáng tác, tức nhạc sĩ, chúng ta không lưu thông tin chi tiết về nhạc sĩ ở đây mà chỉ lưu mã của nhạc sĩ, như vậy trường này là trường cần dùng để tham chiếu về bảng nhacsi khi cần đến thông tin chi tiết của đối tượng này. Vậy, idnhacsi chính là khóa ngoại của bảng bannhac.
Tương tự như vậy ta đi tìm các trường dùng tham chiếu về các bảng khác để lấy thông tin chi tiết khi cần.
Sau khi xác định tất cả các khóa ngoại, nghĩa là ta đã xây dựng được mối quan hệ của các bảng trong CSDL.
Nguồn: Phạm Thế Long, SGK Tin học 11 kết nối tri thức và cuộc sống, NXB GD Việt Nam
Bước 4. Nhập dữ liệu cho các bảng
Bước này tương tự như bước tập hợp thông tin mẫu trong thao tác tạo lập hồ sơ. Nó rất quan trọng vì thông qua việc nhập liệu này, chúng ta sẽ kiểm tra được các ràng buộc dữ liệu.
Nguồn: Phạm Thế Long, SGK Tin học 11 kết nối tri thức và cuộc sống, NXB GD Việt Nam
Bước 5. Kiếm tra ràng buộc
Chúng ta thử một vài thao tác cập nhật hoặc truy vấn liên bảng để xem ràng buộc khóa của chúng ta có hoạt động đúng hay không.
***Nhiệm vụ: Thực hiện các lệnh SQL để tạo CSDL QL amnhac như trên (bao gồm cả nhập dữ liệu tương ứng)
Cập nhật dữ liệu gồm ba thao tác chính: Thêm, xóa, sửa.
Thao tác thêm dữ liệu đã được đề cập trong nhiệm vụ trên, trong tiểu mục này, chúng ta chủ yếu thảo luận về thao tác sửa (update) và xóa (delete) dữ liệu.
Cú pháp:
UPDATE table_name
SET column1 = value1, column2 = value2, ...
WHERE condition;
Ví dụ:
Tạo bảng customer như sau:
CREATE TABLE CUSTOMERS (
ID INT NOT NULL,
NAME VARCHAR (20) NOT NULL,
AGE INT NOT NULL,
ADDRESS CHAR (25),
SALARY DECIMAL (18, 2),
PRIMARY KEY (ID)
);
Nhập dữ liệu:
INSERT INTO CUSTOMERS VALUES
(1, 'Ramesh', 32, 'Ahmedabad', 2000.00 ),
(2, 'Khilan', 25, 'Delhi', 1500.00 ),
(3, 'Kaushik', 23, 'Kota', 2000.00 ),
(4, 'Chaitali', 25, 'Mumbai', 6500.00 ),
(5, 'Hardik', 27, 'Bhopal', 8500.00 ),
(6, 'Komal', 22, 'Hyderabad', 4500.00 ),
(7, 'Muffy', 24, 'Indore', 10000.00 );
Ta được bảng dữ liệu như sau:
Nguồn: tutorialspoint.com
Bây giờ, thực hiện lệnh Update như sau:
UPDATE CUSTOMERS SET ADDRESS = 'Pune' WHERE ID = 6;
Như vậy khách hàng có ID = 6 đã được thay đổi địa chỉ. Nếu chúng ta muốn kiểm tra lại kết quả, có thể viết lệnh Select:
SELECT * FROM CUSTOMERS WHERE ID=6;
Có thể update cho nhiều column cùng lúc, ví dụ sau đây sửa địa chỉ và lương của khách hàng 'Ramesh'
UPDATE CUSTOMERS
SET ADDRESS = 'Pune', SALARY = 1000.00
WHERE NAME = 'Ramesh';
Update liên bảng
Trong thực tế, rất nhiều yêu cầu cập nhật dữ liệu từ bảng này nhưng phụ thuộc vào điều kiện ở bảng khác, chúng ta phải thực hiện update liên bảng để làm được điều này.
Để dễ hiểu, chúng ta tạo thêm bảng Order như sau:
CREATE TABLE ORDERS (
OID INT NOT NULL,
DATE VARCHAR (20) NOT NULL,
CUSTOMER_ID INT NOT NULL,
AMOUNT DECIMAL (18, 2)
);
INSERT INTO ORDERS VALUES
(102, '2009-10-08 00:00:00', 3, 3000.00),
(100, '2009-10-08 00:00:00', 3, 1500.00),
(101, '2009-11-20 00:00:00', 2, 1560.00),
(103, '2008-05-20 00:00:00', 4, 2060.00);
Ta được dữ liệu như sau:
Nguồn: tutorialspoint.com
Đây là mối quan hệ mà ta có được:
Câu lệnh Update sau đây sẽ tăng lương của khách hàng có đặt hàng lên 1000$ và số tiền trong đơn hàng của họ tăng theo 500$
UPDATE CUSTOMERS
JOIN ORDERS
ON CUSTOMERS.ID = ORDERS.CUSTOMER_ID
SET CUSTOMERS.SALARY = CUSTOMERS.SALARY + 1000,
ORDERS.AMOUNT = ORDERS.AMOUNT + 500;
Dùng lệnh Select để check lại trên 2 bảng, chúng ta sẽ thấy ở bảng Order tất cả đơn hàng đều tăng lên 500$ nhưng ở bảng Customer chỉ những khách hàng có đặt hàng mới tăng lương lên 1000$. Nghĩa là chỉ có 3 khách hàng có ID 2, 3, 4 mới được tăng lên.