วันศุกร์ที่ 1 มิถุนายน พ.ศ. 2555

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)

TypeBytesDescription
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)

TypeFormDescription
DATEYYYY-MM-DDแสดงวันที่
TIMEHH:MM:SSแสดงเวลา
DATETIMEYYYY-MM-DD HH:MM:SSแวดงวันที่และเวลา
TIMESTAMP[(M)]YYYYMMDDHHMMSSแสดงวันที่และเวลาตามรูปแบบที่กำหนด ขึ้นอยู่กับ M ว่ายาวเท่าไรด้วย
YEAR[(2|4)]YYYYแสดงปี ได้ทั้ง 2 หลัก หรือ 4 หลัก

ข้อมูลชนิดสตริง (String)

TypeDescription
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

TypeDescription
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);

ไม่มีความคิดเห็น:

แสดงความคิดเห็น