Câu lệnh truy vấn SQL
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ừ 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 khoảng giới hạn SQL Distinct Cách dùng từ khóa DISTINCT để trả trị khác cột SQL Order By Cách dùng từ khóa ORDER BY để trả hàng xếp theo thứ tự định trước SQL Insert Cách dùng phát biểu INSERT để chèn hàng vào bảng SQL Update Cách dùng phát biểu UPDATE để cập nhật hay thay đổi hàng bảng SQL Delete Cách dùng phát biểu DELETE để xóa hàng 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 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 sở liệu • SQL ngữ theo chuẩn ANSI • SQL thực truy vấn đến sở liệu • SQL truy tìm liệu từ sở liệu • SQL chèn mẩu tin vào sở liệu • SQL xóa mẩu tin sở liệu © Dương Thiên Tứ SQL Tutorial • SQL cập nhật mẩu tin sở liệu • SQL dễ học SQL chuẩn SQL 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 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 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 sở liệu nhận kết trả với dạng bảng Một truy vấn giống sau: SELECT LastName FROM Persons Sẽ trả kết giống sau: LastName Hansen Svendson Pettersen Chú ý: Vài hệ sở liệu cần 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 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 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) phần SQL: SELECT – trích liệu từ sở liệu UPDATE – cập nhật liệu sở liệu DELETE – xóa liệu từ sở liệu INSERT – chèn liệu vào sở liệu Định nghĩa liệu SQL Ngôn ngữ Định nghĩa Dữ liệu (Data Definition Language - DDL) 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 SQL là:: CREATE TABLE – tạo bảng sở liệu ALTER TABLE – thay đổi (alters) bảng sở liệu © Dương Thiên Tứ SQL Tutorial DROP TABLE – xóa bảng sở liệu CREATE INDEX – tạo mục (khóa tìm kiếm) DROP INDEX – xoá mục SQL ASP SQL 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ừ sở liệu Dùng phát biểu để chọn (SELECT) thông tin từ (FROM) 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 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ột từ bảng "Person", dùng 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 từ truy vấn SQL lưu trữ tập kết Tập kết xem bảng kết Đ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 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ừ bảng, 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 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ẫu 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) 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 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 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 ví dụ trả kết 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ệnh đề WHERE Toán tử AND hiển thị cột TẤT CẢ điều kiện liệt kê Toán tử OR hiển thị 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", 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 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ể 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 không trùng nhau? Với SQL, cần thêm vào 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 Đô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 lần kết 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 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 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 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 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 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 hay nhiều dịng 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 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 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 nhỏ số hàng bảng COUNT DISTINCT Từ khóa DISTINCT với COUNT dùng để đếm số kết 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 toá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 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 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 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ỏ theo thứ tự alphabet Hàm SUM(column) Hàm SUM tổng 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 trị cột gọi đến Thiếu chức GROUP BY, khơng thể tìm tổng 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 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 đú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 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 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 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 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 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) cột với trị cho 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 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 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ý 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á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ý 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 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 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 hàng từ bảng thứ (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 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 hàng từ bảng thứ hai (Orders), cho dù khơng so trùng bảng thứ (Employees) Nếu có 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á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 sở liệu: CREATE DATABASE database_name Tạo bảng Để tạo bảng 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 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 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 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 ngày Tạo Chỉ mục (Index) Chỉ mục tạo bảng có sẵn để định vị thêm nhanh hiệu hàng Có thể tạo mục nhiều cột bảng, với mục cho 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 bảng chứa mục cần nhiều thời gian cập nhậ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 Một Chỉ mục Tạo mục bảng mục nghĩa khơng thể có hai hàng có 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ục đơn giản 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ụ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ị 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 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ục có bảng với phát biểu DROP DROP INDEX table_name.index_name Xóa sở liệu bảng Để xóa sở liệu: © Dương Thiên Tứ 18 SQL Tutorial DROP DATABASE database_name Để xóa bảng: DROP TABLE table_name Để xóa tồn 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 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 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 truy vấn SQL, cung cấp 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 bạn cần biết SQL Professional SQL Server 2000 Programming December 2000 Cung cấp 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 phận SQL Server © Dương Thiên Tứ 20 ... biểu SQL Chúng ta không dùng dấu “;” viết Thao tác liệu SQL SQL 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 Các lệnh truy vấn. .. 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 sở liệu nhận kết trả với dạng bảng Một truy vấn giống sau: SELECT LastName FROM Persons Sẽ trả kết giống.. .SQL Tutorial • SQL cập nhật mẩu tin sở liệu • SQL dễ học SQL chuẩn SQL 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ở