• Like
  • Save
Ngon ngu truy van sql
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

Ngon ngu truy van sql

  • 5,445 views
Published

 

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
No Downloads

Views

Total Views
5,445
On SlideShare
0
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
0
Comments
3
Likes
12

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. www.elarion.com Cơ sở dữ liệu [email_address] Never stop improving quality
  • 2. Nội dung (1/1)
    • Khái niệm cơ bản
    • Đại số quan hệ
    • Ngôn ngữ truy vấn SQL
    • Ràng buộc toàn vẹn
    • Phụ thuộc hàm và chuẩn hóa CSDL
  • 3. Giới thiệu ngôn ngữ truy vấn SQL (1/1)
      • Khái niệm:
        • L à một loại ngôn ngữ máy tính phổ biến dùng dể tạo, thêm, xóa, sửa và lấy dữ liệu từ một hệ quản trị cơ sở dữ liệu .
        • Do IBM nghiên cứu . Ra đời vào năm 1970.
        • Được ANSI và ISO tiếp tục phát triển
      • Các phiên bản SQL:
    Năm Phiên bản 1986 SQL-86 1992 SQL-92 1999 SQL1999
  • 4. Các thao tác với ngôn ngữ truy vấn SQL (1/1)
      • Các thao tác trên SQL:
        • Mô tả dữ liệu
        • Thao tác dữ liệu
        • Truy vấn dữ liệu
  • 5. Mô tả dữ liệu (1/1)
      • Mô tả dữ liệu:
        • Lệnh Tạo CSDL.
        • Lệnh Tạo bảng.
        • Lệnh Xóa bảng
        • Lệnh Thêm cột
        • Lệnh Xóa cột
        • Lệnh Sửa Cột
        • Lệnh Tạo khóa chính
        • Lệnh Tạo khóa ngoại
        • Lệnh Tạo ràng buộc miền giá trị
        • Lệnh Tạo ràng buộc duy nhất
        • Lệnh Tạo chỉ mục
  • 6. Lệnh tạo CSDL (1/1)
      • Lệnh tạo CSDL:
        • Cú pháp : CREATE DATABASE <tên database>
        • VD: CREATE DATABASE LARION_TDT
  • 7. Lệnh tạo bảng (1/1)
      • Lệnh tạo bảng:
        • Cú pháp: CREATE TABLE <tên bảng>
          • ( <tên cột 1><kiểu dữ liệu 1> [NOT NULL]
          • … )
        • VD: CREATE TABLE SINHVIEN
        • (MSSV char(4) not null,
          • HOLOT varchar(20) not null,
          • TEN varchar(10) not null,
          • PHAI bit,
          • NGAYSINH datetime)
    SINHVIEN MSSV HOLOT TEN PHAI NGAYSINH
  • 8. Lệnh xóa bảng & lệnh thêm cột (1/1)
      • Lệnh xóa bảng:
        • Cú pháp: DROP TABLE <tên bảng>;
        • VD: DROP TABLE SINHVIEN;
      • Lệnh thêm cột:
        • Cú pháp: ALTER TABLE <tên bảng>
          • ADD <tên cột> <kiểu dữ liệu> [NOT NULL];
        • VD:
          • ALTER TABLE SINHVIEN
          • ADD DOANVIEN bit;
    SINHVIEN MSSV HOLOT TEN PHAI NGAYSINH DOANVIEN
  • 9. Lệnh xóa cột (1/1)
      • Lệnh xóa cột:
        • Cú pháp:
          • ALTER TABLE <tên bảng>
          • DROP COLUMN <tên cột>;
        • VD: ALTER TABLE SINHVIEN
      • DROP COLUMN DOANVIEN;
    SINHVIEN MSSV HOLOT TEN PHAI NGAYSINH
  • 10. Lệnh sửa cột (1/1)
      • Lệnh sửa cột:
        • Cú pháp:
          • ALTER TABLE <tên bảng>
          • ALTER COLUMN <tên cột> <kiểu dữ liệu>;
        • VD: ALTER TABLE SINHVIEN
      • ALTER COLUMN NGAYSINH SmallDateTime ;
  • 11. Lệnh tạo khóa chính (1/1)
      • Lệnh tạo khóa chính
        • Cú pháp: ALTER TABLE <tên bảng>
      • ADD CONTRAINT <tên ràng buộc>
      • PRIMARY KEY (danh sách cột);
        • Lưu ý:
          • Tên ràng buộc là duy nhất.
          • Các cột trong danh sách tên cột phải có thuộc tính NOT NULL.
        • VD: ALTER TABLE SINHVIEN ADD CONTRAINT KC_SV PRIMARY KEY (MSSV);
    SINHVIEN MSSV HOLOT TEN PHAI NGAYSINH
  • 12. Lệnh tạo khóa ngoại (1/1)
      • Lệnh tạo khóa ngoại:
        • Cú pháp: ALTER TAB LE <tên bảng>
      • ADD CONSTRAIN T <tên ràng buộc>
      • FOREIGN KEY (danh sách cột)
      • REFERENCES <tên bảng> (danh sách cột);
        • VD: ALTER TABLE SINHVIEN ADD CONSTRAINT KN_SV FOREIGN KEY (MSSV) REFERENCES DSLOP(MSSV)
    SINHVIEN MSSV HOLOT TEN PHAI NGAYSINH MALOP DSLOP MALOP TENLOP NIENKHOA
  • 13. Lệnh tạo ràng buộc về miền giá trị (1/1)
      • Lệnh tạo ràng buộc về miền giá trị:
        • Cú pháp: ALTER TABLE <tên bảng>
        • ADD CONSTRAINT <tên ràng buộc>
      • CHECK (Điều kiện);
        • Lưu ý: tên ràng buộc là duy nhất.
        • VD: ALTER TABLE SINHVIEN ADD CONSTRAINT KT_NGAYSINH CHECK (YEAR(NGAYSINH) BETWEEN 1980 AND 1990);
        • Khi thêm bộ
      • hệ thống sẽ báo lỗi do có ràng buộc năm sinh .
    SINHVIEN MSSV HOLOT TEN PHAI NGAYSINH 080091T Nguyễn Tiến Thành 1 09/09/1990 0900501 Huỳnh Phúc Điền 1 07/07/1991 070021T Nguyễn Ngọc Bình 0 24/12/1979
  • 14. Lệnh tạo ràng buộc duy nhất (1/1)
      • Lệnh tạo ràng buộc duy nhất:
        • Cú pháp: ALTER TABLE <tên bảng>
            • ADD CONSTRAINT <tên ràng buộc>
            • UNIQUE (danh sách tên cột);
        • VD: ALTER TABLE SINHVIEN
      • ADD CONSTRAINT DN_NGAYSINH
      • UNIQUE (NGAYSINH);
        • Khi thêm bộ
        • Hệ thống sẽ báo lỗi do đã có ràng buộc ngày sinh
    SINHVIEN MSSV HOLOT TEN PHAI NGAYSINH 080091T Nguyễn Tiến Thành 1 09/09/1990 090025T Đặng Hồng Hạnh 0 07/07/1991 0900501 Huỳnh Phúc Điền 1 07/07/1991
  • 15. Lệnh tạo chỉ mục (1/1)
      • Lệnh tạo chỉ mục:
        • Tạo chỉ mục để lưu thứ tự sắp xếp các bản ghi theo giá trị tăng dần các cột
        • Nên tạo chỉ mục cho các bảng có nhiều bản ghi và ít được cập nhật
        • Cú pháp: CREATE INDEX <tên index>
        • ON <tên bảng> (<cột 1,<cột 2>,..);
        • VD: CREATE INDEX CM_HOLOT
            • ON SINHVIEN (HOLOT);
            • CREATE INDEX CM_TEN
            • ON SINHVIEN (TEN);
  • 16. Lệnh xóa chỉ mục (1/1)
      • Lệnh xóa chỉ mục:
        • Dùng xóa một chỉ mục đã tạo trước đó.
        • Cú pháp: DROP INDEX <tên index>;
        • VD:
        • DROP INDEX CM_HOLOT;
        • DROP INDEX CM_HOLOT;
  • 17. Thao tác với dữ liệu (1/1)
      • Các thao tác với dữ liệu:
        • Lệnh thêm mẫu tin
        • Lệnh xóa mẫu tin
        • Lệnh cập nhật mẫu tin
  • 18. Lệnh thêm mẫu tin (1/1)
      • Lệnh thêm mẫu tin:
        • Cú pháp: INSERT INTO <tên bảng>(<tên cột 1>,..)
      • VALUES (<biểu thức 1>,…);
        • Nếu các biểu thức sau VALUES đúng thứ tự trong bảng thì các cột sau INTO có thể được bỏ qua.
        • VD: INSERT INTO SINHVIEN (MSSV,HOLOT,TEN,PHAI,NGAYSINH) VALUES (’080099T’,’Hồ Thái’,’Bảo’,’1’,’06/01/1990’);
        • hoặc INSERT INTO SINHVIEN VALUES (’080099T’,’Hồ Thái’,’Bảo’,’1’,’06/01/1990’);
    SINHVIEN MSSV HOLOT TEN PHAI NGAYSINH 080099T Hồ Thái Bảo 1 06/01/1990
  • 19. Lệnh xóa mẫu tin (1/2)
    • Lệnh xóa mẫu tin:
      • Cú pháp: DELETE FROM <tên bảng>
    • WHERE <điều kiện>;
      • Ngữ nghĩa: các mẫu tin thỏa mệnh đề where sẽ bị xóa khỏi bảng. Nếu không có where thì tất cả mẫu tin sẽ bị xóa
      • VD: cho Table Môn học
    MONHOC MAMON TENMON KHOAHOC TH101 Tin học đại cương 2008 TH308 Cấu trúc dữ liệu 2009 DA102 Đồ án 1 2009
  • 20. Lệnh xóa mẫu tin (2/2)
        • Yêu cầu: xóa các môn học có KHOAHOC là 2008.
        • Câu lệnh: DELETE FROM MONHOC
        • WHERE KHOAHOC=‘2008’;
        • Kết quả:
    MONHOC MAMON TENMON KHOAHOC TH308 Cấu trúc dữ liệu 2009 DA102 Đồ án 1 2009 TH101 Tin học đại cương 2008
  • 21. Lệnh cập nhật mẫu tin (1/2)
      • Lệnh cập nhật mẫu tin:
        • Cú pháp: UPDATE <tên bảng>
      • SET <tên cột 1> = <biểu thức 1>,
      • WHERE <điều kiện>;
        • Giá trị các cột của các mẫu tin thỏa điều kiện WHERE sẽ được thay thế bằng các giá trị <biểu thức 1>,… tương ứng.
        • Nếu không có WHERE thì tất cả các mẫu tin của bảng sẽ được sửa đổi.
        • VD: <Xem trang sau>
  • 22. Lệnh cập nhật mẫu tin (2/2)
        • VD: cho bảng BANGDIEM môn Automat như sau:
        • Yêu cầu : tăng cho sinh viên mỗi người 1 điểm
        • Câu lệnh: UPDATE BANGDIEM SET DIEM=DIEM+1;
        • Kết quả:
    BANGDIEM MSSV DIEM 070011T 5 080130T 6 081307T 6 BANGDIEM MSSV DIEM 070111T 6 080130T 7 081307T 7
  • 23. Truy vấn dữ liệu (1/1)
      • Truy vấn dữ liệu:
        • Cú pháp tổng quát
        • Phát biểu SELECT với *
        • Phát biểu SELECT với AS
        • Phát biểu SELECT với TOP N
        • Phát biểu SELECT với DISTINCT
        • Mệnh đề WHERE
        • Mệnh đề ORDER BY
        • Mệnh đề GROUP BY
        • Mệnh đề HAVING
        • Truy vấn từ nhiều bảng
        • Truy vấn con
  • 24. Cú pháp tổng quát (1/1)
      • Cú pháp tổng quát:
        • SELECT <danh sách cột>
        • FROM <danh sách bảng>
        • WHERE <điều kiện>
        • GROUP BY <tên cột>
        • HAVING <điều kiện cho GROUP BY>
        • ORDER BY <danh sách cột>
  • 25. Phát biểu SELECT * (1/1)
      • Phát biểu SELECT với * :
        • Dấu * dùng để đại diện cho tất cả các cột
        • Cú pháp: SELECT * FROM <tên bảng>;
        • VD: 2 câu truy vấn sau cho cùng kết quả:
          • Câu tổng quát: SELECT MSSV,DIEM
            • FROM BANGDIEM;
          • Câu có dấu * : SELECT * FROM BANGDIEM;
    BANGDIEM MSSV DIEM 070011T 5 080130T 6
  • 26. Phát biểu SELECT với AS (1/1)
      • Phát biểu SELECT với AS:
        • Dùng đặt lại tên cột khi hiển thị kết quả
        • Cú pháp: SELECT <tên cột> AS <tên muốn hiển thị>
        • VD: Yêu cầu đổi tên hiển thị của cột DIEM thành DIEMTHI
        • Câu lệnh: SELECT DIEM AS DIEMTHI FROM BANGDIEM
    BANGDIEM MSSV DIEM 070011T 5 080130T 6 MSSV DIEMTHI 070011T 5 080130T 6
  • 27. Phát biểu SELECT với TOP N (1/1)
      • Phát biểu SELECT với TOP N:
        • Cho phép lấy ra N mẫu tin từ một bảng.
        • Cú pháp: SELECT TOP <N> * FROM <tên bảng>
        • VD: Cho bảng sau, lấy ra 2 mẫu tin đầu tiên.
        • Câu lệnh: SELECT TOP 2 * FROM BANGDIEM
    BANGDIEM MSSV DIEM 070111T 6 080130T 7 081307T 7 MSSV DIEM 070111T 6 080130T 7
  • 28. Phát biểu SELECT với DISTINCT (1/1)
      • Phát biểu SELECT với DISTINCT:
        • Khi kết quả trả về có nhiều mẫu tin trùng nhay, để chỉ lấy 1 mẫu tin ta dùng DISTINCT.
        • Cú pháp: SELECT DISTINCT <tên cột> FROM <tên bảng>
        • VD: Cho bảng sau cho biết có những lớp nào
        • Câu lệnh: SELECT DISTINCT MALOP FROM DANHSACHSV
        • Kết quả:
    DANHSACHSV MSSV MALOP TENSV 080206K 08KK1D Hồ Hoài Anh 080016Q 08QT1D Lưu Hương Giang 080123Q 08QT1D Hoàng Thùy Linh MALOP 08KK1D 08QT1D
  • 29. Mệnh đề WHERE (1/2)
      • Mệnh đề WHERE:
        • Dùng để đặt điều kiện trích dữ liệu.
        • Các toán tử của mệnh đề WHERE:
          • So sánh: >, <, >=, <=, =, <>
          • Logic: And, Or, Not
          • BETWEEN … AND …: lấy giá trong 1 vùng.
          • LIKE: so sánh gần giống
          • IN: phép so sánh trong 1 tập hơp, danh sách.
          • IS NULL (IS NOT NULL) : kiểm tra giá trị có rỗng hay không
          • EXISTS: trả về TRUE nếu có ít nhất 1 mẫu tin tồn tại
        • VD: <Xem trang sau>
  • 30. Mệnh đề WHERE (2/2)
        • VD: Cho bảng sau, Tìm các sinh viên có ngày sinh từ 01/06/1990 đến 31/12/1990
        • Câu lệnh: SELECT * FROM SINHVIEN WHERE NGAYSINH BETWEEN ‘01/06/1990 ’ AND ’31/12/1990’;
    SINHVIEN MSSV HOTEN NGAYSINH QUEQUAN 080777K Nguyễn Quốc Đạt 20/10/1990 Đồng Tháp 080302A Nguyễn Lan Anh 01/01/1990 Vũng Tàu 080096T Cao Minh Tiến 03/10/1990 Hồ Chí Minh MSSV HOTEN NGAYSINH QUEQUAN 080777K Nguyễn Quốc Đạt 20/10/1990 Đồng Tháp
  • 31. Mệnh đề ORDER BY (1/1)
      • Mệnh đề ORDER BY:
        • Sắp xếp kết quả theo thứ tự mong muốn
        • Cú pháp: ORDER BY <danh sách cột> [ASC|DESC]
        • Với ASC sắp tăng dần hoặc DESC sắp xếp giảm dần.
        • VD: Cho bảng sau:
        • Yêu cầu: Trích ra danh sách sinh viên sắp xếp tăng dần
        • Câu lệnh: SELECT * FROM SINHVIEN ORDER BY MSSV ASC
    MSSV HOTEN NGAYSINH QUEQUAN 080777K Nguyễn Quốc Đạt 20/10/1990 Đồng Tháp 080096T Cao Minh Tiến 03/10/1990 Hồ Chí Minh MSSV HOTEN NGAYSINH QUEQUAN 080096T Cao Minh Tiến 03/10/1990 Hồ Chí Minh 080777K Nguyễn Quốc Đạt 20/10/1990 Đồng Tháp
  • 32. Mệnh đề GROUP BY (1/1)
      • Mệnh đề GROUP BY:
        • Nhóm dữ liệu theo từng nhóm để thực hiện các phép toán thống kê
        • Cú pháp: GROUP BY <danh sách tên cột>
        • Một số hàm thông dụng dùng với GROUP BY:
          • AVG: tính giá trị trung bình.
          • MIN: tính giá trị nhỏ nhất.
          • MAX: tính giá trị lớn nhất.
          • COUNT: đếm số phần tử.
          • SUM: tính tổng các phần tử
        • VD: <Xem trang sau>
  • 33. Mệnh đề GROUP BY (2/2)
        • VD: Cho bảng sau, cho biết số lượng sinh viên từng lớp
        • Câu lệnh:
          • SELECT MALOP, COUNT(*) AS SOLUONG
          • FROM SINHVIEN
          • GROUP BY MALOP
        • Kết quả:
    DANHSACHKHENTHUONG MALOP MSSV TENSV PHAI XEPLOAI 08AV1D 080010A Bùi Long Hải Nam Giỏi 08QT2D 080120Q Hồ Minh Tâm Nữ Giỏi 08QT2D 080133Q Đoàn Thế Vinh Nam Khá 08TN1D 080361T Đặng Long Đế Nam Khá MALOP SOLUONG 08AV1D 1 08QT2D 2 08TN1D 1
  • 34. Mệnh đề HAVING (1/1)
      • Mệnh đề HAVING:
        • Đặt điều kiện sau khi đã nhóm dữ liệu bằng mệnh đề GROUP BY
        • VD: trích danh sách các lớp có từ 2 sinh viên được thưởng
        • Câu lệnh:
          • SELECT MALOP, COUNT(*) AS SOSV
          • FROM SINHVIEN
          • GROUP BY MALOP
          • HAVING COUNT (*)>=2 ;
    DANHSACHKHENTHUONG MALOP MSSV TENSV PHAI XEPLOAI 08AV1D 080010A Bùi Long Hải Nam Giỏi 08QT2D 080120Q Hồ Minh Tâm Nữ Giỏi 08QT2D 080133Q Đoàn Thế Vinh Nam Khá MALOP SOSV 08QT2D 2
  • 35. Truy vấn từ nhiều bảng (1/2)
      • Truy vấn từ nhiều bảng:
        • Khi thông tin cần lấy ra có từ nhiều bản khác nhau cần thực hiện truy vấn từ nhiều bảng.
        • Nếu cần kết n bảng thì cần có n-1 điều kiện kết.
        • Các tên cột cùng có ở nhiều bảng cần ghi theo dạng [Tên bảng].[Tên cột]
        • Có thể sử dụng tên tắt của các bản.
        • VD: Trích ra MSSV,HOTEN,MALOP,TENLOP của các sinh viên .
        • <Xem tiếp trang sau>
  • 36. Truy vấn từ nhiều bảng (2/2)
        • Câu lệnh:
          • SELECT MSSV,TENSV,MALOP,TENLOP
          • FROM SINHVIEN S , LOP L
          • WHERE S. MALOP = L. MALOP;
        • Kết quả:
    SINHVIEN MSSV TENSV PHAI MALOP 080010A Bùi Long Hải Nam 08AV1D 080120Q Hồ Minh Tâm Nữ 08QT1D 080133Q Đoàn Thế Vinh Nam 08QT1D LOP MALOP TENLOP 08AV1D Anh Văn 08QT1D Quản Trị 08TH1D Tin Học 08KK1D Kế Toán MSSV TENSV MALOP TENLOP 080010A Bùi Long Hải 08AV1D Anh Văn 080120Q Hồ Minh Tâm 08QT1D Quản Trị 080133Q Đoàn Thế Vinh 08QT1D Quản Trị
  • 37. Truy vấn con (1/2)
      • Truy vấn con:
        • Được sử dụng khi cần kết quả từ một câu truy vấn khác gọi là truy vấn con.
        • Khi thực hiện truy vấn con sẽ được thực hiện trước rồi lấy kết quả để thực hiện truy vấn lớn.
        • Cú pháp:
          • SELECT <danh sách cột>
          • FROM <danh sách bảng>
          • WHERE <điều kiện>
      • … <tên cột> IN (NOT IN, =, <>,…)
      • ( SELECT <danh sách cột>
      • FROM <danh sách bảng>
      • WHERE <điều kiện>);
        • <Xem tiếp trang sau>
  • 38. Truy vấn con (2/2)
        • VD: Lấy ra danh sách những sinh viên có điểm toán cao nhất
        • Câu lệnh:
          • SELECT MSSV,TENSV,DIEM
          • FROM DIEMTOAN
          • WHERE DIEM=( SELECT MAX (DIEM)
          • FROM DIEMTOAN);
    DIEMTOAN MSSV TENSV DIEM 080010A Bùi Long Hải 9 080120Q Hồ Minh Tâm 10 080133Q Đoàn Thế Vinh 9 MSSV TENSV DIEM 080120Q Hồ Minh Tâm 10
  • 39. Tài liệu tham khảo (1/1)
        • Tài liệu tham khảo:
          • Giáo trình CSDL , ThS.Lê Thị Ngọc Thảo - ĐH Tôn Đức Thắng.