SQL Tutorial © Dương Thiên Tứ 1 Welcome to SQL tutorial Mục lục SQL căn bản Giới thiệu SQL Mô tả thế nào là SQL, cách dùng SQL. SQL Select Cách dùng phát biểu SELECT để chọn dữ liệu từ một bảng trong SQL. SQL Where Cách dùng mệnh đề WHERE để chỉ định tiêu chuẩn chọn. SQL And & Or Cách dùng AND và OR để kết nối hai hay nhiều điều kiện trong mệnh đề WHERE. SQL Between Cách dùng BETWEEN....AND để tìm dữ liệu trong một khoảng giới hạn. SQL Distinct Cách dùng từ khóa DISTINCT để chỉ trả về các trị khác nhau trong một cột. SQL Order By Cách dùng từ khóa ORDER BY để trả về các hàng được sắp 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 mới vào trong một bảng. SQL Update Cách dùng phát biểu UPDATE để cập nhật hay thay đổi các hàng trong một bảng. SQL Delete Cách dùng phát biểu DELETE để xóa các hàng trong một bảng. SQL Count Giải thích các hàm COUNT tạo sẵn trong SQL. SQL nâng cao Các hàm SQL Giải thích cách dùng các hàm tạo sẵn trong SQL. SQL Group By Giải thích cách dùng hàm GROUP BY tạo sẵn trong SQL. Các bí danh SQL Giải thích cách dùng các bí danh (alias) cho các tên cột và các 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 các cơ sở dữ liệu và các bảng, và cách xóa chúng. SQL Alter Cách dùng phát biểu ALTER TABLE để thêm hay loại các cột trong một bảng cho trước. Giới thiệu SQL SQL là một ngôn ngữ theo chuẩn ANSI để truy xuất các cơ sở dữ liệu. SQL là gì? • SQL là 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 cơ sở dữ liệu • SQL là một ngữ theo chuẩn ANSI • SQL có thể thực hiện các truy vấn đến một cơ sở dữ liệu • SQL có thể truy tìm dữ liệu từ một cơ sở dữ liệu • SQL có thể chèn các mẩu tin mới vào trong một cơ sở dữ liệu • SQL có thể xóa các mẩu tin trong một cơ sở dữ liệu SQL Tutorial © Dương Thiên Tứ 2 • SQL có thể cập nhật các mẩu tin trong một cơ sở dữ liệu • SQL rất dễ học SQL là một chuẩn SQL là một chuẩn ANSI (American National Standards Institute - Viện Tiêu chuẩn Quốc gia Mỹ) cho các hệ thống truy xuất cơ sở dữ liệu. Các phát biểu SQL dùng để truy tìm và cập nhật dữ liệu trong một cơ sở dữ liệu. SQL làm việc với các trình quản lý cơ sở dữ liệu như Access, DB2, Informix, Microsoft SQL Server, Oracle, Sybase, và nhiều trình khác (đáng tiếc là đa số trong chúng có các phần mở rộng ngôn ngữ SQL riêng). Các bảng cơ sở dữ liệu Cơ sở dữ liệu chứa các đối tượng gọi là các Bảng (Tables). Các Mẩu tin (Records) lưu trong các bảng này. Các bảng được gọi theo tên bảng (như "Persons", "Orders", "Suppliers"). Các bảng chứa các Cột (Columns) và các Dòng (Rows) dữ liệu. Dòng chứa các mẩu tin (như mẩu tin về một người). Cột chứa dữ liệu (như First Name, Last Name, Address, và City). Một ví dụ là bảng "Persons" sau: [FONT=Arial,Bold]LastName FirstName Address City [/FONT]Hansen Ola Timoteivn 10 Sandnes Svendson Tove Borgvn 23 Sandnes Pettersen Kari Storgt 20 Stavanger LastName, FirstName, Address, và City là các cột của bảng. Các dòng chứa ba mẩu tin của 3 người. Các truy vấn SQL Với SQL, chúng ta có thể truy vấn một cơ sở dữ liệu và nhận được một kết quả trả về với dạng bảng. Một truy vấn giống như sau: SELECT LastName FROM Persons Sẽ trả về một kết quả giống như sau: LastName Hansen Svendson Pettersen Chú ý: Vài hệ cơ sở dữ liệu cần một dấu “;” ở cuối phát biểu SQL. Chúng ta không dùng dấu “;” trong bài viết này. Thao tác dữ liệu SQL SQL là một cú pháp để thực hiện các truy vấn. Nhưng ngôn ngữ SQL cũng chứa các cú pháp cập nhật các mẩu tin (record), chèn các mẩu tin mới và xóa các mẩu tin đang tồn tại. Các lệnh truy vấn và cập nhật này thuộc dạng Ngôn ngữ Thao tác Dữ liệu (Data Manipulation Language - DML) một phần của SQL: SELECT – trích dữ liệu từ một cơ sở dữ liệu UPDATE – cập nhật dữ liệu trong một cơ sở dữ liệu DELETE – xóa dữ liệu từ một cơ sở dữ liệu INSERT – chèn dữ liệu mới vào trong một cơ sở dữ liệu
Câu lệnh SELECT Câu lệnh SELECT được dùng để truy xuất dữ liệu từ một bảng. Kết quả trả về dưới dạng bảng được lưu trong 1 bảng, gọi là bảng kết quả - result table (còn được gọi là tập kết quả - result set). Cú pháp Cú pháp của câu lệnh SELECT như sau: SELECT tên_các_cột FROM tên_bảng Truy xuất nhiều cột Để truy xuất các cột mang tên LastName và FirstName, ta dùng một câu lệnh SELECT như sau: SELECT LastName, FirstName FROM Persons Bảng Persons: LastNameFirstNameAddressCity Hansen Ola Timoteivn 10 Sandnes Svendson Tove Borgvn 23 Sandnes Pettersen Kari Storgt 20 Stavanger Kết quả trả về: LastNameFirstName Hansen Ola Svendson Tove Pettersen Kari Truy xuất tất cả các cột Để truy xuất tất cả các cột từ bảng Persons, ta dùng ký hiệu * thay cho danh sách các cột: SELECT * FROM Persons Kết quả trả về: LastNameFirstNameAddressCity Hansen Ola Timoteivn 10 Sandnes Svendson Tove Borgvn 23 Sandnes Pettersen Kari Storgt 20 Stavanger Tập kết quả Kết quả trả về từ một câu truy vấn SQL được lưu trong 1 tập kết quả (result set). Hầu hết các hệ thống chương trình CSDL cho phép duyệt qua tập kết quả bằng các hàm lập trình như Move-To-First-Record, Get-Record-Content, Move-To-Next-Record v.v... Dấu chẩm phảy phía sau câu lệnh Dấu chẩm phảy là một cách chuẩn để phân cách các câu lệnh SQL nếu như hệ thống CSDL cho phép nhiều câu lệnh SQL được thực thi thông qua một lời gọi duy nhất. Các câu lệnh SQL trong bài viết này đều là các câu lệnh đơn (mỗi câu lệnh là một và chỉ một lệnh SQL). MS Access và MS SQL Server không đỏi hỏi phải có dấu chấm phảy ngay sau mỗi câu lệnh SQL, nhưng một số chương trình CSDL khác có thể bắt buộc bạn phải thêm dấu chấm phảy sau mỗi câu lệnh SQL (cho dù đó là câu lệnh đơn). Xin nhắc lại, chúng ta sẽ không dùng dấu chấm phảy ở cuối câu lệnh SQL. Câu lệnh INSERT INTO Câu lệnh INSERT INTO được dùng để chèn dòng mới vào bảng. Cú pháp: INSERT INTO tên_bảng VALUES (giá_trị_1, giá_trị_2,....) Bạn cũng có thể chỉ rõ các cột/trường nào cần chèn dữ liệu: INSERT INTO tên_bảng (cột_1, cột_2,...) VALUES (giá_trị_1, giá_trị_2,....) Chèn 1 dòng mới Ta có bảng Persons như sau: LastName FirstName Address City Pettersen Kari Storgt 20 Stavanger Câu lệnh SQL sau: INSERT INTO Persons VALUES ('Hetland', 'Camilla', 'Hagabakka 24', 'Sandnes') sẽ tạora kết quả trong bảng Persons như sau: LastName FirstName Address City Pettersen Kari Storgt 20 Stavanger Hetland Camilla Hagabakka 24 Stavanger Chèn dữ liệu vào các cột/trường cụ thể Với bảng Persons như trên, câu lệnh SQL sau: INSERT INTO Persons (LastName, Address) VALUES ('Rasmussen', 'Storgt 67') Sẽ tạo ra kết quả: LastName FirstName Address City Pettersen Kari Storgt 20 Stavanger Hetland Camilla Hagabakka 24 Stavanger Rasmussen Storgt 67 Câu lệnh UPDATE Câu lệnh UPDATE được sử dụng để cập nhật/sửa đổi dữ liệu đã có trong bảng. Cú pháp: UPDATE tên_bảng SET tên_cột = giá_trị_mới WHERE tên_cột = giá_trị Ví dụ: bảng Person của ta như sau: LastName FirstName Address City Nilsen Fred Kirkegt 56 Stavanger Rasmussen Storgt 67 Cập nhật 1 cột trên 1 dòng Giả sử ta muốn bổ xung thêm phần tên cho người có họ là Rasmussen: UPDATE Person SET FirstName = 'Nina' WHERE LastName = 'Rasmussen' Ta sẽ có kết quả như sau: LastName FirstName Address City Nilsen Fred Kirkegt 56 Stavanger Rasmussen Nina Storgt 67 Cập nhật nhiều cột trên 1 dòng Bây giờ ta lại muốn đổi tên và địa chỉ: UPDATE Person SET Address = 'Stien 12', City = 'Stavanger' WHERE LastName = 'Rasmussen' Kết quả sẽ là: LastName FirstName Address City Nilsen Fred Kirkegt 56 Stavanger Rasmussen Nina Stien 12 Stavanger Câu lệnh DELETE được dùng để xoá các dòng ra khỏi bảng. Cú pháp: DELETE FROM tên_bảng WHERE tên_cột = giá_trị Ví dụ: Bảng Person của ta như sau: LastName FirstName Address City Nilsen Fred Kirkegt 56 Stavanger Rasmussen Nina Stien 12 Stavanger Xoá 1 dòng: Ta xoá người có tên là Nina Rasmussen: DELETE FROM Person WHERE LastName = 'Rasmussen' Kết quả sau khi xoá: LastName FirstName Address City Nilsen Fred Kirkegt 56 Stavanger Xoá tất cả các dòng: Đôi khi ta muốn xoá tất cả dữ liệu trong bảng nhưng vẫn giữ lại bảng cùng với cấu trúc và tất cả các thuộc tính của bảng, ta có thể dùng câu lệnh: DELETE FROM table_name hoặc DELETE * FROM table_name