Software Siam Board

 

 

ค้นหา
Software Siam Board เว็บบอร์ด Database การ connect และ disconnect MySQL server
ดู: 1379|ตอบ: 5
go

การ connect และ disconnect MySQL server

Rank: 1

เข้าใช้ล่าสุด
5-11-2010 
ระดับการอ่าน
10 
ชื่อเสียง
0  
ความดี
0  
สตางค์
25  
เครดิต
37 
จำนวนโพสต์
12 
กระทู้
11 
UID
299 
โพสต์เมื่อ 6-11-2010 00:00 |แสดงโพสต์ทั้งหมด
7.! บทที่ 7 วิธีใช้งาน MySQL เบื้องต้น
7.1!การ connect และ disconnect MySQL server
การ connect ไปยัง server จะต้องใช้ MySQL user name และ password ถ้า server run อยู่บน
เครื่องอื่นคนต้องบอก host name ของเครื่อง server ด้วย
shell> mysql -h host -u user -p
Enter password: ********
เครื่องหมาย ******** จะปรากฏแทนที่ password ของคุณ เมื่อคุณป้อน password หากคุณสามารถ login
เข้ามาได้ คุณจะเห็น mysql> prompt ซึ่ง หมายถึง MySQL พร้อมที่จะรับคำ สั่งจากคุณ
shell> mysql -h host -u user -p
Enter password: ********
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 459 to server version: 3.22.20a-log
Type 'help' for help.
mysql>
หลังจากคุณสามารถ connect ไปยัง MySQL server ได้แล้ว คุณสามารถ disconnect ได้โดยพิมพ์คำ ว่า quit
หรือกดปุ่ม Control-D
mysql> QUIT
Bye
7.2!การพิมพ์คำ สั่งเพื่อดึงข้อมูลจาก database (Entering Queries)
ในขั้นต้น ให้พิมพ์คำ สั่งเพื่อ ถาม version ของ MySQL server และ วันที่ปัจจุบันของเครื่อง ตามตัว
อย่างข้างล่างแล้วกดปุ่ม Enter
mysql> SELECT VERSION(), CURRENT_DATE;
+--------------+--------------+
| version() | CURRENT_DATE |
+--------------+--------------+
| 3.22.20a-log | 1999-03-19 |
+--------------+--------------+
1 row in set (0.01 sec)
mysql>
การ query ขอ้ มลู ข้างต้นแสดงให้เห็นวิธีการพิมพ์คำ สั่งให้กับ MySQL ดงั นี้:
?! ทุกๆ คาํ สงั่ทปี่ ระกอบดว้ย SQL statement จะตอ้ งปดิ ทา้ยดว้ยเครอื่งหมาย semicolon (
?! เมื่อคุณพิมพ์คำ สั่งแล้วกด Enter, MySQL จะส่งคำ สั่งไปยัง server เพื่อประมวลผลและจากนั้นก็
แสดงผลลัพธ์กลับมาให้ที่หน้าจอ พร้อมทั้งแสดง mysql> อีกครั้งเพื่อรอรับคำ สั่งครั้งใหม่
?! mysql แสงผลลัพธ์ของการ query ในรูปแบบของตาราง แถวแรกของตารางคือชื่อของ column หรือ
expression ที่คุณป้อนเข้าไป ส่วนแถวถัดไปจะเป็นผลลัพธ์ที่ได้จากการ query
?! mysql จะแสดงจำ นวนแถว (records) ที่ได้จากการ query และ ใช้เวลาในการ query นานเท่าใด ซึ่ง
จะทำ ให้เราทราบถึงประสิทธิภาพของ server ได้อย่างคร่าวๆ
Keywords ทใี่ชอ้ าจพมิ พ์โดยใช้ตัวเล็กหรือตัวใหญ่ก็ได้ เชน่ :
mysql> SELECT VERSION(), CURRENT_DATE;
mysql> select version(), current_date;
mysql> SeLeCt vErSiOn(), current_DATE;
คุณสามารถใช้ mysql ในการคำ นวณก้ได้ เช่น :
mysql> SELECT SIN(PI()/4), (4+1)*5;
+-------------+---------+
| SIN(PI()/4) | (4+1)*5 |
+-------------+---------+
| 0.707107 | 25 |
+-------------+---------+
คำ สั่งที่ป้อนเข้าไปใน mysql> prompt ไม่จำ เป็นต้องอยู่บรรทัดเดียวกันทั้งหมด เนื่องจาก mysql จะพิจารณา
ว่า ทุกคำ สั่งต้องสิ้นสุดด้วยเครื่องหมาย semicolon( เช่น
mysql> SELECT
-> USER()
-> ,
-> CURRENT_DATE;
+--------------------+--------------+
| USER() | CURRENT_DATE |
+--------------------+--------------+
| joesmith@localhost | 1999-03-18 |
+--------------------+--------------+
จากตัวอย่างข้างต้น จะเห็นว่า prompt ของ mysql เปลี่ยนจาก mysql> เป็น -> เมื่อคุณกดปุ่ม enter
โดยที่ยังไม่ใส่เครื่องหมาย semicolon หากคุณต้องการยกเลิกคำ สั่งที่คุณพิมพ์ไปแล้ว คุณ
สามารถยกเลิกได้โดยการพิมพ์ \c
mysql> SELECT
-> USER()
-> \c
mysql>
เมื่อคุณยกเลิกคำ สั่งแล้ว prompt -> ก็จะกลับมาเป็น mysql> เพื่อรอรับคำ สั่งใหม่ต่อไป
Prompt ความหมาย
mysql> พร้อมรับคำ สั่งต่อไป
-> รอรับคำ สั่งบรรทัดต่อไป
?> รอรับคำ สั่งบรรทัดต่อไป ซึ่งจะต้องมีเครื่องหมาย single quote ในคำ สั่งด้วย
?> รอรับคำ สั่งบรรทัดต่อไป ซึ่งจะต้องมีเครื่องหมาย double quote ในคำ สั่งด้วย
ตารางแสดงรูปแบบของ prompt ที่คุณสามารถพบได้ใน MySQL
7.3!ตัวอย่างของการ query
7.3.1! การสร้างตาราง
ให้ทดลองสร้างตารางชื่อ shop เพื่อเก็บราคาของหนังสือ สำ หรับแต่ละตัวแทนจำ หน่าย
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);
Okay, so the example data is:
SELECT * FROM shop
+---------+--------+-------+
| article | dealer | price |
+---------+--------+-------+
| 0001 | A | 3.45 |
| 0001 | B | 3.99 |
| 0002 | A | 10.99 |
| 0003 | B | 1.45 |
| 0003 | C | 1.69 |
| 0003 | D | 1.25 |
| 0004 | D | 19.95 |
+---------+--------+-------+
7.3.2! การสร้าง และ ใช้งาน database
(1)! การสร้าง database
ถ้า administrator สร้าง database ให้คุณในตอนที่ set up permission, คุณสามารถใช้มันได้เลย
หากยัง คุณต้องสร้าง database ขึ้นมาเอง ดังนี้:
mysql> CREATE DATABASE student;
สำ หรับการใช้งานบน Linux, ชื่อของ database เป็นแบบ case sensitive นั้นคือ database student ไม่
เหมือนกับ Student และ ไม่เหมือนกับ STUDENT ซึ่งการตั้งชื่อ table ก็ใช้กฎเดียวกันด้วย
การสรา้ง database จะสรา้ งขนึ้ มาในครงั้แรกเพยี งครงั้เดยี วเทา่นนั้ แต่การใช้งานแต่คุณต้องเลือก
database กอ่ นที่จะใช้งานทุกครั้ง
(2)! การใช้งาน database
mysql> USE student
Database changed
อีกวิธีคือ ระบุ database ที่ต้องการใช้งาน ตอน login ใช้ MySQL Server เลย
shell> mysql -h host -u user -p database_name
Enter password: ********
7.4!การ Load ข้อมูลจากไฟล์ ลงไปใน ตาราง
สมมติว่าเราสร้าง database ชื่อ petshop และสร้าง table ชื่อ pet โดยใช้ syntax ดังนี้
mysql> CREATE DATABASE petshop;
mysql> CREATE TABLE pet (name VARCHAR(20), owner VARCHAR(20),
-> species VARCHAR(20), sex CHAR(1), birth DATE, death DATE);
หลักจากมี database และ สร้าง table ได้แล้ว เราจำ เป็นต้องเรียนคำ สั่ง LOAD DATA และ
INSERT เพื่อนำ ข้อมูลเข้าไปเก็บใน table สมมติว่าคุณสร้าง table pet โดยมีรายละเอียดของตารางและ
ข้อมูล ดังนี้
name owner species sex birth death
Fluffy Harold cat f 1993-02-04
Claws Gwen cat m 1994-03-17
Buffy Harold dog f 1989-05-13
Fang Benny dog m 1990-08-27
Bowser Diane dog m 1998-08-31 1995-07-29
Chirpy Gwen bird f 1998-09-11
Whistler Gwen bird 1997-12-09
Slim Benny snake m 1996-04-29
ถ้าคุณมีแต่ table ว่างๆ วิธีการง่ายๆ ที่จะ load ข้อมูลเข้า table คือ การสร้าง text file ซึ่งประกอบ
ด้วยแถวสำ หรับสัตว์แต่ละชนิด จากนั้นทำ การ load ข้อมูลใน file เข้าไปไว้ใน table เช่น สร้าง file ชื่อ
pet.txt ที่มี 1 record ต่อ 1 บรรทัด ซึ่งค่าแต่ละค่าแยกจากการด้วยเครื่องหมาย tab เรียงตามลำ ดับใน create
table statement สำ หรับ column ใดๆ ที่ไม่มีข้อมูลอยู่ ให้ใส่เครื่องหมาย \N เช่น
Whistler Gwen bird \N 1997-12-09 \N
การ load text file ชื่อ pet.txt ไปเก็บใน pet table ใช้คำ สั่ง
mysql> LOAD DATA LOCAL INFILE "pet.txt" INTO TABLE pet;
ถ้าคุณต้องการเพิ่ม record เข้าไปด้วยการ INSERT ให้ใช้คำ สั่ง
mysql> INSERT INTO pet
-> VALUES ('Puffball','Diane','hamster','f','1999-03-30',NULL);
โดยที่ค่าที่จะ insert เข้าไป จะต้องเรียงตาม column เหมือนกัน CREATE TABLE statement คา่ ใดไม่มีให้
ใช้ NULL เติมแทน
7.5!การดึงข้อมูลออกมาจากตาราง
คำ สั่ง SELECT ถูกใช้ในการดึงข้อมูลออกมาจากตาราง รูปแบบทั่วไปของคำ สั่ง select เขียนได้ดังนี้
SELECT what_to_select
FROM which_table
WHERE conditions_to_satisfy
what_to_select บอกว่า select ข้อมูลอะไร อาจเป็นชื่อ column หรือ * ซึ่งหมายถึงทุก
column กไ็ด ?which_table บอกว่า จะ select ขอ้ มูลจากตารางไหน
The WHERE clause เป็นตัวเลือก ไม่จำ เป็นต้องพิมพ์
conditions_to_satisfy เป็นตัวกำ หนดเงื่อนไขของข้อมูลที่จะดึงมาจากตาราง
7.5.1! เลือกข้อมูลทั้งตาราง
วิธีการ select ขอ้ มูลทั้งหมดมาจากตาราง
mysql> SELECT * FROM pet;
+----------+--------+---------+------+------------+------------+
| 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 |
+----------+--------+---------+------+------------+------------+
7.5.2! เลอื กข้อมูลเฉพาะบางแถว (บาง records)
มีการใส่เงื่อนไขลงไปใน WHERE clause เช่น เลือกข้อมูลของสัตว์เลี้ยงที่ชื่อ ?Bowser? เท่านั้น
mysql> SELECT * FROM pet WHERE name = "Bowser";
+--------+-------+---------+------+------------+------------+
| name | owner | species | sex | birth | death |
+--------+-------+---------+------+------------+------------+
| Bowser | Diane | dog | m | 1989-08-31 | 1995-07-29 |
+--------+-------+---------+------+------------+------------+
เลือกข้อมูลของสัตว์เลี้ยงที่เกิดหลังจากปี 1999
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 |
+----------+-------+---------+------+------------+-------+
คุณสามารถใส่เงื่อนไขหลายๆ เงื่อนไขรวมกันได้ โดยใช้คำ เชื่อมเช่น AND , OR
mysql> SELECT * FROM pet WHERE species = "dog" AND sex = "f";
+-------+--------+---------+------+------------+-------+
| name | owner | species | sex | birth | death |
+-------+--------+---------+------+------------+-------+
| Buffy | Harold | dog | f | 1989-05-13 | NULL |
+-------+--------+---------+------+------------+-------+
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 |
+----------+-------+---------+------+------------+-------+
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 |
+-------+--------+---------+------+------------+-------+
7.5.3! เลอื กข้อมูลเฉพาะบางคอลัมน์
คุณสามารถเลือกข้อมูลออกมาเฉพาะ columns ได้ โดยการระบุชื่อ columns ใน SELECT
statement
mysql> SELECT name, birth FROM pet;
+----------+------------+
| name | birth |
+----------+------------+
| Fluffy | 1993-02-04 |
| Claws | 1994-03-17 |
| Buffy | 1989-05-13 |
| Fang | 1990-08-27 |
| Bowser | 1989-08-31 |
| Chirpy | 1998-09-11 |
| Whistler | 1997-12-09 |
| Slim | 1996-04-29 |
| Puffball | 1999-03-30 |
+----------+------------+
ตอ้ งการหาชื่อเจ้าของสัตว์เลี้ยง
mysql> SELECT owner FROM pet;
+--------+
| owner |
+--------+
| Harold |
| Gwen |
| Harold |
| Benny |
| Diane |
| Gwen |
| Gwen |
| Benny |
| Diane |
+--------+
ตอ้ งการหาชื่อเจ้าของสัตว์เลี้ยงโดยไม่ต้องการใช้แสดงชื่อซํ้ากันใน record ให้ใช้คำ สงั่ DISTINCT:
mysql> SELECT DISTINCT owner FROM pet;
+--------+
| owner |
+--------+
| Benny |
| Diane |
| Gwen |
| Harold |
+--------+
7.6!การใช้ Pattern matching
SQL pattern matching ใช้ ?_? แทนที่ตัวอักษรใดๆ 1 ตัว และ `%' แทนที่ตัวอักษรใดๆ กี่ตัวก็ได้
สำ หรับ MySQL, SQL patterns เป็นการ match แบบ case insensitive เมื่อคุณใช้ SQL patterns ให้ใช้ คำ
ว่า LIKE หรือ NOT LIKE ในการเปรียบเทียบ ตัวอย่างเช่น
หาชื่อที่ขึ้นต้นด้วย ?b? :
mysql> SELECT * FROM pet WHERE name 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 |
+--------+--------+---------+------+------------+------------+
หาชื่อที่ลงท้ายด้วย ?fy? :
mysql> SELECT * FROM pet WHERE name LIKE "%fy";
+--------+--------+---------+------+------------+-------+
| name | owner | species | sex | birth | death |
+--------+--------+---------+------+------------+-------+
| Fluffy | Harold | cat | f | 1993-02-04 | NULL |
| Buffy | Harold | dog | f | 1989-05-13 | NULL |
+--------+--------+---------+------+------------+-------+
หาชื่อที่มี ?w? อยู่ตำ แหน่งใดก็ได้ ในชื่อ :
mysql> SELECT * FROM pet WHERE name LIKE "%w%";
+----------+-------+---------+------+------------+------------+
| name | owner | species | sex | birth | death |
+----------+-------+---------+------+------------+------------+
| Claws | Gwen | cat | m | 1994-03-17 | NULL |
| Bowser | Diane | dog | m | 1989-08-31 | 1995-07-29 |
| Whistler | Gwen | bird | NULL | 1997-12-09 | NULL |
+----------+-------+---------+------+------------+------------+
หาชอื่ทปี่ ระกอบดว้ยตวัอกั ษรอะไรกไ็ด้ จำ นวน 5 ตวั อกั ษร ให้ใช้สัญลักษณ์ ?_? :
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 |
+-------+--------+---------+------+------------+-------+
7.7!การนับจำ นวนแถวของของข้อมูลที่ถูก select
ใช้ function COUNT() ในการนับจำ นวนแถวที่ query ได้ โดยใช้ร่วมกับ SELECT statement:
mysql> SELECT COUNT(*) FROM pet;
+----------+
| COUNT(*) |
+----------+
| 9 |
+----------+
ถ้าต้องการ query ชื่อเจ้าของ และ จำ นวนสัตว์เลี้ยงที่แต่ละคนมีอยู่:
mysql> SELECT owner, COUNT(*) FROM pet GROUP BY owner;
+--------+----------+
| owner | COUNT(*) |
+--------+----------+
| Benny | 2 |
| Diane | 2 |
| Gwen | 3 |
| Harold | 2 |
+--------+----------+

Rank: 4

เข้าใช้ล่าสุด
10-3-2013 
ระดับการอ่าน
30 
ชื่อเสียง
0  
ความดี
0  
สตางค์
196  
เครดิต
333 
จำนวนโพสต์
137 
กระทู้
UID
4158 
โพสต์เมื่อ 12-5-2012 23:08 |แสดงโพสต์ทั้งหมด

Rank: 3Rank: 3

เข้าใช้ล่าสุด
1-8-2012 
ระดับการอ่าน
20 
ชื่อเสียง
0  
ความดี
0  
สตางค์
63  
เครดิต
126 
จำนวนโพสต์
63 
กระทู้
UID
6851 
โพสต์เมื่อ 25-6-2012 21:39 |แสดงโพสต์ทั้งหมด

Rank: 1

เข้าใช้ล่าสุด
13-11-2012 
ระดับการอ่าน
10 
ชื่อเสียง
0  
ความดี
0  
สตางค์
17  
เครดิต
49 
จำนวนโพสต์
32 
กระทู้
UID
7196 
โพสต์เมื่อ 2-9-2012 13:21 |แสดงโพสต์ทั้งหมด
ขอบคุณมากมากค่ะ

Rank: 5Rank: 5

เข้าใช้ล่าสุด
27-9-2014 
ระดับการอ่าน
50 
ชื่อเสียง
0  
ความดี
0  
สตางค์
228  
เครดิต
513 
จำนวนโพสต์
285 
กระทู้
UID
4901 
โพสต์เมื่อ 8-9-2012 19:26 |แสดงโพสต์ทั้งหมด
เริ่มจะงง อิอิ

Rank: 3Rank: 3

เข้าใช้ล่าสุด
6-2-2014 
ระดับการอ่าน
20 
ชื่อเสียง
0  
ความดี
0  
สตางค์
48  
เครดิต
111 
จำนวนโพสต์
63 
กระทู้
UID
9711 
โพสต์เมื่อ 11-1-2013 17:08 |แสดงโพสต์ทั้งหมด
ขอบคุณครับ
คุณต้องเข้าสู่ระบบก่อนจึงจะสามารถตอบกลับ เข้าสู่ระบบ | สมัครสมาชิก

รับวางระบบแลน รับเดินสายแลน รับเดินสายโทรศัพท์

รูปแบบข้อความล้วน|www.softwaresiam.com

GMT+7, 21-11-2014 15:11 , Processed in 0.204890 second(s), 10 queries .

Powered by Discuz! X1.5

© 2001-2010 Comsenz Inc. Thai Language by DiscuzThai! Team.