My SQL Documentation (sưu tm)
Trang: 1
MYSQL DOCUMENTATION
(sưu tm)
Trong bài này, gi s bn đã có MySQL cài đặt sn trong máy và biết cách
connect và disconnect vào server ri. Xin nhc li, để connect vào server
mysql, bn click vào file mysql.exe trong thư mc bin. Hoc đánh lnh ngoài
dos như sau:
shell> mysql -h <hostname> -u <username> -p;
Enter password: ******** (password ca bn)
1. Vào queries (yêu cu):
Phi chc chn rng bn đã connect vào server ri.
Lnh để vào queries là: select. Ví d, để xem version number hay ngày hin
ti bn 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>
Gii thích:
1. Các lnh trong sql được kết thúc bi du chm phy (;). (tr 1 s lnh như
quit là trường hp đặc bit)
2. Khi thc hin lnh, mysql chuyn nó đến server và yêu cu thc hin lnh.
Do đó, "mysql>" cui cùng báo hiu yêu cu đã được thc hin.
3. mysql đưa ra kết qu dưới dng 1 bng (table) gm các ct (column) và hàng
(row). Hàng đầu tiên cho biết Nhãn (label) ca tng 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 hin được các phép tính đơn gin.
Ví d:
mysql> select sin(pi()/4), (4+1)*5, mod(27,5);
Hãy th và bn s nhn được kết qu.
Hơn na, bn có th vào nhiu lnh trên cùng 1 hàng:
mysql> select version(); select now();
Chú ý, kết qu đưa ra là 2 bng.
Lnh cũng không phi lúc nào cũng được thc hin trên cùng 1 hàng. Ví d:
mysql> select
-> user()
-> ,
-> current_date;
+-----------------+--------------+
| user() | Current_date |
+-----------------+--------------+
| admin@localhost | 2002-03-29 |
+-----------------+--------------+
Chú ý du nhc đã được đổi t "mysql>" sang thành "->" khi bn đánh "enter"
mà không được kết thúc bng du chm phy ";".
My SQL Documentation (sưu tm)
Trang: 2
Nếu bn mun kết thúc dòng lnh mà không đưa ra kết qu (cancel) bn type
"\c". ví d:
mysql> select
-> user()
-> \c
mysql>
Mysql có 4 loi du nhc. Sau đây là ý nghĩa ca các du nhc:
Prompt Ý Nghĩa
mysql> Sn sàng cho 1 lnh mi
-> Ch cho hàng kế tiếp ca 1 lnh có nhiu hàng
'> Ch cho hành kế tiếp thc hin bi 1 chui trong du nháy đơn
"> Ch cho hành kế tiếp thc hin bi 1 chui trong du nháy đôi
ví d:
mysql> select user()
-> ;
hay
mysql> select * from my_table where name = "Thuy Lan age < 30;
">
Trong trường hp trên, nếu mun b câ lnh, phi làm như sau:
">" \c
vì nếu không đóng du ", mysql s ngh rng câu lnh \c là tiếp tc ca chui
trước đó.
2. To và s dng cơ s d liu (database)
Dùng lnh show để xem có nhng database nào trên server.
mysql> show databases;
+----------+
| Database |
+----------+
| mysql |
| test |
+----------+
Trong ví d trên, có 2 database trên server vi tên là mysql và test. Để làm
vic vi database, bn cn phi vào (access) nó bng câu lnh use.
mysql> use test
Database changed
(bn thy đấy, lnh use cũng ging như lnh quit, không cn du ; cui dòng
lnh)
a. To database:
Dùng câu lnh create. Create database <name of database>;
mysql> create database menagerie;
Bây gi bn show databases, databases "menagerie" bn mi to s có trên
server. Để s dng database mi to, dùng lnh use.
mysql> use menageries;
Database changed
My SQL Documentation (sưu tm)
Trang: 3
(chú ý: có du ; hay không có cũng không thành vn đề!)
Bn đã có database ri, bây gi bn s to bng.
b. To bng (table)
Trước hết, bn mun xem th xem có bao nhiêu bng đã tn ti. Bn dùng lnh
show tables.
mysql> show tables;
Empty set (0.00 sec)
Không có bng nào tn ti. Giã s bây gi bn mun to bng mi có tên là
"pet" gm các mc sau:
1. Tên (name)
2. owner (người nuôi)
3. species (loài)
4. sex (gii tính)
5. birth (ngy sinh)
6. death (ngày chết)
Câu lnh 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 đây là các chui thay đổi. Đối vơi
sex thì ta ch cn 1 kí tđủ ('m' for male và 'f' for female). Dùng date
cho birth và death là điu hin nhiên. Bây gi, bn th show tables xem sao?
Bn có th xem các thông tin v 1 bng:
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 | |
+---------+-------------+------+-----+---------+-------+
Bng trên là bng trng, nghĩa là chưa có record nào được lưu c. Bn cn
phi đưa record vào.
Đưa các giá tr vào bng:
mysql> insert into pet
-> values ('Puffball','Diane','hamster','f','1999-03-30',NULL);
Chú ý, giá tr cui cùng là NULL, có nghĩa là rng.
Để xem các giá tr va ri, bn dùng câu lnh như sau:
mysql> select * from pet;
Bây gi bn hãy đưa vào bng như sau:
+----------+--------+---------+------+------------+------------+
My SQL Documentation (sưu tm)
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, bn cũng có th dùng tp tin text để đưa record vào bng. Cách này
đơn gin và d hơn cách dùng câu lnh trên. Bn dùng bt c chương trình biên
son văn bn nào (ví d notepad). Nhp các record trên vào (lưu ý không nhp
hàng đầu, ch nhp các record thôi). Các giá tr ca tng record phi cách ra
bi du "tab". Và th t các giá tr căn c theo th t bn đã làm trong phn
to bng. Đối vi các giá tr "NULL", bn đánh ch "\N". Lưu tp tin đó thành
"pet.txt" vào trong thư mc "E:\mysql\data\menagerie\" (thư mc trên có th
khác vi bn, tùy theo cách cài đặt mysql ca tng người). Sau đó, bn đưa
file text đó vào bng như sau:
mysql> LOAD DATA INFILE "pet.txt" INTO TABLE pet;
(nếu dùng lnh trên mà báo li, bn th dùng câu lnh sau, vì tùy theo phiên
bn bn đang s dng, câu lnh có khác 1 chút)
mysql> LOAD DATA LOCAL INFILE "pet.txt" INTO TABLE pet;
Để xóa record, bn dùng lnh delete như sau:
mysql> DELETE FROM pet WHERE name = 'Chirpy';
Chú ý: nên hn chế dùng lnh delete vì lnh này không có hi li bn có tht
s xóa không khi nó thc hin. Vì thế, nếu dùng lnh như sau:
mysql> DELETE FROM pet; #KHÔNG NÊN TH!!!
Là bn mt hết tt c d liu.
Chú ý: ngay con vt Bowser: ngày sinh li đi sau ngày chết????! Để thay đổi
giá tr ca record mà bn l đánh nhm vào như trường hp trên, bn dùng câu
lnh như sau:
mysql> update pet set birth = '1989-08-31' where name = 'Bowser';
Tuy nhiên, vn còn 1 cách sa li nếu bn dùng tp tin ".txt". Bn m tp tin
pet.txt ra, sa li record bn mun sa. Ri đánh lnh sau:
mysql> set autocommit=1; #dùng để to nhanh li 1 bng.
mysql> delete from pet;
mysql> load data infile "pet.txt" into table pet;
3. Chn tng bng xác định:
Ví d:
a.
mysql> SELECT * FROM pet WHERE name = "Bowser";
+--------+-------+---------+------+------------+------------+
My SQL Documentation (sưu tm)
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, bn dùng các điu kin (condition) để thc hin vic chn. Bn cũng có
th kết hp các điu kin 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 điu kin and và or có th được "trn" (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. Chn 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 |