Phát biểu SQL dạng Select với Limit N,M

Một phần của tài liệu Giới thiệu về PHP (Ngôn ngữ lập trình) (Trang 103 - 106)

I- With Grant Option

5. PHẮT BIỂU SQL

5.5. Phát biểu SQL dạng Select với Limit N,M

P h á t biểu SQ L dạng S E L E C T cho phép truy lục chỉ m ột sô" mẩu tin tín h từ vị trí th ứ n đến vị trí thứ m trong Table (theo m ột tiêu chuẩn hay sắp xếp nào đó). Để làm điều này, trong p h á t biểu

SQ L dạng SE L E C T bạn dùng chỉ định từ khoá L IM IT với số lượng mẩu tin cần lấy từ vị trí thứ n

đến m.

Chẳng hạn, trong trường hợp bạn khai báo Select * from tblOrders lim it 0,10. K ết quả sẽ trả về 10 m ẩu tin đầu tiê n trong bảng tblOrders.

Bạn cũng có th ể sử dụng k ế t hợp L IM IT với các m ệnh đề như W HERE, ORDER B Y nhằm tạo ra k ết quă như ý muốn.

Do yêu cầu khác nhau thông qua p h á t biểu SQ L dạng SE L E C T có sử dụng LIM IT, nghĩa là k ết quả trả về số lượng 10 m ẩu tin đầu tiê n với tấ t cả các cột trong bảng tblOrders

Select *

From tblOrders Limit 0,10

K ết quả trả về như sau:

OrderlD OrderDate CustID Amount

01 2001-09-05 10 2903576 02 2001-09-05 10 48168567 03 2001-09-05 10 5107032 04 2001-09-08 10 2 .3555347 05 2001-09-08 16 1.81074847 06 2001-09-10 16 26000 07 2001-09-11 16 1867682 08 2001-09-12 16 3600000 09 2001-09-13 16 1.95713899 10 2001-09-14 16 9 . 61804228

Nếu muôn lọc ra 10 hợp đồng có sô' tiền nhiều n h ấ t, bạn chỉ cần sử dụng sắp xếp theo cột

TotalAmount hay Am ount trong bảng tblOrders.

V i dụ 8-13: P h á t b iể u SQL d ạ n g SELECT v đ i L im it N,M

Select OrderlD, OrderDate, CustID, Amount From tblOrders

Order by Amount Desc Linit 0,10

Kết quả trả về như sau:

OrderlD OrderDate CustlD Amount

06 2001-09-10 16 26000 26 2001-09-13 13 230000 25 2001-09-11 13 244904 23 2001-09-11 12 459162 31 2001-09-16 13 459525 27 2001-09-14 13 603033 28 2001-09-15 13 1452000 30 2001-09-15 13 1531200 07 2001-09-11 16 1867682 01 2001-09-05 10 2903576

Nếu muốn lọc ra 10 sản phẩm có số lượng bán nhiều n h ấ t, bạn chỉ cần sừ dụng sắp xếp theo cột số lượng Qtty. V í du 8-14: P h á t b iể u sQỊ1 d ạ n g S e le c t với L im it N,M SelectItemID,Qtty,Price,Amount from tblOrderDetails Where Amount>10 order by Qtty Limit 0,10

Kết quả trả về như sau:

ItemID Qtty Price Amount

2 1000 12000 144000003 5000 12000 72000000 3 5000 12000 72000000 3 6000 12000 86400000 4 8000 12000 15200000 4 8000 12000 15200000 4 8000 10000 15200000 5 9000 12000 29600000 5 9000 12000 129600000 5 9000 12000 129600000 5.6. P h á t b i ể u SQ L d ạ n g S E L E C T v ớ i D IS T IN C T

Nếu có m ột hay nhiều bảng k ế t nối với nhau, sẽ xảy ra trùng lặp nhiều mẩu tin. Nhưng trong trường hợp này bạn chỉ cần lấy ra m ột m ẩu tin trong tập m ẩu tin trùng lặp, bạn sử dụng p h á t biểu

SQ L dạng SE L E C T với chỉ định D ISTIN C T.

Vi dụ 8-14: P h á t b iể u SQL d ạ n g SELECT

Select ItemID,Qtty,Price,Amount from tblOrderDetails

order by Qtty

