intTypePromotion=1

SQL (Structured Query Language) (tiếp theo)

Chia sẻ: Tran Tuananh | Ngày: | Loại File: PDF | Số trang:19

0
56
lượt xem
10
download

SQL (Structured Query Language) (tiếp theo)

Mô tả tài liệu
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Xoá dữ liệu Dùng câu lệnh “delete from…” để xoá các dữ liệu thoả mãn một điều kiện mong muốn Cú pháp: delete from tên-quan-hệ [where điều-kiện]; Mệnh đề where tương tự trong câu lệnh select VD: delete from Student where regdate '2000-01-01'; delete from Book where Xoá toàn bộ dữ liệu của quan hệ: delete from quan-hệ; truncate quan-hệ;

Chủ đề:
Lưu

Nội dung Text: SQL (Structured Query Language) (tiếp theo)

  1. SQL (Structured Query Language) (tiếp theo) EE4509, EE6133 – HK2 2011/2012 1 TS. Đào Trung Kiên – ĐH Bách khoa Hà Nội
  2. Xoá dữ liệu Dùng câu lệnh “delete from…” để xoá các dữ liệu thoả  mãn một điều kiện mong muốn Cú pháp:  delete from tên-quan-hệ [where điều-kiện]; Mệnh đề where tương tự trong câu lệnh select  VD:  delete from Student where regdate > '2000-01-01';  delete from Book where  Xoá toàn bộ dữ liệu của quan hệ:  delete from quan-hệ;  truncate quan-hệ;  EE4509, EE6133 – HK2 2011/2012 2 TS. Đào Trung Kiên – ĐH Bách khoa Hà Nội
  3. Sửa đổi dữ liệu Dùng câu lệnh “update …” để cập nhật giá trị của các  thuộc tính trong một quan hệ bằng giá trị mới thoả mãn một điều kiện mong muốn 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; EE4509, EE6133 – HK2 2011/2012 3 TS. Đào Trung Kiên – ĐH Bách khoa Hà Nội
  4. Số học Các phép toán: +, -, *, /, %  Hàm: abs(), sqrt(), exp(), ln(), power(),  rand(),… Ví dụ:  select sqrt(5) + power(40, 5);  update Product set price = price * (1 + ln(2))  where category = 'laptop'; EE4509, EE6133 – HK2 2011/2012 4 TS. Đào Trung Kiên – ĐH Bách khoa Hà Nội
  5. Logic Các phép toán: and, or, not  So sánh: >, =, = 50 and count < 10; So sánh với null: dùng “is null” và “is not null”  select id from Student  where phone is not null; Tập hợp: in(…)  select id from Student  where class in ('A', 'B'); EE4509, EE6133 – HK2 2011/2012 5 TS. Đào Trung Kiên – ĐH Bách khoa Hà Nội
  6. Làm việc với ngày tháng Các kiểu dữ liệu:  date, time, datetime, timestamp  Thời gian hiện tại:  curdate(), curtime(), now()  Cộng trừ thời gian:  date_add(), time_add()  date_sub(), time_sub()  Trích các tham số:  year(), month(), day(), week(), hour(), minute(),  second() EE4509, EE6133 – HK2 2011/2012 6 TS. Đào Trung Kiên – ĐH Bách khoa Hà Nội
  7. Làm việc với kiểu chuỗi So sánh: =, !=, >, =,
  8. Gộp nhóm Câu hỏi: tính điểm trung bình của học sinh có id = 10  select avg(mark) from Mark where std = 10;  Câu hỏi: tính điểm trung bình của từng học sinh  select std, avg(mark) from Mark group by std;  Các hàm gộp:  avg(): giá trị trung bình  min(): giá trị min  max(): giá trị max  sum(): tổng  count(): số lượng  Ví dụ khác: danh sách sách trong thư viện kèm theo số  lượng select title, count(*) from Book group by title;  EE4509, EE6133 – HK2 2011/2012 8 TS. Đào Trung Kiên – ĐH Bách khoa Hà Nội
  9. Gộp nhóm: điều kiện trên nhóm Trong câu lệnh có gộp nhóm, “where…” là điều kiện  đối với từng phần tử, còn “having…” là điều kiện với 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 max(m.mark) >= 8; Danh sách các sinh viên lớp B có điểm trung bình >= 8  EE4509, EE6133 – HK2 2011/2012 9 TS. Đào Trung Kiên – ĐH Bách khoa Hà Nội
  10. Gộp kết quả Phép hợp trong SQL được thực hiện bằng cú pháp:  select … union select … Chú ý:  Kết quả các phép select phải tương thích với nhau  Có thể thực hiện hợp hai hoặc nhiều phép select với nhau  Có thể dùng ngoặc (…) để cho rõ ràng  Các kết quả trùng sẽ bị loại bỏ, nếu không muốn thì dùng “union  all” Ví dụ:  select name, dob from Student  where class = 'B' union ( select name, dob from Teacher where city = 'Hanoi'); EE4509, EE6133 – HK2 2011/2012 10 TS. Đào Trung Kiên – ĐH Bách khoa Hà Nội
  11. Giao và loại trừ kết quả Tương tự như phép gộp, nhưng dùng “intersect” và  “except” thay cho “union” Ví dụ:  select id, name from Employee  where gender = 'male' intersect ( select id, name from Employee where dob < '1980-01-01' except ( select id, name from Employee where level = 5 )); Chú ý:  Trong MySQL không hỗ trợ “intersect” và “except”, mà phải  dùng các câu lệnh lồng nhau MSSQL dùng “minus” thay vì “except”  EE4509, EE6133 – HK2 2011/2012 11 TS. Đào Trung Kiên – ĐH Bách khoa Hà Nội
  12. Câu lệnh lồng nhau (nested queries) SQL cho phép sử dụng các câu lệnh con  (subqueries) để tăng tính linh hoạt trong truy vấn Ví dụ: liệt kê các bài hát (quan hệ Song) thuộc các  thể loại được sáng tác bởi các tác giả (quan hệ Author) sinh trước năm 1950 select * from Song  where author_id in ( select id from Author where dob < '1950-01-01'); EE4509, EE6133 – HK2 2011/2012 12 TS. Đào Trung Kiên – ĐH Bách khoa Hà Nội
  13. Toán tử “in” Dùng để kiểm tra tính thuộc tập hợp  Phủ định dùng “not in…”  Có thể được dùng cho bộ giá trị  select * from Song  where (author, category) in ( (5, 10), (4, 15), (4, 19) ); select * from Author  where (first_name, last_name) in (select firstn, lastn from Nominated) EE4509, EE6133 – HK2 2011/2012 13 TS. Đào Trung Kiên – ĐH Bách khoa Hà Nội
  14. Toán tử exists Dùng để kiểm tra một tập hợp có rỗng hay không  Phủ định dùng “not exists…”  Ví dụ: liệt kê các khách hàng chưa mua máy tính ở cửa  hàng select * from Customer  where not exists ( select id from Invoice where customer = Customer.id); Tương tự:  select * from Customer  where count ( select id from Invoice where customer = Customer.id) > 0; EE4509, EE6133 – HK2 2011/2012 14 TS. Đào Trung Kiên – ĐH Bách khoa Hà Nội
  15. Liên kết giữa các thuộc tính với câu lệnh con Các thuộc tính của câu lệnh mẹ có thể được sử  dụng trong các câu lệnh con VD:  select customer from Borrower  where exists ( select * from Depositor where Depositor.customer = Borrower.customer); EE4509, EE6133 – HK2 2011/2012 15 TS. Đào Trung Kiên – ĐH Bách khoa Hà Nội
  16. So sánh tập hợp Câu hỏi: liệt kê các sinh viên của lớp A có điểm lớn  hơn ít nhất một sinh viên của 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ó ít nhất một phần tử thoả mãn  all: so với tất cả  EE4509, EE6133 – HK2 2011/2012 16 TS. Đào Trung Kiên – ĐH Bách khoa Hà Nội
  17. Câu lệnh con trong mệnh đề from Câu lệnh con có thể được sử dụng trong mệnh đề from  Kết quả của câu lệnh con có thể được đổi tên để dễ  tham chiếu Ví dụ:  select branch-name, avg-balance  from ( select branch-name, avg(balance) from account group by branch-name ) as branch-avg(branch-name, avg-balance) where avg-balance > 1200; EE4509, EE6133 – HK2 2011/2012 17 TS. Đào Trung Kiên – ĐH Bách khoa Hà Nội
  18. Biến SQL cho phép tạo các biến để lưu tạm thời các giá trị.  Các biến được dùng theo cú pháp: @tên Định nghĩa / thay đổi giá trị của biến:  set @VAR = VALUE;  select @VAR := VALUE;  Ví dụ:  set @std = 20;  select @stddob:=dob from Student where id=@std; select @stddob; EE4509, EE6133 – HK2 2011/2012 18 TS. Đào Trung Kiên – ĐH Bách khoa Hà Nội
  19. Bài tập Cho các quan hệ SinhVien, GiaoVien, DangKyHoc, Day, Lop, MonHoc. Viết câu truy vấn cho các yêu cầu sau: Liệt kê các sinh viên có đăng ký các môn X, Y 1. Liệt kê các giáo viên dạy từ 5 lớp trở lên 2. Liệt kê các giáo viên dạy ít nhất một lớp có 30 sinh viên trở lên 3. Liệt kê các môn học của giáo viên G mà sinh viên A đăng ký 4. Cho các quan hệ Sach, TacGia, NguoiDoc, Muon. Viết câu truy vấn cho các yêu cầu sau: Liệt kê các sách đã được mượn nhiều hơn 10 lần trong năm 2011 5. Liệt kê những người đọc đã mượn ít nhất 10 đầu sách khác nhau 6. Liệt kê các sách đang được mượn bởi một trong các người đọc ở câu 7. trên Liệt kê các sách của Stephen King hiện tại không có ai đang mượn 8. EE4509, EE6133 – HK2 2011/2012 19 TS. Đào Trung Kiên – ĐH Bách khoa Hà Nội
ADSENSE
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2