|
Cú Pháp SQL:
Thật ra cú pháp SQL không có khó đối với những ai học tiếng Anh, bởi vì Microsoft đã xây dựng cú pháp này dựa trên văn phạm tiếng Anh. Cho nên những ai chịu khó học tiếng Anh thì không có vấn đề gì. Cú pháp của câu lệnh Select: Select <fieldname> From <tablename> [Where: <condition> (criteria)] [Group By: <columnname> ] [Having : <group's condition>] [Order By: <columnname> [order type ] Giải thích: Select < fieldname> : tên các field mà các bạn muốn chọn> Ví dụ: SELECT Ccode, FName, LName, Age : chọn lấy field CCode, FName, LName, Age.
From <tablename> : tên của table chứa các field trên, nếu các field nằm trong nhiều table khác nhau thì sẽ dùng tác vụ JOIN để nối các table lại thành 1 table, tác vụ JOIN sẽ được đề cập ở phần sau Ví dụ: FROM Customer : từ table Customer
[Where: <condition>] : dùng để chọn ra các record thỏa 1 số điểu kiện nhất định. Ví dụ: Where FName='Phuong' : trong đó field Fname phải có giá trị là Phuong
[Group By: <column name> ] : tên các cột mà các bạn muốn nhóm theo Ví dụ: Group By LName : nhóm theo field LName
[Having : <condition>] : điều kiện để nhóm, cái này dùng để tăng khả năng của group by, làm cho các field group by trong với điều kiện nào đó. Ví dụ: Having LName='Ng*' : có giá trị bắt đầu là Ng Chú ý: * dùng để chọn tất cả trong Access, % : SQL Server. Nếu dùng * không được thì hãy dùng %.
[Order By: <tên cột> [ASC | DESC] ] Ví dụ: Order By FName ASC : sắp xếp theo tên từ nhỏ đến lớn. Nhớ đặt dấu chấm phẩy ở cuối câu.
Ghi chú: các thành phần nằm trong : [ ] có thể có, có thể không có. ASC : sắp xếp từ nhỏ đến lớn. DESC: sắp xếp từ lớn đến nhỏ. He he, sau đây là 1 số ví dụ. Tui chọn Biblio. mdb vì file này đi kèm theo khi cài đặt Access, chắc chắn ai cũng có. He he.. Ví dụ 1: câu lệnh SQL đơn giản. Lấy tất cả các field trong table Authors Select * From Authors; rất đơn giản phải không. Ví dụ 2: câu lệnh SQL với mệnh đề WHERE. Lấy các field trong table Publishers ở thành phố New York. Select * From Publishers where city="New York"; Ghi chú: dấu * dùng để chọn hết tất cả các field có trong table. Nhiều người tự hỏi nếu muốn lấy các field từ nhiều bảng khác nhau thì phải làm sao, câu trả lời chính là tác vụ Join.
Có 3 kiểu JOIN: Inner Join, Outer Join và Self Join.
-Inner Join : Dùng để trả về tất cả các records khớp với chuẩn định ghép trong cả 2 table. chú ý là phải cả 2 table.
Ví dụ: Bạn muốn nối 2 bảng Authors và Title Authours trong Biblio.mdb.
SELECT Authors.Au_ID, Author, [Title Author].ISBN FROM Publishers, Authors INNER JOIN [Title Author] ON Authors.Au_ID = [Title Author].Au_ID;
-Outer Join: có 2 loại Outer Join. Đó là Right Join và Left Join.
Ghi chú: khi nói về mối quan hệ giữa 2 table thì sẽ có 1 table là table chính ( master table) và 1 table phụ (details table). Cái này các bạn chắc ai cũng biết nếu đã học qua Relationships trong Access.
+Right Join: dùng để trả về các records trong details table được ghép với các records so khớp trong master table.
Ví dụ: SELECT Authors.Au_ID, Authors.Author, [Title Author].ISBN FROM Publishers, Authors RIGHT JOIN [Title Author] ON Authors.Au_ID = [Title Author].Au_ID;
+Left Join: dùng để trả về các records trong master table được ghép với các records so khớp trong bảng details table.
Ví dụ: SELECT Authors.Au_ID, Authors.Author, [Title Author].ISBN FROM Publishers, Authors LEFT JOIN [Title Author] ON Authors.Au_ID = [Title Author].Au_ID;
Ngoài ra còn có Full Outer Join, nhưng Access không hỗ trợ cú pháp này.
-Self Join: cái này hơi phức tạp, tui sẽ dành hẳn 1 bài riêng cho nó. Các bạn có thể hiểu đơn giản là: 1 table sẽ tự Join với chính nó. Access cũng không hỗ trợ cú pháp này, nhưng cú pháp này rất hữu dụng cho những ai sử dụng ASP hay VB để truy xuất dữ liệu.
Ok, sau đây là 1 số ví dụ.
-Lấy thông tin về các cuốn sách và tác giả của chúng:
SELECT Author, [Title Author].Au_ID, Title, Titles.[Year Published], PubID, Description, Notes, Subject, Comments FROM Authors INNER JOIN (Titles INNER JOIN [Title Author] ON Titles.ISBN = [Title Author].ISBN) ON Authors.Au_ID = [Title Author].Au_ID;
-Bây giờ có thêm điều kiện: tác giả là Bisland, Ralph B
SELECT Author, [Title Author].Au_ID, Title, Titles.[Year Published], PubID, Description, Notes, Subject, Comments FROM Authors INNER JOIN (Titles INNER JOIN [Title Author] ON Titles.ISBN = [Title Author].ISBN) ON Authors.Au_ID = [Title Author].Au_ID WHERE Authors.Author='Bisland, Ralph B';
-Nhóm theo tác giả
SELECT Author, [Title Author].Au_ID, Title, Titles.[Year Published], PubID, Description, Notes, Subject, Comments FROM Authors INNER JOIN (Titles INNER JOIN [Title Author] ON Titles.ISBN = [Title Author].ISBN) ON Authors.Au_ID = [Title Author].Au_ID GROUP BY Author, [Title Author].Au_ID, Title, Titles.[Year Published], PubID, Description, Notes, Subject, Comments;
-Nhóm theo tác giả, với điều kiện tên tác giả là 'Adams, Pat'
SELECT Author, [Title Author].Au_ID, Title, Titles.[Year Published], PubID, Description, Notes, Subject, Comments FROM Authors INNER JOIN (Titles INNER JOIN [Title Author] ON Titles.ISBN = [Title Author].ISBN) ON Authors.Au_ID = [Title Author].Au_ID GROUP BY .Author, [Title Author].Au_ID, Title, Titles.[Year Published], PubID, Description, Notes, Subject, Comments HAVING (((Authors.Author)='Adams, Pat'));
-Sắp xếp theo bảng kí tự
SELECT Author, [Title Author].Au_ID, Title, Titles.[Year Published], PubID, Description, Notes, Subject, Comments FROM Authors INNER JOIN (Titles INNER JOIN [Title Author] ON Titles.ISBN = [Title Author].ISBN) ON Authors.Au_ID = [Title Author].Au_ID ORDER BY Authors.Author;
Chú ý mặc định defaul trong Order by là ASC.
|
|