SQL Tutorial Welcome to SQL tutorial Mục lục SQL Giới thiệu SQL Mô t SQL, cách dùng SQL SQL Select Cách dùng phát biểu SELECT để chọn liệu từ m t b ng SQL SQL Where Cách dùng mệnh đề WHERE để định tiêu chuẩn chọn SQL And & Or Cách dùng AND OR để kết nối hai hay nhiều điều kiện mệnh đề WHERE SQL Between Cách dùng BETWEEN AND để tìm liệu m t kho ng giới h n SQL Distinct Cách dùng từ khóa DISTINCT để tr trị khác m t c t SQL Order By Cách dùng từ khóa ORDER BY để tr hàng xếp theo m t thứ tự định trước SQL Insert Cách dùng phát biểu INSERT để chèn hàng vào m t b ng SQL Update Cách dùng phát biểu UPDATE để cập nhật hay thay đổi hàng m t b ng SQL Delete Cách dùng phát biểu DELETE để xóa hàng m t b ng SQL Count Gi i thích hàm COUNT t o s n SQL SQL nâng cao Các hàm SQL Gi i thích cách dùng hàm t o s n SQL SQL Group By Gi i thích cách dùng hàm GROUP BY t o s n SQL Các bí danh SQL Gi i thích cách dùng bí danh (alias) cho tên c t tên b ng SQL Join Gi i thích cách chọn thông tin từ nhiều b ng SQL Create Cách t o sở liệu b ng, cách xóa chúng SQL Alter Cách dùng phát biểu ALTER TABLE để thêm hay lo i c t m t b ng cho trước Giới thiệu SQL SQL ngôn ngữ theo chuẩn ANSI để truy xuất sở liệu SQL gì? • • • • • • • SQL Structured Query Language – Ngơn ngữ Truy v n có C u trúc SQL cho phép b n truy xu t m t sở liệu SQL m t ngữ theo chuẩn ANSI SQL thực truy v n đến m t sở liệu SQL truy tìm liệu từ m t sở liệu SQL chèn mẩu tin vào m t sở liệu SQL xóa mẩu tin m t sở liệu © Dương Thiên Tứ SQL Tutorial • • SQL cập nhật mẩu tin m t sở liệu SQL r t dễ học SQL chuẩn SQL m t chuẩn ANSI (American National Standards Institute - Viện Tiêu chuẩn Quốc gia Mỹ) cho hệ thống truy xu t sở liệu Các phát biểu SQL dùng để truy tìm cập nhật liệu m t sở liệu SQL làm việc với trình qu n lý sở liệu Access, DB2, Informix, Microsoft SQL Server, Oracle, Sybase, nhiều trình khác (đáng tiếc đa số chúng có phần mở r ng ngôn ngữ SQL riêng) Các bảng sở liệu Cơ sở liệu chứa đối tượng gọi Bảng (Tables) Các Mẩu tin (Records) lưu b ng Các b ng gọi theo tên b ng (như "Persons", "Orders", "Suppliers") Các b ng chứa Cột (Columns) Dòng (Rows) liệu Dòng chứa mẩu tin (như mẩu tin m t người) C t chứa liệu (như First Name, Last Name, Address, City) M t ví dụ b ng "Persons" sau: LastName FirstName Address City Hansen Ola Timoteivn 10 Sandnes Svendson Tove Borgvn 23 Sandnes Pettersen Kari Storgt 20 Stavanger LastName, FirstName, Address, City c t b ng Các dòng chứa ba mẩu tin người Các truy vấn SQL Với SQL, truy vấn m t sở liệu nhận m t kết tr với d ng b ng M t truy v n giống sau: SELECT LastName FROM Persons Sẽ tr m t kết qu giống sau: LastName Hansen Svendson Pettersen Chú ý: Vài hệ sở liệu cần m t d u “;” cuối phát biểu SQL Chúng ta không dùng d u “;” viết Thao tác liệu SQL SQL m t cú pháp để thực truy v n Nhưng ngôn ngữ SQL chứa cú pháp cập nhật mẩu tin (record), chèn mẩu tin xóa mẩu tin tồn t i Các lệnh truy v n cập nhật thu c d ng Ngôn ngữ Thao tác Dữ liệu (Data Manipulation Language - DML) m t phần SQL: SELECT – trích liệu từ m t sở liệu UPDATE – cập nhật liệu m t sở liệu DELETE – xóa liệu từ m t sở liệu INSERT – chèn liệu vào m t sở liệu Định nghĩa liệu SQL Ngôn ngữ Định nghĩa Dữ liệu (Data Definition Language - DDL) m t phần SQL, cho phép t o hay xóa b ng sở liệu Chúng ta định nghĩa mục (các khóa - key), định liên kết b ng, ràng bu t b ng sở liệu Các phát biểu DDL quan trọng nh t SQL là:: CREATE TABLE – t o m t b ng sở liệu ALTER TABLE – thay đổi (alters) m t b ng sở liệu © Dương Thiên Tứ SQL Tutorial DROP TABLE – xóa m t b ng sở liệu CREATE INDEX – t o m t mục (khóa tìm kiếm) DROP INDEX – xoá m t mục SQL ASP SQL m t phần quan trọng ASP (Active Server Pages), ADO (Active Data Object) dùng ASP để truy xu t sở liệu, ADO dựa SQL để truy xu t liệu Phát biểu SQL Select Phát biểu SELECT chọn cột liệu từ sở liệu Kết dạng bảng lưu bảng kết (gọi tập kết - result set) Phát biểu SELECT Phát biểu SELECT chọn c t liệu từ m t sở liệu Dùng phát biểu để chọn (SELECT) thông tin từ (FROM) m t b ng sau: SELECT column_name(s) FROM table_name Ví dụ: Chọn cột từ bảng Để chọn c t có tên "LastName" "FirstName", dùng m t phát biểu SELECT sau: SELECT LastName,FirstName FROM Persons Bảng "Persons": LastName FirstName Address City Hansen Ola Timoteivn 10 Sandnes Svendson Tove Borgvn 23 Sandnes Pettersen Kari Storgt 20 Stavanger Kết quả: LastName FirstName Hansen Ola Svendson Tove Pettersen Kari Ví dụ: Chọn tất cột Để chọn t t c c t từ b ng "Person", dùng m t ký hiệu * thay cho tên c t sau: SELECT * FROM Persons Kết quả: LastName FirstName Address City Hansen Ola Timoteivn 10 Sandnes Svendson Tove Borgvn 23 Sandnes Pettersen Kari Storgt 20 Stavanger Bảng kết Kết qu từ m t truy v n SQL lưu trữ m t tập kết qu Tập kết qu xem m t b ng kết qu Đa số © Dương Thiên Tứ SQL Tutorial trình qu n lý sở liệu cho phép duyệt tập kết qu với hàm lập trình như: Move-To-First-Record, Get-Record-Content, Move-To-Next-Record Mệnh đề SQL Where Mệnh đề WHERE dùng để định tiêu chuẩn (criteria) chọn Mệnh đề WHERE Để chọn có điều kiện liệu từ m t b ng, m t mệnh đề WHERE thêm vào phát biểu SELECT với cú pháp sau: SELECT column FROM table WHERE column condition value Với mệnh đề WHERE, điều kiện sau dùng: Operator Condition = Bằng Không > Lớn < Nhỏ >= Lớn ho c 1965 Viết sai: SELECT * FROM Persons WHERE Year>'1965' © Dương Thiên Tứ SQL Tutorial Điều kiện LIKE Điều kiện LIKE dùng định việc tìm m t mẫu m t c t Cú pháp: SELECT column FROM table WHERE column LIKE pattern M t d u "%" dùng ký tự đ i diện (wildcards) c trước lẫn sau mẫu Ví dụ: Chọn bảng Persons với mẫu tên Phát biểu SQL tr người có firstname bắt đầu với m t ký tự 'O' SELECT * FROM Persons WHERE FirstName LIKE 'O%' Phát biểu SQl tr người có firstname kết thúc với m t ký tự 'a' SELECT * FROM Persons WHERE FirstName LIKE '%a' Phát biểu SQL tr người có firstname chứa mẫu 'la' SELECT * FROM Persons WHERE FirstName LIKE '%la%' T t c ví dụ tr kết qu sau: LastName FirstName Address City Year Hansen Ola Timoteivn 10 Sandnes 1951 SQL And & Or AND & OR AND OR kết nối hai hay nhiều điều kiện m t mệnh đề WHERE Toán tử AND hiển thị m t c t T T C điều kiện liệt kê Toán tử OR hiển thị m t c t M T TRONG điều kiện liệt kê Bảng gốc (dùng ví dụ) LastName FirstName Address City Hansen Ola Timoteivn 10 Sandnes Svendson Tove Borgvn 23 Sandnes Svendson Stephen Kaivn 18 Sandnes Ví dụ Dùng AND để hiển thị người có firstname "Tove", lastname "Svendson": SELECT * FROM Persons WHERE FirstName='Tove' AND LastName='Svendson' Kết quả: LastName FirstName Address City Svendson Tove Borgvn 23 Sandnes Ví dụ Dùng OR để hiển thị người có firstname "Tove", ho c có lastname "Svendson": SELECT * FROM Persons WHERE firstname='Tove' OR lastname='Svendson' Kết quả: © Dương Thiên Tứ SQL Tutorial LastName FirstName Address City Svendson Tove Borgvn 23 Sandnes Svendson Stephen Kaivn 18 Sandnes Ví dụ B n dùng phối hợp AND OR (dùng d u ngo c đơn để bao biểu thức phức t p): SELECT * FROM Persons WHERE (FirstName='Tove' OR FirstName='Stephen') AND LastName='Svendson' Kết quả: LastName FirstName Address City Svendson Tove Borgvn 23 Sandnes Svendson Stephen Kaivn 18 Sandnes SQL Between And BETWEEN AND Toán tử BETWEEN AND chọn t t c trị kho ng giới h n hai trị Các trị số, văn b n, hay ngày tháng SELECT column_name FROM table_name WHERE column_name BETWEEN value1 AND value2 Bảng gốc (dùng ví dụ) LastName FirstName Address City Hansen Ola Timoteivn 10 Sandnes Svendson Tove Borgvn 23 Sandnes Nordmann Anna Neset 18 Sandnes Pettersen Kari Storgt 20 Stavanger Ví dụ Để hiển thị tên theo thứ tự alphabet hai tên (kể c hai tên này) "Hansen" "Pettersen", dùng SQL sau: SELECT * FROM Persons WHERE LastName BETWEEN 'Hansen' AND 'Pettersen' Kết quả: LastName FirstName Address City Hansen Ola Timoteivn 10 Sandnes Nordmann Anna Neset 18 Sandnes Pettersen Kari Storgt 20 Stavanger Ví dụ Để hiển thị tên ngồi tên ví dụ trên, dùng tốn tử NOT: SELECT * FROM Persons WHERE LastName NOT BETWEEN 'Hansen' AND 'Pettersen' Kết quả: © Dương Thiên Tứ SQL Tutorial LastName FirstName Address City Svendson Tove Borgvn 23 Sandnes SQL Select Distinct Từ khóa DISTINCT dùng trả trị khác biệt (distinct) Từ khóa DISTINCT Phát biểu SQL SELECT tr thông tin từ c t b ng Nhưng làm muốn chọn kết qu không trùng nhau? Với SQL, cần thêm vào m t từ khóa DISTINCT cho phát biểu SELECT vớI cú pháp sau: SELECT DISTINCT column-name(s) FROM table-name Ví dụ: Chọn tên cơng ty từ bảng Orders Ví dụ: B ng đ t hàng đơn gi n: Company OrderNumber Sega 3412 W3Schools 2312 Trio 4678 W3Schools 6798 Phát biểu SQL sau: SELECT Company FROM Orders Sẽ tr kết qu : Company Sega W3Schools Trio W3Schools Chú ý công ty W3Schools xu t hai lần kết qu Đôi lúc khơng muốn điều Ví dụ: Chọn tên công ty (không trùng tên) từ bảng Orders Phát biểu SQL sau: SELECT DISTINCT Company FROM Orders Sẽ tr kết qu : Company Sega W3Schools Trio Bây tên công ty W3Schools xu t m t lần kết qu SQL Order By Từ khóa ORDER BY dùng xếp kết thứ tự kết © Dương Thiên Tứ SQL Tutorial Sắp xếp Dòng Mệnh đề ORDER BY dùng xếp dòng Một số cách xếp: Company OrderNumber Sega 3412 ABC Shop 5678 W3Schools 2312 W3Schools 6798 Ví dụ Để hiển thị tên công ty (Company) theo thứ tự alphabet: SELECT Company, OrderNumber FROM Orders ORDER BY Company Kết quả: Company OrderNumber ABC Shop 5678 Sega 3412 W3Schools 6798 W3Schools 2312 Ví dụ Để hiển thị tên cơng ty (Company) theo thứ tự alphabet, tên cơng ty giống xếp theo số thứ tự (OrderNumber): SELECT Company, OrderNumber FROM Orders ORDER BY Company, OrderNumber Kết quả: Company OrderNumber ABC Shop 5678 Sega 3412 W3Schools 2312 W3Schools 6798 Ví dụ Để hiển thị tên công ty (Company) theo thứ tự alphabet đ o ngược (từ Z đến A): SELECT Company, OrderNumber FROM Orders ORDER BY Company DESC Kết quả: Company OrderNumber W3Schools 6798 W3Schools 2312 Sega 3412 ABC Shop 5678 SQL INSERT INTO Chèn dòng Phát biểu INSERT INTO chèn dòng vào m t b ng: INSERT INTO table_name VALUES (value1, value2, ) © Dương Thiên Tứ SQL Tutorial B n định c t b n muốn chèn chèn liệu vào: INSERT INTO table_name (column1, column2, ) VALUES (value1, value2, ) Chèn dòng B ng "Persons": LastName FirstName Address City Pettersen Kari Storgt 20 Stavanger Phát biểu SQL chèn vào b ng trên: INSERT INTO Persons VALUES ('Hetland', 'Camilla', 'Hagabakka 24', 'Sandnes') Sẽ cho kết qu sau: LastName FirstName Address City Pettersen Kari Storgt 20 Stavanger Hetland Camilla Hagabakka 24 Sandnes Chèn liệu vào cột định B ng "Persons": LastName FirstName Address City Pettersen Kari Storgt 20 Stavanger Hetland Camilla Hagabakka 24 Sandnes Phát biểu SQL chèn liệu vào c t định: INSERT INTO Persons (LastName, Address) VALUES ('Rasmussen', 'Storgt 67') Sẽ cho kết qu sau:: LastName FirstName Address City Pettersen Kari Storgt 20 Stavanger Hetland Camilla Hagabakka 24 Sandnes Rasmussen Storgt 67 SQL Update Update Rows Phát biểu UPDATE cập nhật ho c thay đổi dòng: UPDATE table_name SET column_name = new_value WHERE column_name = some_value Bảng Person: LastName FirstName Address City Nilsen Fred Kirkegt 56 Stavanger Rasmussen Storgt 67 Cập nhật cột dòng Chúng ta thêm m t first name “Nina” đến người có lastname="Rasmussen": © Dương Thiên Tứ SQL Tutorial UPDATE Person SET FirstName = 'Nina' WHERE LastName = 'Rasmussen' Cập nhật vài cột dòng Chúng ta thay đổi địa (Address) thêm tên thành phố UPDATE Person SET Address = 'Stien 12', City = 'Stavanger' WHERE LastName = 'Rasmussen' Kết LastName FirstName Address City Nilsen Fred Kirkegt 56 Stavanger Rasmussen Nina Stien 12 Stavanger SQL Delete Xóa cột Phát biểu DELETE dùng xóa m t hay nhiều dịng m t b ng DELETE FROM table_name WHERE column_name = some_value Bảng “Person”: LastName FirstName Address City Nilsen Fred Kirkegt 56 Stavanger Rasmussen Nina Stien 12 Stavanger Xóa dịng "Nina Rasmussen" bị xóa: DELETE FROM Person WHERE LastName = 'Rasmussen' Kết LastName FirstName Address City Nilsen Fred Kirkegt 56 Stavanger Các hàm SQL Count SQL có hàm tạo sẵn để đếm mẩu tin sở liệu Cú pháp hàm Count Cú pháp hàm COUNT t o s n sau: SELECT COUNT(column) FROM table Hàm COUNT(*) Hàm COUNT(*) tr số hàng chọn m t phép chọn Với b ng "Persons" sau: © Dương Thiên Tứ 10 SQL Tutorial Name Age Hansen, Ola 34 Svendson, Tove 45 Pettersen, Kari 19 Ví dụ tr số hàng b ng: SELECT COUNT(*) FROM Persons Kết qu : Ví dụ tr số người lớn 20 tuổi: SELECT COUNT(*) FROM Persons WHERE Age>20 Kết qu : Hàm COUNT(column) Hàm COUNT(column) tr số hàng (ngo i trừ hàng có giá trị NULL) c t định Với b ng "Persons": Name Age Hansen, Ola 34 Svendson, Tove 45 Pettersen, Kari Ví dụ tìm số người có ghi tuổi t i field “Age” b ng "Persons": SELECT COUNT(Age) FROM Persons Kết qu : Hàm COUNT(column) dùng để tính số hàng khơng chứa trị Chú ý kết qu nhỏ số hàng b ng COUNT DISTINCT Từ khóa DISTINCT với COUNT dùng để đếm số kết qu khác (không trùng nhau) Cú pháp sau: SELECT DISTINCT COUNT(column(s)) FROM table Với b ng "Orders": Company OrderNumber Sega 3412 W3Schools 2312 Trio 4678 W3Schools 6798 Với phát biểu SQL sau: SELECT COUNT(Company) FROM Orders Sẽ tr kết qu : Với phát biểu SQL sau: SELECT DISTINCT COUNT(Company) FROM Orders Sẽ tr kết qu : Các hàm SQL © Dương Thiên Tứ 11 SQL Tutorial SQL có số hàm tạo sẵn để đếm tính tốn Cú pháp dùng hàm Cú pháp cho hàm SQL t o s n sau:: SELECT function(column) FROM table Bảng gốc (dùng ví dụ) Name Age Hansen, Ola 34 Svendson, Tove 45 Pettersen, Kari 19 Hàm AVG(column) Hàm AVG trị trung bình liệu m t c t có đu7ọc nhờ phép chọn Các trị NULL khơng tính tốn Ví dụ Ví dụ tr tuổi trung bình người b ng "Persons": SELECT AVG(Age) FROM Persons Kết 32.67 Ví dụ Ví dụ tr tuổi trung bình người có tuổi lớn 20 tuổi: SELECT AVG(Age) FROM Persons where Age>20 Kết 39.5 Hàm MAX(column) Hàm MAX tr trị lớn nh t m t c t Các trị NULL khơng tính tốn Ví dụ SELECT MAX(Age) FROM Persons Kết quả: 45 Hàm MIN(column) Hàm MIN tr trị lớn nh t m t c t Các trị NULL khơng tính tốn Ví dụ SELECT MIN(Age) FROM Persons Kết quả: 19 Chú ý: Các hàm MIN MAX dùng c t văn b n, để tìm trị lớn nh t nhỏ nh t theo thứ tự alphabet Hàm SUM(column) Hàm SUM tổng m t c t có nhờ phép chọn Các trị NULL khơng tính tốn Ví dụ Ví dụ tr tổng số tuổi người b ng "Persons": SELECT SUM(Age) FROM Persons Kết quả: © Dương Thiên Tứ 12 SQL Tutorial 98 Ví dụ Ví dụ tr tổng số tuổi người lớn 20 tuổi SELECT SUM(Age) FROM Persons where Age>20 Kết quả: 79 SQL Group By SQL Having Các hàm tổng (như SUM) thường kèm theo chức GROUP BY Từ khóa GROUP BY Từ khóa GROUP BY thêm vào SQL hàm tổng (như SUM) tr tổng t t c trị c t m i gọi đến Thiếu chức GROUP BY, khơng thể tìm tổng m i nhóm trị riêng c t Cú pháp GROUP BY sau: SELECT column,SUM(column) FROM table GROUP BY column Ví dụ GROUP BY B ng "Sales": Company Amount W3Schools 5500 IBM 4500 W3Schools 7100 Với SQL: SELECT Company, SUM(Amount) FROM Sales Tr kết qu sau: Company SUM(Amount) W3Schools 17100 IBM 17100 W3Schools 17100 SQL không tr tổng riêng biệt công ty Dùng mệnh đề GROUP BY sau: SELECT Company,SUM(Amount) FROM Sales GROUP BY Company Sẽ tr kết qu đúng: Company SUM(Amount) W3Schools 12600 IBM 4500 Từ khóa The HAVING Từ khóa HAVING thêm vào SQL từ khóa WHERE khơng thể dùng với hàm tổng (như hàm SUM) Thiếu từ khóa HAVING khơng thể kiểm tra điều kiện dùng hàm tổng Cú pháp HAVING sau: SELECT column,SUM(column) FROM table GROUP BY column HAVING SUM(column) condition value © Dương Thiên Tứ 13 SQL Tutorial B ng "Sales": Company Amount W3Schools 5500 IBM 4500 W3Schools 7100 Với SQL: SELECT Company,SUM(Amount) FROM Sales GROUP BY Company HAVING SUM(Amount)>10000 Tr kết qu Company SUM(Amount) W3Schools 12600 Các bí danh (Alias) SQL Với SQL, bí danh (alias) dùng thay tên cột tên bảng Bí danh tên Cột Cú pháp sau: SELECT column AS column_alias FROM table Bí danh tên Bảng Cú pháp sau: SELECT column FROM table AS table_alias Ví dụ: Dùng bí danh tên Cột B ng “Persons”: LastName FirstName Address City Hansen Ola Timoteivn 10 Sandnes Svendson Tove Borgvn 23 Sandnes Pettersen Kari Storgt 20 Stavanger Với SQL sau: SELECT LastName AS Family, FirstName AS Name FROM Persons Sẽ tr kết qu sau: Family Name Hansen Ola Svendson Tove Pettersen Kari Ví dụ: Dùng bí danh tên Bảng B ng “Persons”: LastName FirstName Address City Hansen Ola Timoteivn 10 Sandnes Svendson Tove Borgvn 23 Sandnes © Dương Thiên Tứ 14 SQL Tutorial Pettersen Kari Storgt 20 Stavanger Với SQL sau: SELECT LastName, FirstName FROM Persons AS Employees Sẽ tr kết qu sau: B ng Employees: LastName FirstName Hansen Ola Svendson Tove Pettersen Kari SQL Join Joins and Khóa (Key) Đơi chọn liệu từ hai b ng để t o kết qu , Chúng ta thực m t kết nối (join) Các b ng sở liệu liên hệ với b ng khác thơng qua khóa M t khóa (primary key) m t c t với trị nh t cho m i hàng Mục tiêu ràng bu c liệu, tham chiếu chéo b ng, không cần l p l i t t c liệu b ng Trong b ng "Employees" phía dưới, c t "ID" khóa chính, nghĩa c t khơng có hai hàng ID ID dùng phân biệt hai người c hai có tên Khi b n xem b ng ví dụ phía dưới, ý rằng: • • C t "ID" khóa b ng "Employees" C t "ID" b ng "Orders" dùng để tham chiếu tên b ng "Employees" không cần đưa tên vào b ng “Orders” Employees: ID Name 01 Hansen, Ola 02 Svendson, Tove 03 Svendson, Stephen 04 Pettersen, Kari Orders: ID Product 01 Printer 03 Table 03 Chair Tham chiếu đến hai Bảng Chúng ta chọn liệu từ hai b ng cách tham chiếu đến hai b ng, sau: Ví dụ Ai đăng ký m t s n phẩm đăng ký s n phẩm nào? SELECT Employees.Name, Orders.Product FROM Employees, Orders WHERE Employees.ID = Orders.ID Kết Name Product Hansen, Ola Printer Svendson, Stephen Table © Dương Thiên Tứ 15 SQL Tutorial Svendson, Stephen Chair Ví dụ Ai đăng ký m t máy in? SELECT Employees.Name FROM Employees, Orders WHERE Employees.ID = Orders.ID AND Orders.Product = 'Printer' Kết Name Hansen, Ola Dùng Kết nối (Join) HO C, chọn liệu từ hai b ng với từ khóa JOIN, giống sau: Ví dụ INNER JOIN Cú pháp SELECT field1, field2, field3 FROM first_table INNER JOIN second_table ON first_table.keyfield = second_table.foreign_keyfield Ai đăng ký m t s n phẩm đăng ký s n phẩm nào? SELECT Employees.Name, Orders.Product FROM Employees INNER JOIN Orders ON Employees.ID = Orders.ID INNER JOIN tr t t c hàng từ hai b ng điều kiện so trùng Nếu hàng b ng Employees khơng so trùng b ng Orders, hàng không liệt kê Kết Name Product Hansen, Ola Printer Svendson, Stephen Table Svendson, Stephen Chair Ví dụ LEFT JOIN Cú pháp SELECT field1, field2, field3 FROM first_table LEFT JOIN second_table ON first_table.keyfield = second_table.foreign_keyfield Liệt kê t t c nhân viên, đăng ký mua họ có SELECT Employees.Name, Orders.Product FROM Employees LEFT JOIN Orders ON Employees.ID = Orders.ID LEFT JOIN tr t t c hàng từ b ng thứ nh t (Employees), cho dù khơng so trùng b ng thứ hai (Orders) Nếu hàng b ng Employees không so trùng b ng Orders, hàng liệt kê Kết Name Product Hansen, Ola Printer Svendson, Tove Svendson, Stephen Table Svendson, Stephen Chair Pettersen, Kari Ví dụ RIGHT JOIN © Dương Thiên Tứ 16 SQL Tutorial Cú pháp SELECT field1, field2, field3 FROM first_table RIGHT JOIN second_table ON first_table.keyfield = second_table.foreign_keyfield Liệt kê t t c nhân viên, đăng ký mua họ có SELECT Employees.Name, Orders.Product FROM Employees RIGHT JOIN Orders ON Employees.ID = Orders.ID RIGHT JOIN tr t t c hàng từ b ng thứ hai (Orders), cho dù khơng so trùng b ng thứ nh t (Employees) Nếu có b t kỳ hàng b ng Orders không so trùng b ng Employees, hàng liệt kê Kết Name Product Hansen, Ola Printer Svendson, Stephen Table Svendson, Stephen Chair Ví dụ Ai đăng ký m t máy in? SELECT Employees.Name FROM Employees INNER JOIN Orders ON Employees.ID = Orders.ID WHERE Orders.Product = 'Printer' Kết Name Hansen, Ola SQL Tạo Cơ sở liệu Bảng Tạo Cơ sở liệu Để t o m t sở liệu: CREATE DATABASE database_name Tạo bảng Để t o m t b ng m t sở liệu: CREATE TABLE table_name ( column_name1 data_type, column_name2 data_type, ) Ví dụ Ví dụ minh họa b n t o m t b ng tên "Person", với bốn c t tên:"LastName", "FirstName", "Address", "Age": CREATE TABLE Person ( LastName varchar, FirstName varchar, Address varchar, Age int ) Ví dụ minh họa cách b n định kích thước tối đa vài c t: © Dương Thiên Tứ 17 SQL Tutorial CREATE TABLE Person ( LastName varchar(30), FirstName varchar, Address varchar, Age int(3) ) Kiểu liệu định kiểu liệu chứa c t B ng chứa kiểu liệu thường g p nh t SQL: Kiểu liệu Mô tả integer(size) int(size) smallint(size) tinyint(size) Chỉ chứa số nguyên Số ký tự số tối đa định d u ngo c đơn decimal(size, d) numeric(size,d) Chứa số với phân số Số ký tự số tối đa định "size" Số ký tự số tối đa bên ph i (phần phân số) định "d" char(size) Chứa chu i có kích thước cố định (có thể chứa ký tự chữ, số, ký tự đ c biệt) Kích thước cố định định d u ngo c đơn varchar(size) Chứa m t chu i có chiều dài thay đổi (có thể chứa ký tự chữ, số, ký tự đ c biệt) Kích thước tối đa định d u ngo c đơn date(yyyymmdd) Chứa m t ngày Tạo Chỉ mục (Index) Chỉ mục t o m t b ng có s n để định vị thêm nhanh hiệu qu hàng Có thể t o m t mục m t ho c nhiều c t m t b ng, với m t mục cho m t tên Người dùng khơng nhìn th y mục, chúng dùng để tăng tốc đ truy v n Chú ý: Cập nhật m t b ng chứa mục cần nhiều thời gian cập nhật m t b ng khơng chứa mục, mục cần cập nhật Tuy nhiên, ý tưởng tốt t o mục c t thường tìm kiếm nh t Một Chỉ mục T o m t mục nh t m t b ng m t mục nh t nghĩa khơng thể có hai hàng có m t trị mục CREATE UNIQUE INDEX index_name ON table_name (column_name) "column_name" định c t b n muốn mục Một Chỉ mục đơn giản T o m t mục đơn gi n m t b ng Khi từ khóa UNIQUE khơng có, trị trùng cho phép CREATE INDEX index_name ON table_name (column_name) "column_name" định c t b n muốn mục Ví dụ Ví dụ t o m t mục đơn gi n, có tên "PersonIndex", field LastName b ng Person: CREATE INDEX PersonIndex ON Person (LastName) Nếu b n muốn mục trị m t c t theo thứ tự giảm (descending), b n thêm từ DESC sau tên c t: CREATE INDEX PersonIndex ON Person (LastName DESC) Nếu b n muốn mục nhiều m t c t b n liệt kê tên c t d u ngo c đơn, tách chúng d u phẩy: CREATE INDEX PersonIndex ON Person (LastName, FirstName) Xóa mục B n xóa m t mục có m t b ng với phát biểu DROP DROP INDEX table_name.index_name Xóa sở liệu bảng Để xóa m t sở liệu: © Dương Thiên Tứ 18 SQL Tutorial DROP DATABASE database_name Để xóa m t b ng: DROP TABLE table_name Để xóa tồn b liệu b ng mà khơng xóa b ng: DELETE TABLE table_name SQL Alter Table Alter Table Phát biểu ALTER TABLE dùng để thêm hay lo i bỏ c t m t b ng cho trước ALTER TABLE table_name ADD column_name datatype ALTER TABLE table_name DROP column_name Person: LastName FirstName Address Pettersen Kari Storgt 20 Ví dụ Để thêm m t c t tên "City" vào b ng "Person": ALTER TABLE Person ADD City varchar(30) Kết quả: LastName FirstName Address Pettersen Kari Storgt 20 City Ví dụ Để lo i c t "Address" khỏi b ng "Person": ALTER TABLE Person DROP Address Kết quả: LastName FirstName Pettersen Kari Sách SQL Sách Mô tả Teach Yourself SQL in 10 Minutes September 1999 Lo i sách tutorial, tổ chức thành chu i học-10 phút đơn gi n © Dương Thiên Tứ 19 City SQL Tutorial SQL Queries for Mere Mortals August 2000 Giúp người dùng học b n truy v n SQL, cung c p m t hướng dẫn tham chiếu cần thiết với người dùng có trình đ cao SQL: The Complete Reference October 1999 Cung c p t t c b n cần biết SQL Professional SQL Server 2000 Programming December 2000 Cung c p m t hướng dẫn tồn diện để lập trình với SQL Server 2000 Professional SQL Server 7.0 Programming September 1999 Cung c p tổng quan t t c b phận SQL Server © Dương Thiên Tứ 20 .. .SQL Tutorial • • SQL cập nhật mẩu tin m t sở liệu SQL r t dễ học SQL chuẩn SQL m t chuẩn ANSI (American National Standards Institute - Viện Tiêu chuẩn Quốc gia Mỹ) cho hệ thống truy xu... Kari Storgt 20 Stavanger LastName, FirstName, Address, City c t b ng Các dòng chứa ba mẩu tin người Các truy vấn SQL Với SQL, truy vấn m t sở liệu nhận m t kết tr với d ng b ng M t truy v n giống... biểu SQL Chúng ta không dùng d u “;” viết Thao tác liệu SQL SQL m t cú pháp để thực truy v n Nhưng ngôn ngữ SQL chứa cú pháp cập nhật mẩu tin (record), chèn mẩu tin xóa mẩu tin tồn t i Các lệnh truy