Hướng dẫn sử dụng MySQL
My SQL Documentation (sưu tầm) Trang: 1 MYSQL DOCUMENTATION (sưu tầm) Trong bài này, giả sử bạn đã có MySQL cài đặt sẳn trong máy và biết cách connect và disconnect vào server rồi. Xin nhắc lại, để connect vào server mysql, bạn click vào file mysql.exe trong thư mục bin. Hoặc đánh lệnh ở ngoài dos như sau: shell> mysql -h <hostname> -u <username> -p; Enter password: ******** (password của bạn) 1. Vào queries (yêu cầu): Phải chắc chắn rằng bạn đã connect vào server rồi. Lệnh để vào queries là: select. Ví dụ, để xem version number hay ngày hiện tại bạn type như sau: mysql> select version(), current_date; + + + | version() | Current_date | + | + | 3.22.20a-log | 2002-03-29 | + + + 1 row in set (0.00 sec) mysql> Giải thích: 1. Các lệnh trong sql được kết thúc bởi dấu chấm phẩy (;). (trử 1 số lệnh như quit là trường hợp đặc biệt) 2. Khi thực hiện lệnh, mysql chuyển nó đến server và yêu cầu thực hiện lệnh. Do đó, "mysql>" ở cuối cùng báo hiệu yêu cầu đã được thực hiện. 3. mysql đưa ra kết quả dưới dạng 1 bảng (table) gồm các cột (column) và hàng (row). Hàng đầu tiên cho biết Nhãn (label) của từng trường (field). Các hàng tiếp theo là kết quả. 4. mysql cũng đưa ra bao nhiêu hàng được trả về (row in set) và trong vòng bao nhiêu giây (sec) Ngoài ra, mysql cũng thể hiện được các phép tính đơn giản. Ví dụ: mysql> select sin(pi()/4), (4+1)*5, mod(27,5); Hãy thử và bạn sẽ nhận được kết quả. Hơn nữa, bạn có thể vào nhiều lệnh trên cùng 1 hàng: mysql> select version(); select now(); Chú ý, kết quả đưa ra là 2 bảng. Lệnh cũng không phải lúc nào cũng được thực hiện trên cùng 1 hàng. Ví dụ: mysql> select -> user() -> , -> current_date; + + + | user() | Current_date | + + + | admin@localhost | 2002-03-29 | + + + Chú ý dấu nhắc đã được đổi từ "mysql>" sang thành "->" khi bạn đánh "enter" mà không được kết thúc bằng dấu chấm phẩy ";". My SQL Documentation (sưu tầm) Trang: 2 Nếu bạn muốn kết thúc dòng lệnh mà không đưa ra kết quả (cancel) bạn type "\c". ví dụ: mysql> select -> user() -> \c mysql> Mysql có 4 loại dấu nhắc. Sau đây là ý nghĩa của các dấu nhắc: Prompt Ý Nghĩa mysql> Sẳn sàng cho 1 lệnh mới -> Chờ cho hàng kế tiếp của 1 lệnh có nhiều hàng '> Chờ cho hành kế tiếp thực hiện bởi 1 chuỗi trong dấu nháy đơn "> Chờ cho hành kế tiếp thực hiện bởi 1 chuỗi trong dấu nháy đôi ví dụ: mysql> select user() -> ; hay mysql> select * from my_table where name = "Thuy Lan age < 30; "> Trong trường hợp trên, nếu muốn bỏ câ lệnh, phải làm như sau: ">" \c vì nếu không đóng dấu ", mysql sẽ nghỉ rằng câu lệnh \c là tiếp tục của chuổi trước đó. 2. Tạo và sử dụng cơ sở dữ liệu (database) Dùng lệnh show để xem có những database nào trên server. mysql> show databases; + + | Database | + + | mysql | | test | + + Trong ví dụ trên, có 2 database trên server với tên là mysql và test. Để làm việc với database, bạn cần phải vào (access) nó bằng câu lệnh use. mysql> use test Database changed (bạn thấy đấy, lệnh use cũng giống như lệnh quit, không cẩn dấu ; ở cuối dòng lệnh) a. Tạo database: Dùng câu lệnh create. Create database <name of database>; mysql> create database menagerie; Bây giờ bạn show databases, databases "menagerie" bạn mới tạo sẽ có trên server. Để sử dụng database mới tạo, dùng lệnh use. mysql> use menageries; Database changed My SQL Documentation (sưu tầm) Trang: 3 (chú ý: có dấu ; hay không có cũng không thành vấn đề!) Bạn đã có database rồi, bây giờ bạn sẽ tạo bảng. b. Tạo bảng (table) Trước hết, bạn muốn xem thử xem có bao nhiêu bảng đã tồn tại. Bạn dùng lệnh show tables. mysql> show tables; Empty set (0.00 sec) Không có bảng nào tồn tại. Giã sử bây giờ bạn muốn tạo bảng mới có tên là "pet" gồm các mục sau: 1. Tên (name) 2. owner (người nuôi) 3. species (loài) 4. sex (giới tính) 5. birth (ngảy sinh) 6. death (ngày chết) Câu lệnh như sau: mysql> create table pet (name varchar(20), owner varchar(20), -> species varchar(20), -> sex char(1), birth date, death date); varchar dùng cho name, owner và species vì đây là các chuỗi thay đổi. Đối vơi sex thì ta chỉ cẩn 1 kí tự là đủ ('m' for male và 'f' for female). Dùng date cho birth và death là điều hiển nhiên. Bây giờ, bạn thử show tables xem sao? Bạn có thể xem các thông tin về 1 bảng: mysql> describe pet; + + + + + + + | Field | Type | Null | Key | Default | Extra | + + + + + + + | name | varchar(20) | YES | | NULL | | | owner | varchar(20) | YES | | NULL | | | species | varchar(20) | YES | | NULL | | | sex | char(1) | YES | | NULL | | | birth | date | YES | | NULL | | | death | date | YES | | NULL | | + + + + + + + Bảng trên là bảng trống, nghĩa là chưa có record nào được lưu cả. Bạn cần phải đưa record vào. Đưa các giá trị vào bảng: mysql> insert into pet -> values ('Puffball','Diane','hamster','f','1999-03-30',NULL); Chú ý, giá trị cuối cùng là NULL, có nghĩa là rỗng. Để xem các giá trị vừa rồi, bạn dùng câu lệnh như sau: mysql> select * from pet; Bây giở bạn hãy đưa vào bảng như sau: + + + + + + + My SQL Documentation (sưu tầm) Trang: 4 | name | owner | species | sex | birth | death | + + + + + + + | Fluffy | Harold | cat | f | 1993-02-04 | NULL | | Claws | Gwen | cat | m | 1994-03-17 | NULL | | Buffy | Harold | dog | f | 1989-05-13 | NULL | | Fang | Benny | dog | m | 1990-08-27 | NULL | | Bowser | Diane | dog | m | 1998-08-31 | 1995-07-29 | | Chirpy | Gwen | bird | f | 1998-09-11 | NULL | | Whistler | Gwen | bird | NULL | 1997-12-09 | NULL | | Slim | Benny | snake | m | 1996-04-29 | NULL | | Puffball | Diane | hamster | f | 1999-03-30 | NULL | + + + + + + + Ngoài ra, bạn cũng có thể dùng tập tin text để đưa record vào bảng. Cách này đơn giản và dễ hơn cách dùng câu lệnh trên. Bạn dùng bất cứ chương trình biên soạn văn bản nào (ví dụ notepad). Nhập các record trên vào (lưu ý không nhập hàng đầu, chỉ nhập các record thôi). Các giá trị của từng record phải cách ra bởi dấu "tab". Và thứ tự các giá trị căn cứ theo thứ tự bạn đã làm trong phần tạo bảng. Đối với các giá trị "NULL", bạn đánh chữ "\N". Lưu tập tin đó thành "pet.txt" vào trong thư mục "E:\mysql\data\menagerie\" (thư mục trên có thể khác với bạn, tùy theo cách cài đặt mysql của từng người). Sau đó, bạn đưa file text đó vào bảng như sau: mysql> LOAD DATA INFILE "pet.txt" INTO TABLE pet; (nếu dùng lệnh trên mà báo lổi, bạn thử dùng câu lệnh sau, vì tùy theo phiên bản bạn đang sử dụng, câu lệnh có khác 1 chút) mysql> LOAD DATA LOCAL INFILE "pet.txt" INTO TABLE pet; Để xóa record, bạn dùng lệnh delete như sau: mysql> DELETE FROM pet WHERE name = 'Chirpy'; Chú ý: nên hạn chế dùng lệnh delete vì lệnh này không có hỏi lại bạn có thật sự xóa không khi nó thực hiện. Vì thế, nếu dùng lệnh như sau: mysql> DELETE FROM pet; #KHÔNG NÊN THỬ!!! Là bạn mất hết tất cả dữ liệu. Chú ý: ngay con vật Bowser: ngày sinh lại đi sau ngày chết????! Để thay đổi giá trị của record mà bạn lỡ đánh nhầm vào như trường hợp trên, bạn dùng câu lệnh như sau: mysql> update pet set birth = '1989-08-31' where name = 'Bowser'; Tuy nhiên, vẫn còn 1 cách sửa lại nếu bạn dùng tập tin ".txt". Bạn mở tập tin pet.txt ra, sửa lại record bạn muốn sửa. Rồi đánh lệnh sau: mysql> set autocommit=1; #dùng để tạo nhanh lại 1 bảng. mysql> delete from pet; mysql> load data infile "pet.txt" into table pet; 3. Chọn từng bảng xác định: Ví dụ: a. mysql> SELECT * FROM pet WHERE name = "Bowser"; + + + + + + + My SQL Documentation (sưu tầm) Trang: 5 | name | owner | species | sex | birth | death | + + + + + + + | Bowser | Diane | dog | m | 1989-08-31 | 1995-07-29 | + + + + + + + b. mysql> SELECT * FROM pet WHERE birth >= "1998-1-1"; + + + + + + + | name | owner | species | sex | birth | death | + + + + + + + | Chirpy | Gwen | bird | f | 1998-09-11 | NULL | | Puffball | Diane | hamster | f | 1999-03-30 | NULL | + + + + + + + Ở đây, bạn dùng các điều kiện (condition) để thực hiện việc chọn. Bạn cũng có thể kết hợp các điểu kiện như sau: mysql> SELECT * FROM pet WHERE species = "dog" AND sex = "f"; + + + + + + + | name | owner | species | sex | birth | death | + + + + + + + | Buffy | Harold | dog | f | 1989-05-13 | NULL | + + + + + + + hay: mysql> SELECT * FROM pet WHERE species = "snake" OR species = -> "bird"; + + + + + + + | name | owner | species | sex | birth | death | + + + + + + + | Chirpy | Gwen | bird | f | 1998-09-11 | NULL | | Whistler | Gwen | bird | NULL | 1997-12-09 | NULL | | Slim | Benny | snake | m | 1996-04-29 | NULL | + + + + + + + Các điều kiện and và or có thể được "trộn" (intermix) vào nhau: mysql> SELECT * FROM pet WHERE (species = "cat" AND sex = "m") -> OR (species = "dog" AND sex = "f"); + + + + + + + | name | owner | species | sex | birth | death | + + + + + + + | Claws | Gwen | cat | m | 1994-03-17 | NULL | | Buffy | Harold | dog | f | 1989-05-13 | NULL | + + + + + + + 4. Chọn các hàng xác định (particular columns): mysql> SELECT name, birth FROM pet; + + + | name | birth | + + + | Fluffy | 1993-02-04 | | Claws | 1994-03-17 | | Buffy | 1989-05-13 | My SQL Documentation (sưu tầm) Trang: 6 | Fang | 1990-08-27 | | Bowser | 1989-08-31 | | Chirpy | 1998-09-11 | | Whistler | 1997-12-09 | | Slim | 1996-04-29 | | Puffball | 1999-03-30 | + + + Ở ví dụ trên, bạn chỉ chọn các hàng có tên là name và birth để "display". Để tìm xem ai là chủ của từng con, bạn lảm như sau: mysql> SELECT owner FROM pet; + + | owner | + + | Harold | | Gwen | | Harold | | Benny | | Diane | | Gwen | | Gwen | | Benny | | Diane | + + Tuy nhiên, Có nhiều tên được lập lại. Hẳn bạn không muốn điều đó, vì bạn chỉ cần biết tên của các chủ thôi. Do đó, bạn làm như sau: mysql>SELECT DISTINCT owner FROM pet; + + | owner | + + | Benny | | Diane | | Gwen | | Harold | + + Bạn có thể dùng WHERE để kết hợp các hàng lại với nhau. Ví dụ, bạn muốn ngày sinh của chó và mèo thôi: mysql> SELECT name, species, birth FROM pet -> WHERE species = "dog" OR species = "cat"; + + + + | name | species | birth | + + + + | Fluffy | cat | 1993-02-04 | | Claws | cat | 1994-03-17 | | Buffy | dog | 1989-05-13 | | Fang | dog | 1990-08-27 | | Bowser | dog | 1989-08-31 | + + + + 5. Sắp xếp: (sorting the rows) Với những mục đính cụ thể nào đó, bạn muốn sắp xếp những gì sẽ được đưa ra, bạn dùng câu lệnh: "sort by <Tên hàng> [desc] hay [asc]". Ví dụ: My SQL Documentation (sưu tầm) Trang: 7 mysql> SELECT name, birth FROM pet ORDER BY birth; + + + | name | birth | + + + | Buffy | 1989-05-13 | | Bowser | 1989-08-31 | | Fang | 1990-08-27 | | Fluffy | 1993-02-04 | | Claws | 1994-03-17 | | Slim | 1996-04-29 | | Whistler | 1997-12-09 | | Chirpy | 1998-09-11 | | Puffball | 1999-03-30 | + + + hoặc, bạn muốn sắp xếp theo trật tự từ trên xuống: mysql> SELECT name, birth FROM pet ORDER BY birth DESC; + + + | name | birth | + + + | Puffball | 1999-03-30 | | Chirpy | 1998-09-11 | | Whistler | 1997-12-09 | | Slim | 1996-04-29 | | Claws | 1994-03-17 | | Fluffy | 1993-02-04 | | Fang | 1990-08-27 | | Bowser | 1989-08-31 | | Buffy | 1989-05-13 | + + + DESC là DESCENDING, ASC là ASCENDING. Bạn cũng có thể sắp xếp nhiều hàng cùng 1 lúc bằng cách kết hợp các ORDER BY với nhau. Ví dụ bạn muốn sắp xếp kiểu con vật trước, sau đó đến ngày sinh của từng con, bạn sort như sau: mysql> SELECT name, species, birth FROM pet ORDER BY species, birth -> DESC; + + + + | name | species | birth | + + + + | Chirpy | bird | 1998-09-11 | | Whistler | bird | 1997-12-09 | | Claws | cat | 1994-03-17 | | Fluffy | cat | 1993-02-04 | | Fang | dog | 1990-08-27 | | Bowser | dog | 1989-08-31 | | Buffy | dog | 1989-05-13 | | Puffball | hamster | 1999-03-30 | | Slim | snake | 1996-04-29 | + + + + Chú ý: DESC chỉ áp dụng cho hàng birth (có nghĩa là ngay trước nó). Còn species vẫn được sắp xếp theo Asceding order. 6. Tính toán ngày: (Date Calculations) My SQL Documentation (sưu tầm) Trang: 8 MySQL cung cấp 1 số hàm tính ngày rất hữu hiệu. Thí dụ, bạn cần tính số tuổi của từng con vật? Để tính tuổi của từng con vật, bạn lấy nãm hiện tại và trừ đi nãm sinh, sau đó, trừ đi 1 nếu ngày hiện tại đi trước ngày sinh. Ví dụ: mysql> SELECT name, birth, current_date as now, -> (year(current_date)-year(birth)) -> -(right(current_date,5)<right(birth,5)) -> AS age -> FROM pet; kết quả: + + + + + | name | birth | CURRENT_DATE | age | + + + + + | Fluffy | 1993-02-04 | 2001-08-29 | 8 | | Claws | 1994-03-17 | 2001-08-29 | 7 | | Buffy | 1989-05-13 | 2001-08-29 | 12 | | Fang | 1990-08-27 | 2001-08-29 | 11 | | Bowser | 1989-08-31 | 2001-08-29 | 11 | | Chirpy | 1998-09-11 | 2001-08-29 | 2 | | Whistler | 1997-12-09 | 2001-08-29 | 3 | | Slim | 1996-04-29 | 2001-08-29 | 5 | | Puffball | 1999-03-30 | 2001-08-29 | 2 | + + + + + Trong đó: year() lấy giá trị nãm của từng giá trị mang kiểu DATE. Hàm right lấy giá trị từ bên phải. Giống như hàm right trong VB vậy. Hãy lấy thêm 1 thí dụ nữa: mysql> SELECT name, birth, CURRENT_DATE, -> (YEAR(CURRENT_DATE)-YEAR(birth)) -> - (RIGHT(CURRENT_DATE,5)<RIGHT(birth,5)) -> AS age -> FROM pet ORDER BY name; + + + + + | name | birth | CURRENT_DATE | age | + + + + + | Bowser | 1989-08-31 | 2001-08-29 | 11 | | Buffy | 1989-05-13 | 2001-08-29 | 12 | | Chirpy | 1998-09-11 | 2001-08-29 | 2 | | Claws | 1994-03-17 | 2001-08-29 | 7 | | Fang | 1990-08-27 | 2001-08-29 | 11 | | Fluffy | 1993-02-04 | 2001-08-29 | 8 | | Puffball | 1999-03-30 | 2001-08-29 | 2 | | Slim | 1996-04-29 | 2001-08-29 | 5 | | Whistler | 1997-12-09 | 2001-08-29 | 3 | + + + + + Bây giờ, bạn muốn tính tuổi của những con đã chết rổi: mysql> SELECT name, birth, death, -> (YEAR(death)-YEAR(birth)) - (RIGHT(death,5)<RIGHT(birth,5)) -> AS age -> FROM pet WHERE death IS NOT NULL ORDER BY age; + + + + + | name | birth | death | age | + + + + + | Bowser | 1989-08-31 | 1995-07-29 | 5 | + + + + + My SQL Documentation (sưu tầm) Trang: 9 Vì NULL là giá trị đặc biệt nên bạn phải dùng câu lệnh giốnh như ngôn ngữ nói như trên. (vấn đề này sẽ đề cập sau) Ngoài hàm year(), mysql còn cung cấp 1 số hàm khác để tính ngày như MONTH(), DAYOFMONTH(). Ví dụ: mysql> select month(now()); mysql> select dayofmonth(now()); Như vậy, bạn muốn lấy tháng của ngày sinh của từng con vật, bạn làm như sau: mysql> SELECT name, birth, MONTH(birth) FROM pet; + + + + | name | birth | MONTH(birth) | + + + + | Fluffy | 1993-02-04 | 2 | | Claws | 1994-03-17 | 3 | | Buffy | 1989-05-13 | 5 | | Fang | 1990-08-27 | 8 | | Bowser | 1989-08-31 | 8 | | Chirpy | 1998-09-11 | 9 | | Whistler | 1997-12-09 | 12 | | Slim | 1996-04-29 | 4 | | Puffball | 1999-03-30 | 3 | + + + + Do đó, để tìm xem tháng tới có phải cái sinh nhật nào không? giả sử bây giờ là tháng 4, bạn muốn tìm sinh nhật trong tháng 5: mysql> SELECT name, birth FROM pet WHERE MONTH(birth) = 5; + + + | name | birth | + + + | Buffy | 1989-05-13 | (trùng hợp thật, 13/5 cũng là SN của tôi) + + + Thế nhưng Nếu bạn đang ở tháng 12 thỉ sao? chẳng lẽ bạn lại đi tìm MONTH(birth) = 13 (???). Một điểu không thể phải không bạn? Do đó, mysql đã cung cấp cho ta 1 hàm DATE_ADD(). Hàm này cho phép bạn thêm vào ngày nào đó 1 khoảng thời gian xác định nào đó. Hãy thử như sau: mysql> SELECT now(), Date_add(now(), interval 1 day) as them 1 -> ngay, -> Date_add(now(), interval 1 month) as them 1 thang, -> Date_add(now(), interval 1 year) as them 1 nam, -> Date_add(now(), interval 1 hour) as them 1 gio, -> Date_add(now(), interval 1 minute) as them 1 phut, -> Date_add(now(), interval 1 second) as them 1 giay; Trở lại ví dụ của chúng ta, để tìm xem tháng tới có SN hay không, bạn chỉ cần so sánh giá trị tháng trong database với tháng sau là xong: mysql> SELECT name, birth FROM pet -> WHERE MONTH(birth) = MONTH(DATE_ADD(NOW(), INTERVAL 1 -> MONTH)); My SQL Documentation (sưu tầm) Trang: 10 Tuy nhiên, có 1 cách khác hay hơn, nếu bạn dùng hàm MOD(). Chắc hẳn các bạn ai cũng đã từng đụng với hảm mod cả trãm lẩn trong các bải tập lập trình rổi nhỉ! Vì thế, ví dụ sau đây thật dễ hiểu. mysql> SELECT name, birth FROM pet -> WHERE MONTH(birth) = MOD(MONTH(NOW()), 12) + 1; 7. Làm việc với giá trị NULL: Như đã nói ở phẩn trước, chúng ta sẽ quay lại với giá trị NULL. NULL có nghĩa là "không biết" (unknown). Vả vì nó đặc biệt như vậy, nên nó cũng được sử dụng 1 cách đặc biệt. Để làm việc với NULL, chúng ta không sử dụng các toán tử so sánh thông thường như <, >, <>, =. Để hiểu rõ, xin thử như sau: mysql> select 1 = null, 1 <> null, 1 < null, 1 > null; + + + + + | 1 = NULL | 1 <> NULL | 1 < NULL | 1 > NULL | + + + + + | NULL | NULL | NULL | NULL | + + + + + Như đã thấy, kết quả nhận được thật vô nghĩa. Hãy sử dụng như sau: mysql> select 1 is null, 1 is not null; + + + | 1 IS NULL | 1 IS NOT NULL | + + + | 0 | 1 | + + + Trong mysql, 0 hoặc Null là FALSE, tất cả các giá trị khác là TRUE. Do đó, kết quả trên là điều dễ hiểu. 8. Pattern Matching (xin lỗi mình không tìm được từ nào để dịch cả). Hãy nghỉ Pattern Matching dùng để tìm các record đặc biệt. SQL pattern matching cho phép bạn dùng '_' để gán với 1 kí tự riêng lẻ hay dùng '%' để gán 1 lúc nhiều kí tự. (hãy nghĩ giống như '?' và '*' vậy). Trong MySQL, pattern là "case insensity". Ngoài ra, trong SQL, bạn không dùng tóan tử =, <> cho pattern matching mà dùng LIKE hoặc NOT LIKE. Ví dụ: mysql> SELECT * FROM pet where name = "b%"; Empty set(0.00) mysql> SELECT * FROM pet where like 'b%'; + + + + + + + | name | owner | species | sex | birth | death | + + + + + + + | Buffy | Harold | dog | f | 1989-05-13 | NULL | | Bowser | Diane | dog | m | 1989-08-31 | 1995-07-29 | + + + + + + + Bạn đã thấy sự khác nhau giữa like va '=' chưa? Chú ý đến cả trường hợp INSENSITY ở trên. Để tìm tên các con vật kết thúc bởi 'fy': mysql> SELECT * FROM pet WHERE name LIKE '%fy'; [...]... tìm cấu trúc của 1 bảng nào đó MySQL cho phép bạn làm điều đó qua 1 số câu lệnh Bạn đă từng làm việc với SHOW DATABASES; bạn có thể tìm xem DATABASE nào đang được sử dụng: mysql> SELECT DATABASE(); + + | DATABASE() | + + | menagerie | + + Nếu bạn chưa sử dụng database nào hết, kết quả sẽ là trống 12 Ví dụ 1 vài queries thông dụng: Bây giở hãy tạo và sử dụng bảng "shop" bao gồm: o 1 trường... và sửa lại như sau: mysql> SELECT * FROM pet WHERE name REGEXP '^[bB]'; Mặt khác, nếu dùng version 3.23.4 thì bạn cũng có thể chỉ định cho mysql sử dụng "case sensity" được bằng cách dùng từ "BINARY" VÍ dụ: mysql> SELECT * FROM pet WHERE name REGEXP BINARY '^b'; Kết quả cho ra là: Empty set(0.02) Nếu bạn muốn tìm các pattern kết thúc bởi "fy", dùng $ Ví dụ: Trang: 11 My SQL Documentation (sưu tầm) mysql> ... article o 1 trường chứa tên của người bán hàng, tên là dealer o 1 trường chứa giá bán của các items Như vậy, ta sử dụng article và dealer lảm primary key Bây giở, hãy sử dụng database test có sẳn trong mysql để làm thí dụ này: mysql> use test; Database changed Bạn có thể tạo bảng như sau: mysql> -> -> -> -> CREATE TABLE shop ( article INT(4) UNSIGNED ZEROFILL DEFAULT '0000' NOT NULL, dealer CHAR(20)... có 5 chữ: mysql> SELECT * FROM pet WHERE name LIKE ' _'; + -+ + -+ + + -+ | name | owner | species | sex | birth | death | + -+ + -+ + + -+ | Claws | Gwen | cat | m | 1994-03-17 | NULL | | Buffy | Harold | dog | f | 1989-05-13 | NULL | + -+ + -+ + + -+ Ngoài ra, mysql còn sử dụng "extended regular expresions" cho pattern matching Khi sử dụng kiểu... new flea collar birthday First birthday Kiểm lại: mysql> show tables; mysql> select * from event; Nếu mọi thứ đều tốt đẹp, xin hãy tiếp tục Bây giở, giã sử bạn muốn lấy số tuổi của mỗi con vật khi nó có con Khi đó, bạn cẩn ngày sinh (mà ở trong bảng pet) và ngày xảy ra sự kiện đó (ở trong bảng event) Như vậy, bạn cần phải kết hợp 2 bảng lại với nhau mysql> -> -> -> SELECT event.name, (TO_DAYS(date)... species, sex; Đó là tất cả những gì cơ bản về MySQL Nhưng các bạn đã làm qua nhiều bài tập về Cơ sở dữ liệu rồi, và thấy rằng không phải lúc nào cũng dùng 1 bảng Như vậy, chúng ta hãy cùng nhau nghiên cứu MYSQL trên nhiều bảng 10 Làm việc với nhiều bảng: Bạn muốn lưu trữ thêm thông tin về các con vật của bạn? Trường hợp này, bạn cần phải có hơn 1 bảng Giả sử bạn muốn lưu thông tin về sự kiện các con... dụ: mysql> SELECT * FROM pet WHERE name REGEXP '^.{5}$'; Kết quả đưa ra giống như trên Ở đây, xin chú ý các '.' được lập lại 5 lẩn 9 Đếm số hàng (Counting Rows) Bạn muốn tìm có bao nhiêu con vật bạn đang có? hay có bao nhiêu con vật của từng chủ? Xin giới thiệu hàm count() Ví dụ: mysql> select count(*) from pet; + + | COUNT(*) | + + | 9 | + + Bạn muốn tìm mỗi chủ có bao nhiêu con vật? mysql> ... D | 19.95 | + -+ + -+ + Giá trị lớn nhất của cột: mysql> SELECT MAX(article) AS article FROM shop; + -+ | article | + -+ | 4 | + -+ + Tìm số hàng, dealer, và price của item mắc nhất: Như bạn đã biết, da dùng queries như sau: mysql> select article, dealer, price -> from shop -> where price = (select max(price) from shop); Vì mysql chưa trợ giúp sub-selects nên ta phải tìm giá trị lớn... sub-selects nên ta phải tìm giá trị lớn nhất trước sau đó mới dùng giá trị đó để làm tiếp Có 1 cách khác đỡ rắc rối hơn, bạn sắp xếp chúng theo thứ tự từ trên xuống, sau đó chỉ lấy record đầu tiên, sử dụng LIMIT: mysql> -> -> -> select article, dealer, price from shop order by price desc limit 1; + Tìm giá cao nhất của từng article SELECT article, max(price) as price FROM shop GROUP BY article; + -+... có thể sử dụng biến riêng của chính bạn Điều này sẽ làm cho bạn dễ dàng hơn cho các ví dụ trước kia: select @min_price:=min(price), @max_price:=max(price) from shop; select * from shop where price = @min_price or price = @max_price; + -+ + -+ | article | dealer | price | + -+ + -+ | 0003 | D | 1.25 | | 0004 | D | 19.95 | + -+ + -+ Đó là tất cả những gì cơ bản nhất của mysql Nếu . "c". ví dụ: mysql& gt; select -> user() -> c mysql& gt; Mysql có 4 loại dấu nhắc. Sau đây là ý nghĩa của các dấu nhắc: Prompt Ý Nghĩa mysql& gt; Sẳn sàng cho 1 lệnh. biệt) 2. Khi thực hiện lệnh, mysql chuyển nó đến server và yêu cầu thực hiện lệnh. Do đó, " ;mysql& gt;" ở cuối cùng báo hiệu yêu cầu đã được thực hiện. 3. mysql đưa ra kết quả dưới dạng. kết quả. 4. mysql cũng đưa ra bao nhiêu hàng được trả về (row in set) và trong vòng bao nhiêu giây (sec) Ngoài ra, mysql cũng thể hiện được các phép tính đơn giản. Ví dụ: mysql& gt; select