1. Trang chủ
  2. » Luận Văn - Báo Cáo

Bài giảng Cơ sở dữ liệu – Database EE4253: Chương 3.2 - Ngôn ngữ định nghĩa và thao tác dữ liệu (TT)

40 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 40
Dung lượng 1,48 MB

Nội dung

Cơ sở liệu – Database EE4253 Vũ Hải 2016 International Research Institute MICA, Hanoi University of Science and Technology Chương 3: Ngôn ngữ định nghĩa thao tác liệu Chương 3: Ngôn ngữ định nghĩa thao tác liệu • Định nghĩa & Thao tác liệu (truy vấn) CSDL biểu diễn mô hình quan hệ • cách tiếp cận: ĐSQH, tính tốn vị từ • SQL hay SEQUEL: ngơn ngữ thao tác thực sử dụng hệ QT CSDL: – mạnh, – dễ sử dụng, – phổ biến 3.2 Ngơn ngữ SQL • Khả nn SQL: – Định nghĩa cấu trúc liệu – Thay đổi CTDL – Đặc tả ràng buộc toàn vẹn • Các dạng chuẩn: SQL-86, SQL-89 SQL92, SQL-99 – Không phân biệt chữ hoa chữ thường – Một số hệ cần dấu chấm phẩy sau câu lệnh Tham khảo: – www.learn-sql-tutorial.com – www.w3schools.com/SQL/sql_syntax.asp 3.2 Ngôn ngữ SQL • Các thành phần nn SQL – Ngôn ngữ định nghĩa liệu Data Definition Language (DDL) – Ngôn ngữ thao tác liệu Data Manipulation Language (DML) – Ngôn ngữ điều khiển giao dịch 3.2 Ngôn ngữ SQL • DDL cho phép định nghĩa : – Sơ đồ quan hệ – Kiểu liệu hay miền giá trị – Ràng buộc toàn vẹn – Quyền truy cập quan hệ –… • DML cho phép: – Thêm/xóa/thay đổi vào CSDL, truy vấn dựa ĐSQH tính tốn vị từ – DML nhúng: cho phép sử dụng SQL NNLT • Điều khiển giao dịch: – Đặc tả bắt đầu/kết thúc giao dịch 3.2.1 Định nghĩa liệu • Các kiểu liệu có sẵn: – Dữ liệu xâu ký tự: – – Char(n) Varchar (n) – Dữ liệu số: – – – – Int (từ -2,147,483,648 đến 2,147,483,647) Smallint (từ -32,768 đến 32,767) Numeric (p,d): gồm d chữ số, p chữ số sau dấu thập phân Real – Dữ liệu ngày tháng – – Date: YYYY-MM-DD Time: HH:MM.SS 3.2.1 Định nghĩa liệu Tạo CSDL – create database| schema create database COMPANY Tạo miền giá trị – create domain create domain name varchar(30) 3.2.1 Định nghĩa liệu Tạo quan hệ (bảng) Ràng buộc mức thuộc tính Ràng buộc mức bảng 3.2.1 Định nghĩa liệu Tạo ràng buộc • Ràng buộc mức thuộc tính: » NOT NULL » DEFAULT » UNIQUE » PRIMARY KEY » REFERENCES 10 Phép kết nối • Kết nối có điều kiện: – SELECT * FROM [INNER] JOIN ON – SELECT * FROM employee INNER JOIN department ON employee.DepartmentID = department.DepartmentID; – SELECT * FROM employee, department WHERE employee.DepartmentID = department.DepartmentID; – SELECT * FROM employee INNER JOIN department USING (DepartmentID); • Kết nối Natural join: – SELECT * FROM employee NATURAL JOIN department; 26 Phép kết nối JOIN USING 27 Phép kết nối ngồi • Kết nối bảng A B đưa kết gồm thuộc A/B/AB không thỏa mãn điều kiện kết nối • Kết nối ngồi bên trái, bên phải, toàn – SELECT * FROM LEFT [OUTER] JOIN ON – SELECT * FROM RIGHT [OUTER] JOIN ON – SELECT * FROM FULL [OUTER] JOIN ON 28 Phép kết nối SELECT * FROM employee LEFT OUTER JOIN department ON employee.DepartmentID = department.DepartmentID; SELECT * FROM employee RIGHT OUTER JOIN department ON employee.DepartmentID = department.DepartmentID; SELECT * FROM employee FULL OUTER JOIN department ON employee.DepartmentID = department.DepartmentID; 29 Tự kết nối • self-join • SELECT F.EmployeeID, F.LastName, S.EmployeeID, S.LastName, F.Country FROM Employee F INNER JOIN Employee S ON F.Country = S.Country WHERE F.EmployeeID < S.EmployeeID ORDER BY F.EmployeeID, S.EmployeeID; 30 Câu lệnh lồng (nested queries) • SQL cho phép sử dụng câu lệnh (subqueries) để tăng tính linh hoạt truy vấn – select * from Song where author_id in ( select id from Author where dob < '1950-01-01'); – select * from Customer where count ( select id from Invoice where customer = Customer.id) > 0; 31 Hàm kết hợp • Các hàm kết hợp: xuất mệnh đề Select – – – – – avg(): giá trị trung bình min(): giá trị max(): giá trị max sum(): tổng count(): số lượng • Ví dụ: – tính điểm trung bình học sinh có id = 10 select avg(mark) from Mark where stid = 10; 32 Gộp nhóm • Áp dụng hàm kết hợp tập giá trị, nhóm dựa group by … • Ví dụ: – tìm số nhân cơng làm việc phịng ban select deptid, count(eid) from employee group by deptid; – tính điểm trung bình học sinh select stid, avg(mark) from Mark group by stid; – tìm danh sách sách thư viện kèm theo số lượng select title, count(*) from Book group by title; 33 Gộp nhóm với “having…” • “where…” điều kiện giá trị, cịn “having…” điều kiện với nhóm • Mệnh đề having áp dụng sau gộp nhóm • VD: – select s.id, s.name, avg(m.mark) from Mark m, Student s where m.std = s.id and s.class = 'B' group by s.id having avg(m.mark) >= 8; Danh sách sinh viên lớp B có điểm trung bình >= 34 Tốn tử exists • Dùng để kiểm tra tập hợp có rỗng hay khơng – Nếu rỗng, khơng thực query ngồi – Nếu khơng rỗng, thực query ngồi – Phủ định dùng “not exists…” • Ví dụ: select sum(sales) from store_information where exists ( select * from geography where region_name = 'west'); • Lưu ý có tương quan bên ngồi: select * from Customer where not exists ( select id from Invoice where customer = Customer.id); 35 So sánh tập hợp • Câu hỏi: liệt kê sinh viên lớp A có điểm lớn sinh viên lớp B – select * from Student where class = 'A' and mark > some ( select mark from Student where class = 'B'); • Các kiểu so sánh tập hợp: – some / any: có phần tử thoả mãn – all: so với tất 36 Biến • SQL cho phép tạo biến để lưu tạm thời giá trị • Các biến dùng theo cú pháp: @tên • Định nghĩa / thay đổi giá trị biến: – set @VAR = VALUE; – select @VAR := VALUE; • Ví dụ: – set @std = 20; – select @stddob:=dob from Student where id=@std; 37 3.2.2 Thao tác liệu Xóa liệu • Cú pháp: delete from tên-quan-hệ [where điều-kiện]; • Mệnh đề where tương tự câu lệnh select • VD: – delete from Student where regdate > '2000-01-01'; – delete from Book; • Xố tồn liệu quan hệ: – delete from quan-hệ; – truncate quan-hệ; 38 3.2.2 Thao tác liệu Sửa đổi liệu • Cú pháp: update tên-quan-hệ set thuộc-tính = giá-trị, [where điều-kiện]; • VD: – update Student set class = 'C' where name = 'Bill Gates'; – update Book set borrowed = 1, date = now() where id = 1234; 39 40

Ngày đăng: 01/09/2023, 22:03