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.
                
              
                                            
                                
            
                       
            
                 46 trang
46 trang | 
Chia sẻ: lylyngoc | Lượt xem: 2237 | Lượt tải: 3 
              
            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