* Login   * Register


Last visit was:
It is currently Thu Jul 31, 2014 2:23 pm
View unanswered posts
View active topics





Post new topic Reply to topic  [ 4 posts ] 
Author Message
 Post subject: sql câu lệnh
PostPosted: Mon Nov 10, 2008 1:49 pm 
Offline

Joined: Mon Sep 08, 2008 3:13 pm
Posts: 18
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.


Report this post
Top
 Profile E-mail  
Reply with quote  
 Post subject: Re: sql câu lệnh
PostPosted: Mon Nov 10, 2008 4:37 pm 
Offline
User avatar

Joined: Mon Sep 08, 2008 7:38 pm
Posts: 88
Bạn ơi , cho mình hỏi bạn tìm mấy cái nì ở đâu vậy ? K ko biết mua sách nào cả , sách bi giờ loạn cả rồi nhiều loại quá . K mới mua 1 cuốn mà bị sai chương trình mất rồi . tiếc ơi là tiếc . mà sách thường đó , K ko đọc ebook . Phiền bạn ha .


Report this post
Top
 Profile E-mail  
Reply with quote  
 Post subject: Re: sql câu lệnh
PostPosted: Tue Nov 11, 2008 1:17 pm 
Offline

Joined: Mon Sep 08, 2008 3:13 pm
Posts: 18
cái này nghĩa tìm trên mạng thôi .thấy nó hay nên n mới post lên đó mà chứ n ít post bài lắm.Gặp cái nào được thì mình post nửa


Report this post
Top
 Profile E-mail  
Reply with quote  
 Post subject: Re: sql câu lệnh
PostPosted: Sat Nov 15, 2008 7:00 am 
Offline

Joined: Mon Sep 08, 2008 3:13 pm
Posts: 18
---------
Giới Thiệu Sơ Lược Về Transact SQL (T-SQL)

Transact-SQL là ngôn ngữ SQL mở rộng dựa trên SQL chuẩn của ISO (International Organization for Standardization) và ANSI (American National Standards Institute) được sử dụng trong SQL Server khác với P-SQL (Procedural-SQL) dùng trong Oracle.

Trong bài này chúng ta sẽ tìm hiểu sơ qua về T-SQL. Chúng được chia làm 3 nhóm:

Data Definition Language (DDL):

Ðây là những lệnh dùng để quản lý các thuộc tính của một database như định nghĩa các hàng hoặc cột của một table, hay vị trí data file của một database...thường có dạng

Create object_Name

Alter object_Name

Drop object_Name

Trong đó object_Name có thể là một table, view, stored procedure, indexes...

Ví dụ:

Lệnh Create sau sẽ tạo ra một table tên Importers với 3 cột CompanyID,CompanyName,Contact

USE Northwind

CREATE TABLE Importers(
CompanyID int NOT NULL,
CompanyName varchar(40) NOT NULL,
Contact varchar(40) NOT NULL
)

Lệnh Alter sau đây cho phép ta thay đổi định nghĩa của một table như thêm(hay bớt) một cột hay một Constraint...Trong ví dụ này ta sẽ thêm cột ContactTitle vào table Importers

USE Northwind

ALTER TABLE Importers
ADD ContactTitle varchar(20) NULL

Lệnh Drop sau đây sẽ hoàn toàn xóa table khỏi database nghĩa là cả định nghĩa của table và data bên trong table đều biến mất (khác với lệnh Delete chỉ xóa data nhưng table vẫn tồn tại).

USE Northwind

DROP TABLE Importers

Đọc tới đây ai chưa hiểu thì cứ reply bài tại đây ... Kenn sẽ giải đáp

Data Control Language (DCL):

Ðây là những lệnh quản lý các quyền truy cập lên từng object (table, view, stored procedure...). Thường có dạng sau:

Grant
Revoke
Deny

Ví dụ:

Lệnh sau sẽ cho phép user trong Public Role được quyền Select đối với table Customer trong database Northwind (Role là một khái niệm giống như Windows Group sẽ được bàn kỹ trong phần Security)

USE Northwind

GRANT SELECT
ON Customers
TO PUBLIC

Lệnh Deny sẽ từ chối quyền Select đối với table Customer trong database Northwind của các user trong Public Role

USE Northwind

DENY SELECT
ON Customers
TO PUBLIC

Lệnh sau sẽ xóa bỏ tác dụng của các quyền được cho phép hay từ chối trước đó

USE Northwind

REVOKE SELECT
ON Customers
TO PUBLIC

Nói chung đây là những lệnh ... ko phổ biến và ít sử dụng nhiều nếu như bạn là 1 Webmaster ... nhưng đừng coi thường những câu lệnh đơn giản này ...

Data Manipulation Language (DML):

