Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 18 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
18
Dung lượng
157,32 KB
Nội dung
Tổng hợp câu lệnh SQL cần phải nhớ – Trong phần giới thiệu từ khóa nâng cao cách thức sử dụng chúng số Hệ quản trị CSDL – Cơ sở liệu ví dụ demo tải để thực hành: NorthWind SQL SELECT TOP Mệnh đề SELECT TOP sử dụng để xác định số lượng Records trả Nó hữu ích Table có nhiều liệu Cú Pháp -SQL Server Select Top From tblStudent;// số hàng trả về, tính từ hàng Select Top 10 PERCENT From tblStudent //10 PERCENT lấy 10% liệu, tính từ hàng SQL LIKE and NOT LIKE Toán tử LIKE -Được dùng mệnh đề WHERE để tìm kiếm khn mẫu quy định 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ự ‘%’ hiểu tất kèm theo Ký tự xác định – Sử dụng NOT LIKE để phủ định lại ví dụ - SELECT * FROM tblStudent WHERE FirstName NOT LIKE '%Phi'; - SELECT * FROM tblStudent WHERE FirstName NOT LIKE 'Nguyen%'; - SELECT * FROM tblStudent WHERE FirstName NOT LIKE '%Huu%'; SQL Wildcards – Ký Hiệu – Các ký hiệu thường sử dụng kèm với tốn tử LIKE để tìm kiếm liệu trọng bảng Cú Pháp – Có ký hiệu sử dụng %: hiểu chuỗi _: ký tự [xxxx] : xxx nằm khung [] chữ 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 records FirstName có chữ đầu T,B,N Select * FROM tblStudent WHERE FirstName LIKE '[!TBN]%' // Lấy tất records FirstName Khơng có chữ đầu T,B,N Select * FROM tblStudent WHERE FirstName LIKE '[A-F]%' // Lấy tất records FirstName có chữ đầu Từ A đến F // [A-F] : Lấy thứ tự A B C D F SQL IN Toán tử IN – Dùng để định nhiều giá trị mệnh đề WHERE Cú pháp Select * FROM tblStudent WHERE FirstName IN ('Phi','Huu'); // Lấy tất records FirstName có Phi Huu SQL BETWEEN Tốn tử BETWEEN – Dùng để lựa chọn giá trị phạm vi xác định Các giá trị xác định số, văn 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ụ Select * FROM tblStudent WHERE FirstName BETWEEN 'A' AND 'C'; // Lấy tất records FirstName có chữ đầu A C // ‘A’ and ‘C’ : Là ký tự thứ tự 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'); SQL Aliases – Bí Danh Được dùng: – Dùng để tạo tên tạm thời sử dụng cho bảng colunm – Có nhiều Bảng cần dùng truy vấn – Kết hợp nhiều colunm với 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 dùng “” [] // Kết trả gồm cột với tên set Select FirstName AS Tên, Address+', '+Birthday+', '+Sex+', '+Email AS [ Liên Hệ] FROM tblStudent; // Kết trả gồm cột Riêng cột thứ 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'; SQL JOIN Câu lệnh JOIN – Được sử dụng để kết hợp hàng từ hai nhiều bảng Dựa trường (field) chung chúng – Different SQL JOINs – Các loại SQL JOIN khác thường sử dụng Ví dụ sử dụng: CSDL Northwind 7.1 INNER JOIN: Là loại phổ biến Dùng để lấy tất hàng từ nhiều Bảng điều kiện tham gia đá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; // Ví dụ tương tương 7.2 LEFT JOIN Hiểu đơn giản là: Lấy tất liệu Bảng Và phần liệu Bảng trùng với Bảng thỏa với yêu cầu đáp ứng Nếu Bảng khơng có liệu thỏa với yêu cầu đáp ứng Câu lệnh lấy tất liệu Bảng để NULL giá trị thuộc Bảng Ex: SELECT Customers.CustomerName, Orders.OrderID// Chọn Cột CustomerName 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 Bảng thỏa mãn ORDER BY Customers.CustomerName;// Sắp Xếp tăng dần dựa vào CustomerName Mã SQL viết lại sau tùy vào 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 tất liệu Bảng Và phần liệu Bảng trùng với Bảng thỏa với yêu cầu đáp ứng Nếu Bảng khơng có liệu thỏa với u cầu đáp ứng Câu lệnh lấy tất liệu Bảng để NULL giá trị thuộc Bảng Ex: – Trong vài hệ CSDL thì: RIGHT JOIN gọi 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 tất liệu Bang Tuy nhiên Row Bảng mà không Match ( Trùng lặp / Thỏa mãn điều kiện) với Bảng ngược lại Thì Row hiển thị giá trị Bảng bảng 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 // Bảng Macth CustomerID = CustomerID ORDER BY Customers.CustomerName; // Sắp xếp thứ tự tăng dần dựa vào CustomerName SQL UNION Toán Tử UNION – Dùng để kết hợp nhiều câu lệnh SELECT – Dữ liệu lấy phải theo quy tắc sau: Mỗi câu lệnh SELECT phải có số cột nhau, Chung kiểu liệu, Theo thứ tự Có lệnh sử dụng là: UNION: Lấy tất giá trị bỏ qua giá trị trùng lặp UNION ALL: Lấy tất giá trị Ex: SELECT City FROM Customers// Lấy giá trị Cột City bảng Customers UNION// Kết hợp loại bỏ giá trị trùng SELECT City FROM Suppliers// Lấy giá trị Cột City bảng Suppliers ORDER BY City // Kết nhận bảng có cột City chứa liệu Bảng SELECT City FROM Customers UNION ALL// Kết hợp lấy tất SELECT City FROM Suppliers ORDER BY City; SQL SELECT INTO Lệnh SELECT INTO – Dùng để chép Bảng Bảng Có thể chép tất Colunm Bảng Cú Pháp: SELECT * INTO Persons_New FROM Persons; // Sao chép toàn Bảng Persons sang Bảng :Persons_New SELECT LastName,FirstName INTO Persons_Backup FROM Persons; // Chỉ chép colunm:LastName 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; 10 // Sử dụng mệnh đề IN để chép sang CSDL khác !!! 11 SELECT * INTO Persons_Backup 12 IN 'Backup.mdb' 13 FROM Persons; 10 SQL CREATE DATABASE & TABLE Lệnh Create Database – Dùng để tạp CSDL Cú Pháp: CREATE DATABASE New_Database;// Tạo CSDL New_Database Lệnh Create Table – Dùng để tạo Bảng CSDL Cú Pháp: CREATE TABLE Persons// Tạo bảng Persons với colunm 2( P_Id int,//Tên colunm - Kiểu liệuLastName varchar(255),// FirstName varchar(255),// Address varchar(255),// City varchar(255)// 7) / Kết bảng với liệu trống 11 SQL CONSTRAINTS Constraints – Các ràng buộc – Dùng để hạn chế loại liệu định phép sử dụng CSDL – Các ràng buộc tạo tạo bảng hệ CSDL lệnh CREATE TABLE, sau tạo bảng với lệnh ALTER TABLE Các ràng buộc bản: NOT NULL UNIQUE PRIMARY KEY FOREIGN KEY CHECK DEFAULT // Nhắc lại: Các ràng buộc tùy chỉnh trực tiếp hệ CSDL 11.1 NOT NULL – Ràng buộc NOT NULL áp dụng cho Colunm để yêu cầu không để 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) 7) 11.2 UNIQUE – Ràng buộc dùng để buộc giá trị cột không 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: tên tùy ý, giống tên gọi cho UNIQUE 8) – Sử dụng với tuyên bố ALTER, áp dụng muốn thêm vào sau bảng tạo ALTER TABLE Persons ADD UNIQUE (P_Id) ALTER TABLE Persons ADD CONSTRAINT uni_PersonID UNIQUE (P_Id,LastName)// Áp dụng lúc nhiều cột (Colunm) – Loại bỏ ràng buộc UNIQUE Như nói bạn tùy chỉnh trực tiếp hệ CSDL sử dụng 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à Bảng – Cột có khóa phải có giá trị nhất, khơng trùng lặp (Giống UNIQUE) – Cột khóa khơng thể rỗng (NOT NULL) – Mỗi Bảng cần có khóa tối đa khóa (Có thể khơng cần dùng khóa chính) 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 nhiều cột với: MySQL / SQL Server / Oracle 10 CREATE TABLE Persons 11 ( 12 P_Id int NOT NULL, 13 LastName varchar(255) NOT NULL, 14 FirstName varchar(255), 15 Address varchar(255), 16 City varchar(255), 17 CONSTRAINT pk_PersonID PRIMARY KEY (P_Id,LastName) 18 )// Ví dụ có khóa chính: pk_PersonID dùng cho colunm – Dùng với ALTER sau 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 Colunm lúc khởi tạo phải NOT NULL - Loại bỏ ràng buộc ALTER TABLE Persons DROP CONSTRAINT pk_PersonID 11.4 FOREIGN KEY Ràng buộc Foreign Key – Khóa Ngoại – Chính khóa sử dụng Bảng khác – Dùng để ngăn chặn việc phá hoại liên kết Bảng (Ràng buộc bảng) – Giá trị khóa tương đương Khóa ngoại nằm Bảng khác, nên việc nhập liệu phải hợp lệ ! Cú Pháp: – Tạo khóa ngoại colunm Bảng cho Bảng 2 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 10 CREATE TABLE Orders 11 ( 12 O_Id int NOT NULL, 13 OrderNo int NOT NULL, 14 P_Id int, 15 PRIMARY KEY (O_Id), 16 CONSTRAINT fk_PerOrders FOREIGN KEY (P_Id) 17 REFERENCES Persons(P_Id) 18 ) – 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 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ị phép Colunm (Cột) Ex: 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 nhiều cột cách đặt tên cho CHECK 10 11 CREATE TABLE Persons 12 ( 13 P_Id int NOT NULL, 14 LastName varchar(255) NOT NULL, 15 FirstName varchar(255), 16 Address varchar(255), 17 City varchar(255), 18 CONSTRAINT chk_Person CHECK (P_Id>0 AND City='Sandnes') 19 ) – Sử dụng với ALTER sau 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ột Ví dụ: GiớiTính: mặc định “Nam”, Email: mặc định “Null” – Sau thiết lập giá trị thêm vào records sau Ex: 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 giá trị System ngày, áp dụng cho colunm 10 CREATE TABLE Orders 11 ( 12 O_Id int NOT NULL,// Kiểu giá trị INT 13 OrderNo int NOT NULL,// Kiểu giá trị INT 14 P_Id int,// Kiểu giá trị INT 15 OrderDate date DEFAULT GETDATE()// Mặc định cột "OrderDate" : Ngày hệ thống(Lấy qua hàm 16 GETDATE() ) 17 ) – Sử dụng với ALTER sau 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 mục (indexes) Bảng – Nó giống tạo đầu mục sách thư viện – Cho phép ứng dụng CSDL tìm liệu nhanh chóng mà khơng cần lọc tất Bảng – Tất nhiên bạn khơng nhìn thấy giá trị Index này, có ứng dụng sử dụng để tăng tốc độ tìm kiếm – Tuy nhiên hạn chế việc sử dụng giá trị Index tốc độ load Bảng chậm ban đầu Do bạn nên sử dụng Index cho cột 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 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 mục 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 tồn liệu Bả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 liệu cột 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 liệu *( Thường dùng cho Bảng tạo, chưa nhập liệu) ALTER TABLE table_name ALTER COLUMN column_name datatype 15 SQL AUTO_INCREMENT AUTOINCREMENT / IDENTITY / Field Auto Increment – Sử dụng để tự động tăng số thêm record + Với MySQL CREATE TABLE Persons 2( 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) 9) – Giá Trị tự động tăng khởi đầu MySQL là: để thay đổi dùng lệnh sau: ALTER TABLE Persons AUTO_INCREMENT = CREATE TABLE Persons 2( P_Id int PRIMARY KEY IDENTITY, LastName varchar(255) NOT NULL, FirstName varchar(255), Address varchar(255), City varchar(255) 8) 15 SQL VIEWS Bảng ảo – Virtual Table – Tạo Table ảo từ nhiều Table Join với – Ảo nghĩa không thật, liệu hồn tồn chứa từ Table khác – Trong views chứa nhiều lệnh Query để tạo Table ảo với liệu mà người dùng cần sử dụng từ Table khác – Bạn sử dụng Accsess Views tương tự tạo Query Accsess !! – Tốc độ truy vấn từ Bảng Views nhanh hay chậm 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 nhanh ! – Ưu điểm phủ nhận Views tiện dụng – Dùng che dấu Colunm liệu quan trọng Bảng Tạo Views để hạn chế số Colunm,Row 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 Views lấy tất 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 liệu từ Views mà ta tạo SELECT * FROM [Current Product List] – Bạn tạo điều kiện WHERE khác để 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 liệu từ Views này: SELECT * FROM [Category Sales For Year] WHERE CategoryName='Beverages'; -Thêm clounm vào Views tạo CREATE VIEW [Current Product List] AS SELECT ProductID,ProductName,Category// Ở thêm Colunm: Category vào Views: [Current Product List] FROM Products WHERE Discontinued=No – Bạn dùng lệnh ALTER – Xóa Views: DROP VIEW view_name –Hết– ... CustomerName SQL UNION Toán Tử UNION – Dùng để kết hợp nhiều câu lệnh SELECT – Dữ liệu lấy phải theo quy tắc sau: Mỗi câu lệnh SELECT phải có số cột nhau, Chung kiểu liệu, Theo thứ tự Có lệnh sử dụng... 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''; SQL JOIN Câu lệnh JOIN... ràng buộc UNIQUE Như nói bạn tùy chỉnh trực tiếp hệ CSDL sử dụng 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