– 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
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.
|
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 '%Phi';
- SELECT * FROM tblStudent WHERE FirstName LIKE 'Nguyen%';
- SELECT * FROM tblStudent WHERE FirstName LIKE '%Huu%';
|
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 '%Phi';
- SELECT * FROM tblStudent WHERE FirstName NOT LIKE 'Nguyen%';
- SELECT * FROM tblStudent WHERE FirstName NOT LIKE '%Huu%';
|
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 '_hi';
- Select * FROM tblStudent WHERE FirstName LIKE 'N_uyen';
- Select * FROM tblStudent WHERE FirstName LIKE 'H_u_u';
|
– 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 ('Phi','Huu');
|
// Lấy ra tất cả records nếu FirstName có Phi và Huu
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.
|
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:
1
2
3
4
5
6
7
8
9
10
11
12
13
|
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:
// 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:
|
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.
|
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 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)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
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
|
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
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.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
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
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
|
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
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:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
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
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: 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:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
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: ALTER TABLE Persons ALTER COLUMN City SET DEFAULT ‘SANDNES’
– Loại bỏ ràng buộc này: 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: DROP INDEX TênBảng.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)
ALTER TABLE table_name ALTER COLUMN 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
|
CREATE TABLE Persons
(
P_Id int PRIMARY KEY IDENTITY,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255)
)
|
15. 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
|
|
// 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 !
|
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
|
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
–Hết–
Không có nhận xét nào:
Đăng nhận xét