Kết quả trả về như sau:

ItemlD Qtty Price Amount

1 900 12000 12960000 2 1000 12000 14400000 3 5000 12000 72000000 3 6000 12000 86400000 4 8000 12000 115200000 4 8000 12000 115200000 4 8000 10000 115200000 5 9000 12000 129600000 5 9000 12000 129600000 5 9000 12000 129600000

V i dụ 8-15: P h á t b iể u SQL d ạ n g SELECT v ở i DISTINCT

Select Distinct ItemID, Qtty, Price, Amount From tblOrderDetails

Order by Qtty

Kết quả loại bỏ những m ẩu tin trù n g lắp như sau:

ItemID Qtty Price Amount

1 900 12000 12960000

2 1000 12000 14400000

3 6000 12000 86400000

4 8000 12000 115200000

5.7. N h ậ p d ữ l i ệ u b ằ n g p h á t b i ể u SQ L d ạ n g I n s e r t

Khi cần th êm mẩu tin vào bảng trong cơ sở dữ liệu M ySQ L, bạn có nhiều cách để thực hiện công việc này. Trong Visual Basic 6.0, VB.NET, c Sharp hay Java có những phương thức để thêm m ẩu tin vào bảng trong cơ sở dữ liệu. Tuy nhiên, để sử dụng các p h á t biểu SQL m ang tín h chuyên nghiệp trong M ySQ L, bạn cần sử dụng p h á t biểu IN S E R T .

Bạn có th ể sử dụng p h á t biểu Insert ngay trê n ứng dụng k ế t nôi với M ySQL. Trong trường hợp bạn sử dụng cơ sở dữ liệu SQ L Server hay Oracle, bạn có th ể tạo ra m ột Stored Procedure với mục đích IN S E R T dữ liệu vào bảng chỉ định trước.

Khi thêm dữ liệu, cần chú ý kiểu dữ liệu giống hoặc tương ứng kiểu dữ liệu đã khai báo của cột đó, nếu không phù hợp th ì lỗi sẽ p h át sinh.

Ngoài ra bạn cần quan tâm đến quyền của User đang truy cập cơ sở dữ liệu. User phải được cấp quyền Insert dữ liệu vào từng bảng cụ th ể (quyền này do nhà quản trị cơ sở dữ liệu phân quyền cho

User đó).

Trong p h á t biểu IN S E R T IN T O chúng tôi thực h iện trê n bảng tblOrderDetails và bảng

tblOrderDetailsHist, hai bảng này có cấu trúc như sau:

/* Băng tblOrderDetails*/

CREATE TABLE tblorderdetails (

ItemIDint(3) unsigned DEFAULT '0' , OrderID int ( 3 ) unsigned DEFAULT 'o 1 , Notinyint(3) unsigned DEFAULT '0' , Qttyint(3) unsigned DEFAULT '0' , Priceint(3) unsigned DEFAULT '0' , Discount int (3 ) unsigned DEFAULT ' 0 ' , Amount bigint(3) unsigned DEFAULT '0'

/* Bảng tblOrderDetailsHist, dùng đ ể chứa các thông tin hợp đồng chi tiết kh i hợp đồng của khách hàng này kết thúc, chưimg trình tự động xoá trong tblOrderDetails và lư trữ lại trong bảng tblOrderDetailsHist.* /

CREATE TABLE tblorderdetailshis; (

ItemIDint(3) unsigned DEFAULT '0' , Order ID int (3 ) unsigned DEFAULT ' 0 1 , Notinyint(3) unsigned DEFAULT '0' ,

Qtty int (3 ) unsigned DEFAULT ' 0 1 , Priceint(3) unsigned DEFAULT '0' , Discount int(3) unsigned DEFAULT '0' , Amount bigint (3 ) unsigned DEFAULT ' 0 '

Khi Insert dữ liệu vào bảng, có 3 trường hợp xảy ra: insert dữ liệu vào bảng từ các giá trị cụ thể, insert vào băng lấy giá tr ị từ m ột hay nhiều bảng khác, và cuối cùng là kết hợp cả hai trường hợp trên.

Một phần của tài liệu Giới thiệu về PHP (Ngôn ngữ lập trình) (Trang 103 - 106)

Tải bản đầy đủ (PDF)

(142 trang)