VNP Community
Tags
This content has not been tagged yet
> SQL căn bản  
Closed TopicStart new topic
PETER
post Mar 25 2006, 12:24 AM
Post #1


Ψ Yahoo-69 Power Ψ
Group Icon

Group: Owner
Posts: 2,708
Cash: 68,497k
Age: 24
Joined: 11-June 07
From: Saigon
Member No.: 1
Yahoo! Status:



Nguồn từ diendantinhoc.net

Giới thiệu về SQL.

SQL là chuẩn ngôn ngữ ANSI để truy cập CSDL.

SQL là gì?

SQL là viết tắt của Structured Query Language - Ngôn ngữ truy vấn cấu trúc.
SQL cho phép bạn truy cập vào CSDL.
SQL là một chuẩn ngôn ngữ của ANSI.
SQL có thể thực thi các câu truy vấn trên CSDL.
SQL có thể lấy dữ liệu từ CSDL.
SQL có thể chèn dữ liệu mới vào CSDL.
SQL có thể xoá dữ liệu trong CSDL.
SQL có thể sửa đổi dữ liệu hiện có trong CSDL.
SQL dễ học :-)
SQL là một chuẩn

- SQL là một chuẩn của ANSI (American National Standards Institute - Viện tiêu chuẩn quốc gia Hoa kỳ) về truy xuất các hệ thống CSDL. Các câu lệnh SQL được sử dụng để truy xuất và cập nhật dữ liệu trong một CSDL.
- SQL hoạt động với hầu hết các chương trình CSDL như MS Access, DB2, Informix, MS SQL Server, Oracle, Sybase v.v...

*Lưu ý: Hầu hết các chương trình CSDL hỗ trợ SQL đều có phần mở rộng cho SQL chỉ hoạt động với chính chương trình đó.

Bảng CSDL

Một CSDL thường bao gồm một hoặc nhiều bảng (table). Mỗi bảng được xác định thông qua một tên (ví dụ Customers hoặc Orders). Bảng chứa các mẩu tin - dòng (record - row), là dữ liệu của bảng.

Dưới đây là một ví dụ về một bảng có tên là Persons (người):

LastName FirstName Address City
Hansen Ola Timoteivn 10 Sandnes
Svendson Tove Borgvn 23 Sandnes
Pettersen Kari Storgt 20 Stavanger


Bảng ở trên bao gồm 3 mẩu tin (dòng), mỗi mẩu tin tương ứng với một người, và bốn cột (LastName, FirstName, Address và City).

Câu truy vấn SQL

Với SQL ta có thể truy vấn CSDL và nhận lấy kết quả trả về thông qua các câu truy vấn.

Một câu truy vấn như sau:

SQL
SELECT LastName FROM Persons


Sẽ trả về kết quả như sau:
QUOTE
LastName
Hansen
Svendson
Pettersen

*Lưu ý: Một số hệ thống CSDL đòi hỏi câu lệnh SQL phải kết thúc bằng một dấu chấm phảy (;). Chúng ta sẽ không dùng dấu chấm phảy trong bài viết này.
+ SQL là ngôn ngữ thao tác dữ liệu (DML - Data Manipulation Language)
+ SQL là cú pháp để thực thi các câu truy vấn. SQL cũng bao gồm cú pháp để cập nhật - sửa đổi, chèn thêm và xoá các mẩu tin.

Sau đây là danh sách các lệnh và truy vấn dạng DML của SQL:

SELECT - lấy dữ liệu từ một bảng CSDL.
UPDATE - cập nhật/sửa đổi dữ liệu trong bảng.
DELETE - xoá dữ liệu trong bảng.
INSERT INTO - thêm dữ liệu mới vào bảng.
SQL là ngôn ngữ định nghĩa dữ liệu (DDL - Data Definition Language)

Phần DDL của SQL cho phép tạo ra hoặc xoá các bảng. Chúng ta cũng có thể định nghĩa các khoá (key), chỉ mục (index), chỉ định các liên kết giữa các bảng và thiết lập các quan hệ ràng buộc giữa các bảng trong CSDL.

