|
|
PHP MySQL Create

|
| ในบทเรียนนี้ จะนำเสนอเกี่ยวกับการสร้างฐานข้อมูล และตาราง โดยฟังก์ชั่นที่สำคัญ คือ 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); |
|
|
 |
|
| Advertise |
|
|