Ví dụ về các lệnh cơ bản

Một phần của tài liệu Tài liệu Tài liệu tham khảo: Ngôn ngữ lập trình PHP doc (Trang 101 - 105)

*Sau đây là những ví dụ về cách giải quyết vấn đề cùng với mysql * Một vài ví dụ sử dụng hàng shop để l−u trữ giá của mỗi đề mục

cho mỗi th−ơng nhân.Giả sử rằng mỗi th−ơng nhân có mộ tập hợp giá cho mỗi đề mục .Sau đó là khoá cho mỗi bản ghi

Bạn có thể tạo ra một bảng nh− sau: CREATE TABLE shop (

article INT(4) UNSIGNED ZEROFILL DEFAULT '0000' NOT NULL, dealer CHAR(20) DEFAULT '' NOT NULL,

price DOUBLE(16,2) DEFAULT '0.00' NOT NULL, PRIMARY KEY(article, dealer));

INSERT INTO shop VALUES

(1,'A',3.45),(1,'B',3.99),(2,'A',10.99),(3,'B',1.45),(3,'C',1.69), (3,'D',1.25),(4,'D',19.95);

*Ví dụ về dữ liệu nh− sau: SELECT * FROM shop

article Dealer Price 0001 0001 0001 0002 0003 0004 A B A G D F 3.45 3.99 10.99 1.45 1.69 1.25 19.95

1. Giá trị lớn nhất cho mỗi cột

Số mục cao nhất là bao nhiêu:

SELECT MAX(article) AS article FROM shop Article

2.Dòng l−u trữ giá trị lớn nhất chứa trong cột :

Tìm số dealer và price của các article đắt nhất SELECT article, dealer, price

FROM shop

WHERE price=(SELECT MAX(price) FROM shop) (trong mysql không có thủ tục lựa chọn)

nên để làm điều đó phải chia thành hai b−ớc Tìm giá cao nhất từ bảng bằng lệnh SELECT

Sử dụng giá trị này để hoàn thành các câu lệnh tiếp theo SELECT article, dealer, price

FROM shop

WHERE price=19.95

Một cách làm khác là sắp xếp các hàng giảm dần theo giá và chỉ đ−a ra hàng đầu tiên sử dụng LIMIT:

SELECT article, dealer, price FROM shop

ORDER BY price DESC LIMIT 1

3. Giá trị mã của cột:mỗi nhóm:chỉ một giá trị

* với mỗi article ,tìm dealer(s) sao cho giá là cao nhất * trong ANSI SQL nó sẽ làm cùng với thủ tục nh− sau

SELECT article, dealer, price FROM shop s1

WHERE price=(SELECT MAX(s2.price) FROM shop s2

WHERE s1.article = s2.article) *Trong mysql tốt nhất là làm từng b−ớc

a.Đ−a ra danh sách gồm 2 cột(article,maxpice)

b.Với mỗi article chọn những dòng mà có giá cao nhất *Ví dụ nh− sau:

CREATE TEMPORARY TABLE tmp ( article INT(4) UNSIGNED ZEROFILL DEFAULT '0000' NOT NULL,

price DOUBLE(16,2) DEFAULT '0.00' NOT NULL);

INSERT INTO tmp SELECT article, MAX(price) FROM shop GROUP BY article;

SELECT article, dealer, price FROM shop, tmp WHERE shop.article=tmp.article AND

shop.price=tmp.price; UNLOCK TABLES; DROP TABLE tmp;

*Nếu bạn không sử dụng một temporary table bạn phải dùng khoá “tmp” table *Có thể làm điều đó với những câu lệnh đơn lẻ

*Có thể gọi hàm “MAX-CONCAT” SELECT article, SUBSTRING( MAX( CONCAT(LPAD(price,6,'0'),dealer) ), 7) AS dealer, 0.00LEFT( MAX( CONCAT(LPAD(price,6,'0'),dealer) ), 6) AS price FROM shop GROUP BY article; 4. Sử dụng khoá ngoài

Bạn không cần khoá ngoài để nối hai bảng

Chỉ những thứ trong mysql không làm đ−ợc CHECK để chắc chắn rằng những khoá bạn sử dụng thực sự tồn tại trong bảng liên quan và nó không tự động xoá các dòng từ bảng cùng với khoá ngoài đ−ợc định nghĩa.Nếu bạn sử dụng khoá bình th−ờng nó vẫn làm việc tới cùng:

CREATE TABLE persons (

id SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT, name CHAR(60) NOT NULL,

PRIMARY KEY (id) );

CREATE TABLE shirts (

id SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT, style ENUM('t-shirt', 'polo', 'dress') NOT NULL,

color ENUM('red', 'blue', 'orange', 'white', 'black') NOT NULL,

owner SMALLINT UNSIGNED NOT NULL REFERENCES persons, PRIMARY KEY (id)

INSERT INTO persons VALUES (NULL, 'Antonio Paz'); INSERT INTO shirts VALUES

(NULL, 'polo', 'blue', LAST_INSERT_ID()), (NULL, 'dress', 'white', LAST_INSERT_ID()), (NULL, 't-shirt', 'blue', LAST_INSERT_ID());

INSERT INTO persons VALUES (NULL, 'Lilliana Angelovska'); INSERT INTO shirts VALUES

(NULL, 'dress', 'orange', LAST_INSERT_ID()), (NULL, 'polo', 'red', LAST_INSERT_ID()), (NULL, 'dress', 'blue', LAST_INSERT_ID()), (NULL, 't-shirt', 'white', LAST_INSERT_ID()); SELECT * FROM persons;

Id Name

1 2

Antonio Paz Lilliana Angelovska SELECT * FROM shirts;

Id style color owner

1 2 3 4 5 6 7 Polo Dress t-shirt Dress Polo Dress t-shirt blue white blue orange red blue white 1 1 1 2 2 2 2 SELECT s.* FROM persons p, shirts s

WHERE p.name LIKE 'Lilliana%' AND s.owner = p.id

AND s.color <> 'white';

Id style color owner

4 5 6 Dress Polo Dress orange red blue 2 2 2

Ch−ơng IV : Hệ thống quyền truy nhập cơ Sở Dữ LIệU Trong MYSql

Một phần của tài liệu Tài liệu Tài liệu tham khảo: Ngôn ngữ lập trình PHP doc (Trang 101 - 105)

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

(115 trang)