Chương 2 Câu lệnh SQL

Viết được cú pháp lệnh SELECT. Câu lệnh Select có điều kiện và sắp xếp dữ liệu. Viết được câu lệnh select lấy dữ liệu từ nhiều bảng. Áp dụng câu lệnh select giải quyết bài toán cụ thể. Đánh giá và so sánh câu lệnh select với cách lọc dữ liệu trong Excel.

pdf46 trang | Chia sẻ: lylyngoc | Lượt xem: 2040 | Lượt tải: 3download
Bạn đang xem trước 20 trang tài liệu Chương 2 Câu lệnh SQL, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
Chương 2. Câu lệnh SQL 2- 1/46 Chương 2 CÂU LỆNH SQL Lý thuyết: 4t Thực hành: 4t Chương 2. Câu lệnh SQL 2- 2/46 MỤC TIÊU  Viết được cú pháp lệnh SELECT.  Câu lệnh Select có điều kiện và sắp xếp dữ liệu.  Viết được câu lệnh select lấy dữ liệu từ nhiều bảng.  Áp dụng câu lệnh select giải quyết bài toán cụ thể.  Đánh giá và so sánh câu lệnh select với cách lọc dữ liệu trong Excel. Câu lệnh SQL Chương 2. Câu lệnh SQL 2- 3/46 2.1 Giới thiệu  Chiết xuất dữ liệu từ cơ sở dữ liệu  câu lệnh SELECT  Giới hạn dữ liệu hiển thị sau khi truy vấn  Môi trường làm việc của iSQL*Plus Câu lệnh SQL Chương 2. Câu lệnh SQL 2- 4/46 2.2 Câu lệnh SELECT cơ bản  truy xuất dữ liệu từ một hay nhiều bảng, khung nhìn  Cú pháp Câu lệnh SQL SELECT *|[DISTINCT] column|expression [alias],... FROM table; Trong đó: * Lấy tất các các cột trong bảng DISTINCT Loại bỏ sự trùng lặp các dòng dữ liệu FROM table Bắt buộc phải có Chương 2. Câu lệnh SQL 2- 5/46 2.2 Câu lệnh SELECT cơ bản  Ý nghĩa Chọn lọc những mẫu tin theo những cột quy định (column) hay những biểu thức (expression) cho cột đó.  Ví dụ: SELECT * FROM Emp; Câu lệnh SQL Chương 2. Câu lệnh SQL 2- 6/46 2.2 Câu lệnh SELECT cơ bản  Chọn tất cả các cột SELECT * FROM Dept; Câu lệnh SQL Chương 2. Câu lệnh SQL 2- 7/46 2.2 Câu lệnh SELECT cơ bản  Chọn cột chỉ định SELECT DeptId DEPARTMENT_ID, DeptName DEPARTMENT_NAME FROM Dept; Câu lệnh SQL Chương 2. Câu lệnh SQL 2- 8/46 2.3 Viết câu lệnh SQL  Quy tắc viết lệnh  không phân biệt chữ viết hoa hay thường.  một câu lệnh có thể trên nhiều dòng.  từ khoá không được viết tắt, nhiều dòng.  sử dụng các các phép toán: +, -, \, *,... để biểu diễn giá trị trong câu lệnh.  kết thúc lệnh bởi dấu chấm phẩy (;) Câu lệnh SQL Chương 2. Câu lệnh SQL 2- 9/46 2.3 Viết câu lệnh SQL  Các thành phần trong câu lệnh  Biểu thức toán học  Ví dụ: SELECT Name, Sal *12 FROM Emp;  Tiêu đề của cột (column alias)  Ví dụ: (ANUAL chính là column alias) SELECT Name, Sal*12 ANNUAL FROM Emp; Câu lệnh SQL Chương 2. Câu lệnh SQL 2- 10/46 2.3 Viết câu lệnh SQL  Các thành phần trong câu lệnh  Ghép tiếp các cột dữ liệu  Ví dụ SELECT No||Name EmpLoyee FROM Emp;  Ghép tiếp chuỗi ký tự  Ví dụ: SELECT Name || ‘WORK IN’ || DeptNo FROM Emp; Câu lệnh SQL Chương 2. Câu lệnh SQL 2- 11/46 2.3 Viết câu lệnh SQL  Các thành phần trong câu lệnh  Loại bỏ giá trị dữ liệu trùng lặp  Ví dụ SELECT DISTINCT DeptNo FROM Dept;  Giá trị rỗng (NULL) cột chưa được gán giá trị Câu lệnh SQL Chương 2. Câu lệnh SQL 2- 12/46 2.3 Viết câu lệnh SQL  Hàm NVL NVL (Expr1, Expr2);  Thay thế một giá trị NULL bởi một giá trị khác NULL  Nếu Expr1 là giá trị NULL thì NVL trả về Expr2  Nếu Expr1 khác NULL thì NVL trả về Expr1  Ví dụ: SELECT Sal*12 + NVL(comm, 0) ANUAL FROM Emp; Câu lệnh SQL Chương 2. Câu lệnh SQL 2- 13/46 2.4 Tương tác giữa SQL và iSQL*Plus  SQL*Plus cho phép tương tác trực tiếp với Oracle Server thông qua các câu lệnh SQL và PL/SQL Câu lệnh SQL Chương 2. Câu lệnh SQL 2- 14/46 2.4 Tương tác giữa SQL và iSQL*Plus  Khác biệt giữa lệnh SQL và SQL*Plus Câu lệnh SQL Không thao tác với dữ liệu trong cơ sở dữ liệu Thao tác trên các dữ liệu có trong các bảng đã được định nghĩa trong cơ sở dữ liệu Tùy thuộc vào từng phiên bản của Oracle Câu lệnh dựa trên bộ ký tự chuẩn ASCII Nhận dạng lệnh SQL và gửi lệnh lên Server Là ngôn ngữ để giao tiếp với Oracle Server trong việc truy xuất dữ liệu. SQL*PlusSQL Chương 2. Câu lệnh SQL 2- 15/46 2.4 Tương tác giữa SQL và iSQL*Plus  Khác biệt giữa lệnh SQL và SQL*Plus Câu lệnh SQL Sử dụng các lệnh định dạng dữ liệu của chính SQL*Plus Sử dụng các hàm trong việc định dạng dữ liệu Không đòi hỏi phải có ký tự kết thúc lệnh Có sử dụng ký tự kết thúc lệnh khi thực hiện Câu lệnh có thể viết tắtCâu lệnh không được viết tắt Câu lệnh được tải trực tiếp không thông qua bộ đệm Câu lệnh được nạp vào bộ nhớ đệm trên một hoặc nhiều dòng SQL*PlusSQL Chương 2. Câu lệnh SQL 2- 16/46 2.4 Tương tác giữa SQL và iSQL*Plus  Phân nhóm câu lệnh trong SQL*Plus Câu lệnh SQL Gửi các lệnh SQL có trong bộ đệm lên server Thực hiện lệnh Lưu giữ, nạp và chạy các file scriptsThao tác file Định dạng lại dữ liệu trả về từ server Định dạng dữ liệu Tác động và gây ảnh hưởng tới môi trường làm việc của SQL*Plus trong phiên làm việc hiện tại Môi trường Diễn giảiNhóm lệnh Chương 2. Câu lệnh SQL 2- 17/46 2.4 Tương tác giữa SQL và iSQL*Plus  Phân nhóm câu lệnh trong SQL*Plus Câu lệnh SQL Các lệnh khác cho phép kết nối tới cơ sở dữ liệu và hiển thị các cột dữ liệu theo như định dạng Các lệnh khác Cho phép người dùng có thể tạo các biến sử dụng trong câu lệnh SQL và thao tác với các biến đó như: nhập dữ liệu, kết xuất dữ liệu Tương tác Sửa đổi lại lệnh SQL có trong bộ đệmSoạn thảo Diễn giảiNhóm lệnh Chương 2. Câu lệnh SQL 2- 18/46 2.4 Tương tác giữa SQL và iSQL*Plus  Các lệnh SQL*Plus cơ bản  Kết nối tới cơ sở dữ liệu Conn[ect] / [@];  Ví dụ: Conn Tester/pwtester@DB1; Câu lệnh SQL Chương 2. Câu lệnh SQL 2- 19/46 2.4 Tương tác giữa SQL và iSQL*Plus  Các lệnh SQL*Plus cơ bản  Hiển thị cấu trúc bảng dữ liệu Desc[ribe] ;  Ví dụ: Desc Dept; Câu lệnh SQL Name Null? Type DeptNo NOT NULL NUMBER(2) DNAME VARCHAR2(14) LOC VARCHAR2(13) Chương 2. Câu lệnh SQL 2- 20/46 2.4 Tương tác giữa SQL và iSQL*Plus  Các lệnh sau đây tự xem sách!  Lệnh soạn thảo  Lệnh thao tác file  Lệnh định dạng cột dữ liệu Câu lệnh SQL Chương 2. Câu lệnh SQL 2- 21/46 2.4 Tương tác giữa SQL và iSQL*Plus  Các ký tự định dạng Câu lệnh SQL 1,234 9,999 Hiển thị dấu phân chia hàng nghìn, 1234.00 9999.99 Hiển thị dấu thập phân. L1234 L9999 Hiển thị ký tự L L $1234 $9999 Hiển thị dấu $ $ 01234 099999 Hiển thị cả số 0 0 1234 999999 Hiển thị số, không bao gồm số 0 9 Hiển thị dài nhất n ký tựn Kết quảVí dụDiễn giảiĐịnh dạng Chương 2. Câu lệnh SQL 2- 22/46 2.4 Tương tác giữa SQL và iSQL*Plus  Đăng nhập iSQL*Plus  Khởi động trình duyệt web (web browser).  Nhập địa chỉ URL của môi trường làm việc iSQL*Plus.  Nhập username, password và trường định danh kết nối Oracle. Câu lệnh SQL Chương 2. Câu lệnh SQL 2- 23/46 2.5 Môi trường làm việc iSQL*Plus  Đăng nhập iSQL*Plus Câu lệnh SQL Chương 2. Câu lệnh SQL 2- 24/46 2.6 Giới hạn và sắp xếp dữ liệu Giới hạn dữ liệu Câu lệnh SQL Chương 2. Câu lệnh SQL 2- 25/46 2.6 Giới hạn và sắp xếp dữ liệu Giới hạn dữ liệu  Mệnh đề WHERE đặt điều kiện cho toàn bộ câu lệnh truy vấn. SELECT [DISTINCT ] *, column [alias],... FROM table [WHERE condition (s)]; Câu lệnh SQL Chương 2. Câu lệnh SQL 2- 26/46 2.6 Giới hạn và sắp xếp dữ liệu Giới hạn dữ liệu  Ví dụ: SELECT DeptNo, Job, Ename, Sal FROM Emp WHERE Sal BETWEEN 1000 AND 2000 ; Câu lệnh SQL Chương 2. Câu lệnh SQL 2- 27/46 2.6 Giới hạn và sắp xếp dữ liệu Giới hạn dữ liệu  Truy vấn dữ liệu với nhiều điều kiện ghép nhiều điều kiện thông qua các toán tử logic AND/OR  Ví dụ SELECT DeptNo, Job, Ename, Sal FROM Emp WHERE Sal Between 1000 AND 2000 OR Job = ‘Sale’; Câu lệnh SQL Chương 2. Câu lệnh SQL 2- 28/46 2.6 Giới hạn và sắp xếp dữ liệu  Toán tử so sánh Câu lệnh SQL Toán tử nhỏ hơn hoặc bằng<= Toán tử lớn hơn hoặc bằng>= Toán tử nhỏ hơn< Toán tử lớn hơn> Toán tử khác hay không tương đương!=, ^=, '+, Toán tử bằng hay tương đương= Diễn giảiToán tử Chương 2. Câu lệnh SQL 2- 29/46 2.6 Giới hạn và sắp xếp dữ liệu  Các toán tử của SQL Câu lệnh SQL Trả về TRUE nếu có tồn tạiEXISTS Kiểm tra giá trị rỗngIS [NOT] NULL Đúng nếu x [không] giống y Các ký tự đại diện mẫu: gạch dưới ( _ ): một ký tự bất kỳ phần trăm (%): một nhóm ký tự bất kỳ x [NOT] LIKE y Thuộc bất kỳ giá trị nào trong danh sáchIN (Danh sách) [Không] lớn hơn hoặc bằng x và nhỏ hơn hoặc bằng y [NOT]BETWEEN x AND y Diễn giảiToán tử Chương 2. Câu lệnh SQL 2- 30/46 2.6 Giới hạn và sắp xếp dữ liệu  Ví dụ [NOT] BETWEEN x AND y SELECT * FROM Emp WHERE Sal BETWEEN 2000 AND 3000; IN (danh sách) SELECT * FROM Emp WHERE Sal IN (1400, 3000); x [NOT] LIKE y SELECT * FROM Emp WHERE Ename LIKE 'SMITH_'; Câu lệnh SQL Chương 2. Câu lệnh SQL 2- 31/46 2.6 Giới hạn và sắp xếp dữ liệu  Các toán tử logic Câu lệnh SQL Cho phép dữ liệu thoả mãn 1 trong 2 điều kiện OR Yêu cầu dữ liệu phải thoả mãn cả 2 điều kiện AND Phủ định mệnh đềNOT Diễn giảiToán tử Chương 2. Câu lệnh SQL 2- 32/46 2.6 Giới hạn và sắp xếp dữ liệu  Cấp độ ưu tiên Câu lệnh SQL OR4 AND3 NOT2 Các toán tử so sánh1 Toán tửCấp độ ưu tiên Chương 2. Câu lệnh SQL 2- 33/46 2.6 Giới hạn và sắp xếp dữ liệu Sắp xếp dữ liệu trả về  Mệnh đề ORDER BY SELECT [DISTINCT ] *, column [alias],... FROM table [WHERE condition] [ORDER BY expr/position [DESC/ASC]]; Câu lệnh SQL DESC sắp xếp giảm dần. ASC sắp xếp tăng dần. Chương 2. Câu lệnh SQL 2- 34/46 2.6 Giới hạn và sắp xếp dữ liệu Sắp xếp dữ liệu trả về  Mệnh đề ORDER BY ORDER BY dùng để sắp xếp dữ liệu được hiển thị và phải đặt ở vị trí sau cùng của câu lệnh truy vấn  Ví dụ Câu lệnh SQL SELECT Ename, Job, Sal*12, DeptNo FROM Emp ORDER BY Ename; Chương 2. Câu lệnh SQL 2- 35/46 2.6 Giới hạn và sắp xếp dữ liệu Sắp xếp dữ liệu trả về  Sắp xếp nhiều cột dữ liệu trả về SELECT DeptNo, Job, Ename, Sal FROM Emp ORDER BY DeptNo, Sal DESC; SELECT DeptNo, Job, ename, Sal FROM Emp ORDER BY 2; Câu lệnh SQL Chương 2. Câu lệnh SQL 2- 36/46 2.7 Liên kết nhiều bảng liên kết giữa hai hay nhiều bảng có quan hệ với nhau Câu lệnh SQL SELECT table1.column, table2.column,… FROM table1, table2 WHERE table1.column1 operator table2.column2; table1.column1 operator table2.column2: Điều kiện liên kết hai bảng với nhau Chương 2. Câu lệnh SQL 2- 37/46 2.7 Liên kết nhiều bảng  Một số quy tắc  Nếu tên cột giống nhau trong nhiều bảng thì phải viết tên bảng trước tên cột (table1.column).  Để liên kết n bảng với nhau, chúng ta cần tối thiểu là n-1 điều kiện liên kết  Ví dụ Câu lệnh SQL Hiển thị tất cả các khách hàng đã đặt hàng SELECT Customers.ID, FirstName, Orders.ID,ShipDate FROM Customers, Orders WHERE Customers.ID= Orders.CustID; Chương 2. Câu lệnh SQL 2- 38/46 2.7 Liên kết nhiều bảng  Liên kết tương đương (Equi-Joins)  liên kết chứa những toán tử tương đương (=),  được thể hiện trong mệnh đề WHERE.  Ví dụ Câu lệnh SQL Hiển thị thông tin về mã VN, tên phòng ban, của mỗi nhân viên. SELECT Firstname, DeptName FROM Emp, Dept WHERE Emp.DeptID = Dept.DeptID; Chương 2. Câu lệnh SQL 2- 39/46 2.7 Liên kết nhiều bảng  Liên kết không tương đương (NonEqui-Joins)  điều kiện liên kết chứa những toán tử không phải là toán tử tương đương  được thể hiện trong mệnh đề WHERE.  Ví dụ Câu lệnh SQL SELECT E.Ename, E.Job, S.Grade FROM Emp E, SalGrade S WHERE E.Sal BETWEEN S.LoSal AND S.HiSal; Chương 2. Câu lệnh SQL 2- 40/46 2.7 Liên kết nhiều bảng  Liên kết với chính nó (Self-Joins)  liên kết một bảng với chính nó để lấy thông tin.  bằng cách đặt alias.  Ví dụ Câu lệnh SQL Hiển thị danh sách nhân viên và người quản lý của họ dạng “A work for B”. SELECT E.Ename || ‘ Work for ’ || M.ename FROM Emp E, Emp M WHERE E.managerId = M.EmpId; Chương 2. Câu lệnh SQL 2- 41/46 2.7 Liên kết nhiều bảng  Liên kết cộng (Outer-Joins)  trả về cả các giá trị NULL trong biểu thức điều kiện  Dấu (+) để ở vế nào tính thêm các giá trị NULL ở vế đó.  Một câu lệnh SELECT chỉ đặt được 1 mối liên kết cộng, dấu (+) đặt ở bên phải cột liên kết.  Một điều kiện chứa liên kết cộng không được dùng toán tử IN hoặc OR để nối các điều kiện liên kết khác. Câu lệnh SQL Chương 2. Câu lệnh SQL 2- 42/46 2.7 Liên kết nhiều bảng  Liên kết cộng (Outer-Joins) Câu lệnh SQL Hoặc SELECT table1.column, table2.column FROM table1, table2 WHERE table1.col = table2.col(+); SELECT table1.column, table2.column FROM table1, table2 WHERE table1.col(+) = table2.col; Chương 2. Câu lệnh SQL 2- 43/46 2.7 Liên kết nhiều bảng  Liên kết cộng (Outer-Joins)  Ví dụ Câu lệnh SQL SELECT E.Ename, D.Deptno, D.Dname FROM Emp E, Dept D WHERE E.Deptno(+) = D.Deptno And D.Deptno IN (30, 40); ENAME DEPTNO DNAME JAMES 30 SALES WARD 30 SALES 40 OPERATIONS Chương 2. Câu lệnh SQL 2- 44/46 Câu hỏi và bài tập  Trả lời câu hỏi phần 2.8 trong giáo trình  Thực hành viết các câu lệnh truy vấn trong phần bài tập  Chuẩn bị nội dung chương 3. Câu lệnh SQL Chương 2. Câu lệnh SQL 2- 45/46 Chương 1 HỌC GÌ – NHỚ GÌ? Chương 2. Câu lệnh SQL 2- 46/46 Nội dung  Cú pháp các hàm SQL.  Áp dụng các hàm giải quyết bài toán cụ thể.  Đánh giá và so sánh các hàm SQL với các hàm trong excel. Chương 3 Hàm SQL
Tài liệu liên quan