ในบทเรียนนี้ จะนำเสนอเกี่ยวกับการสร้างฐานข้อมูล และตาราง โดยฟังก์ชั่นที่สำคัญ คือ mysql_query() |
การสร้างฐานข้อมูล
การสร้างฐานข้อมูลใน MySQL มี syntax ดังนี้
CREATE DATABASE database_name |
|
คุณต้องใช้ MySQL syntax ข้างบนนี้ ควบคู่ไปกับฟังก์ชั่น mysql_query() มาดูตัวอย่างกัน ในที่นี้จะสร้างฐานข้อมูลชื่อว่า "my_data"
<?php
$con = mysql_connect("localhost","joey","abc123");
if (!$con)
{
die('ติดต่อฐานข้อมูลไม่ได้ เนื่องจาก: ' . mysql_error());
}
$sql = "CREATE DATABASE my_data";
if (mysql_query($sql,$con))
{
echo "ฐานข้อมูล my_data สร้างแล้ว";
}
else
{
echo "เกิดความผิดพลาด: " . mysql_error();
}
?>
|
|
|
การสร้างตาราง
การสร้างตารางใน MySQL มี syntax ดังนี้
CREATE TABLE table_name
(
column_name1 data_type,
column_name2 data_type,
.......
)
|
|
ตัวอย่างการสร้างตารางข้างล่างนี้จะแสดงการสร้างตารางชื่อว่า "Customers" ที่มี 3 คอลัมน์ คือ FirstName, LastName และ Age
mysql_select_db("my_data", $con);
$sql = "CREATE TABLE Customers
(
FirstName varchar(15),
LastName varchar(15),
Age int
)";
mysql_query($sql,$con);
|
|
จากตัวอย่าง ต้องทำการเลือกฐานข้อมูลซะก่อนในบรรทัดที่หนึ่ง แล้วจึงจะทำการสร้างตารางได้
ถ้า data type เป็น varchar จะต้องระบุค่าพารามิเตอร์ลงไปด้วย ในที่นี้ คือ 15 ตัวอักษร |
ตารางของชนิดข้อมูล (Data Type)
ชนิดของข้อมูลอาจแบ่งได้ 3 กลุ่มหลักๆ คือ ตัวเลข, วันที่และเวลา และ ข้อความ (String) สำหรับค่าตัวเลขสามารถกำหนดความยาวของตัวเลขและจำนวนหลังจุดทศนิยมได้ ขึ้นอยู่กับเป็นข้อมูลชนิดใด ในที่นี้ค่าความยาวของตัวเลขและข้อความ รวมจุดทศนิยมจะแทนด้วยตัว M และจำนวนตัวเลขหลังจุดทศนิยมจะแทนด้วยตัว D
ข้อมูลชนิดตัวเลข (Numeric)
Type | Bytes | Description |
TINYINT(M) | 1 | -128 ถึง 127 หรือ 0 ถึง 255 |
SMALLINT(M) | 2 | -32768 ถึง 32767 หรือ 0 ถึง 65535 |
MEDIUMINT(M) | 3 | -8388608 ถึง 8388607 หรือ 0 ถึง 16777215 |
INT(M), INTEGER(M) | 4 | -231 ถึง 231-1 หรือ 0 ถึง 232-1 |
BIGINT(M) | 8 | -263 ถึง 263-1 หรือ 0 ถึง 264-1 |
FLOAT(M,D) | 4 | +-1.175494351E-38 +-3.402823466E+38 |
DOUBLE(M,D) | 8 | +-1.7976931348623157E+308 +-2.2250738585072014E-308 |
DECIMAL(M,D) | M+2 | เปลี่ยนแปลงได้ ขึ้นอยู่กับความยาวของตัวเลข (M) |
ข้อมูลชนิดวันที่และเวลา (Date and Time)
Type | Form | Description |
DATE | YYYY-MM-DD | แสดงวันที่ |
TIME | HH:MM:SS | แสดงเวลา |
DATETIME | YYYY-MM-DD HH:MM:SS | แวดงวันที่และเวลา |
TIMESTAMP[(M)] | YYYYMMDDHHMMSS | แสดงวันที่และเวลาตามรูปแบบที่กำหนด ขึ้นอยู่กับ M ว่ายาวเท่าไรด้วย |
YEAR[(2|4)] | YYYY | แสดงปี ได้ทั้ง 2 หลัก หรือ 4 หลัก |
ข้อมูลชนิดสตริง (String)
Type | Description |
CHAR(M) | มีค่า 1 ถึง 255 |
VARCHAR(M) | มีค่า 1 ถึง 255 |
TINYTEXT | มีค่า 1 ถึง 255 |
TEXT BLOB | มีค่า 1 ถึง 65535 |
MEDIUMTEXT MEDIUMBLOB | มีค่า 1 ถึง 16777215 |
LONGTEXT LONGBLOB | มีค่า 1 ถึง 4294967295 |
ข้อมูลชนิด SET และ ENUM
Type | Description |
ENUM(value1,value2,...) | เป็นการเก็บข้อมูลสตริงเข้าไว้เป็นรายการไว้ก่อน โดยค่าแรกถูกแทนด้วยค่า 1 หากรายการไม่ตรงกับรายการใดเลย จะแทนด้วยค่า 0 หรือจะใส่เป็นค่าตรงๆเลยก็ได้ ข้อมูลชนิดนี้จะช่วยลดพื้นที่การจัดเก็บได้อย่างมาก เหมาะกับการเลือกแบบลิสต์บ็อกซ์ เพราะเลือกได้เพียง 1 ตัวเลือกเท่านั้น
ENUM เก็บค่ารายการได้สูงถึง 65535 ตัวเลือก |
SET(value1,value2,...) | คล้ายกับ ENUM แต่เลือกรายการได้มากกว่าหนึ่งตัวเลือก จะใช้เลขฐานสองเก็บค่าตัวเลือก โดยรายการแรกมีค่า 1, 2, 4, 8, 16, 32,... ไปเรื่อยๆ ถ้าเลือกรายการไหนก็เอามาบวกกันจะได้ค่าที่จะเก็บบันทึก เหมาะกับการเลือกแบบเช็คบ็อกซ์ เพื่อให้ผู้ตอบเลือกได้มากกว่า 1 ตัวเลือก
SET เก็บค่ารายการได้เพียง 64 ตัวเลือก |
|
|
Primary Key และ Auto increment
แต่ละตารางควรจะมีค่าที่ไม่ซ้ำกันในแต่ละเรคอร์ด เพื่อแยกข้อมูลได้ชัดเจน ฟิลด์แบบนี้เรียกว่า primary key ส่วนใหญ่จะเป็นฟิลด์ที่ระบุค่า ID และมักจะใช้ AUTO_INCREMENT เพื่อให้ตัวเลขรันเรียงไปเรื่อยๆ ทีละหนึ่ง เพื่อไม่ให้ฟิลด์นั้นไม่ซ้ำกันเลย และเพื่อไม่ให้เป็นค่าว่าง ต้องเพิ่ม NOT NULL ลงไปด้วย
ตัวอย่างข้างล่างนี้จะเพิ่มฟิลด์ id เป็น primary key ซึ่งจะไม่มีค่าซ้ำกันได้เลย
$sql = "CREATE TABLE Customers
(
id int NOT NULL AUTO_INCREMENT,
PRIMARY KEY(id),
FirstName varchar(15),
LastName varchar(15),
Age int
)";
mysql_query($sql,$con);
|
|