Ðây là những lệnh phổ biến dùng để xử lý data như Select, Update, Insert, Delete (Nghe thấy mấy lệnh là đã thấy quen quen rồi đúng ko)

Ví dụ:

Lệnh Select:

USE Northwind

SELECT CustomerID, CompanyName, ContactName
FROM Customers
WHERE (CustomerID = 'alfki' OR CustomerID = 'anatr')
ORDER BY ContactName
Insert

USE Northwind

INSERT INTO Territories
VALUES (98101, 'Seattle', 2)
Update

USE Northwind

UPDATE Territories
SET TerritoryDescription = 'Downtown Seattle'
WHERE TerritoryID = 98101
Delete

USE Northwind

DELETE FROM Territories
WHERE TerritoryID = 98101

Vì đây là phần khá dễ và căn bản nên Kenn xin được khỏi giải thích ... vì nó khá dễ hiểu ... ai chưa hiểu thì cứ post lên hỏi.

Chú ý: trong lệnh Delete có thể có chữ From hay không đều được.

Nhưng mà chúng ta sẽ chạy thử các ví dụ trên ở đâu?

Ðể chạy các câu lệnh thí dụ ở trên bạn cần sử dụng và làm quen với Query Analyser




Cú Pháp Của T-SQL:

hehe giờ mới nói tới cú pháp của T-SQL ... lúc nãy là khởi động thôi ... bắt đầu nha

Identifiers

Ðây chính là tên của các database object. Nó dùng để xác định một object.

Chú ý khi nói đến Object trong SQL Server là chúng ta muốn đề cập đến table, view, stored procedure, index.....Vì hầu như mọi thứ trong SQL Server đều được thiết kế theo kiểu hướng đối tượng (object-oriented).

Trong ví dụ sau TableX, KeyCol, Description là những identifiers

CREATE TABLE TableX
(KeyCol INT PRIMARY KEY, Description NVARCHAR(80))

Có hai loại Identifiers một loại thông thường (Regular Identifier) và một loại gọi là Delimited Identifier, loại này cần có dấu "" hay dấu [] để ngăn cách. Loại Delimited được dùng đối với các chữ trùng với từ khóa của SQL Server (reserved keyword) hay các chữ có khoảng trống.

Ví dụ:

SELECT * FROM [My Table]
WHERE [Order] = 10

Trong ví dụ trên chữ Order trùng với keyword Order nên cần đặt trong dấu ngoặc vuông [].

Variables (Biến)

Biến trong T-SQL cũng có chức năng tương tự như trong các ngôn ngữ lập trình khác nghĩa là cần khai báo trước loại dữ liệu trước khi sử dụng. Biến được bắt đầu bằng dấu @ (Ðối với các global variable thì có hai dấu @@)

Ví dụ:

USE Northwind

DECLARE @EmpIDVar INT
SET @EmpIDVar = 3
SELECT * FROM Employees
WHERE EmployeeID = @EmpIDVar + 1

Functions (Hàm)

Có 2 loại hàm một loại là built-in và một loại user-defined

Các hàm Built-In được chia làm 3 nhóm:

Rowset Functions : Loại này thường trả về một object và được đối xử như một table. Ví dụ như hàm OPENQUERY sẽ trả về một recordset và có thể đứng vị trí của một table trong câu lệnh Select.

Aggregate Functions : Loại này làm việc trên một số giá trị và trả về một giá trị đơn hay là các giá trị tổng. Ví dụ như hàm AVG sẽ trả về giá trị trung bình của một cột.

Scalar Functions : Loại này làm việc trên một giá trị đơn và trả về một giá trị đơn. Trong loại này lại chia làm nhiều loại nhỏ như các hàm về toán học, về thời gian, xử lý kiểu dữ liệu String....Ví dụ như hàm MONTH('2002-09-30') sẽ trả về tháng 9.
Các hàm User-Defined (được tạo ra bởi câu lệnh CREATE FUNCTION và phần body thường được gói trong cặp lệnh BEGIN...END) cũng được chia làm các nhóm như sau:

Scalar Functions : Loại này cũng trả về một giá trị đơn bằng câu lệnh RETURNS.

Table Functions : Loại này trả về một table

Data Type (Loại Dữ Liệu)

Các loại dữ liệu trong SQL Server thì dài quá ... chắc phải cắt ra làm 1 mục riêng ....

Expressions

Các Expressions có dạng Identifier + Operators (như +,-,*,/,=...) + Value


Report this post
Top
 Profile E-mail  
Reply with quote  
Display posts from previous:  Sort by  
Post new topic Reply to topic  [ 4 posts ] 


Who is online

Users browsing this forum: No registered users and 0 guests


You can post new topics in this forum
You can reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
cron

Free Forum · php-BB© · Internationalization Project · Report abuse · Terms Of Use/Privacy Policy
© Forums-Free.com 2009