วันอาทิตย์ที่ 7 กุมภาพันธ์ พ.ศ. 2559

Assignment of W3

MySQL constraints


(what you have done)
ข้อบังคับของการใช้งาน MySql ได้แก่

1.PRIMARY KEY and UNIQUE Index Constraints

เนื่องจากการใช้คำสั่งเพื่อเปลี่ยน data อย่างเช่น INSERT หรือ UPDATE กับ data ที่เป็น primary-key, unique-key, หรือ foreign-key constraints อาจทำให้เกิด error ได้
ดังนั้น MySQL จึงมี IGNORE keywords ไว้ให้กับ key นั้น เมื่อเราเรียกใช้ INSERT หรือ UPDATE มันจะข้ามไปยัง row ต่อไปทันที 
ตัวอย่าง

ตารางของเรามีข้อมูลดังนี้

CREATE TABLE `file_names` (
`id` int(11) NOT NULL auto_increment,
`file_name` text NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `file_name` (`file_name`(200))
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=4 ;

นี่คือ คำสั่งของเรา

INSERT IGNORE INTO `its_streamingdata`.`file_names` (`id` ,
`file_name`) VALUES (NULL , 'a'), (NULL , 'a')

ตารางของเราก็จะมี 1 แถว ที่มี filename ของ a

2.FOREIGN KEY Constraints

เราสามารถดึงข้อมูลแบบข้าม relate data จากตาราง อื่นๆได้เลย และยังทำให้ข้อมูลที่ดึงมานั้นมีความต่อเนื่อง
ตัวอย่าง

mysql> SELECT TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME, CONSTRAINT_NAME 
     > FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE 
     > WHERE REFERENCED_TABLE_SCHEMA IS NOT NULL;
+--------------+---------------+-------------+-----------------+
| TABLE_SCHEMA | TABLE_NAME    | COLUMN_NAME | CONSTRAINT_NAME |
+--------------+---------------+-------------+-----------------+
| fk1          | myuser        | myuser_id   | f               |
| fk1          | product_order | customer_id | f2              |
| fk1          | product_order | product_id  | f1              |
+--------------+---------------+-------------+-----------------+
จะเห็นได้ว่า ข้อมูลที่เรา SELECT นั้นมาจากต่าง table กัน

3.Constraints on Invalid Data

วิธีการจัดการกับ Invalid Data ของ MySQL มีดังต่อนี้

- ถ้าเราพยายามใส่ค่าลงใน คอมลั่มจำนวน ที่เกินตาราง Mysql จะแทนที่ด้วยค่า 0 

- สำหรับ ข้อมูลชนิด string MySQL สามารถเก็บเป็น string ว่างๆ หรือ string ที่ยาวที่สุดเท่าที่จะเก็บในคอลั่มได้ 

- ถ้าพยายามจะเก็บ string ที่ไม่ได้ขึ้นต้นด้วยตัวเลข ลงใน คอลั่มจำนวน MySQL จะเก็บค่า 0 แทน

- Invalid ของ ENUM หรือ SET จะถูกจัดการตาม ENUM and SET Constraints

- MySQL ให้เก็บ data ที่อาจมีค่าไม่ถูกต้องลงในคอลั่ม DATE และ DATETIME ได้ เช่น '2000-02-31' กับ '2000-02-00 ขึ้นอยู่กับ Application ว่าจะให้ใช้ strict SQL mode หรือเปล่า

- ถ้าพยายามที่จะเก็บ NULL ในคอลั่มที่ไม่รับค่า NULL errror จะเกิดสำหรับคำสั่ง INSERT แบบแถวเดียว แต่สำหรับคำสั่ง INSERT แบบหลายๆแถว หรือคำสั่งอื่นๆ MySQL จะเก็บ implicit default value
สำหรับชนิดของข้อมูลในคอลั่มนั้น เช่น 0 สำหรับข้อมูลจำนวน '' สำหรับข้อมูลชนิด string

- ถ้าคำสั่ง INSERT ไม่ได้ระบุค่าใส่ลงในคอลั่ม MySQL จะใส่ค่า default ถ้า คอลั่มได้ระบุคำนิยาม รวมถึง explicit DEFAULT clause เอาไว้ แต่ถ้าไม่ได้ระบุ จะใส่ค่า DEFAULT ของ data type ในคอลั่มนั้นๆ

4.ENUM and SET Constraints

ENUM และ SET มีวิธีจัดการคอลั่มที่สามารถเก็บได้แค่ค่า set เท่านั้น

- ค่า ENUM ต้องอยู่ในรายชื่อที่ระบุไว้ตอนสร้างคอลั่ม ค่านั้นไม่สามารถเป็น ค่า error ได้ เช่น 0 หรือ string ว่างๆ เช่น สำหรับคอลั่มที่ตั้งเอาไว้ให้รับข้อมูล ENUM ('a','b','c') ข้อมูลอย่าง 'd' หรือ 'ax' ที่เขามา จะถูก reject ออกไป 

- ค่า SET ต้องเป็น string ว่างๆ หรือ มีค่าที่ระบุตามที่คอลั่มต้องการ แต่ละตัวคั่นด้วย , เช่น คอลั่มที่ระบุว่า SET('a','b','c') ค่าอย่าง  'd' หรือ 'a,b,c,d' จะถือว่า Invalid และถูก reject ออกไป

(any problem/solution)
ปัญหา
-
แก้ปัญหา
-

(decision)
- หาข้อมูลจากเว็ป official ของ MySQL

(related info/link/reference)
http://dev.mysql.com/doc/refman/5.7/en/constraints.html

โปรแกรม MySQL

โปรแกรม MySQL

   MySQL (มายเอสคิวแอล) เป็นระบบจัดการฐานข้อมูลเชิงสัมพันธ์ (Relational Database Management System) โดยใช้ภาษา SQL แม้ว่า MySQL เป็นซอฟต์แวร์โอเพนซอร์ส แต่แตกต่างจากซอฟต์แวร์โอเพนซอร์สทั่วไป โดยมีการพัฒนาภายใต้บริษัท MySQL AB ในประเทศสวีเดน โดยจัดการ MySQL ทั้งในแบบที่ให้ใช้ฟรี และแบบที่ใช้ในเชิงธุรกิจ
   นอกจากนี้ MySQL เป็นที่นิยมใช้กันมากสำหรับฐานข้อมูลสำหรับเว็บไซต์ เช่น มีเดียวิกิ และ phpBB และนิยมใช้งานร่วมกับภาษาโปรแกรม PHP ซึ่งมักจะได้ชื่อว่าเป็นคู่ จะเห็นได้จากคู่มือคอมพิวเตอร์ต่างๆ ที่จะสอนการใช้งาน MySQL และ PHP ควบคู่กันไป นอกจากนี้ หลายภาษาโปรแกรมที่สามารถทำงานร่วมกับฐานข้อมูล MySQL ซึ่งรวมถึง ภาษาซี ซีพลัสพลัส ปาสคาล ซีชาร์ป ภาษาจาวา ภาษาเพิร์ล พีเอชพี ไพทอน รูบี และภาษาอื่น ใช้งานผ่าน API สำหรับโปรแกรมที่ติดต่อผ่าน ODBC หรือ ส่วนเชื่อมต่อกับภาษาอื่น (database connector) เช่น เอเอสพี สามารถเรียกใช้ MySQL ผ่านทาง MyODBC,ADO,ADO.NET เป็นต้น

ท่านสามารถดาวน์โหลดโปรแกรมได้ ที่นี่

หน้าตา และส่วนต่างๆของโปรแกรม


กด File >> New Model