Các lệnh DDL quan trọng nhất của SQL là:

CREATE TABLE - tạo ra một bảng mới.
ALTER TABLE - thay đổi cấu trúc của bảng.
DROP TABLE - xoá một bảng.
CREATE INDEX - tạo chỉ mục (khoá để tìm kiếm - search key).
DROP INDEX - xoá chỉ mục đã được tạo.

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ủa câu lệnh SELECT như sau:

SQL
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:

SQL
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ả trả về:
QUOTE
LastName FirstName
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:

SQL
SELECT * FROM Persons


Kết quả trả về:
QUOTE
LastName - FirstName- Address -City
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, trong bài viết này chúng ta sẽ không dùng dấu chấm phảy ở cuối câu lệnh SQL
Go to the top of the page
 
+Quote Post
Game Online
PETER
post Mar 25 2006, 12:25 AM
Post #2


Ψ Yahoo-69 Power Ψ
Group Icon

Group: Owner
Posts: 2,708
Cash: 68,497k
Age: 24
Joined: 11-June 07
From: Saigon
Member No.: 1
Yahoo! Status:



Mệnh đề WHERE

Để truy xuất dữ liệu trong bảng theo các điều kiện nào đó, một mệnh đề WHERE có thể được thêm vào câu lệnh SELECT.

Cú pháp

Cú pháp mệnh đề WHERE trong câu lệnh SELECT như sau:

SQL
SELECT tên_cột FROM tên_bảng WHERE tên_cột phép_toán giá_trị


Trong mệnh đề WHERE, các phép toán được sử dụng là

Phép toán Mô tả
= So sánh bằng
<> So sánh không bằng
> Lớn hơn
< Nhỏ hơn
>= Lớn hơn hoặc bằng
<= Nhỏ hơn hoặc bằng
BETWEEN Nằm giữa một khoảng
LIKE So sánh mẫu chuỗi

Lưu ý: Trong một số phiên bản của SQL, phép toán <> có thể được viết dưới dạng !=

Sử dụng mệnh đề WHERE

Để lấy danh sách những người sống ở thành phố Sandnes, ta sử dụng mệnh đề WHERE trong câu lệnh SELECT như sau:

SQL
SELECT * FROM Persons WHERE City = 'Sandnes'


Bảng Persons:

LastName FirstName Address City Year

-------------------------------------------

-AND và OR

Hai toán tử AND và OR nối hai hoặc nhiều điều kiện trong mệnh đề WHERE lại với nhau.

Toán tử AND sẽ hiển thị 1 dòng nếu TẤT CẢ các điều kiện đều thoả mãn. Toán tử OR hiển thị một dòng nếu BẤT KỲ điều kiện nào được thoả.

Bảng dữ liệu dùng trong ví dụ

LastName FirstName Address City
Hansen Ola Timoteivn 10 Sandnes
Svendson Tove Borgvn 23 Sandnes
Svendson Stephen Kaivn 18 Sandnes

Ví dụ 1

Sử dụng AND để tìm những người có tên là Tove và họ là Svendson:

SQL
SELECT * FROM Persons WHERE FirstName = 'Tove' AND LastName = 'Svendson'

Kết quả trả về:

LastName FirstName Address City
Svendson Tove Borgvn 23 Sandnes

Ví dụ 2

Sử dụng OR để tìm những người có tên là Tove hoặc họ là Svendson:

SQL
SELECT * FROM Persons WHERE firstname = 'Tove' OR lastname = 'Svendson'

Kết quả trả về:

LastName FirstName Address City
Svendson Tove Borgvn 23 Sandnes
Svendson Stephen Kaivn 18 Sandnes

Ví dụ 3

Bạn cũng có thể sử dụng kết hợp AND và OR cùng với dấu ngoặc đơn để tạo nên các câu truy vấn phức tạp:

SQL
SELECT * FROM Persons WHERE (FirstName = 'Tove' OR FirstName = 'Stephen') AND LastName = 'Svendson'

Kết quả trả về:

