background img

Bài Viết Mới

Hiển thị các bài đăng có nhãn SQL Language. Hiển thị tất cả bài đăng
Hiển thị các bài đăng có nhãn SQL Language. Hiển thị tất cả bài đăng
Bài này sẽ giới thiệu cho các bạn cách sử dụng cơ sở dữ liệu mẫu Northwind trên SQL SERVER. Thì tập tin đính kèm có 3 loại, là *.BAK, *.SQL, *.MDF
- Chúng ta sẽ lần lượt đi qua từng loại để các bạn biết cách xử lý chúng như thế nào cho lần sau

- Video sau đây sẽ hướng dẫn các bạn Import cơ sở dữ liệu vào SQL Server . Các bạn nên để chế độ HD cho chất lượng tốt hơn khi xem . . .
httpv://www.youtube.com/watch?v=zVawgo21qLk







 








































































































































































































Các Lệnh SQL cần nhớ
0. WHERE- Mệnh đề WHERE dùng để ràng buộc các điều kiện
- Một điều bạn cần nhớ là WHERE không phát huy tác dụng khi bạn sử dụng các hàm tập hợp, bạn có thể dùng HAVING để thay thế
1. AND / ORCú Pháp:
SELECT Cột1, Cột2, Cột3 FROM Bảng1, Bảng2 WHERE Điều Kiện 1 AND/OR Điều Kiện 2 




Example:
SELECT * FROM Employees WHERE BirthDate='12/08/1948' OR FirstName= 'ANNE';
SELECT CompanyName FROM Customers,Orders WHERE Orders.ShipVia='3' AND Orders.CustomerID = Customers.CustomerID;
2. ALTER TABLECú Pháp:
ALTER TABLE table_name ADD column_name datatype
ALTER TABLE table_name DROP COLUMN column_name 




- Lệnh ADD dùng tạo mới Table
- Lệnh DROP COLUM dùng để xóa một cột
- datatype : Kiểu dữ liệu của cột mới (Char, Nvarchar, int, date . . .)
3. AS (alias)Cú Pháp:
SELECT column_name AS column_alias FROM table_name
SELECT column_name FROM table_name AS table_alias 




Example:
SELECT FirstName From Employees AS BangNhanVien WHERE BangNhanVien.City='london';
SELECT FirstName AS TEN From Employees;
AS: Được dùng tạo bí danh cho cột hoặc bảng, nhằm rút gọn tên hoặc đổi tên hiển thị cho cột
4. BETWEENCú Pháp:
SELECT column_name FROM table_name WHERE column_name BETWEEN value1 AND value2; 




