Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 56 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
56
Dung lượng
650 KB
Nội dung
SQL Structured Query Language TS Lê Thị Lan Thi-Lan.Le@mica.edu.vn Hà Nội - 2011 Nội dung môn học Giới thiệu SQL Các thành phần SQL Ngôn ngữ định nghĩa liệu Ngôn ngữ thao tác liệu Kết luận tập Thi-Lan Le, MICA HUST Giới thiệu SQL Ngôn ngữ Sequel dự án SystemR 1986: Chuẩn SQL đời có tên gọi SQL-86 chuẩn khác đời sau SQL-89 SQL-92, SQL-99 Thi-Lan Le, MICA HUST Giới thiệu SQL Một số ý làm việc với SQL: Kiểm tra dạng chuẩn sử dụng hệ QT CSDL SQL: 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 Thi-Lan Le, MICA HUST Các thành phần SQL Ngôn ngữ định nghĩa liệu (DDL) Data Definition Language Ngôn ngữ thao tác liệu (DML) Data Manipulation Language Ngôn ngữ điều khiển giao dịch Thi-Lan Le, MICA HUST Ngôn ngữ định nghĩa liệu Cho phép định nghĩa: Sơ đồ bảng Kiểu liệu hay miền giá trị Các ràng buộc toàn vẹn Tập dẫn Thơng tin an tồn ủy quyền bảng Cấu trúc lưu trữ vật lý Thi-Lan Le, MICA HUST Ngôn ngữ định nghĩa liệu Kiểu liệu: Dữ liệu xâu ký tự: – – Dữ liệu số: – – – – – Char(n) Varchar (n) : Độ dài thay đổi Int or Integer (từ -2,147,483,648 đến 2,147,483,647) Smallint (từ -32,768 đến 32,767) Numeric (p,s) Real, double precision Float (n) Dữ liệu ngày tháng – – Date: YYYY-MM-DD Time: HH:MM.SS.MMMM Thi-Lan Le, MICA HUST Ngôn ngữ định nghĩa liệu Tạo bảng CSDL: CREATE TABLE ( [NOT NULL], [CONSTRAINT …]) Thi-Lan Le, MICA HUST Ngôn ngữ định nghĩa liệu Tạo bảng – Xác định khóa Thi-Lan Le, MICA HUST Ngôn ngữ định nghĩa liệu Thêm - Xóa cột bảng Thi-Lan Le, MICA HUST 10 Ngôn ngữ thao tác liệu Hợp, giao hiệu bảng Giao A B (A∩B) A B Một bảng bao gồm dòng vừa tồn A vừa tồn B Thi-Lan Le, MICA HUST 42 Ngôn ngữ thao tác liệu Hợp, giao hiệu bảng Hiệu A B A B Bảng bao gồm dịng A khơng B Thi-Lan Le, MICA HUST 43 Ngôn ngữ thao tác liệu Bảng lưu trữ thành viên Bridge Chess có cấu trúc sau: Thuộc tính Kiểu liệu Độ rộng id numeric name character 10 sex character class character Bridge [A] Ý nghĩa Mã hiệu sv Tên Giới tính (M / F) Lớp Chess [B] id name sex class 9812 9801 9814 9806 9818 : Aaron Peter Kenny Kitty Edmond : M M M F M : 1A 1A 1B 1B 1C : Thi-Lan Le, MICA HUST id name sex class 9802 9801 9815 9814 9817 : Mary Peter Eddy Kenny George : F M M M M : 1A 1A 1B 1B 1C : 44 Ngôn ngữ thao tác liệu Yêu cầu 17: Xác định hợp câu lạc Câu truy vấn: SELECT * FROM bridge UNION SELECT * FROM chess ORDER BY class, name SELECT FROM WHERE ; UNION ; SELECT FROM WHERE Thi-Lan Le, MICA HUST 45 Ngôn ngữ thao tác liệu Yêu cầu 18: In danh sách sinh viên tham gia câu lạc Câu truy vấn: SELECT * FROM bridge WHERE id IN ( SELECT id FROM chess) SELECT FROM table1 ; WHERE col IN ( SELECT col FROM table2 ) Thi-Lan Le, MICA HUST 46 Ngôn ngữ thao tác liệu Yêu cầu 19: Xác định danh sách sinh viện tham gia câu lạc Bridge không tham gia câu lạc Chess Câu truy vấn: SELECT * FROM bridge WHERE id NOT IN (SELECT id FROM chess ) SELECT FROM table1 ; WHERE col NOT IN ( SELECT col FROM table2 ) Thi-Lan Le, MICA HUST 47 Ngôn ngữ thao tác liệu Bảng Music lưu trữ thông tin nhạc cụ sinh viên Thuộc tính Kiểu liệu Độ rộng Ý nghĩa id numeric mã hiệu sinh viên type character 10 kiểu nhạc cụ Thi-Lan Le, MICA HUST 48 Ngôn ngữ thao tác liệu Kết nối: Kết nối tự nhiên (Natural Join) hay (Inner joint): thao tác kết nối bảng cột chung Kết nối (outer join): LEFT OUTER JOIN (thường viết LEFT JOIN) lựa chọn tất dòng bảng sau FROM khơng có bảng thứ hai RIGHT OUTER JOIN Thi-Lan Le, MICA HUST 49 Ngôn ngữ thao tác liệu Kết nối tự nhiên: Cú pháp 1: SELECT a.comcol, a.col1, b.col2, expr1, expr2 FROM table1 a JOIN table2 b ON a.comcol = b.comcol Cú pháp 2: SELECT a.comcol, a.col1, b.col2, expr1, expr2 FROM table1 a, table2 b WHERE a.comcol = b.comcol Thi-Lan Le, MICA HUST 50 Ngôn ngữ thao tác liệu Yêu cầu 20: Xác định danh sách sinh viên nhạc cụ sinh viên học Câu truy vấn: SELECT s.class, s.name, s.id, m.type FROM student s, music m WHERE s.id=m.id ORDER BY class, name Kết Thi-Lan Le, MICA HUST class 1A 1A 1A 1A 1A 1A 1A : name Aaron Bobby Gigi Jill Johnny Luke Mary : id 9812 9811 9824 9820 9803 9810 9802 : type Piano Flute Recorder Piano Violin Piano Flute : 51 Ngôn ngữ thao tác liệu Yêu cầu 20: Xác định số sinh viên học piano lớp Câu truy vấn: SELECT s.class, COUNT(*) FROM student s, music m WHERE s.id=m.id AND m.type=‘Piano’ GROUP BY class ORDER BY class Student Join Điều kiện m.type= "Piano" Kết Music Thi-Lan Le, MICA HUST Nhóm theo lớp class 1A 1B 1C cnt 52 Ngôn ngữ thao tác liệu Yêu cầu 21: Xác định danh sách sinh viên chưa lựa chọn nhạc cụ Câu truy vấn: SELECT class, name, id FROM student WHERE id NOT IN ( SELECT id FROM music ) ORDER BY class, name Kết Thi-Lan Le, MICA HUST class 1A 1B 1B 1C 1C : name Mandy Kenny Tobe Edmond George : id 9821 9814 9805 9818 9817 : 53 Ngôn ngữ thao tác liệu Yêu cầu 22: Tạo danh sách sinh viên với danh sách nhạc cụ sinh viên học Danh sách phải bao gồm sinh viên chưa đăng ký nhạc cụ Câu truy vấn: SELECT s.class, s.name, s.id, m.type FROM student s, music m WHERE s.id=m.id UNION SELECT class, name, id, "" FROM student WHERE id NOT IN ( SELECT id FROM music ) ORDER BY 1, Sinh viên tự đề xuất câu truy vấn khác để thực yêu cầu 22 Thi-Lan Le, MICA HUST 54 Ngôn ngữ thao tác liệu class 1A 1A 1A 1A 1A 1A 1A : class 1A 1B 1B 1C 1C : name Aaron Bobby Gigi Jill Johnny Luke Mary : name Mandy Kenny Tobe Edmond George : id 9812 9811 9824 9820 9803 9810 9802 : type Piano Flute Recorder Piano Violin Piano Flute : id 9821 9814 9805 9818 9817 : Thi-Lan Le, MICA HUST class 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1B 1B 1B 1B : name Aaron Bobby Gigi Jill Johnny Luke Mandy Mary Peter Ron Eddy Janet Kenny Kitty : id 9812 9811 9824 9820 9803 9810 9821 9802 9801 9813 9815 9822 9814 9806 : type Piano Flute Recorder Piano Violin Piano Flute Piano Guitar Piano Guitar Recorder : 55 Bài tập Cho bảng thông tin: Viết câu truy vấn liệt kê tên khách hàng tổng số tiền mà họ sử dụng Thi-Lan Le, MICA HUST 56