LastName FirstName Address City
Svendson Tove Borgvn 23 Sandnes
Svendson Stephen Kaivn 18 Sandnes



Hansen Ola Timoteivn 10 Sandnes 1951
Svendson Tove Borgvn 23 Sandnes 1978
Svendson Stale Kaivn 18 Sandnes 1980
Pettersen Kari Storgt 20 Stavanger 1960

Kết quả trả về:

LastName FirstName Address City Year
Hansen Ola Timoteivn 10 Sandnes 1951
Svendson Tove Borgvn 23 Sandnes 1978
Svendson Stale Kaivn 18 Sandnes 1980

Sử dụng dấu nháy

Lưu ý rằng ở ví dụ trên ta đã sử dụng hai dấu nháy đơn (') bao quanh giá trị điều kiện 'Sandnes'.

SQL sử dụng dấu nháy đơn bao quanh các giá trị ở dạng chuỗi văn bản (text). Nhiều hệ CSDL còn cho phép sử dụng dấu nháy kép ("). Các giá trị ở dạng số không dùng dấu nháy để bao quanh.

Với dữ liệu dạng chuỗi văn bản:

Câu lệnh đúng:
SQL
SELECT * FROM Persons WHERE FirstName = 'Tove'


Câu lệnh sai:
SQL
SELECT * FROM Persons WHERE FirstName = Tove


Với dữ liệu dạng số:

Câu lệnh đúng:
SQL
SELECT * FROM Persons WHERE Year > 1965


Câu lệnh sai:
SQL
SELECT * FROM Persons WHERE Year > '1965'


Phép toán điều kiện LIKE

Phép toán LIKE được dùng để tìm kiếm một chuỗi mẫu văn bản trên một cột.

Cú pháp

Cú pháp của phép toán LIKE như sau:

SQL
SELECT tên_cột FROM tên_bảng WHERE tên_cột LIKE mẫu


Một ký hiệu % có thể được sử dụng để định nghĩa các ký tự đại diện. % có thể được đặt trước và/hoặc sau mẫu.

Sử dụng LIKE

Câu lệnh SQL sau sẽ trả về danh sách những người có tên bắt đầu bằng chữ O:

SQL
SELECT * FROM Persons WHERE FirstName LIKE 'O%'


Câu lệnh SQL sau sẽ trả về danh sách những người có tên kết thúc bằng chữ a:

SQL
SELECT * FROM Persons WHERE FirstName LIKE '%a'


Câu lệnh SQL sau sẽ trả về danh sách những người có tên kết chứa chuỗi la:

SQL
SELECT * FROM Persons WHERE FirstName LIKE '%la%'
Go to the top of the page
 
+Quote Post
PETER
post Mar 25 2006, 12:26 AM
Post #3


Ψ Yahoo-69 Power Ψ
Group Icon

Group: Owner
Posts: 2,708
Cash: 68,497k
Age: 24
Joined: 11-June 07
From: Saigon
Member No.: 1
Yahoo! Status:



Toán tử BETWEEN...AND

lấy ra một miền dữ liệu nằm giữa hai giá trị. Hai giá trị này có thể là số, chuỗi văn bản hoặc ngày tháng.

SQL
SELECT tên_cột FROM tên_bảng WHERE tên_cột BETWEEN giá_trị_1 AND giá_trị_2


Bảng dữ liệu dùng trong ví dụ

LastName FirstName Address City
Hansen Ola Timoteivn 10 Sandnes
Nordmann Anna Neset 18 Sandnes
Pettersen Kari Storgt 20 Stavanger
Svendson Tove Borgvn 23 Sandnes

Ví dụ 1

Tìm tất cả những người có họ (sắp xếp theo ABC) nằm giữa Hansen (tính luôn Hansen) và Pettersen (không tính Pettersen):

SQL
SELECT * FROM Persons WHERE LastName BETWEEN 'Hansen' AND 'Pettersen'


Kết quả trả về:

LastName FirstName Address City
Hansen Ola Timoteivn 10 Sandnes
Nordmann Anna Neset 18 Sandnes

Lưu ý quan trọng: Toán tử BETWEEN...END sẽ trả về những kết quả khác nhau trên các hệ CSDL khác nhau. Với một số hệ CSDL, toán tử BETWEEN...END sẽ trả về các dòng mà có giá trị thực sự "nằm giữa" hai khoảng giá trị (tức là bỏ qua không tính đến các giá trị trùng với giá trị của hai đầu mút). Một số hệ CSDL thì sẽ tính luôn các giá trị trùng với hai đầu mút. Trong khi đó một số hệ CSDL khác lại chỉ tính các giá trị trùng với đầu mút thứ nhất mà không tính đầu mút thứ hai (như ở ví dụ phía trên). Do vậy, bạn phải kiểm tra lại hệ CSDL mà bạn đang dùng khi sử dụng toán tử BETWEEN...AND.

Ví dụ 2

Để tìm những người có họ (sắp xếp theo ABC) nằm ngoài khoảng hai giá trị ở ví dụ 1, ta dùng thêm toán tử NOT:

SQL
SELECT * FROM Persons WHERE LastName NOT BETWEEN 'Hansen' AND 'Pettersen'


Kết quả trả về:

LastName FirstName Address City
Pettersen Kari Storgt 20 Stavanger
Svendson Tove Borgvn 23 Sandnes

-------------------------------

Từ khoá DISTINCT

Câu lệnh SELECT sẽ trả về thông tin về các cột trong bảng. Nhưng nếu chúng ta không muốn lấy về các giá trị trùng nhau thì sau?

Với SQL, ta chỉ cần thêm từ khoá DISTINCT vào câu lệnh SELECT theo cú pháp sau:

SQL
SELECT DISTINCT tên_cột FROM tên_bảng


Ví dụ: Tìm tất cả các công ty trong bảng đặt hàng

Bảng đặt hàng của ta như sau:

Company OrderNumber
Sega 3412
W3Schools 2312
Trio 4678
W3Schools 6798

Câu lệnh SQL sau:

SQL
SELECT Company FROM Orders


Sẽ trả về kết quả:

Company
Sega
W3Schools
Trio
W3Schools

Tên công ty W3Schools xuất hiện hai lần trong kết quả, đôi khi đây là điều chúng ta không muốn.

Ví dụ: Tìm tất cả các công ty khác nhau trong bảng đặt hàng

Câu lệnh SQL sau:

SQL
SELECT DISTINCT Company FROM Orders


Sẽ trả về kết quả:

Company
Sega
W3Schools
Trio

Tên công ty W3Schools bây giờ chỉ xuất hiện 1 lần, đôi khi đây là điều chúng ta mong muốn

--------------------------------

Từ khoá ORDER BY được sử dụng để sắp xếp kết quả trả về.

Sắp xếp các dòng

Mệnh đề ORDER BY

được dùng để sắp xếp các dòng.

Ví dụ bảng Orders:

Company OrderNumber
Sega 3412
ABC Shop 5678
W3Schools 2312
W3Schools 6798

Ví dụ:

Để lấy danh sách các công ty theo thứ tự chữ cái (tăng dần):

SQL
SELECT Company, OrderNumber FROM Orders ORDER BY Company


Kết quả trả về:

Company OrderNumber
ABC Shop 5678
Sega 3412
W3Schools 6798
W3Schools 2312

Ví dụ:

Lấy danh sách các công ty theo thứ tự chữ cái (tăng dần) và hoá đơn đặt hàng theo thứ tự số tăng dần:

SQL
SELECT Company, OrderNumber FROM Orders ORDER BY Company, OrderNumber


Kết quả trả về:

Company OrderNumber
ABC Shop 5678
Sega 3412
W3Schools 2312
W3Schools 6798

Ví dụ:

Lấy danh sách các công ty theo thứ tự giảm dần:

SQL
SELECT Company, OrderNumber FROM Orders ORDER BY Company DESC


Kết quả trả về:

Company OrderNumber
W3Schools 6798
W3Schools 2312
Sega 3412
ABC Shop 5678
Go to the top of the page
 
+Quote Post
PETER
post Mar 25 2006, 12:27 AM
Post #4


Ψ Yahoo-69 Power Ψ
Group Icon

Group: Owner
Posts: 2,708
Cash: 68,497k
Age: 24
Joined: 11-June 07
From: Saigon
Member No.: 1
Yahoo! Status:



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:

SQL
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:

SQL
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:

SQL
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:

SQL
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:

SQL
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:

SQL
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ỉ:

SQL
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:

SQL
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:

SQL
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:

SQL
DELETE FROM table_name


hoặc

SQL
DELETE * FROM table_name
Go to the top of the page
 
+Quote Post
PETER
post Mar 25 2006, 12:27 AM
Post #5


Ψ Yahoo-69 Power Ψ
Group Icon

Group: Owner
Posts: 2,708
Cash: 68,497k
Age: 24
Joined: 11-June 07
From: Saigon
Member No.: 1
Yahoo! Status:



SQL có sẵn lệnh để đếm các dòng trong CSDL.

Cú pháp của hàm COUNT:

SQL
SELECT COUNT(tên_cột) FROM tên_bảng


Hàm COUNT(*):

Hàm COUNT(*) trả về số lượng các dòng được chọn ở trong bảng.

Ví dụ ta có bảng Persons như sau:

Name Age
Hansen, Ola 34
Svendson, Tove 45
Pettersen, Kari 19

Câu lệnh sau sẽ trả về số lượng các dòng trong bảng:

SQL
SELECT COUNT(*) FROM Persons


và kết quả trả về sẽ là:

3

Câu lệnh sau sẽ trả về số lượng những người lớn hơn 20 tuổi:

SQL
SELECT COUNT(*) FROM Persons WHERE Age > 20


kết quả trả về sẽ là:

2

Hàm COUNT(column):

Hàm COUNT(column) sẽ trả về số lượng các dòng có giá trị khác NULL ở cột được chỉ định.

Ví dụ ta có bảng Persons như sau:

Name Age
Hansen, Ola 34
Svendson, Tove 45
Pettersen, Kari

Câu lệnh sau sẽ trả về số lượng những người mà cột Age trong bảng không rỗng:

SQL
SELECT COUNT(Age) FROM Persons


và kết quả trả về sẽ là:

2

Mệnh đề COUNT DISTINCT

Lưu ý: Các ví dụ dưới đây chỉ hoạt động với CSDL Oracle và MS SQL Server, không hoạt động trên MS Access (chưa thử nhiệm với các hệ CSDL khác!)

Từ khoá DISTINCT và COUNT có thể được dùng chung với nhau để đếm số lượng các kết quả không trùng nhau.

Cú pháp như sau:

SQL
SELECT COUNT(DISTINCT column(s)) FROM table


Ví dụ ta có bảng Orders như sau:

Company OrderNumber
Sega 3412
W3Schools 2312
Trio 4678
W3Schools 6798

Câu lệnh SQL sau:

SQL
SELECT COUNT(DISTINCT Company) FROM Orders


sẽ trả về kết quả là:

3
Go to the top of the page
 
+Quote Post
BBCode:
HTML:
  Digg this topic · Save to del.icio.us · Slashdot It · Post to Technorati · Post to Furl · Submit to Reddit · Share on Facebook · Fark It · Googlize This Post · Add to ma.gnolia · Tag to Wink · Add to MyWeb · Add to Netscape
Closed TopicStart new topic
3 User(s) are reading this topic [3 Guests and 0 Anonymous Users]
0 Members:

 


Collapse

> Links to this thread

Page             Date Hits
sql sap xep - Tm với Google 28th November 2008 - 02:01 AM   1
tm kiếm theo chỉ mục SQL - Tm với Google 1st December 2008 - 01:37 PM   1
Cc thủ thuật cơ bản khi lin kết cc bảng với nhau của SQL - Tm với Google 2nd December 2008 - 09:09 AM   1
sql can ban - Tm với Google Yesterday, 10:46 PM   1

RSS Lo-Fi Version Time is now: 5th December 2008 - 10:38 AM