Example:
SELECT FirstName FROM Employees WHERE BirthDate BETWEEN '01/01/1945' AND '01/01/1960';
BETWEEN: giới hạn từ giá trị thứ nhất đến giá trị thứ hai.
5. CREATE DATABASECú Pháp:
CREATE DATABASE database_name;
Tạo database mới !
6. CREATE TABLECú Pháp:
CREATE TABLE table_name
(
column_name1 data_type,
column_name2 data_type,
column_name2 data_type,
...





- Dạng lệnh thế này bạn xem mẫu Northwind.sql để biết cú pháp trên SQL SERVER
7. CREATE INDEXCú Pháp
CREATE INDEX index_name ON table_name (column_name) 

CREATE UNIQUE INDEX index_name ON table_name (column_name)




Index: Giúp SQL truy xuất dữ liệu nhanh hơn, tuy nhiên khiến hệ thống chậm chạp hơn một chút so với việc không dùng Index
Xem mẫu Northwind.sql để biết cú pháp trên SQL SERVER
8. CREATE VIEWCú Pháp:
CREATE VIEW view_name AS
SELECT column_name(s)
FROM table_name
WHERE condition 




- Chức năng của View là tạo một bảng giả lập lấy nguồn dữ liệu từ bảng gốc, đáp ứng xem theo yêu cầu của người dùng mà không cần tạo bảng mới
Xem mẫu Northwind.sql để biết cú pháp trên SQL SERVER
9. DELETECú Pháp:
DELETE FROM table_name WHERE some_column=some_value
- Xóa dữ liệu trong bảng theo điều kiện
DELETE FROM table_name
DELETE * FROM table_name
- 2 lệnh này xóa toàn bộ nội dung của bảng 




DELETE FROM Employees WHERE FirstName='TUAN'; // Chỉ xóa hàng có tên là "TUAN"
DELETE FROM Employees;
10. DROP DATABASECú Pháp:
DROP DATABASE database_name 




- Chỉ có chức năng duy nhất là xóa hẳn Database // Cần thận khi test lệnh này
11. DROP INDEXCú Pháp:
DROP INDEX table_name.index_name (SQL Server)
DROP INDEX index_name ON table_name (MS Access)
DROP INDEX index_name (DB2/Oracle)
ALTER TABLE table_name
DROP INDEX index_name (MySQL) 




- Lệnh này hủy Index
12. DROP TABLECú Pháp:
DROP TABLE table_name;
- Xóa hẳn một table // Cẩn thận khi dùng lệnh này
13. GROUP BYCú Pháp:
SELECT column_name, aggregate_function(column_name)
FROM table_name
WHERE column_name operator value
GROUP BY column_name 




- Xem lại phần 3 của serial này !
- GROUP BY là một lệnh quan trọng nếu bạn sử dụng các hàm tập hợp
14. HAVING- Xem lại phần 3 của serial này !
- Bạn cần nhớ HAVING thay thế cho WHERE nếu chúng ta sử dụng các hàm tập hợp để tính,
15. INCú Pháp:
SELECT column_name FROM table_name WHERE column_name IN (value1,value2,..) 




Example:
SELECT FirstName FROM Employees WHERE Extension IN ('5467','3457');
- Dùng In tăng sức mạnh cho mệnh đề WHERE.
- Ở lệnh sql trên có điều kiện tại cột Extension chứa 2 giá trị(...) Nếu thỏa sẽ lấy ra FirstName
16. INSERT INTO- Lệnh này dùng để thêm mới dữ liệu vào bảng
- Các bạn xem lại Phần 1
17. INNER JOIN- Lệnh JOIN này lấy ra phần chung của 2 table
- Xem lại Phần 2
18. LEFT JOIN- Lệnh JOIN này lấy ra phần chung của Table 1,2 Và toàn bộ table 1
- Xem lại Phần 2
19. RIGHT JOIN- Lệnh JOIN này lấy ra phần chung của Table 1,2 Và toàn bộ table 2
- Xem lại Phần 2
20. FULL JOIN- Lấy ra các cột theo yêu cầu cho dù 2 table có Match hay không
- Nếu giá trị nào không match thì sẽ để trống
- Xem lại Phần 2
21. LIKE- Thêm ràng buộc cho mệnh đề WHERE
- Lấy ra các giá trị Match với yêu cầu đề ra 




SELECT FirstName FROM Employees WHERE LastName LIKE '%L%';
- Lệnh sql trên lấy ra FirstName Nếu LastName có chứa từ "L"
- Xem lại phần 2
22. ORDER BYNếu bạn muốn sắp xếp kết quả query ra thì cần phải sử dụng nó
- Nó có thể sắp xếp tăng dần hoặc giảm dần
23. SELECTLấy ra cái gì đó . . .
24. SELECT *Lấy ra tất cả ...
25. SELECT DISTINCT- Lấy ra các giá trị và bỏ qua các giá trị trùng
- Nếu 2 giá trị Match nhau thì chỉ lấy một
- Nếu 2 Row có các cột đều giống nhau thì chỉ lấy 1
- Phụ thuộc vào yêu cầu SELECT của chúng ta, nếu yêu cầu 1 cột thì nó sẽ so sánh 1 cột
26. SELECT INTO- Dùng để di chuyển dữ liệu từ bảng này sang bảng mới
27. SELECT TOP- Lấy ra dữ liệu trên cùng của Bảng
- Ví dụ ta lấy 20 hàng đầu tiên hoặc lấy các hàng đầu tiền 45% của tổng số hàng trong Bảng
- Xem lại Phần 2
28. TRUNCATE TABLEThay vì xóa luôn cả Bảng như DROP TABLE, lệnh này chỉ xóa toàn bộ nội dung của Bảng
29. UNION- Dùng để kết hợp các câu lệnh SELECT
- Xem lại Phần 2
30. UNION ALL- Xem lại ví dụ Phần 2
31. UPDATE- Dùng để cập nhật (sửa) lại dữ liệu trong Bảng

:hi:

BravoHex
Nguồn: Tự Học IT Online - http://tuhocit.net

SQL LANGUAGE : REFERENCE [Tips]

Bài này sẽ giới thiệu cho các bạn cách sử dụng cơ sở dữ liệu mẫu Northwind trên SQL SERVER. Thì tập tin đính kèm có 3 loại, là *.BAK, *.SQL, *.MDF
- Chúng ta sẽ lần lượt đi qua từng loại để các bạn biết cách xử lý chúng như thế nào cho lần sau

- Video sau đây sẽ hướng dẫn các bạn Import cơ sở dữ liệu vào SQL Server . Các bạn nên để chế độ HD cho chất lượng tốt hơn khi xem . . .
httpv://www.youtube.com/watch?v=zVawgo21qLk







 








































































































































































































Các Lệnh SQL cần nhớ
0. WHERE- Mệnh đề WHERE dùng để ràng buộc các điều kiện
- Một điều bạn cần nhớ là WHERE không phát huy tác dụng khi bạn sử dụng các hàm tập hợp, bạn có thể dùng HAVING để thay thế
1. AND / ORCú Pháp:
SELECT Cột1, Cột2, Cột3 FROM Bảng1, Bảng2 WHERE Điều Kiện 1 AND/OR Điều Kiện 2 




Example:
SELECT * FROM Employees WHERE BirthDate='12/08/1948' OR FirstName= 'ANNE';
SELECT CompanyName FROM Customers,Orders WHERE Orders.ShipVia='3' AND Orders.CustomerID = Customers.CustomerID;
2. ALTER TABLECú Pháp:
ALTER TABLE table_name ADD column_name datatype
ALTER TABLE table_name DROP COLUMN column_name 




- Lệnh ADD dùng tạo mới Table
- Lệnh DROP COLUM dùng để xóa một cột
- datatype : Kiểu dữ liệu của cột mới (Char, Nvarchar, int, date . . .)
3. AS (alias)Cú Pháp:
SELECT column_name AS column_alias FROM table_name
SELECT column_name FROM table_name AS table_alias 




Example:
SELECT FirstName From Employees AS BangNhanVien WHERE BangNhanVien.City='london';
SELECT FirstName AS TEN From Employees;
AS: Được dùng tạo bí danh cho cột hoặc bảng, nhằm rút gọn tên hoặc đổi tên hiển thị cho cột
4. BETWEENCú Pháp:
SELECT column_name FROM table_name WHERE column_name BETWEEN value1 AND value2; 




Example:
SELECT FirstName FROM Employees WHERE BirthDate BETWEEN '01/01/1945' AND '01/01/1960';
BETWEEN: giới hạn từ giá trị thứ nhất đến giá trị thứ hai.
5. CREATE DATABASECú Pháp:
CREATE DATABASE database_name;
Tạo database mới !
6. CREATE TABLECú Pháp:
CREATE TABLE table_name
(
column_name1 data_type,
column_name2 data_type,
column_name2 data_type,
...





- Dạng lệnh thế này bạn xem mẫu Northwind.sql để biết cú pháp trên SQL SERVER
7. CREATE INDEXCú Pháp
CREATE INDEX index_name ON table_name (column_name) 

CREATE UNIQUE INDEX index_name ON table_name (column_name)




Index: Giúp SQL truy xuất dữ liệu nhanh hơn, tuy nhiên khiến hệ thống chậm chạp hơn một chút so với việc không dùng Index
Xem mẫu Northwind.sql để biết cú pháp trên SQL SERVER
8. CREATE VIEWCú Pháp:
CREATE VIEW view_name AS
SELECT column_name(s)
FROM table_name
WHERE condition 




- Chức năng của View là tạo một bảng giả lập lấy nguồn dữ liệu từ bảng gốc, đáp ứng xem theo yêu cầu của người dùng mà không cần tạo bảng mới
Xem mẫu Northwind.sql để biết cú pháp trên SQL SERVER
9. DELETECú Pháp:
DELETE FROM table_name WHERE some_column=some_value
- Xóa dữ liệu trong bảng theo điều kiện
DELETE FROM table_name
DELETE * FROM table_name
- 2 lệnh này xóa toàn bộ nội dung của bảng 




DELETE FROM Employees WHERE FirstName='TUAN'; // Chỉ xóa hàng có tên là "TUAN"
DELETE FROM Employees;
10. DROP DATABASECú Pháp:
DROP DATABASE database_name 




- Chỉ có chức năng duy nhất là xóa hẳn Database // Cần thận khi test lệnh này
11. DROP INDEXCú Pháp:
DROP INDEX table_name.index_name (SQL Server)
DROP INDEX index_name ON table_name (MS Access)
DROP INDEX index_name (DB2/Oracle)
ALTER TABLE table_name
DROP INDEX index_name (MySQL) 




- Lệnh này hủy Index
12. DROP TABLECú Pháp:
DROP TABLE table_name;
- Xóa hẳn một table // Cẩn thận khi dùng lệnh này
13. GROUP BYCú Pháp:
SELECT column_name, aggregate_function(column_name)
FROM table_name
WHERE column_name operator value
GROUP BY column_name 




- Xem lại phần 3 của serial này !
- GROUP BY là một lệnh quan trọng nếu bạn sử dụng các hàm tập hợp
14. HAVING- Xem lại phần 3 của serial này !
- Bạn cần nhớ HAVING thay thế cho WHERE nếu chúng ta sử dụng các hàm tập hợp để tính,
15. INCú Pháp:
SELECT column_name FROM table_name WHERE column_name IN (value1,value2,..) 




Example:
SELECT FirstName FROM Employees WHERE Extension IN ('5467','3457');
- Dùng In tăng sức mạnh cho mệnh đề WHERE.
- Ở lệnh sql trên có điều kiện tại cột Extension chứa 2 giá trị(...) Nếu thỏa sẽ lấy ra FirstName
16. INSERT INTO- Lệnh này dùng để thêm mới dữ liệu vào bảng
- Các bạn xem lại Phần 1
17. INNER JOIN- Lệnh JOIN này lấy ra phần chung của 2 table
- Xem lại Phần 2
18. LEFT JOIN- Lệnh JOIN này lấy ra phần chung của Table 1,2 Và toàn bộ table 1
- Xem lại Phần 2
19. RIGHT JOIN- Lệnh JOIN này lấy ra phần chung của Table 1,2 Và toàn bộ table 2
- Xem lại Phần 2
20. FULL JOIN- Lấy ra các cột theo yêu cầu cho dù 2 table có Match hay không
- Nếu giá trị nào không match thì sẽ để trống
- Xem lại Phần 2
21. LIKE- Thêm ràng buộc cho mệnh đề WHERE
- Lấy ra các giá trị Match với yêu cầu đề ra 




SELECT FirstName FROM Employees WHERE LastName LIKE '%L%';
- Lệnh sql trên lấy ra FirstName Nếu LastName có chứa từ "L"
- Xem lại phần 2
22. ORDER BYNếu bạn muốn sắp xếp kết quả query ra thì cần phải sử dụng nó
- Nó có thể sắp xếp tăng dần hoặc giảm dần
23. SELECTLấy ra cái gì đó . . .
24. SELECT *Lấy ra tất cả ...
25. SELECT DISTINCT- Lấy ra các giá trị và bỏ qua các giá trị trùng
- Nếu 2 giá trị Match nhau thì chỉ lấy một
- Nếu 2 Row có các cột đều giống nhau thì chỉ lấy 1
- Phụ thuộc vào yêu cầu SELECT của chúng ta, nếu yêu cầu 1 cột thì nó sẽ so sánh 1 cột
26. SELECT INTO- Dùng để di chuyển dữ liệu từ bảng này sang bảng mới
27. SELECT TOP- Lấy ra dữ liệu trên cùng của Bảng
- Ví dụ ta lấy 20 hàng đầu tiên hoặc lấy các hàng đầu tiền 45% của tổng số hàng trong Bảng
- Xem lại Phần 2
28. TRUNCATE TABLEThay vì xóa luôn cả Bảng như DROP TABLE, lệnh này chỉ xóa toàn bộ nội dung của Bảng
29. UNION- Dùng để kết hợp các câu lệnh SELECT
- Xem lại Phần 2
30. UNION ALL- Xem lại ví dụ Phần 2
31. UPDATE- Dùng để cập nhật (sửa) lại dữ liệu trong Bảng

:hi:

BravoHex
Nguồn: Tự Học IT Online - http://tuhocit.net

Phần này giới thiệu các hàm trong SQL, xin giới thiệu lại là cấu trúc, cú pháp của ngôn ngữ SQL chuẩn sẽ khác đôi chút với MySQL, SQL Server . . .(Điều đó có nghĩa là một số lệnh trình bày ở trên đây sẽ không thực thi được trên các hệ CSDL trên)

Tuy là các hệ csdl này dùng chuẩn SQL nhưng ngoài các thành phần chính có phát triển thêm vài thành phần mang nét riêng của nó, nói là vậy nhưng không có gì đáng lo ngại cả !

(Cuối bài sẽ cập nhật một video hướng dẫn thao tác với các  lệnh cụ thể)


SQL LANGUAGE: FUNCTION [3/3]

Phần này giới thiệu các hàm trong SQL, xin giới thiệu lại là cấu trúc, cú pháp của ngôn ngữ SQL chuẩn sẽ khác đôi chút với MySQL, SQL Server . . .(Điều đó có nghĩa là một số lệnh trình bày ở trên đây sẽ không thực thi được trên các hệ CSDL trên)

Tuy là các hệ csdl này dùng chuẩn SQL nhưng ngoài các thành phần chính có phát triển thêm vài thành phần mang nét riêng của nó, nói là vậy nhưng không có gì đáng lo ngại cả !

(Cuối bài sẽ cập nhật một video hướng dẫn thao tác với các  lệnh cụ thể)



Ở phần trước tôi đã giới thiệu với các bạn SQL cơ bản. Hôm nay xin tiếp tục

- Trong phần này giới thiệu các từ khóa nâng cao và cách thức sử dụng chúng trong một số Hệ quản trị CSDL . . .

- Cơ sở dữ liệu trong các ví dụ demo có thể tải về tại đây để thực hành: NorthWind






















































BookMark Express (Lựa chọn Nhanh)
SELECT TOP
LIKE and NOT LIKE
Wildcards - Ký Hiệu
IN
BETWEEN
Aliases - Bí Danh
JOIN {INNER JOIN / LEFT JOIN / RIGHT JOIN / FULL JOIN}
UNION
SELECT INTO
CREATE DATABASE & TABLE
CONSTRAINTS {NOT NULL / UNIQUE / PRIMARY KEY / FOREIGN KEY / CHECK / DEFAULT}
CREATE INDEX
DROP & TRUNCATE
ALTER
AUTO_INCREMENT / IDENTITY / AUTOINCREMENT
VIEWS

1. SQL SELECT TOP


Mệnh đề SELECT TOP được sử dụng để xác định số lượng Records trả về. Nó rất hữu ích nếu Table có rất nhiều dữ liệu
Cú Pháp
-SQL Server

Select Top 5 From tblStudent;// 5 là số hàng trả về, tính từ hàng đầu tiên.

 
Select Top 10 PERCENT From tblStudent  //10 PERCENT lấy về 10% dữ liệu, tính từ hàng đầu tiên.

 

-MySQL

Select * From tblStudent LIMIT 5;// LIMIT 5: là số hàng trả về, tính từ hàng đầu tiên.

 

-Oracle

Select * From tblStudent WHERE ROWNUM <=5;


2. SQL LIKE and NOT LIKE


Toán tử LIKE

-Được dùng trong mệnh đề WHERE để tìm kiếm một khuôn mẫu quy định trong một cột
Cú Pháp
- Sử dụng kèm theo ký tự  phần trăm "%"

- SELECT * FROM tblStudent WHERE FirstName LIKE '%Tuan';

- SELECT * FROM tblStudent WHERE FirstName LIKE 'Tran%';

- SELECT * FROM tblStudent WHERE FirstName LIKE '%Thi%';


Ký tự '%' được hiểu là tất cả kèm theo Ký tự xác định như trên

- Sử dụng NOT LIKE để phủ định lại các ví dụ trên

- SELECT * FROM tblStudent WHERE FirstName NOT LIKE '%Tuan';

- SELECT * FROM tblStudent WHERE FirstName NOT LIKE 'Tran%';

- SELECT * FROM tblStudent WHERE FirstName NOT LIKE '%Thi%';


3. SQL Wildcards - Ký Hiệu


- Các ký hiệu này thường được sử dụng kèm với toán tử LIKE để tìm kiếm dữ liệu trọng bảng

Cú Pháp

- Có 3 ký hiệu chính được sử dụng.

%: được hiểu là 1 chuỗi bất kỳ

_: duy nhất một ký tự bất kỳ

[xxxx] : xxx nằm trong khung [] là các chữ cái

EX:

- Sử dụng "_"

- Select * FROM tblStudent WHERE FirstName LIKE '_uan';

- Select * FROM tblStudent WHERE FirstName LIKE 'T_an';

- Select * FROM tblStudent WHERE FirstName LIKE 'H_o_g';


- Sử dụng [xxxx]

Select * FROM tblStudent WHERE FirstName LIKE '[TBN]%'

// Lấy tất cả records nếu FirstName có các chữ cái đầu T,B,N
Select * FROM tblStudent WHERE FirstName LIKE '[!TBN]%'

// Lấy tất cả records nếu FirstName Không có các chữ cái đầu T,B,N
Select * FROM tblStudent WHERE FirstName LIKE '[A-F]%'

// Lấy tất cả records nếu FirstName có các chữ cái đầu Từ A đến F

// [A-F] : Lấy thứ tự A B C D F

4. SQL IN


Toán tử IN

- Dùng để chỉ định nhiều giá trị trong mệnh đề WHERE.

Cú pháp
Select * FROM tblStudent WHERE FirstName IN ('Tuan','Minh');

// Lấy ra tất cả records  nếu FirstName có Tuan và Minh


5. SQL BETWEEN


Toán tử BETWEEN

- Dùng để lựa chọn các giá trị trong một phạm vi xác định. Các giá trị xác định có thể là số, văn bản hoặc ngày tháng

Cú pháp

Select * FROM tblStudent WHERE Birthday BETWEEN  #26/06/1990# AND #26/06/1979#;



Select * FROM tblStudent WHERE Birthday NOT BETWEEN  #26/06/1990# AND #26/06/1979#;// Phủ định lại ví dụ trên



Select * FROM tblStudent WHERE FirstName BETWEEN 'A' AND 'C';

// Lấy ra tất cả records nếu FirstName có chữ cái đầu giữa A và C.

// 'A' and 'C' : Là ký tự thứ tự kế tiếp A,B,C

- Ví dụ khác kết hợp với IN

Select * FROM tblStudent WHERE (FirstName BETWEEN 'A' AND 'C') AND StudentID IN ('SV01','SV02');

Select * FROM tblStudent WHERE (FirstName BETWEEN 'A' AND 'C') AND NOT StudentID IN ('SV01','SV02');


6. SQL Aliases - Bí Danh


Được dùng:

- Dùng để tạo một tên tạm thời sử dụng cho 1 bảng hoặc 1 colunm

- Có nhiều hơn một Bảng cần dùng trong một truy vấn

- Kết hợp 2 hoặc nhiều colunm với nhau

Cú pháp :

- Dùng Cho Colunm

Select FirstName AS Tên, LastName AS [Họ Lót] FROM tblStudent;

// Nếu có khoảng cách thì dùng "" hoặc []

// Kết quả trả về gồm 2 cột với tên mới đã set như trên


Select FirstName AS Tên, Address+', '+Birthday+', '+Sex+', '+Email AS [ Liên Hệ] FROM tblStudent;

// Kết quả trả về gồm 2 cột. Riêng cột thứ 2 với tên Liên Hệ chứa chuỗi bao gồm : Address,Birthday,Sex,Email

- Dùng Cho Table

Ví dụ sử dụng: CSDL Northwind

SELECT o.OrderID, o.OrderDate, c.CustomerName FROM Customers AS c, Orders AS o WHERE c.CustomerName='Alfreds Futterkiste';


Và câu không dùng bí danh:

SELECT Orders.OrderID, Orders.OrderDate, Customers.CustomerName FROM Customers, Orders WHERE Customers.CustomerName='Alfreds Futterkiste';


7. SQL JOIN


Câu lệnh JOIN

- Được sử dụng để kết hợp các hàng từ hai hoặc nhiều bảng. Dựa trên một trường (field) chung giữa chúng

- Different SQL JOINs - Các loại SQL JOIN khác nhau thường sử dụng

Ví dụ sử dụng: CSDL Northwind

7.1 INNER JOIN:


Là loại phổ biến nhất. Dùng để lấy về tất cả các hàng từ nhiều Bảng nếu điều kiện tham gia được đáp ứng


SELECT Orders.OrderID, Customers.CustomerName, Orders.OrderDate FROM Orders INNER JOIN Customers ON Orders.CustomerID=Customers.CustomerID;



SELECT o.OrderID, c.CustomerName, o.OrderDate FROM Orders AS o INNER JOIN Customers AS c ON o.CustomerID = c.CustomerID;


// 2 Ví dụ trên là tương tương nhau

7.2 LEFT JOIN





Hiểu đơn giản là: Lấy ra tất dữ liệu Bảng 1 Và một phần dữ liệu Bảng 2 trùng với Bảng 1 thỏa với yêu cầu được đáp ứng

Nếu Bảng 2 không có dữ liệu nào thỏa với yêu cầu được đáp ứng. Câu lệnh vẫn lấy ra tất cả dữ liệu Bảng 1 và để NULL  giá trị thuộc Bảng 2

Ex:

SELECT Customers.CustomerName, Orders.OrderID// Chọn Cột CustomerName và OrderID

FROM Customers// Từ Bảng Customers(Bảng 1)

LEFT JOIN Orders// Và Bảng Orders(Bảng 2)

ON Customers.CustomerID=Orders.CustomerID// Điều kiện ID của Bảng 1 và 2 thỏa mãn

ORDER BY Customers.CustomerName;// Sắp Xếp tăng dần dựa vào CustomerName


Mã SQL trên có thể được viết lại như sau tùy vào các chương trình CSDL:

SELECT Customers.CustomerName, Orders.OrderID

FROM Customers

LEFT OUTER JOIN Orders// LEFT OUTER JOIN tương đương LEFT JOIN

ON Customers.CustomerID=Orders.CustomerID

ORDER BY Customers.CustomerName;


7.3 RIGHT JOIN



Hiểu đơn giản là: Lấy ra tất dữ liệu Bảng 2 Và một phần dữ liệu Bảng 1 trùng với Bảng 2 thỏa với yêu cầu được đáp ứng

Nếu Bảng 1 không có dữ liệu nào thỏa với yêu cầu được đáp ứng. Câu lệnh vẫn lấy ra tất cả dữ liệu Bảng 2 và để NULL  giá trị thuộc Bảng 1

Ex:

- Trong một vài hệ CSDL thì: RIGHT JOIN còn được gọi là RIGHT OUTER JOIN

SELECT Customers.CustomerName, Orders.OrderID

FROM Customers

RIGHT JOIN Orders

ON Customers.CustomerID=Orders.CustomerID

ORDER BY Customers.CustomerName;


7.4 FULL JOIN





Lấy ra tất cả dữ liệu Bang 1 và 2. Tuy nhiên nếu Row của Bảng 1 mà không Match ( Trùng lặp / Thỏa mãn điều kiện) với Bảng 2 hoặc ngược lại. Thì Row đó chỉ hiển thị giá trị hoặc Bảng 1 hoặc bảng 2.

Ex:

SELECT Customers.CustomerName, Orders.OrderID   // Lấy giá trị Cột CustomerName Và  OrderID

FROM Customers// Từ Bảng Customers (Bảng 1)

FULL OUTER JOIN Orders// Và Bảng Orders    (Bảng 2)

ON Customers.CustomerID=Orders.CustomerID    // 2 Bảng Macth khi CustomerID = CustomerID

ORDER BY Customers.CustomerName;    // Sắp xếp thứ tự tăng dần dựa vào CustomerName


8. SQL UNION


Toán Tử UNION

- Dùng để kết hợp 2 hoặc nhiều câu lệnh SELECT

- Dữ liệu lấy ra phải theo quy tắc sau:

Mỗi câu lệnh SELECT phải có số cột bằng nhau, Chung kiểu dữ liệu, Theo thứ tự

Có 2 lệnh được sử dụng là:

UNION: Lấy ra tất cả giá trị nhưng bỏ qua giá trị trùng lặp

UNION ALL: Lấy ra tất cả giá trị.

Ex:

SELECT City FROM Customers// Lấy giá trị của Cột City trong bảng Customers

UNION// Kết hợp nhưng loại bỏ giá trị trùng

SELECT City FROM Suppliers// Lấy giá trị của Cột City trong bảng Suppliers

ORDER BY City

// Kết quả nhận được là một bảng có cột City chứa dữ liệu của cả 2 Bảng trên



SELECT City FROM Customers

UNION ALL// Kết hợp và lấy ra tất cả ...

SELECT City FROM Suppliers

ORDER BY City;


9. SQL SELECT INTO


Lệnh SELECT INTO

- Dùng để sao chép một Bảng ra một Bảng mới. Có thể sao chép 1 hoặc tất cả Colunm trong Bảng đó

Cú Pháp:

SELECT * INTO Persons_New FROM Persons; // Sao chép toàn bộ Bảng Persons sang Bảng mới :Persons_New.



SELECT LastName,FirstName INTO Persons_Backup FROM Persons; // Chỉ sao chép 2 colunm:LastName và FirstName



SELECT LastName,Firstname INTO Persons_Backup FROM Persons WHERE City='Sandnes';// Sử dụng mệnh để WHERE


// Sử dụng với JOIN
SELECT Persons.LastName,Orders.OrderNo

INTO Persons_Order_Backup

FROM Persons

INNER JOIN Orders

ON Persons.P_Id=Orders.P_Id;


// Sử dụng mệnh đề IN để sao chép sang CSDL khác !!!
SELECT * INTO Persons_Backup

IN 'Backup.mdb'

FROM Persons;


10. SQL CREATE DATABASE & TABLE


Lệnh Create Database

- Dùng để tạp mới một CSDL

Cú Pháp:

CREATE DATABASE New_Database;// Tạo mới CSDL New_Database


Lệnh Create Table

- Dùng để tạo các Bảng mới trong một CSDL

Cú Pháp:

CREATE TABLE Persons// Tạo mới bảng Persons với 5 colunm

(

P_Id int,//Tên colunm - Kiểu dữ liệuLastName varchar(255),//-------------------------

FirstName varchar(255),//-------------------------

Address varchar(255),//-------------------------

City varchar(255)//-------------------------

)




// Kết quả là một bảng với dữ liệu trống

11. SQL CONSTRAINTS


Constraints - Các ràng buộc

- Dùng để hạn chế các loại dữ liệu nhất định được phép sử dụng trong CSDL

- Các ràng buộc này được tạo ra khi tạo một bảng mới trên hệ CSDL hoặc trong lệnh CREATE TABLE, sau khi tạo bảng với lệnh ALTER TABLE

Các ràng buộc cơ bản:

NOT NULL


UNIQUE


PRIMARY KEY


FOREIGN KEY


CHECK


DEFAULT


// Nhắc lại: Các ràng buộc có thể tùy chỉnh trực tiếp trên hệ CSDL

11.1 NOT NULL



- Ràng buộc NOT NULL được áp dụng cho Colunm để yêu cầu không được để trống giá trị

Ex:



CREATE TABLE Persons

(P_Id int NOT NULL,

LastName varchar(255) NOT NULL,

FirstName varchar(255),

Address varchar(255),

City varchar(255)

)



11.2. UNIQUE


- Ràng buộc này dùng để buộc các giá trị trong 1 cột không được trùng nhau: Ví dụ: Điện Thoại, Email, Account, CMND . . .
Ex:
// Với MySQL
CREATE TABLE Persons

(

P_Id int NOT NULL,

LastName varchar(255) NOT NULL,

FirstName varchar(255),

Address varchar(255),

City varchar(255),

UNIQUE (P_Id)

)




// Với SQL Server / Oracle
CREATE TABLE Persons

(

P_Id int NOT NULL UNIQUE,

LastName varchar(255) NOT NULL,

FirstName varchar(255),

Address varchar(255),

City varchar(255)

)




// Với MySQL / SQL Server / Oracle / MS Access:

// Áp dụng cùng lúc nhiều cột -  Cách này không cần phải quan tâm lắm
CREATE TABLE Persons

(P_Id int NOT NULL,

LastName varchar(255) NOT NULL,

FirstName varchar(255),

Address varchar(255),

City varchar(255),

CONSTRAINT uni_PersonID UNIQUE (P_Id,LastName)// uni_PersonID: là tên tùy ý, nó giống như tên gọi cho UNIQUE

)



- Sử dụng với tuyên bố ALTER, áp dụng khi muốn thêm vào sau khi bảng đã được tạo.


// VớiMySQL / SQL Server / Oracle / MS Access:
ALTER TABLE Persons ADD UNIQUE (P_Id)





ALTER TABLE Persons ADD CONSTRAINT uni_PersonID UNIQUE (P_Id,LastName)// Áp dụng cùng lúc nhiều cột (Colunm)



- Loại bỏ ràng buộc UNIQUE

Như đã nói bạn có thể tùy chỉnh trực tiếp tại hệ CSDL thì có thể sử dụng các lệnh SQL:



ALTER TABLE Persons DROP INDEX uni_PersonID// Với MySQL





ALTER TABLE Persons DROP CONSTRAINT uni_PersonID// Với SQL Server / Oracle / MS Access





11.3. PRIMARY KEY



Ràng buộc Primary Key- Khóa Chính

- Là duy nhất trong mỗi Bảng

- Cột có khóa chính phải có giá trị là duy nhất, không trùng lặp (Giống UNIQUE)

- Cột khóa chính không thể rỗng (NOT NULL)

- Mỗi Bảng cần có 1 khóa chính và tối đa chỉ 1 khóa chính (Có thể không cần dùng khóa chính)




Cú Pháp:


// Với MySQL
CREATE TABLE Persons

(P_Id int NOT NULL,

LastName varchar(255) NOT NULL,

FirstName varchar(255),

Address varchar(255),

City varchar(255),

PRIMARY KEY (P_Id)

)




// Với SQL Server/ Oracle
CREATE TABLE Persons

(

P_Id int NOT NULL PRIMARY KEY,

LastName varchar(255) NOT NULL,

FirstName varchar(255),

Address varchar(255),

City varchar(255)

)

 



// Đặt trên nhiều cột với: MySQL / SQL Server / Oracle . . .
CREATE TABLE Persons

(

P_Id int NOT NULL,

LastName varchar(255) NOT NULL,

FirstName varchar(255),

Address varchar(255),

City varchar(255),

CONSTRAINT pk_PersonID PRIMARY KEY (P_Id,LastName)

)// Ví dụ này chỉ có 1 khóa chính: pk_PersonID dùng cho 2 colunm



- Dùng với ALTER sau khi đã tạo Bảng



// Với MySQL / SQL Server / Oracle / MS Access:
ALTER TABLE Persons ADD PRIMARY KEY (P_Id)

 




ALTER TABLE Persons ADD CONSTRAINT pk_PersonID PRIMARY KEY (P_Id,LastName)

 


Lưu ý: Nếu dùng ALTER thì Colunm lúc khởi tạo phải là NOT NULL


- Loại bỏ ràng buộc này



// Với MySQL
ALTER TABLE Persons DROP PRIMARY KEY

 



// Với SQL Server / Oracle / MS Access
ALTER TABLE Persons DROP CONSTRAINT pk_PersonID

 



11.4. FOREIGN KEY



Ràng buộc Foreign Key - Khóa Ngoại

- Chính là khóa chính được sử dụng ở Bảng khác

- Dùng để ngăn chặn việc phá hoại liên kết giữa 2 Bảng. (Ràng buộc giữa 2 bảng)

- Giá trị của khóa chính tương đương Khóa ngoại nằm ở Bảng khác, nên việc nhập dữ liệu phải hợp lệ !



 


Cú Pháp:

- Tạo khóa ngoại của colunm Bảng 1 cho Bảng 2.


// Với MySQL
CREATE TABLE Orders

(

O_Id int NOT NULL,

OrderNo int NOT NULL,

P_Id int,

PRIMARY KEY (O_Id),

FOREIGN KEY (P_Id) REFERENCES Persons(P_Id)// Colunm: P_Id thuộc Table: Persons

)

 



// Với SQL Server / Oracle / MS Access
CREATE TABLE Orders

(

O_Id int NOT NULL PRIMARY KEY,

OrderNo int NOT NULL,

P_Id int FOREIGN KEY REFERENCES Persons(P_Id)

)

 



// Sử dụng cho nhiều cột

// Với MySQL / SQL Server / Oracle / MS Access:
CREATE TABLE Orders

(

O_Id int NOT NULL,

OrderNo int NOT NULL,

P_Id int,

PRIMARY KEY (O_Id),

CONSTRAINT fk_PerOrders FOREIGN KEY (P_Id)

REFERENCES Persons(P_Id)

)



- Sử dụng với ALTER



// Với MySQL / SQL Server / Oracle / MS Access:
ALTER TABLE Orders ADD FOREIGN KEY (P_Id) REFERENCES Persons(P_Id)

 




ALTER TABLE Orders ADD CONSTRAINT fk_PerOrders FOREIGN KEY (P_Id) REFERENCES Persons(P_Id)

 



- Loại bỏ ràng buộc này


// Với MySQL
ALTER TABLE Orders DROP FOREIGN KEY fk_PerOrders

 



// Với SQL Server / Oracle / MS Access:
ALTER TABLE Orders DROP CONSTRAINT fk_PerOrders

 



11.5. CHECK



Ràng buộc Check

- Dùng để giới hạn, quy định phạm vi giá trị được phép của một Colunm (Cột)


Ex:



// Với MySQL
CREATE TABLE Persons

(

P_Id int NOT NULL,

LastName varchar(255) NOT NULL,

FirstName varchar(255),

Address varchar(255),

City varchar(255),

CHECK (P_Id>0)// Quy định giá trị nhập vào cột P_Id phải > 0

)

 



// Với SQL Server / Oracle / MS Access
CREATE TABLE Persons

(

P_Id int NOT NULL CHECK (P_Id>0),

LastName varchar(255) NOT NULL,

FirstName varchar(255),

Address varchar(255),

City varchar(255)

)





// Thiết lập trên nhiều cột bằng cách đặt tên cho CHECK

//Với MySQL / SQL Server / Oracle / MS Access
CREATE TABLE Persons

(

P_Id int NOT NULL,

LastName varchar(255) NOT NULL,

FirstName varchar(255),

Address varchar(255),

City varchar(255),

CONSTRAINT chk_Person CHECK (P_Id>0 AND City='Sandnes')

)

 


- Sử dụng với ALTER sau khi đã tạo Bảng

// Với MySQL / SQL Server / Oracle / MS Access:



ALTER TABLE Persons ADD CHECK (P_Id>0)

ALTER TABLE Persons ADD CONSTRAINT chk_Person CHECK (P_Id>0 AND City='Sandnes')

 


- Loại bỏ ràng buộc này


// Với MySQL:
ALTER TABLE Persons DROP CHECK chk_Person

 



// Với SQL Server / Oracle / MS Access:
ALTER TABLE Persons DROP CONSTRAINT chk_Person

 



11.6. DEFAULT



Ràng buộc Default

- Dùng để thiết lập giá trị mặc định của một cột

Ví dụ:  GiớiTính: được mặc định là "Nam", hoặc Email: mặc định là "Null"

- Sau khi thiết lập giá trị sẽ được thêm vào các records mới ngay sau đó


Ex:


// Với My SQL / SQL Server / Oracle / MS Access:
CREATE TABLE Persons

(

P_Id int NOT NULL,

LastName varchar(255) NOT NULL,

FirstName varchar(255),

Address varchar(255),

City varchar(255) DEFAULT 'Sandnes'// Mặc định cột "City" là: Sandnes

)

 




// Lấy các giá trị của System như ngày, giờ áp dụng cho các colunm
CREATE TABLE Orders

(

O_Id int NOT NULL,// Kiểu giá trị INT

OrderNo int NOT NULL,// Kiểu giá trị INT

P_Id int,// Kiểu giá trị INT

OrderDate date DEFAULT GETDATE()// Mặc định cột "OrderDate" là : Ngày hiện tại của hệ thống(Lấy qua hàm GETDATE() )

)

 



- Sử dụng với ALTER sau khi đã tạo Bảng

Ex:


// Với MySQL:
ALTER TABLE Persons ALTER City SET DEFAULT 'SANDNES'

 



// Với SQL Server / MS Access:
ALTER TABLE Persons ALTER COLUMN City SET DEFAULT 'SANDNES'

 



// Với Oracle:
ALTER TABLE Persons MODIFY City DEFAULT 'SANDNES'

 



- Loại bỏ ràng buộc này


// Với MySQL:
ALTER TABLE Persons ALTER City DROP DEFAULT

 



// Với SQL Server / Oracle / MS Access:
ALTER TABLE Persons ALTER COLUMN City DROP DEFAULT

 



12. SQL CREATE INDEX


Lệnh Create Index

- Dùng để tạo ra chỉ mục (indexes) trong một Bảng

- Nó giống như tạo đầu mục sách trong thư viện vậy

- Cho phép các ứng dụng CSDL tìm ra dữ liệu nhanh chóng mà không cần lọc tất cả Bảng

- Tất nhiên là bạn sẽ không nhìn thấy giá trị Index này, chỉ có ứng dụng sử dụng nó để tăng tốc độ tìm kiếm

- Tuy nhiên một hạn chế của việc sử dụng giá trị Index là tốc độ load  Bảng sẽ chậm hơn ban đầu. Do đó bạn nên sử dụng Index cho cột nào được tìm kiếm thường xuyên

Cú Pháp:

CREATE INDEX nameIndex ON Persons (LastName)

CREATE INDEX nameIndex ON Persons (LastName, FirstName)


// Tạo giá trị Index duy nhất trên Bảng
CREATE UNIQUE INDEX nameIndex ON Persons (LastName)

 

13. SQL DROP & TRUNCATE


Lệnh DROP

- Dùng để xóa Indexes, Table, Database

- INDEX- Xóa chỉ mục ra khỏi Table

Cú Pháp:
//MS Access:
DROP INDEX TênIndex ON TênBảng


//MS SQL Server:
DROP INDEX TênBảng.TênIndex


//DB2/Oracle:
DROP INDEX TênIndex


//MySQL:
ALTER TABLE TênBảng DROP INDEX TênIndex


- TABLE- Xóa bảng khỏi CSDL

DROP TABLE TênBảng


- DATABASE - Xóa Database

DROP DATABASE TênDatabase


Lệnh TRUNCATE

- Dùng để xóa toàn bộ dữ liệu của Bảng nhưng không xóa Bảng đó

TRUNCATE TABLE TênBảng


14. SQL ALTER


Lệnh Alter

- Dùng để Thêm, Xóa Và sửa đổi kiểu dữ liệu các cột trong Bảng đã tạo

Cú Pháp:
// Thêm
ALTER TABLE table_name ADD column_name datatype

 

// Xóa
ALTER TABLE table_name DROP COLUMN column_name

 

- Sửa đổi kiểu dữ liệu *( Thường được dùng cho Bảng mới được tạo, chưa nhập dữ liệu)
// VớiSQL Server / MS Access:
ALTER TABLE table_name ALTER COLUMN column_name datatype

 

// Với My SQL / Oracle:
ALTER TABLE table_name MODIFY column_name datatype

 

15. SQL AUTO_INCREMENT / IDENTITY / AUTOINCREMENT


Field Auto Increment

- Sử dụng để tự động tăng một số duy nhất khi thêm mới 1 record

+ Với MySQL

CREATE TABLE Persons

(

P_Id int NOT NULL AUTO_INCREMENT,// Tự tăng cột: P_Id

LastName varchar(255) NOT NULL,

FirstName varchar(255),

Address varchar(255),

City varchar(255),

PRIMARY KEY (P_Id)

)

 

- Giá Trị tự động tăng khởi đầu trong MySQL là: 1

để thay đổi dùng lệnh sau:

ALTER TABLE Persons AUTO_INCREMENT = 7

 

+ Với SQL Server

CREATE TABLE Persons

(

P_Id int PRIMARY KEY IDENTITY,

LastName varchar(255) NOT NULL,

FirstName varchar(255),

Address varchar(255),

City varchar(255)

)

 

- Giá Trị tự động tăng khởi đầu trong SQL Server là: 1

để thay đổi số bắt đầu và số giá trị mỗi lần tăng chỉ cần thêm:
IDENTITY(1,2)

+ Với Access

CREATE TABLE Persons

(

P_Id PRIMARY KEY AUTOINCREMENT,

LastName varchar(255) NOT NULL,

FirstName varchar(255),

Address varchar(255),

City varchar(255)

)

 

- Thay đổi từ khóa AUTOINCREMENT thành AUTOINCREMENT(1,2) để tùy chỉnh giá trị tăng

+ Với Oracle

CREATE SEQUENCE seq_person

// seq_person: là tên của đối tượng có chức năng sau:

MINVALUE 1// Giá trị nhỏ nhất là 1

START WITH 1// Bắt đầu tăng với : 1

INCREMENT BY 1// Mỗi lần tăng : 1

CACHE 10  // Bộ nhớ cache : 10(Tùy chọn này giúp tăng tốc độ truy cập)

 

16. SQL VIEWS


Bảng ảo - Virtual Table

- Tạo ra một Table ảo từ 1 hoặc nhiều Table Join với nhau

- Ảo nghĩa là không thật, dữ liệu của nó hoàn toàn được chứa từ Table khác.

- Trong 1 views chứa nhiều lệnh Query để tạo ra một Table ảo với dữ liệu mà người dùng cần sử dụng nhất từ các Table khác

- Bạn đã sử dụng Accsess thì Views tương tự như tạo mới Query trong Accsess vậy !!

- Tốc độ truy vấn từ Bảng Views nhanh hay chậm hơn truy vấn trực tiếp vào Table gốc phụ thuộc vào nhiều yếu tố. Không thể nói bên nào nhanh hơn !

- Ưu điểm không thể phủ nhận của Views là sự tiện dụng.

- Dùng che dấu những Colunm dữ liệu quan trọng trong các Bảng. Tạo Views để hạn chế số Colunm,Row được xem, truy cập

Cú Pháp:

CREATE VIEW view_name AS

SELECT column_name(s)// (s) : Có thể nhiều Colunm

FROM table_name

WHERE condition

 

Ví dụ với CSDL NorthWind
// Tạo mới 1 Views lấy tất cả dữ liệu từ : ProductID, ProductName
CREATE VIEW [Current Product List] AS

SELECT ProductID,ProductName

FROM Products

WHERE Discontinued=No  // Điều kiện Discontinued = No (Dữ liệu từ Products không ngắt quãng)

 

// Xem dữ liệu từ Views mà ta đã tạo ra
SELECT * FROM [Current Product List]

 

- Bạn có thể tạo các điều kiện WHERE khác nhau để tạo Views theo mong muốn !

Ex:

CREATE VIEW [Category Sales For Year] AS

SELECT DISTINCT CategoryName,Sum(ProductSales) AS CategorySales

FROM [Product Sales for Year]

GROUP BY CategoryName

 

// Xem dữ liệu từ Views này:
SELECT * FROM [Category Sales For Year] WHERE CategoryName='Beverages';

 

-Thêm một clounm vào Views đã tạo

Ex:

CREATE VIEW [Current Product List] AS

SELECT ProductID,ProductName,Category// Ở đây thêm Colunm: Category vào Views: [Current Product List]

FROM Products

WHERE Discontinued=No

 

- Bạn có thể dùng lệnh ALTER

- Xóa một Views

DROP VIEW view_name

 



Nguồn: Tự Học IT Online - http://tuhocit.net

SQL LANGUAGE: ADVANCED [2/3]

Ở phần trước tôi đã giới thiệu với các bạn SQL cơ bản. Hôm nay xin tiếp tục

- Trong phần này giới thiệu các từ khóa nâng cao và cách thức sử dụng chúng trong một số Hệ quản trị CSDL . . .

- Cơ sở dữ liệu trong các ví dụ demo có thể tải về tại đây để thực hành: NorthWind






















































BookMark Express (Lựa chọn Nhanh)
SELECT TOP
LIKE and NOT LIKE
Wildcards - Ký Hiệu
IN
BETWEEN
Aliases - Bí Danh
JOIN {INNER JOIN / LEFT JOIN / RIGHT JOIN / FULL JOIN}
UNION
SELECT INTO
CREATE DATABASE & TABLE
CONSTRAINTS {NOT NULL / UNIQUE / PRIMARY KEY / FOREIGN KEY / CHECK / DEFAULT}
CREATE INDEX
DROP & TRUNCATE
ALTER
AUTO_INCREMENT / IDENTITY / AUTOINCREMENT
VIEWS

1. SQL SELECT TOP


Mệnh đề SELECT TOP được sử dụng để xác định số lượng Records trả về. Nó rất hữu ích nếu Table có rất nhiều dữ liệu
Cú Pháp
-SQL Server

Select Top 5 From tblStudent;// 5 là số hàng trả về, tính từ hàng đầu tiên.

 
Select Top 10 PERCENT From tblStudent  //10 PERCENT lấy về 10% dữ liệu, tính từ hàng đầu tiên.

 

-MySQL

Select * From tblStudent LIMIT 5;// LIMIT 5: là số hàng trả về, tính từ hàng đầu tiên.

 

-Oracle

Select * From tblStudent WHERE ROWNUM <=5;


2. SQL LIKE and NOT LIKE


Toán tử LIKE

-Được dùng trong mệnh đề WHERE để tìm kiếm một khuôn mẫu quy định trong một cột
Cú Pháp
- Sử dụng kèm theo ký tự  phần trăm "%"

- SELECT * FROM tblStudent WHERE FirstName LIKE '%Tuan';

- SELECT * FROM tblStudent WHERE FirstName LIKE 'Tran%';

- SELECT * FROM tblStudent WHERE FirstName LIKE '%Thi%';


Ký tự '%' được hiểu là tất cả kèm theo Ký tự xác định như trên

- Sử dụng NOT LIKE để phủ định lại các ví dụ trên

- SELECT * FROM tblStudent WHERE FirstName NOT LIKE '%Tuan';

- SELECT * FROM tblStudent WHERE FirstName NOT LIKE 'Tran%';

- SELECT * FROM tblStudent WHERE FirstName NOT LIKE '%Thi%';


3. SQL Wildcards - Ký Hiệu


- Các ký hiệu này thường được sử dụng kèm với toán tử LIKE để tìm kiếm dữ liệu trọng bảng

Cú Pháp

- Có 3 ký hiệu chính được sử dụng.

%: được hiểu là 1 chuỗi bất kỳ

_: duy nhất một ký tự bất kỳ

[xxxx] : xxx nằm trong khung [] là các chữ cái

EX:

- Sử dụng "_"

- Select * FROM tblStudent WHERE FirstName LIKE '_uan';

- Select * FROM tblStudent WHERE FirstName LIKE 'T_an';

- Select * FROM tblStudent WHERE FirstName LIKE 'H_o_g';


- Sử dụng [xxxx]

Select * FROM tblStudent WHERE FirstName LIKE '[TBN]%'

// Lấy tất cả records nếu FirstName có các chữ cái đầu T,B,N
Select * FROM tblStudent WHERE FirstName LIKE '[!TBN]%'

// Lấy tất cả records nếu FirstName Không có các chữ cái đầu T,B,N
Select * FROM tblStudent WHERE FirstName LIKE '[A-F]%'

// Lấy tất cả records nếu FirstName có các chữ cái đầu Từ A đến F

// [A-F] : Lấy thứ tự A B C D F

4. SQL IN


Toán tử IN

- Dùng để chỉ định nhiều giá trị trong mệnh đề WHERE.

Cú pháp
Select * FROM tblStudent WHERE FirstName IN ('Tuan','Minh');

// Lấy ra tất cả records  nếu FirstName có Tuan và Minh


5. SQL BETWEEN


Toán tử BETWEEN

- Dùng để lựa chọn các giá trị trong một phạm vi xác định. Các giá trị xác định có thể là số, văn bản hoặc ngày tháng

Cú pháp

Select * FROM tblStudent WHERE Birthday BETWEEN  #26/06/1990# AND #26/06/1979#;



Select * FROM tblStudent WHERE Birthday NOT BETWEEN  #26/06/1990# AND #26/06/1979#;// Phủ định lại ví dụ trên



Select * FROM tblStudent WHERE FirstName BETWEEN 'A' AND 'C';

// Lấy ra tất cả records nếu FirstName có chữ cái đầu giữa A và C.

// 'A' and 'C' : Là ký tự thứ tự kế tiếp A,B,C

- Ví dụ khác kết hợp với IN

Select * FROM tblStudent WHERE (FirstName BETWEEN 'A' AND 'C') AND StudentID IN ('SV01','SV02');

Select * FROM tblStudent WHERE (FirstName BETWEEN 'A' AND 'C') AND NOT StudentID IN ('SV01','SV02');


6. SQL Aliases - Bí Danh


Được dùng:

- Dùng để tạo một tên tạm thời sử dụng cho 1 bảng hoặc 1 colunm

- Có nhiều hơn một Bảng cần dùng trong một truy vấn

- Kết hợp 2 hoặc nhiều colunm với nhau

Cú pháp :

- Dùng Cho Colunm

Select FirstName AS Tên, LastName AS [Họ Lót] FROM tblStudent;

// Nếu có khoảng cách thì dùng "" hoặc []

// Kết quả trả về gồm 2 cột với tên mới đã set như trên


Select FirstName AS Tên, Address+', '+Birthday+', '+Sex+', '+Email AS [ Liên Hệ] FROM tblStudent;

// Kết quả trả về gồm 2 cột. Riêng cột thứ 2 với tên Liên Hệ chứa chuỗi bao gồm : Address,Birthday,Sex,Email

- Dùng Cho Table

Ví dụ sử dụng: CSDL Northwind

SELECT o.OrderID, o.OrderDate, c.CustomerName FROM Customers AS c, Orders AS o WHERE c.CustomerName='Alfreds Futterkiste';


Và câu không dùng bí danh:

SELECT Orders.OrderID, Orders.OrderDate, Customers.CustomerName FROM Customers, Orders WHERE Customers.CustomerName='Alfreds Futterkiste';


7. SQL JOIN


Câu lệnh JOIN

- Được sử dụng để kết hợp các hàng từ hai hoặc nhiều bảng. Dựa trên một trường (field) chung giữa chúng

- Different SQL JOINs - Các loại SQL JOIN khác nhau thường sử dụng

Ví dụ sử dụng: CSDL Northwind

7.1 INNER JOIN:


Là loại phổ biến nhất. Dùng để lấy về tất cả các hàng từ nhiều Bảng nếu điều kiện tham gia được đáp ứng


SELECT Orders.OrderID, Customers.CustomerName, Orders.OrderDate FROM Orders INNER JOIN Customers ON Orders.CustomerID=Customers.CustomerID;



SELECT o.OrderID, c.CustomerName, o.OrderDate FROM Orders AS o INNER JOIN Customers AS c ON o.CustomerID = c.CustomerID;


// 2 Ví dụ trên là tương tương nhau

7.2 LEFT JOIN





Hiểu đơn giản là: Lấy ra tất dữ liệu Bảng 1 Và một phần dữ liệu Bảng 2 trùng với Bảng 1 thỏa với yêu cầu được đáp ứng

Nếu Bảng 2 không có dữ liệu nào thỏa với yêu cầu được đáp ứng. Câu lệnh vẫn lấy ra tất cả dữ liệu Bảng 1 và để NULL  giá trị thuộc Bảng 2

Ex:

SELECT Customers.CustomerName, Orders.OrderID// Chọn Cột CustomerName và OrderID

FROM Customers// Từ Bảng Customers(Bảng 1)

LEFT JOIN Orders// Và Bảng Orders(Bảng 2)

ON Customers.CustomerID=Orders.CustomerID// Điều kiện ID của Bảng 1 và 2 thỏa mãn

ORDER BY Customers.CustomerName;// Sắp Xếp tăng dần dựa vào CustomerName


Mã SQL trên có thể được viết lại như sau tùy vào các chương trình CSDL:

SELECT Customers.CustomerName, Orders.OrderID

FROM Customers

LEFT OUTER JOIN Orders// LEFT OUTER JOIN tương đương LEFT JOIN

ON Customers.CustomerID=Orders.CustomerID

ORDER BY Customers.CustomerName;


7.3 RIGHT JOIN



Hiểu đơn giản là: Lấy ra tất dữ liệu Bảng 2 Và một phần dữ liệu Bảng 1 trùng với Bảng 2 thỏa với yêu cầu được đáp ứng

Nếu Bảng 1 không có dữ liệu nào thỏa với yêu cầu được đáp ứng. Câu lệnh vẫn lấy ra tất cả dữ liệu Bảng 2 và để NULL  giá trị thuộc Bảng 1

Ex:

- Trong một vài hệ CSDL thì: RIGHT JOIN còn được gọi là RIGHT OUTER JOIN

SELECT Customers.CustomerName, Orders.OrderID

FROM Customers

RIGHT JOIN Orders

ON Customers.CustomerID=Orders.CustomerID

ORDER BY Customers.CustomerName;


7.4 FULL JOIN





Lấy ra tất cả dữ liệu Bang 1 và 2. Tuy nhiên nếu Row của Bảng 1 mà không Match ( Trùng lặp / Thỏa mãn điều kiện) với Bảng 2 hoặc ngược lại. Thì Row đó chỉ hiển thị giá trị hoặc Bảng 1 hoặc bảng 2.

Ex:

SELECT Customers.CustomerName, Orders.OrderID   // Lấy giá trị Cột CustomerName Và  OrderID

FROM Customers// Từ Bảng Customers (Bảng 1)

FULL OUTER JOIN Orders// Và Bảng Orders    (Bảng 2)

ON Customers.CustomerID=Orders.CustomerID    // 2 Bảng Macth khi CustomerID = CustomerID

ORDER BY Customers.CustomerName;    // Sắp xếp thứ tự tăng dần dựa vào CustomerName


8. SQL UNION


Toán Tử UNION

- Dùng để kết hợp 2 hoặc nhiều câu lệnh SELECT

- Dữ liệu lấy ra phải theo quy tắc sau:

Mỗi câu lệnh SELECT phải có số cột bằng nhau, Chung kiểu dữ liệu, Theo thứ tự

Có 2 lệnh được sử dụng là:

UNION: Lấy ra tất cả giá trị nhưng bỏ qua giá trị trùng lặp

UNION ALL: Lấy ra tất cả giá trị.

Ex:

SELECT City FROM Customers// Lấy giá trị của Cột City trong bảng Customers

UNION// Kết hợp nhưng loại bỏ giá trị trùng

SELECT City FROM Suppliers// Lấy giá trị của Cột City trong bảng Suppliers

ORDER BY City

// Kết quả nhận được là một bảng có cột City chứa dữ liệu của cả 2 Bảng trên



SELECT City FROM Customers

UNION ALL// Kết hợp và lấy ra tất cả ...

SELECT City FROM Suppliers

ORDER BY City;


9. SQL SELECT INTO


Lệnh SELECT INTO

- Dùng để sao chép một Bảng ra một Bảng mới. Có thể sao chép 1 hoặc tất cả Colunm trong Bảng đó

Cú Pháp:

SELECT * INTO Persons_New FROM Persons; // Sao chép toàn bộ Bảng Persons sang Bảng mới :Persons_New.



SELECT LastName,FirstName INTO Persons_Backup FROM Persons; // Chỉ sao chép 2 colunm:LastName và FirstName



SELECT LastName,Firstname INTO Persons_Backup FROM Persons WHERE City='Sandnes';// Sử dụng mệnh để WHERE


// Sử dụng với JOIN
SELECT Persons.LastName,Orders.OrderNo

INTO Persons_Order_Backup

FROM Persons

INNER JOIN Orders

ON Persons.P_Id=Orders.P_Id;


// Sử dụng mệnh đề IN để sao chép sang CSDL khác !!!
SELECT * INTO Persons_Backup

IN 'Backup.mdb'

FROM Persons;


10. SQL CREATE DATABASE & TABLE


Lệnh Create Database

- Dùng để tạp mới một CSDL

Cú Pháp:

CREATE DATABASE New_Database;// Tạo mới CSDL New_Database


Lệnh Create Table

- Dùng để tạo các Bảng mới trong một CSDL

Cú Pháp:

CREATE TABLE Persons// Tạo mới bảng Persons với 5 colunm

(

P_Id int,//Tên colunm - Kiểu dữ liệuLastName varchar(255),//-------------------------

FirstName varchar(255),//-------------------------

Address varchar(255),//-------------------------

City varchar(255)//-------------------------

)




// Kết quả là một bảng với dữ liệu trống

11. SQL CONSTRAINTS


Constraints - Các ràng buộc

- Dùng để hạn chế các loại dữ liệu nhất định được phép sử dụng trong CSDL

- Các ràng buộc này được tạo ra khi tạo một bảng mới trên hệ CSDL hoặc trong lệnh CREATE TABLE, sau khi tạo bảng với lệnh ALTER TABLE

Các ràng buộc cơ bản:

NOT NULL


UNIQUE


PRIMARY KEY


FOREIGN KEY


CHECK


DEFAULT


// Nhắc lại: Các ràng buộc có thể tùy chỉnh trực tiếp trên hệ CSDL

11.1 NOT NULL



- Ràng buộc NOT NULL được áp dụng cho Colunm để yêu cầu không được để trống giá trị

Ex:



CREATE TABLE Persons

(P_Id int NOT NULL,

LastName varchar(255) NOT NULL,

FirstName varchar(255),

Address varchar(255),

City varchar(255)

)



11.2. UNIQUE


- Ràng buộc này dùng để buộc các giá trị trong 1 cột không được trùng nhau: Ví dụ: Điện Thoại, Email, Account, CMND . . .
Ex:
// Với MySQL
CREATE TABLE Persons

(

P_Id int NOT NULL,

LastName varchar(255) NOT NULL,

FirstName varchar(255),

Address varchar(255),

City varchar(255),

UNIQUE (P_Id)

)




// Với SQL Server / Oracle
CREATE TABLE Persons

(

P_Id int NOT NULL UNIQUE,

LastName varchar(255) NOT NULL,

FirstName varchar(255),

Address varchar(255),

City varchar(255)

)




// Với MySQL / SQL Server / Oracle / MS Access:

// Áp dụng cùng lúc nhiều cột -  Cách này không cần phải quan tâm lắm
CREATE TABLE Persons

(P_Id int NOT NULL,

LastName varchar(255) NOT NULL,

FirstName varchar(255),

Address varchar(255),

City varchar(255),

CONSTRAINT uni_PersonID UNIQUE (P_Id,LastName)// uni_PersonID: là tên tùy ý, nó giống như tên gọi cho UNIQUE

)



- Sử dụng với tuyên bố ALTER, áp dụng khi muốn thêm vào sau khi bảng đã được tạo.


// VớiMySQL / SQL Server / Oracle / MS Access:
ALTER TABLE Persons ADD UNIQUE (P_Id)





ALTER TABLE Persons ADD CONSTRAINT uni_PersonID UNIQUE (P_Id,LastName)// Áp dụng cùng lúc nhiều cột (Colunm)



- Loại bỏ ràng buộc UNIQUE

Như đã nói bạn có thể tùy chỉnh trực tiếp tại hệ CSDL thì có thể sử dụng các lệnh SQL:



ALTER TABLE Persons DROP INDEX uni_PersonID// Với MySQL





ALTER TABLE Persons DROP CONSTRAINT uni_PersonID// Với SQL Server / Oracle / MS Access





11.3. PRIMARY KEY



Ràng buộc Primary Key- Khóa Chính

- Là duy nhất trong mỗi Bảng

- Cột có khóa chính phải có giá trị là duy nhất, không trùng lặp (Giống UNIQUE)

- Cột khóa chính không thể rỗng (NOT NULL)

- Mỗi Bảng cần có 1 khóa chính và tối đa chỉ 1 khóa chính (Có thể không cần dùng khóa chính)




Cú Pháp:


// Với MySQL
CREATE TABLE Persons

(P_Id int NOT NULL,

LastName varchar(255) NOT NULL,

FirstName varchar(255),

Address varchar(255),

City varchar(255),

PRIMARY KEY (P_Id)

)




// Với SQL Server/ Oracle
CREATE TABLE Persons

(

P_Id int NOT NULL PRIMARY KEY,

LastName varchar(255) NOT NULL,

FirstName varchar(255),

Address varchar(255),

City varchar(255)

)

 



// Đặt trên nhiều cột với: MySQL / SQL Server / Oracle . . .
CREATE TABLE Persons

(

P_Id int NOT NULL,

LastName varchar(255) NOT NULL,

FirstName varchar(255),

Address varchar(255),

City varchar(255),

CONSTRAINT pk_PersonID PRIMARY KEY (P_Id,LastName)

)// Ví dụ này chỉ có 1 khóa chính: pk_PersonID dùng cho 2 colunm



- Dùng với ALTER sau khi đã tạo Bảng



// Với MySQL / SQL Server / Oracle / MS Access:
ALTER TABLE Persons ADD PRIMARY KEY (P_Id)

 




ALTER TABLE Persons ADD CONSTRAINT pk_PersonID PRIMARY KEY (P_Id,LastName)

 


Lưu ý: Nếu dùng ALTER thì Colunm lúc khởi tạo phải là NOT NULL


- Loại bỏ ràng buộc này



// Với MySQL
ALTER TABLE Persons DROP PRIMARY KEY

 



// Với SQL Server / Oracle / MS Access
ALTER TABLE Persons DROP CONSTRAINT pk_PersonID

 



11.4. FOREIGN KEY



Ràng buộc Foreign Key - Khóa Ngoại

- Chính là khóa chính được sử dụng ở Bảng khác

- Dùng để ngăn chặn việc phá hoại liên kết giữa 2 Bảng. (Ràng buộc giữa 2 bảng)

- Giá trị của khóa chính tương đương Khóa ngoại nằm ở Bảng khác, nên việc nhập dữ liệu phải hợp lệ !



 


Cú Pháp:

- Tạo khóa ngoại của colunm Bảng 1 cho Bảng 2.


// Với MySQL
CREATE TABLE Orders

(

O_Id int NOT NULL,

OrderNo int NOT NULL,

P_Id int,

PRIMARY KEY (O_Id),

FOREIGN KEY (P_Id) REFERENCES Persons(P_Id)// Colunm: P_Id thuộc Table: Persons

)

 



// Với SQL Server / Oracle / MS Access
CREATE TABLE Orders

(

O_Id int NOT NULL PRIMARY KEY,

OrderNo int NOT NULL,

P_Id int FOREIGN KEY REFERENCES Persons(P_Id)

)

 



// Sử dụng cho nhiều cột

// Với MySQL / SQL Server / Oracle / MS Access:
CREATE TABLE Orders

(

O_Id int NOT NULL,

OrderNo int NOT NULL,

P_Id int,

PRIMARY KEY (O_Id),

CONSTRAINT fk_PerOrders FOREIGN KEY (P_Id)

REFERENCES Persons(P_Id)

)



- Sử dụng với ALTER



// Với MySQL / SQL Server / Oracle / MS Access:
ALTER TABLE Orders ADD FOREIGN KEY (P_Id) REFERENCES Persons(P_Id)

 




ALTER TABLE Orders ADD CONSTRAINT fk_PerOrders FOREIGN KEY (P_Id) REFERENCES Persons(P_Id)

 



- Loại bỏ ràng buộc này


// Với MySQL
ALTER TABLE Orders DROP FOREIGN KEY fk_PerOrders

 



// Với SQL Server / Oracle / MS Access:
ALTER TABLE Orders DROP CONSTRAINT fk_PerOrders

 



11.5. CHECK



Ràng buộc Check

- Dùng để giới hạn, quy định phạm vi giá trị được phép của một Colunm (Cột)


Ex:



// Với MySQL
CREATE TABLE Persons

(

P_Id int NOT NULL,

LastName varchar(255) NOT NULL,

FirstName varchar(255),

Address varchar(255),

City varchar(255),

CHECK (P_Id>0)// Quy định giá trị nhập vào cột P_Id phải > 0

)

 



// Với SQL Server / Oracle / MS Access
CREATE TABLE Persons

(

P_Id int NOT NULL CHECK (P_Id>0),

LastName varchar(255) NOT NULL,

FirstName varchar(255),

Address varchar(255),

City varchar(255)

)





// Thiết lập trên nhiều cột bằng cách đặt tên cho CHECK

//Với MySQL / SQL Server / Oracle / MS Access
CREATE TABLE Persons

(

P_Id int NOT NULL,

LastName varchar(255) NOT NULL,

FirstName varchar(255),

Address varchar(255),

City varchar(255),

CONSTRAINT chk_Person CHECK (P_Id>0 AND City='Sandnes')

)

 


- Sử dụng với ALTER sau khi đã tạo Bảng

// Với MySQL / SQL Server / Oracle / MS Access:



ALTER TABLE Persons ADD CHECK (P_Id>0)

ALTER TABLE Persons ADD CONSTRAINT chk_Person CHECK (P_Id>0 AND City='Sandnes')

 


- Loại bỏ ràng buộc này


// Với MySQL:
ALTER TABLE Persons DROP CHECK chk_Person

 



// Với SQL Server / Oracle / MS Access:
ALTER TABLE Persons DROP CONSTRAINT chk_Person

 



11.6. DEFAULT



Ràng buộc Default

- Dùng để thiết lập giá trị mặc định của một cột

Ví dụ:  GiớiTính: được mặc định là "Nam", hoặc Email: mặc định là "Null"

- Sau khi thiết lập giá trị sẽ được thêm vào các records mới ngay sau đó


Ex:


// Với My SQL / SQL Server / Oracle / MS Access:
CREATE TABLE Persons

(

P_Id int NOT NULL,

LastName varchar(255) NOT NULL,

FirstName varchar(255),

Address varchar(255),

City varchar(255) DEFAULT 'Sandnes'// Mặc định cột "City" là: Sandnes

)

 




// Lấy các giá trị của System như ngày, giờ áp dụng cho các colunm
CREATE TABLE Orders

(

O_Id int NOT NULL,// Kiểu giá trị INT

OrderNo int NOT NULL,// Kiểu giá trị INT

P_Id int,// Kiểu giá trị INT

OrderDate date DEFAULT GETDATE()// Mặc định cột "OrderDate" là : Ngày hiện tại của hệ thống(Lấy qua hàm GETDATE() )

)

 



- Sử dụng với ALTER sau khi đã tạo Bảng

Ex:


// Với MySQL:
ALTER TABLE Persons ALTER City SET DEFAULT 'SANDNES'

 



// Với SQL Server / MS Access:
ALTER TABLE Persons ALTER COLUMN City SET DEFAULT 'SANDNES'

 



// Với Oracle:
ALTER TABLE Persons MODIFY City DEFAULT 'SANDNES'

 



- Loại bỏ ràng buộc này


// Với MySQL:
ALTER TABLE Persons ALTER City DROP DEFAULT

 



// Với SQL Server / Oracle / MS Access:
ALTER TABLE Persons ALTER COLUMN City DROP DEFAULT

 



12. SQL CREATE INDEX


Lệnh Create Index

- Dùng để tạo ra chỉ mục (indexes) trong một Bảng

- Nó giống như tạo đầu mục sách trong thư viện vậy

- Cho phép các ứng dụng CSDL tìm ra dữ liệu nhanh chóng mà không cần lọc tất cả Bảng

- Tất nhiên là bạn sẽ không nhìn thấy giá trị Index này, chỉ có ứng dụng sử dụng nó để tăng tốc độ tìm kiếm

- Tuy nhiên một hạn chế của việc sử dụng giá trị Index là tốc độ load  Bảng sẽ chậm hơn ban đầu. Do đó bạn nên sử dụng Index cho cột nào được tìm kiếm thường xuyên

Cú Pháp:

CREATE INDEX nameIndex ON Persons (LastName)

CREATE INDEX nameIndex ON Persons (LastName, FirstName)


// Tạo giá trị Index duy nhất trên Bảng
CREATE UNIQUE INDEX nameIndex ON Persons (LastName)

 

13. SQL DROP & TRUNCATE


Lệnh DROP

- Dùng để xóa Indexes, Table, Database

- INDEX- Xóa chỉ mục ra khỏi Table

Cú Pháp:
//MS Access:
DROP INDEX TênIndex ON TênBảng


//MS SQL Server:
DROP INDEX TênBảng.TênIndex


//DB2/Oracle:
DROP INDEX TênIndex


//MySQL:
ALTER TABLE TênBảng DROP INDEX TênIndex


- TABLE- Xóa bảng khỏi CSDL

DROP TABLE TênBảng


- DATABASE - Xóa Database

DROP DATABASE TênDatabase


Lệnh TRUNCATE

- Dùng để xóa toàn bộ dữ liệu của Bảng nhưng không xóa Bảng đó

TRUNCATE TABLE TênBảng


14. SQL ALTER


Lệnh Alter

- Dùng để Thêm, Xóa Và sửa đổi kiểu dữ liệu các cột trong Bảng đã tạo

Cú Pháp:
// Thêm
ALTER TABLE table_name ADD column_name datatype

 

// Xóa
ALTER TABLE table_name DROP COLUMN column_name

 

- Sửa đổi kiểu dữ liệu *( Thường được dùng cho Bảng mới được tạo, chưa nhập dữ liệu)
// VớiSQL Server / MS Access:
ALTER TABLE table_name ALTER COLUMN column_name datatype

 

// Với My SQL / Oracle:
ALTER TABLE table_name MODIFY column_name datatype

 

15. SQL AUTO_INCREMENT / IDENTITY / AUTOINCREMENT


Field Auto Increment

- Sử dụng để tự động tăng một số duy nhất khi thêm mới 1 record

+ Với MySQL

CREATE TABLE Persons

(

P_Id int NOT NULL AUTO_INCREMENT,// Tự tăng cột: P_Id

LastName varchar(255) NOT NULL,

FirstName varchar(255),

Address varchar(255),

City varchar(255),

PRIMARY KEY (P_Id)

)

 

- Giá Trị tự động tăng khởi đầu trong MySQL là: 1

để thay đổi dùng lệnh sau:

ALTER TABLE Persons AUTO_INCREMENT = 7

 

+ Với SQL Server

CREATE TABLE Persons

(

P_Id int PRIMARY KEY IDENTITY,

LastName varchar(255) NOT NULL,

FirstName varchar(255),

Address varchar(255),

City varchar(255)

)

 

- Giá Trị tự động tăng khởi đầu trong SQL Server là: 1

để thay đổi số bắt đầu và số giá trị mỗi lần tăng chỉ cần thêm:
IDENTITY(1,2)

+ Với Access

CREATE TABLE Persons

(

P_Id PRIMARY KEY AUTOINCREMENT,

LastName varchar(255) NOT NULL,

FirstName varchar(255),

Address varchar(255),

City varchar(255)

)

 

- Thay đổi từ khóa AUTOINCREMENT thành AUTOINCREMENT(1,2) để tùy chỉnh giá trị tăng

+ Với Oracle

CREATE SEQUENCE seq_person

// seq_person: là tên của đối tượng có chức năng sau:

MINVALUE 1// Giá trị nhỏ nhất là 1

START WITH 1// Bắt đầu tăng với : 1

INCREMENT BY 1// Mỗi lần tăng : 1

CACHE 10  // Bộ nhớ cache : 10(Tùy chọn này giúp tăng tốc độ truy cập)

 

16. SQL VIEWS


Bảng ảo - Virtual Table

- Tạo ra một Table ảo từ 1 hoặc nhiều Table Join với nhau

- Ảo nghĩa là không thật, dữ liệu của nó hoàn toàn được chứa từ Table khác.

- Trong 1 views chứa nhiều lệnh Query để tạo ra một Table ảo với dữ liệu mà người dùng cần sử dụng nhất từ các Table khác

- Bạn đã sử dụng Accsess thì Views tương tự như tạo mới Query trong Accsess vậy !!

- Tốc độ truy vấn từ Bảng Views nhanh hay chậm hơn truy vấn trực tiếp vào Table gốc phụ thuộc vào nhiều yếu tố. Không thể nói bên nào nhanh hơn !

- Ưu điểm không thể phủ nhận của Views là sự tiện dụng.

- Dùng che dấu những Colunm dữ liệu quan trọng trong các Bảng. Tạo Views để hạn chế số Colunm,Row được xem, truy cập

Cú Pháp:

CREATE VIEW view_name AS

SELECT column_name(s)// (s) : Có thể nhiều Colunm

FROM table_name

WHERE condition

 

Ví dụ với CSDL NorthWind
// Tạo mới 1 Views lấy tất cả dữ liệu từ : ProductID, ProductName
CREATE VIEW [Current Product List] AS

SELECT ProductID,ProductName

FROM Products

WHERE Discontinued=No  // Điều kiện Discontinued = No (Dữ liệu từ Products không ngắt quãng)

 

// Xem dữ liệu từ Views mà ta đã tạo ra
SELECT * FROM [Current Product List]

 

- Bạn có thể tạo các điều kiện WHERE khác nhau để tạo Views theo mong muốn !

Ex:

CREATE VIEW [Category Sales For Year] AS

SELECT DISTINCT CategoryName,Sum(ProductSales) AS CategorySales

FROM [Product Sales for Year]

GROUP BY CategoryName

 

// Xem dữ liệu từ Views này:
SELECT * FROM [Category Sales For Year] WHERE CategoryName='Beverages';

 

-Thêm một clounm vào Views đã tạo

Ex:

CREATE VIEW [Current Product List] AS

SELECT ProductID,ProductName,Category// Ở đây thêm Colunm: Category vào Views: [Current Product List]

FROM Products

WHERE Discontinued=No

 

- Bạn có thể dùng lệnh ALTER

- Xóa một Views

DROP VIEW view_name

 



Nguồn: Tự Học IT Online - http://tuhocit.net

Phần đầu này, giới thiệu các lệnh cơ bản nhất và cũng quan trọng nhất trong SQL. Việc học nó quả thực không khó vì cấu trúc cú pháp không nhiều. Vấn đề là các bạn sẽ dùng nó như thế nào, áp dụng ra sao. Điều này tùy thuộc vào khả năng nhạy bén của từng cá nhân. Hy vọng qua loạt bài giới thiệu về ngôn ngữ SQL này, các bạn thấy nó  là thông tin bổ ích cho mình.



SQL LANGUAGE : BASIC [1/3]

Phần đầu này, giới thiệu các lệnh cơ bản nhất và cũng quan trọng nhất trong SQL. Việc học nó quả thực không khó vì cấu trúc cú pháp không nhiều. Vấn đề là các bạn sẽ dùng nó như thế nào, áp dụng ra sao. Điều này tùy thuộc vào khả năng nhạy bén của từng cá nhân. Hy vọng qua loạt bài giới thiệu về ngôn ngữ SQL này, các bạn thấy nó  là thông tin bổ ích cho mình.




Xem Nhiều