• Cơ sở dữ liệu (database): là một tập hợp các dữ liệu có liên quan với nhau, chứa thông tin về một tổ chức nào đó (như một trường đại học, một ngân hàng, một bệnh viện, một công ty, …) [r]
(1)KHOA CÔNG NGHỆ THÔNG TIN
Chương 5 CƠ SỞ DỮ LIỆU
NỘI DUNG
5.1 Cơ sở liệu
5.2 Hệ quản trị sở liệu 5.3 Ngôn ngữ truy vấn SQL
Chương Cơ sở liệu 08/02/2017
Khoa Công nghệ thông tin – Học viện Nông nghiệp Việt Nam
Bài giảng Tin học đại cương
5.1 CƠ SỞ DỮ LIỆU
5.1.1 Khái niệm sở liệu
5.1.2 Các mức thể sở liệu 5.1.3 Mơ hình liệu quan hệ
5.1.4 Hệ sở liệu
5.1.5 Lợi ích hệ sở liệu
Khoa Công nghệ thông tin – Học viện Nông nghiệp Việt Nam
Bài giảng Tin học đại cương
5.1.1 KHÁI NIỆM CƠ SỞ DỮ LIỆU
(2)VÍ DỤ VỀ CSDL
Xét ví dụ CSDL sinh viên • Bảng Khoa:
• Bảng Lớp:
Chương Cơ sở liệu 08/02/2017
VÍ DỤ VỀ CSDL
• Bảng Sinh viên:
Chương Cơ sở liệu 08/02/2017
Khoa Công nghệ thông tin – Học viện Nông nghiệp Việt Nam
Bài giảng Tin học đại cương
VÍ DỤ VỀ CSDL
• Bảng Mơn học:
• Bảng Kết quả:
Khoa Công nghệ thông tin – Học viện Nông nghiệp Việt Nam
Bài giảng Tin học đại cương
5.1.2 CÁC MỨC THỂ HIỆN CỦA CSDL
• Mức vật lý (mức trong):
- Cho biết cách thức lưu trữ liệu nhớ nào? Ở đâu? Cần mục gì? Việc truy xuất nào?
• Mức logic (mức khái niệm):
- Trả lời câu hỏi cần phải lưu trữ loại liệu gì? - Mối quan hệ chúng nào?
• Mức khung nhìn (mức ngoài):
- Là mức NDC chương trình ứng dụng - Mỗi NDC hay chương trình ứng dụng
(3)5.1.2 CÁC MỨC THỂ HIỆN CỦA CSDL
Chương Cơ sở liệu 08/02/2017
5.1.3 MƠ HÌNH DỮ LIỆU QUAN HỆ • Mơ hình liệu: tập hợp khái niệm ký pháp
dùng để mô tả liệu, mối quan hệ liệu, ràng buộc liệu tổ chức
• Các mơ hình liệu:
- Mơ hình liệu quan hệ (Relational Data Model) - Mơ hình liệu mạng (Network Data Model) - Mơ hình liệu phân cấp (Hierarchical Data Model) - Mơ hình liệu thực thể liên kết (Entity Relationship
Data Model)
- Mơ hình liệu hướng đối tượng (Object Oriented Data Model)
- …
Chương Cơ sở liệu 10 08/02/2017
Khoa Công nghệ thông tin – Học viện Nông nghiệp Việt Nam
Bài giảng Tin học đại cương
5.1.3 MƠ HÌNH DỮ LIỆU QUAN HỆ
• Mơ hình liệu quan hệ đề xuất E.F.Codd vào năm 1970 - 1972
• Biểu diễn liệu dạng bảng (quan hệ) Một CSDL quan hệ thường gồm nhiều bảng, bảng chứa liệu tập thực thể chia thành hàng (bản ghi – record) cột (trường -field)
• Cơ sở liệu xây dựng mơ hình liệu quan hệ gọi CSDL quan hệ
Khoa Công nghệ thông tin – Học viện Nông nghiệp Việt Nam
Bài giảng Tin học đại cương
Các khái niệm mơ hình liệu quan hệ
• Quan hệ • Lược đồ • Thuộc tính • Bộ
(4)Quan hệ
• Dữ liệu CSDL quan hệ tổ chức thành bảng chiều, bảng quan hệ
Chương Cơ sở liệu 13 08/02/2017
Lược đồ (schema)
• Tên quan hệ tập thuộc tính gọi lược đồ quan hệ
• Cách biểu diễn: Tên quan hệ (danh sách thuộc tính)
• Ví dụ:
lược đồ quan hệ:
Khoa(MaKhoa, TenKhoa, SoDT)
Chương Cơ sở liệu 14 08/02/2017
Khoa Công nghệ thông tin – Học viện Nông nghiệp Việt Nam
Bài giảng Tin học đại cương
Thuộc tính
• Thuộc tính tính chất riêng biệt đối tượng cần lưu trữ CSDL để phục vụ cho việc khai thác liệu đối tượng
• Thuộc tính đặc trưng bởi:
- Tên gọi: thuộc tính đặt tên theo cách gợi nhớ theo quy định
- Kiểu liệu: thuộc tính phải thuộc kiểu liệu định
- Miền giá trị (domain): tập tất giá trị mà thuộc tính nhận
Khoa Cơng nghệ thơng tin – Học viện Nông nghiệp Việt Nam
Bài giảng Tin học đại cương
Bộ (tuble)
• Mỗi dịng quan hệ, trừ dòng tiêu đề ghi tên thuộc tính, gọi (bản ghi -record)
(5)Khóa (key – khóa chính)
• Là tập gồm thuộc tính tối thiểu để xác định tính quan hệ • Ví dụ:
- Quan hệ Khoa(MaKhoa, TenKhoa, SoDT) chọn MaKhoa làm khóa
- Quan hệ Ketqua(MaSV, MaMH, Diem) cặp {MaSV, MaMH} làm khóa
Chương Cơ sở liệu 17 08/02/2017
Khóa ngoại (foreign key)
• Là tập gồm hay nhiều thuộc tính khơng phải khóa lược đồ quan hệ lại khóa lược đồ quan hệ khác
• Dùng để biểu thị mối liên kết quan hệ với quan hệ khác mơ hình quan hệ
• Ví dụ:
KHOA(Makhoa, Tenkhoa, SoDT) LOP(MaLop, TenLop, Makhoa)
Trong quan hệ LOP, Makhoa khóa ngoại
Chương Cơ sở liệu 18 08/02/2017
Khoa Công nghệ thông tin – Học viện Nông nghiệp Việt Nam
Bài giảng Tin học đại cương
5.1.4 HỆ CƠ SỞ DỮ LIỆU
• Là hệ thống gồm thành phần: - Cơ sở liệu
- Người sử dụng CSDL: người có quyền truy nhập hợp pháp vào CSDL (người dùng cuối, người viết chương trình ứng dụng, người quản trị CSDL)
- Hệ quản trị CSDL
- Phần cứng: thiết bị nhớ thứ cấp sử dụng để lưu trữ CSDL
Khoa Công nghệ thông tin – Học viện Nông nghiệp Việt Nam
Bài giảng Tin học đại cương
5.1.5 LỢI ÍCH CỦA HỆ CƠ SỞ DỮ LIỆU
(6)5.1.5 LỢI ÍCH CỦA HỆ CƠ SỞ DỮ LIỆU
• Hạn chế hướng tiếp cận hệ tập tin
- Dữ liệu lưu trữ dư thừa khơng qn - Khó khăn truy xuất, chia sẻ liệu
- Khó bảo mật - …
Chương Cơ sở liệu 21 08/02/2017
5.1.5 LỢI ÍCH CỦA HỆ CƠ SỞ DỮ LIỆU
Chương Cơ sở liệu 22 08/02/2017
• Tổ chức liệu dạng CSDL dùng chung
Khoa Công nghệ thông tin – Học viện Nông nghiệp Việt Nam
Bài giảng Tin học đại cương
5.1.5 LỢI ÍCH CỦA HỆ CƠ SỞ DỮ LIỆU
• Giảm bớt dư thừa liệu lưu trữ
• Tránh khơng quán lưu trữ liệu bảo đảm tính tồn vẹn liệu
• Có thể triển khai đồng thời nhiều ứng dụng CSDL
• Thống tiêu chuẩn, thủ tục biện pháp bảo vệ, an toàn liệu
Cho phép tổ chức, quản lý liệu cách hiệu
Khoa Công nghệ thông tin – Học viện Nông nghiệp Việt Nam
Bài giảng Tin học đại cương
5.2 HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU
5.2.1 Khái niệm
(7)5.2.1 KHÁI NIỆM
• Hệ quản trị sở liệu (Database Management System - DBMS): phần mềm thiết kế cho phép tạo lập, lưu trữ khai thác thông tin CSDL cách thuận lợi
> Hệ QTCSDL cung cấp môi trường thuận lợi, đơn giản hiệu để người sử dụng tạo lập, lưu trữ thao tác CSDL mà không cần quan tâm nhiều đến thuật toán chi tiết cách biểu diễn liệu nhớ
Chương Cơ sở liệu 25 08/02/2017
5.2.2 CHỨC NĂNG CỦA HỆ QUẢN TRỊ CSDL
• Cung cấp mơi trường tạo lập sở liệu
• Cung cấp mơi trường cập nhật khai thác liệu - Cập nhật: thêm, xóa, sửa liệu
- Khai thác: xếp, tìm kiếm, kết xuất báo cáo, … • Cung cấp cơng cụ kiểm sốt, điều khiển việc truy
cập vào CSDL:
- Phát ngăn chặn truy cập trái phép - Duy trì tính qn liệu
- Tổ chức, điều khiển truy cập đồng thời - Khôi phục CSDL gặp cố
- Quản lý mô tả liệu
Chương Cơ sở liệu 26 08/02/2017
Khoa Công nghệ thông tin – Học viện Nông nghiệp Việt Nam
Bài giảng Tin học đại cương
5.2.3 PHÂN LOẠI HỆ QUẢN TRỊ CSDL
• Chia thành loại:
- XML DBMS (eXtensible Markup Language Database Management System): phù hợp cho liệu định dạng XML
- ODBMS (Object Database Management System): phù hợp cho mơ hình CSDL hướng đối tượng - RDBMS (Relational Database Management
System): phù hợp cho mơ hình CSDL quan hệ
Khoa Cơng nghệ thơng tin – Học viện Nông nghiệp Việt Nam
Bài giảng Tin học đại cương
5.2.3 PHÂN LOẠI HỆ QUẢN TRỊ CSDL
• Một số hệ quản trị CSDL phổ biến: - DB2
- Microsoft SQL Server - Microsoft Access - MySQL
(8)5.3 NGƠN NGỮ TRUY VẤN SQL
• SQL – Structured Query Language: ngôn ngữ truy vấn dựa đại số quan hệ
• Được xem ngơn ngữ chuẩn cho phép người dùng giao tiếp với CSDL
• Cho phép thực thi thao tác với CSDL: tạo, thêm, xóa, sửa, truy vấn
Chương Cơ sở liệu 29 08/02/2017
5.3 NGÔN NGỮ TRUY VẤN SQL • Các thành phần ngơn ngữ SQL:
- Ngôn ngữ định nghĩa liệu (Data Definition Language – DDL): cung cấp câu lệnh cho phép định nghĩa lược đồ quan hệ, ràng buộc tồn vẹn liệu, cho phép sửa, xóa cấu trúc quan hệ
- Ngôn ngữ thao tác liệu (Data Manipullation Language-DML): cho phép khai thác CSDL với thao tác tìm kiếm, trích rút, tổng hợp, thêm, sửa, xóa liệu - Ngơn ngữ kiểm soát (quản lý) liệu (Data Control
Language-DCL): bao gồm câu lệnh đảm bảo tính an tồn toàn vẹn liệu, cấp phát quyền truy cập vào liệu
Chương Cơ sở liệu 30 08/02/2017
Khoa Công nghệ thông tin – Học viện Nông nghiệp Việt Nam
Bài giảng Tin học đại cương
5.3.1 CÂU LỆNH TRUY VẤN DỮ LIỆU
1 Cú pháp tổng quát Dạng đơn giản Dấu*
4 Mệnh đề WHERE Truy vấn từ nhiều Bảng Mệnh đề ORDER BY Mệnh đề GROUP BY Mệnh đề HAVING Phát biểu Select với AS
10 Phát biểu Select với DISTINCT 11 Truy vấn
Khoa Công nghệ thông tin – Học viện Nông nghiệp Việt Nam
Bài giảng Tin học đại cương
1 Cú pháp tổng quát
SELECT <Danh sách cột> FROM <Danh sách Bảng> WHERE <Các điều kiện> GROUP BY <Tên cột>
(9)2 Dạng đơn giản
• Cú pháp:
SELECT <Danh sách cột> FROM <Tên Bảng>
Lấy số cột bảng
• Ví dụ: Lấy mã sinh viên, họ đệm tên sinh viên bảng SINHVIEN
SELECT MaSV, Hodem, Ten FROM SINHVIEN;
Chương Cơ sở liệu 33 08/02/2017
3 Dấu *
• Dấu * đại diện cho tất cột SELECT *
FROM <Tên Bảng>
• Ví dụ: Lấy danh sách khoa SELECT *
FROM KHOA;
Chương Cơ sở liệu 34 08/02/2017
Khoa Công nghệ thông tin – Học viện Nông nghiệp Việt Nam
Bài giảng Tin học đại cương
4 Mệnh đề WHERE
• Dùng để đặt điều kiện lấy liệu SELECT <Danh sách cột> FROM <TênBảng>
WHERE <Danh sách điều kiện>
Ví dụ: lấy mã sinh viên, họ đệm tên sinh viên nữ
SELECT MaSV, Hodem, Ten FROM SINHVIEN
Khoa Công nghệ thông tin – Học viện Nông nghiệp Việt Nam
Bài giảng Tin học đại cương
4 Mệnh đề WHERE
• Các phép tốn mệnh đề WHERE: - So sánh: >, <, >=, <=, =, <>
- Logic: And, Or, Not
• Ví dụ: lấy mã sinh viên, họ đệm tên sinh viên nữ học lớp K57CNSHA
SELECT MaSV, Hodem, Ten FROM SINHVIEN
(10)4 Mệnh đề WHERE
• Tốn tử BETWEEN <giá trị 1> AND <giá trị 2> • Ví dụ: Lấy danh sách kết mơn học có điểm
nằm đoạn [5,7] SELECT * FROM KETQUA
WHERE Diem between and 7;
Chương Cơ sở liệu 37 08/02/2017
4 Mệnh đề WHERE
• Tốn tử [NOT] LIKE: tìm mẫu ký tự
• Sử dụng với ký tự đại diện: ? (1 ký tự bất kỳ), * (1 chuỗi ký tự bất kỳ)
• Ví dụ: lấy danh sách Sinh viên Họ "Nguyễn" SELECT *
FROM SINHVIEN
WHERE Hodem LIKE "Nguyễn*";
Chương Cơ sở liệu 38 08/02/2017
Khoa Công nghệ thông tin – Học viện Nông nghiệp Việt Nam
Bài giảng Tin học đại cương
4 Mệnh đề WHERE
• Tốn tử [NOT] IN: phép toán so sánh tập hợp, danh sách
• Ví dụ: Lấy thơng tin lớp thuộc khoa công nghệ thông tin, nông học chăn nuôi thú y
SELECT* FROM LOP
WHERE MaKhoa IN ("CNSH", "CNTT", "TY");
Khoa Công nghệ thông tin – Học viện Nông nghiệp Việt Nam
Bài giảng Tin học đại cương
5 Truy vấn từ nhiều bảng
• Khi thơng tin cần lấy có từ nhiều bảng khác nhau, cần thực truy vấn từ nhiều bảng
SELECT <Danh sách cột> FROM <Danh sách Bảng> WHERE <Các điều kiện> • Lưu ý:
- Cần liên kết bảng lại với
- Các tên cột có nhiều bảng cần ghi rõ theo dạng [Tên Bảng].[Tên cột]
(11)5 Truy vấn từ nhiều bảng
• Ví dụ: Hiển thị thơng tin sinh viên với kết học tập họ Thông tin hiển thị cần (mã sinh viên, họ tên, ngày sinh, giới tính, tên mơn học, điểm):
SELECT SINHVIEN.MaSV, Hodem, Ten, Ngaysinh, Gioitinh, TenMH, Diem
FROM SINHVIEN, KETQUA, MONHOC
WHERE SINHVIEN.MaSV = KETQUA.MaSV AND KETQUA.MaMH = MONHOC.MaMH;
Chương Cơ sở liệu 41 08/02/2017
6 Mệnh đề ORDER BY
• Sắp xếp kết theo thứ tự mong muốn ORDER BY <DS Tên cột> [ASC | DESC] • Ví dụ: Lấy sinh viên nữ học lớp K57CNSHA,
được xếp theo vần alphabet họ đệm tên SELECT MaSV, Hodem, Ten
FROM SINHVIEN
WHERE Gioitinh = "Nữ" and MaLop = "K57CNSHA"
ORDER BY Ten, Hodem;
Chương Cơ sở liệu 42 08/02/2017
Khoa Công nghệ thông tin – Học viện Nông nghiệp Việt Nam
Bài giảng Tin học đại cương
7 Mệnh đề GROUP BY
• Nhóm liệu lại theo nhóm để thực phép toán thống kê
GROUP BY <DS Tên cột>
• Ví dụ: In danh sách lớp số sinh viên lớp từ bảng SinhVien
SELECT SINHVIEN.MaLop, TenLop, COUNT(SINHVIEN.MaSV) AS Sosinhvien
FROM SINHVIEN, LOP
WHERE SINHVIEN.MaLop = LOP.MaLop
Khoa Công nghệ thông tin – Học viện Nông nghiệp Việt Nam
Bài giảng Tin học đại cương
7 Mệnh đề GROUP BY
(12)8 Mệnh đề HAVING
• Đặt điều kiện chọn sau nhóm liệu mệnh đề GROUP BY
• Ví dụ: In danh sách lớp có số sinh viên > từ bảng SINHVIEN
SELECT SINHVIEN.MaLop, TenLop, COUNT(SINHVIEN.MaSV) AS Sosinhvien
FROM SINHVIEN, LOP
WHERE SINHVIEN.MaLop = LOP.MaLop GROUP BY SINHVIEN.MaLop, TenLop HAVING COUNT(SINHVIEN.MaSV)>2
Chương Cơ sở liệu 45 08/02/2017
9 Phát biểu Select với AS
• Đặt lại tên trường hiển thị kết
• Ví dụ: Hiển thị thông tin sinh viên với kết học tập họ Khi hiển thị cột Diem đổi tên thành cột DiemTB
SELECT SINHVIEN.MaSV, Hodem, Ten, Ngaysinh, Gioitinh, TenMH, Diem as DiemTB
FROM SINHVIEN, KETQUA, MONHOC
WHERE SINHVIEN.MaSV = KETQUA.MaSV AND KETQUA.MaMH = MONHOC.MaMH;
Chương Cơ sở liệu 46 08/02/2017
Khoa Công nghệ thông tin – Học viện Nông nghiệp Việt Nam
Bài giảng Tin học đại cương
10 Phát biểu Select với DISTINCT
• Nếu kết truy vấn có nhiều ghi trùng nhau, để lấy mẫu tin ta dùng DISTINCT
• Ví dụ: In danh sách lớp bảng SINHVIEN SELECT DISTINCT MALOP
FROM SINHVIEN;
Khoa Công nghệ thông tin – Học viện Nông nghiệp Việt Nam
Bài giảng Tin học đại cương
11 Truy vấn con
• Đơi ta cần sử dụng kết câu truy vấn để làm điều kiện cho câu truy vấn khác, ta gọi truy vấn
(13)11 Truy vấn con
• Dạng tổng quát:
SELECT <Danh sách cột> FROM <Danh sách Bảng> WHERE <Các điều kiện>
…<Têncột > IN ( NOT IN, =, <>, …) (SELECT <Danh sách cột> FROM <Danh sách Bảng> WHERE<Các điều kiện>)
Chương Cơ sở liệu 49 08/02/2017
11 Truy vấn con
• Ví dụ: Hiển thị thơng tin sinh viên học học lại môn học
SELECT distinct Sinhvien.MaSV, Hodem, Ten, Ngaysinh
FROM SINHVIEN, KETQUA
WHERE (SINHVIEN.MaSV=KETQUA.MaSV) AND SINHVIEN.MaSV not IN
(SELECT distinct MaSV FROM KETQUA WHERE Diem<4);
Chương Cơ sở liệu 50 08/02/2017
Khoa Công nghệ thông tin – Học viện Nông nghiệp Việt Nam
Bài giảng Tin học đại cương
5.3.2 CÂU LỆNH CẬP NHẬT DỮ LIỆU
• Lệnh thêm ghi • Lệnh sửa ghi • Lệnh xóa ghi
Khoa Công nghệ thông tin – Học viện Nông nghiệp Việt Nam
Bài giảng Tin học đại cương
Lệnh thêm ghi
• Cú pháp:
INSERT INTO <tênbảng>(<danh sách cột>) VALUES (<danh sách giá trị>)
• Ví dụ: thêm dịng vào bảng SINHVIEN
INSERT INTO SINHVIEN (MaSV, Hodem, Ten, Ngaysinh, Gioitinh, Tinh, MaLop)
(14)Lệnh thêm ghi
• Nếu giá trị sau từ khố VALUES hoàn toàn phù hợp thứ tự với cột bảng, danh sách cột bỏ qua
• Ví dụ: thêm dịng vào bảng SINHVIEN INSERT INTO SINHVIEN
VALUES ("583495", "Nguyễn Lan", "Phương", "13/10/1992", "Nữ", "Hà Nội","K58CNTTA");
Chương Cơ sở liệu 53 08/02/2017
Lệnh thêm ghi
• Ta thêm ghi vào bảng từ câu lệnh truy vấn (Select)
INSERT INTO <tên bảng> (<tên cột 1>, ) <Câu lệnh Select>
hoặc
INSERT INTO <tênbảng> <Câu lệnh Select>
Chương Cơ sở liệu 54 08/02/2017
Khoa Công nghệ thông tin – Học viện Nông nghiệp Việt Nam
Bài giảng Tin học đại cương
Lệnh thêm ghi
• Ví dụ: thêm tất dịng bảng DSSV vào bảng SINHVIEN:
INSERT INTO SINHVIEN SELECT * FROM DSSV ;
• Lưu ý: hai bảng DSSV SINHVIEN phải có cấu trúc giống
Khoa Công nghệ thông tin – Học viện Nông nghiệp Việt Nam
Bài giảng Tin học đại cương
Lệnh sửa ghi
• Cú pháp:
UPDATE <tên bảng>
SET <tên cột 1> = <giá trị 1>, <tên cột 2> = <giá trị 2>, , <tên cột n> = < giá trị n>
[WHERE <điềukiện>];
• Ý nghĩa:
- Giá trị cột <tên cột 1>, <tên cột 2> ghi thoả mãn điều kiện sau WHERE sửa đổi thành <giá trị 1>, <giá trị 2>, … - Nếu khơng có mệnh đề WHERE tất
(15)Lệnh sửa ghi
• Ví dụ: sửa hộ sinh viên từ Hà Tây thành Hà Nội
UPDATE SINHVIEN SET Tinh = "Hà Nội" WHERE Tinh = "Hà Tây";
Chương Cơ sở liệu 57 08/02/2017
Lệnh xóa ghi
• Cú pháp:
DELETE FROM <tên bảng> [WHERE <điều kiện>]; • Ý nghĩa:
- Các ghi thoả mãn điều kiện WHERE bị xố khỏi bảng
- Nếu khơng có mệnh đề WHERE tất ghi bảng bị xóa khỏi bảng
Chương Cơ sở liệu 58 08/02/2017
Khoa Công nghệ thông tin – Học viện Nông nghiệp Việt Nam
Bài giảng Tin học đại cương
Lệnh xóa ghi
• Ví dụ: Xóa tất ghi bảng DSSV: DELETE FROM DSSV;
• Ví dụ: Xóa sinh viên lớp K56CNSHA khỏi bảng SINHVIEN