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 |
Chia sẻ: lylyngoc | Lượt xem: 2057 | 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