DBMS (Database Management System) โดย สมสวัสดิ์ มาลาทอง
ฐานข้อมูล ฐานข้อมูล (Database : DB) หมายถึง ชุดของข้อมูลที่มีความสัมพันธ์กันที่ถูกนำมาจัดเก็บไว้ในที่เดียวกัน เพื่อลดความซ้ำซ้อน เพิ่มประสิทธิภาพการสอบถามข้อมูล และอำนวยความสะดวกในการ Maintenance เช่น ฐานข้อมูล 12 แฟ้ม และ 8 แฟ้ม ในโรงพยาบาล หรือฐานข้อมูล 18 แฟ้ม ในสถานีอนามัย
ระบบจัดการฐานข้อมูล ระบบจัดการฐานข้อมูล (Database management system: DBMS) เป็นตัวกลางที่ทำหน้าที่ในการแปลความต้องการของผู้ใช้ ให้อยู่ในรูปแบบที่สามารถทำงานได้ตามความต้องการ ตัวอย่าง DBMS ที่ใช้กันในปัจจุบัน ได้แก่ MySQL, SQL Server, Oracle, Microsoft Access ฯลฯ 3
ความสัมพันธ์ระหว่างผู้ใช้ ระบบจัดการฐานข้อมูล และฐานข้อมูล (ที่มา: http://catkm.cattelecom.com/)
หน้าที่ของระบบจัดการฐานข้อมูล จัดการพจนานุกรมข้อมูล DBMS อำนวยความสะดวกในการสร้างพจนานุกรมข้อมูล จัดการแหล่งจัดเก็บข้อมูล DBMS สามารถจัดการแหล่งจัดเก็บข้อมูล รวมถึงการสร้างฟอร์มป้อนข้อมูลเข้า กำหนดแบบจอภาพ แบบรายงาน และการตรวจสอบความถูกต้องของข้อมูลนำเข้า เปลี่ยนรูปแบบและการแสดงผลข้อมูล DBMS เปลี่ยนข้อมูลที่ ถูกป้อนเข้าไปให้อยู่ในรูปแบบโครงสร้างที่ถูกต้อง 5
หน้าที่ของระบบจัดการฐานข้อมูล (ต่อ) จัดการด้านความปลอดภัยของข้อมูล DBMS รักษาความปลอดภัยและความมั่นคงของข้อมูล โดยสามารถกำหนดสิทธิ์การใช้ได้ ควบคุมการเข้าถึงข้อมูลของผู้ใช้ ทำให้ผู้ใช้เข้าใช้ข้อมูลได้หลายคนในเวลาเดียวกันโดยไม่ทำให้เกิดความขัดแย้งกันของข้อมูล สำรองข้อมูลและการกู้คืนข้อมูล เพื่อให้ผู้ใช้มั่นใจว่าข้อมูลที่จัดเก็บอยู่ในเครื่องคอมพิวเตอร์มีความสมบูรณ์อยู่ตลอดเวลา 6
หน้าที่ของระบบจัดการฐานข้อมูล (ต่อ) จัดการด้านบูรณภาพของข้อมูล ให้มีข้อมูลที่ซ้ำซ้อนกันหรือขัดแย้งกันให้น้อยที่สุด มีความถูกต้องตรงกันมากที่สุด มีภาษาสำหรับจัดการข้อมูล ทำให้ผู้ใช้สามารถสอบถามข้อมูลหรือประมวลผลสารสนเทศได้ตามต้องการ ภาษาที่นิยมกันก็คือ ภาษา SQL เป็นส่วนประสานกับผู้ใช้ในด้านการสื่อสารฐานข้อมูล โดยสนับสนุนการทำงานบนเครือข่ายอินเทอร์เน็ต เพื่อให้ผู้ใช้สามารถเขียนคำสั่งด้วยภาษาต่าง ๆ เข้ามาใช้ข้อมูลได้ 7
SQL (Structured Query Language) SQL เป็นภาษาที่ใช้สำหรับการนิยามข้อมูล (Data Definition) จัดการข้อมูล (Data Manipulation) และควบคุมข้อมูล (Data Control) โดยลักษณะการใช้งาน คือ เพียงบอกว่าต้องการ “ทำอะไร” แต่ไม่ต้องรู้ว่า “ทำอย่างไร” 8
SQL Tool โดย สมสวัสดิ์ มาลาทอง
SQL Tools SQL Tools คือ ซอฟต์แวร์ที่ใช้ในการจัดการฐานข้อมูลโดย ภาษา SQL มีทั้งชนิดฟรีและชนิดที่ต้องจ่ายเงิน เช่น MySQL Workbench 5.2 CE phpMyAdmin SQLyog MySQL Administrator MySQL Query Browser MySQL-Font 10
SQL Tools MySQL Workbench 5.2 CE (www.mysql.com) 11
SQL Tools phpMyAdmin (http://www.phpmyadmin.net) 12
SQL Tools SQLyog ใช้งานง่าย Interface ไม่ซับซ้อน เหมาะสำหรับผู้ที่เพิ่งเริ่มใช้งาน (http://code.google.com/p/sqlyog) 13
คำสั่งพื้นฐานของ SQL โดย ณภัทร ไชยศิริ 14
ตาราง ตาราง (Table) หรือ แฟ้ม (File) ใช้สำหรับบันทึกข้อมูลเก็บไว้ภายใต้โครงสร้างที่ได้การออกแบบตามความต้องการการใช้งาน แนวตั้งเรียกว่า ฟิลด์ หรือ Column หรือ สดมภ์ หรือ ตัวแปร แนวนอนเรียกว่า แถว หรือ Row หรือ Record หรือ ระเบียน จากรูป มีทั้งหมด 4 แถว และมี 3 Column คือ CID , SEQ และ DATE_SERV Field Record 15
MySQL Data Type Numeric เช่น tinyint , smallint , bigint , Int , float และ double ใช้สำหรับจัดเก็บตัวเลข เช่น อายุ มี data type เป็น tinyint String เช่น char , varchar และ text ใช้จัดเก็บตัวอักษรต่างๆ เช่น ชื่อผู้มารับบริการ มี data type เป็น varchar Date and Time เช่น date , time , datetime และ timestamp ใช้จัดเก็บ วัน เวลา เช่น วันที่มารับบริการ มี data type เป็น date
Basic Syntax NOT case sensitive การใช้อักษรตัวพิมพ์ใหญ่และตัวพิมพ์เล็กไม่มีความแตกต่างกัน เช่น SELECT * FROM epi กับ SELECT * FROM EPI จะให้ผลลัพธ์ที่เหมือนกัน Comma (,) ใช้เป็นสัญลักษณ์คั่นกลางระหว่างชื่อคอลัมน์ หรือชื่อตารางในคำสั่ง SQL เช่น SELECT pcucode , cid , date_serv , vcctype FROM epi , pat where epi.cid = pat.person_id Single quotes (') ใช้เป็นสัญลักษณ์เปิดและปิดข้อความ เช่น 'OP/PP' 'สปสช 12'
Basic Syntax Blank (_) ใช้แยกฟังก์ชัน ชื่อคอลัมน์ และชื่อตาราง ภายในคำสั่ง SQL เช่น SELECT cid , vcctype FROM epi Semicolon (;) ใช้เป็นสัญลักษณ์จบคำสั่ง เช่น update person set sex = 1 where prename = 'นาย';update person set sex = 2 where prename = 'นาง';update person set sex =2 where prename = 'นางสาว';
SELECT ใช้สำหรับการเรียกดูข้อมูลในตาราง (Table) โดยสามารถเรียกดูได้ทั้งตาราง หรือ ระบุเฉพาะฟิลด์ที่ต้องการเรียกดูก็ได้ 19
SELECT รูปแบบ ตัวอย่างที่ 1 การเลือกข้อมูลทั้งหมดของตาราง anc SELECT Column1 , Column2 , Column3,... FROM [Table-Name] ตัวอย่างที่ 1 การเลือกข้อมูลทั้งหมดของตาราง anc SELECT * FROM anc ; 20
SELECT ตัวอย่างที่ 1 การเลือกข้อมูลทั้งหมดของตาราง anc ผลลัพธ์ SELECT * FROM anc; ผลลัพธ์ 21
SELECT ตัวอย่างที่ 2 การเลือกข้อมูลที่ระบุฟิลด์ โดยการเลือกดูสถานบริการ (PCUCODE) และวันที่(DATE_SERV) จากตาราง anc SELECT PCUCODE , DATE_SERV FROM anc; ผลลัพธ์ 22
SELECT โจทย์ เลือกข้อมูลที่ระบุฟิลด์ โดยการเลือกดูวันที่คลอด (BDATE) จากตาราง pp 23
SELECT โจทย์ เลือกข้อมูลที่ระบุฟิลด์ โดยการเลือกดูวันที่คลอด (BDATE) จากตาราง pp SELECT BDATE FROM pp; ผลลัพธ์ 24
WHERE ใช้สำหรับการระบุเงื่อนไขการเลือกข้อมูลในตาราง (Table) โดยสามารถระบุเงื่อนไขในการเลือกข้อมูลได้มากกว่า 1 เงื่อนไข 25
WHERE รูปแบบ SELECT Column1 , Column2 , Column3,... FROM [Table-Name] WHERE Column = Value ตัวอย่าง การเลือกข้อมูลทั้งหมดของตาราง pp เพื่อดูเฉพาะที่มีวิธีคลอดโดยวิธีปกติ (BTYPE = 1) SELECT * FROM pp WHERE BTYPE = 1; 26
WHERE ตัวอย่าง การเลือกข้อมูลทั้งหมดของตาราง pp เพื่อดูเฉพาะที่มีวิธีคลอดโดยวิธีปกติ (BTYPE = 1) SELECT* FROM pp WHERE BTYPE = 1; ผลลัพธ์ 27
WHERE โจทย์ การเลือกดูข้อมูลทั้งหมดของตาราง pp เพื่อดูสถานที่คลอดที่เป็นการคลอดระหว่างทาง (BPLACE = 4) 28
WHERE โจทย์ การเลือกดูข้อมูลทั้งหมดของตาราง pp เพื่อดูสถานที่คลอดที่เป็นการคลอดระหว่างทาง (BPLACE = 4) SELECT * FROM pp WHERE BPLACE = '4'; ผลลัพธ์ 29
Comparison Operators คือ โอเปอเรเตอร์เปรียบเทียบ ใช้เรียกดูข้อมูลแบบมีเงื่อนไขการเปรียบเทียบโดยใช้ Logical Boolean ดังนี้ โอเปอเรเตอร์ ความหมาย = <> > >= < <= เท่ากับ ไม่เท่ากับ มากกว่า มากกว่าหรือเท่ากับ น้อยกว่า น้อยกว่าหรือเท่ากับ 30
= ตัวอย่าง เรียกดูข้อมูลจากตาราง anc ที่มีเงื่อนไขอายุครรภ์อยู่ในช่วงที่ 1 คือ อายุครรภ์อยู่ระหว่าง 1-27 สัปดาห์ (ANCNO=1) SELECT * FROM anc WHERE ANCNO = '1'; ผลลัพธ์ 31
<> ตัวอย่าง เรียกดูข้อมูลจากตาราง anc ที่มีเงื่อนไขอายุครรภ์ไม่อยู่ในช่วงที่ 4 คือ อายุครรภ์อยู่ระหว่าง 36-39 สัปดาห์ (ANCNO <> 4) SELECT * FROM anc WHERE ANCNO <> '4'; ผลลัพธ์ 32
<> โจทย์ เรียกดูข้อมูลจากตาราง anc ที่มีเงื่อนไขอายุครรภ์ไม่อยู่ในช่วงที่ 1 คือ อายุครรภ์อยู่ระหว่าง 1-27 สัปดาห์ (ANCNO <> 1) 33
<> โจทย์ เรียกดูข้อมูลจากตาราง anc ที่มีเงื่อนไขอายุครรภ์ไม่อยู่ในช่วงที่ 1 คือ อายุครรภ์อยู่ระหว่าง 1-27 สัปดาห์ (ANCNO <> 1) SELECT * FROM anc WHERE ANCNO <> '1' ; ผลลัพธ์ 34
> ตัวอย่าง เรียกดูข้อมูลจากตาราง anc ที่มีเงื่อนไขว่ามีอายุครรภ์ที่มากกว่า 30 สัปดาห์ (GA > 30) SELECT * FROM anc WHERE GA > 30; ผลลัพธ์ 35
> โจทย์ การเลือกดูข้อมูลทั้งหมดของตาราง pp เพื่อดูน้ำหนักของเด็กแรกเกิดที่มีน้ำหนักมาก คือมากกว่า 4,000 กรัม (BWEIGTH > 4000) 36
> โจทย์ การเลือกดูข้อมูลทั้งหมดของตาราง pp เพื่อดูน้ำหนักของเด็กแรกเกิดที่มีน้ำหนักมาก คือมากกว่า 4,000 กรัม (BWEIGTH > 4000) SELECT * FROM pp WHERE BWEIGTH > 4000; ผลลัพธ์ 37
>= ตัวอย่าง เรียกดูข้อมูลจากตาราง anc ที่มีเงื่อนไขอายุครรภ์มากกว่าหรือเท่ากับช่วงที่ 4 คือ อายุครรภ์อยู่ระหว่าง 36-39 สัปดาห์ (ANCNO >=4) SELECT * FROM anc WHERE ANCNO >='4'; ผลลัพธ์ 38
>= โจทย์ เรียกดูข้อมูลจากตาราง anc ที่มีเงื่อนไขอายุครรภ์มากกว่าหรือเท่ากับช่วงที่ 1 คือ อายุครรภ์อยู่ระหว่าง 1-27 สัปดาห์ (ANCNO >=1) 39
>= โจทย์ เรียกดูข้อมูลจากตาราง anc ที่มีเงื่อนไขอายุครรภ์มากกว่าหรือเท่ากับช่วงที่ 1 คือ อายุครรภ์อยู่ระหว่าง 1-27 สัปดาห์ (ANCNO >=1) SELECT * FROM anc WHERE ANCNO >='1'; ผลลัพธ์ 40
< ตัวอย่าง เรียกดูข้อมูลจากตาราง anc ที่มีเงื่อนไขอายุครรภ์น้อยกว่าช่วงที่ 2 คือ อายุครรภ์อยู่ระหว่าง 28-31 สัปดาห์ (ANCNO < 2) SELECT * FROM anc WHERE ANCNO <'2'; ผลลัพธ์ 41
< โจทย์ การเลือกดูข้อมูลทั้งหมดของตาราง pp เพื่อดูน้ำหนักของเด็กแรกเกิดที่มีน้ำหนักน้อย คือน้อยกว่า 2,500 กรัม (BWEIGTH < 2500) 42
< โจทย์ การเลือกดูข้อมูลทั้งหมดของตาราง pp เพื่อดูน้ำหนักของเด็กแรกเกิดที่มีน้ำหนักน้อย คือน้อยกว่า 2,500 กรัม (BWEIGTH < 2500) SELECT * FROM pp WHERE BWEIGTH < 2500; ผลลัพธ์ 43
<= ตัวอย่าง เรียกดูข้อมูลจากตาราง anc เงื่อนไขอายุครรภ์น้อยกว่าเท่ากับช่วงที่ 3 คือ อายุครรภ์อยู่ระหว่าง 32-35 สัปดาห์ (ANCNO <= 3) SELECT * FROM anc WHERE ANCNO <='3' ; ผลลัพธ์ 44
<= โจทย์ การเรียกข้อมูลจากตาราง anc ที่มีเงื่อนไขว่าให้แสดงวันที่มารับบริการที่น้อยกว่าหรือเท่ากับวันที่ 30 เมษายน 2009 45
<= โจทย์ การเรียกข้อมูลจากตาราง anc ที่มีเงื่อนไขว่าให้แสดงวันที่มารับบริการที่น้อยกว่าหรือเท่ากับวันที่ 30 เมษายน 2009 SELECT * FROM anc WHERE DATE_SERV <='20090430'; ผลลัพธ์ 46
Logical operators โอเปอเรเตอร์ที่ใช้ในการเชื่อมเงื่อนไขหลายๆ เงื่อนไขไว้ด้วยกัน ดังตารางต่อไปนี้ โอเปอเรเตอร์ ความหมาย AND OR NOT ใช้เชื่อมเงื่อนไข โดยข้อมูลที่จะแสดงออกมาจะต้องเป็นจริงตามเงื่อนไขทั้งหมด ใช้เชื่อมเงื่อนไข โดยข้อมูลที่จะแสดงออกมาจะต้องเป็นจริงตามเงื่อนไขใดเงื่อนไขหนึ่ง ใช้แสดงหน้าเงื่อนไขใดเงื่อนไขหนึ่ง เพื่อให้ได้ข้อมูลที่ไม่เป็นตามเงื่อนไขที่ระบุ 47
AND รูปแบบ SELECT * FROM [Table-Name] WHERE Column = 'Value' AND Column = 'Value' ตัวอย่าง เรียกดูข้อมูลจากตาราง anc ที่มีเงื่อนไขอายุครรภ์เท่ากับ ช่วงที่ 1 คือ อายุครรภ์อยู่ระหว่าง 1-27 สัปดาห์ และผลการตรวจเป็นปกติ (ANCNO = 1 AND ANCRES = 1) SELECT * FROM anc WHERE ANCNO ='1' AND ANCRES = '1'; 48
AND ตัวอย่าง เรียกดูข้อมูลจากตาราง anc ที่มีเงื่อนไขอายุครรภ์เท่ากับช่วงที่ 1 คือ อายุครรภ์อยู่ระหว่าง 1-27 สัปดาห์ และผลการตรวจเป็นปกติ (ANCNO = 1 AND ANCRES = 1) SELECT * FROM anc WHERE ANCNO ='1' AND ANCRES = '1'; ผลลัพธ์ 49
AND โจทย์ เรียกดูข้อมูลจากตาราง wom ที่มีเงื่อนไขว่าไม่ได้ทำการคุมกำเนิดเพราะอยากมีบุตร (FPTYPE = 0 , NOFP = 1) 50
AND โจทย์ เรียกดูข้อมูลจากตาราง wom ที่มีเงื่อนไขว่าไม่ได้ทำการคุมกำเนิดเพราะอยากมีบุตร (FPTYPE = 0 , NOFP = 1) SELECT * FROM wom WHERE FPTYPE = '0' AND NOFP = '1'; ผลลัพธ์ 51
OR รูปแบบ SELECT * FROM [Table-Name] WHERE Column = 'Value' OR Column = 'Value' ตัวอย่าง เรียกดูข้อมูลจากตาราง wom ที่มีเงื่อนไขว่าเลือกวิธีคุมกำเนิดโดยการทำหมัน (FPTYPE = 6 OR FPTYPE = 7) SELECT * FROM wom WHERE FPTYPE = '6' OR FPTYPE = '7'; 52
OR ตัวอย่าง เรียกดูข้อมูลจากตาราง wom ที่มีเงื่อนไขว่าเลือกวิธีคุมกำเนิดโดยการทำหมัน (FPTYPE = 6 OR FPTYPE = 7) SELECT * FROM wom WHERE FPTYPE = '6' OR FPTYPE = '7'; ผลลัพธ์ 53
OR โจทย์ เรียกดูข้อมูลจากตาราง epi ที่มีเงื่อนไขได้รับวัคซีนรหัส 081 (OPV1) หรือรหัส 082 (OPV2) หรือรหัส 083 (OPV3) 54
OR โจทย์ เรียกดูข้อมูลจากตาราง epi ที่มีเงื่อนไขได้รับวัคซีนรหัส 081 (OPV1) หรือรหัส 082 (OPV2) หรือรหัส 083 (OPV3) SELECT * FROM epi WHERE VCCTYPE = '081' or VCCTYPE = '082' or VCCTYPE = '083' ; ผลลัพธ์ 55
NOT ตัวอย่าง เรียกดูข้อมูลจากตาราง anc ให้ได้ผลลัพธ์ที่อายุครรภ์ไม่เท่ากับช่วงที่ 1 คือ อายุครรภ์อยู่ระหว่าง 1-27 สัปดาห์ หรือ ผลการตรวจไม่ปกติ (ANCNO = 1 , ANCRES = 2) SELECT * FROM anc WHERE NOT (ANCNO ='1' OR ANCRES =‘1'); ผลลัพธ์ 56
VIEW คือ ตารางเสมือนที่สร้างจากการนำข้อมูลบางคอลัมน์ บางแถว จากตารางข้อมูลเดียวหรือมากกว่าหนึ่งตารางก็ได้ ซึ่งวิวนี้จะไม่ได้เก็บข้อมูลอย่างตารางแต่ข้อมูลที่เห็นคือข้อมูลจากตารางที่เราใช้ทั้งสิ้น วิวจะเก็บเพียงแต่โครงสร้างที่จะไปเรียกข้อมูลจากตารางเท่านั้น 57
VIEW รูปแบบ CREATE VIEW <view name> column1 , column2 …. AS <SELECT statement>; ตัวอย่าง สร้างวิวชื่อ pp_w จากตาราง pp เพื่อแสดงสถานที่คลอด (BPLACE) และวิธีการคลอด (BTYPE) CREATE VIEW pp_w AS SELECT BPLACE, BTYPE FROM pp; 58
VIEW ตัวอย่าง สร้างวิวชื่อ pp_w จากตาราง pp เพื่อแสดงสถานที่คลอด (BPLACE) และวิธีการคลอด (BTYPE) CREATE VIEW pp_w AS SELECT BPLACE, BTYPE FROM pp; ผลลัพธ์ ตรวจสอบด้วยคำสั่ง SELECT * FROM pp_w; 59
VIEW โจทย์ สร้างวิวชื่อ anc_vw จากตาราง anc เพื่อแสดง สถานบริการ วันที่มารับบริการ และอายุครรภ์ 60
VIEW โจทย์ สร้างวิวชื่อ anc_vw จากตาราง anc เพื่อแสดง สถานบริการ วันที่มารับบริการ และอายุครรภ์ CREATE VIEW anc_vw AS SELECT PCUCODE , DATE_SERV , GA FROM anc; ผลลัพธ์ ตรวจสอบด้วยคำสั่ง SELECT * FROM anc_vw; 61
IN ใช้ในการสร้างเงื่อนไขมากกว่า 1 เงื่อนไขในคำสั่งเดียว เพื่อจัดการข้อมูลเป็นกลุ่ม 62
IN รูปแบบ SELECT <column name> FROM <Table name> WHERE <column name> IN (data set) ตัวอย่าง เรียกดูข้อมูลทั้งหมดของผู้ป่วยเฉพาะที่มีวิธีการคลอดเป็นแบบปกติหรือแบบ Cesarean section (BTYPE 1, 2) จากตาราง pp SELECT * FROM pp WHERE BTYPE IN ('1','2'); 63
IN ตัวอย่าง เรียกดูข้อมูลทั้งหมดของผู้ป่วยที่มีวิธีการคลอดเป็นแบบปกติหรือแบบ Cesarean section (BTYPE 1, 2) จากตาราง pp SELECT * FROM pp WHERE BTYPE IN ('1','2'); ผลลัพธ์ 64
IN โจทย์ เรียกดูข้อมูลทั้งหมดจากตาราง fp เฉพาะที่มีวิธีการคุมกำเนิดเป็นการใช้ยาฉีดหรือการใส่ห่วงอนามัย (FPTYPE 2,3) 65
IN โจทย์ เรียกดูข้อมูลทั้งหมดจากตาราง fp เฉพาะที่มีวิธีการคุมกำเนิดเป็นการใช้ยาฉีดหรือการใส่ห่วงอนามัย (FPTYPE 2,3) SELECT * FROM fp WHERE FPTYPE IN ('2' , '3'); ผลลัพธ์ 66
LIKE ใช้กำหนดเงื่อนไขเพื่อเลือกข้อมูลที่มีรูปแบบตามที่กำหนด โดยใช้ '_'แทนอักขระใดๆ 1 ตัว และ '%' แทนอักขระใดๆ กี่ตัวก็ได้ หรือไม่มีอักขระที่ตำแหน่งนั้นเลยก็ได้ 67
LIKE รูปแบบ SELECT <column name>FROM <Table name> WHERE <column name> LIKE '%' ตัวอย่าง เลือกดูข้อมูลจากตาราง pp แสดงวันที่คลอดที่อยู่ในปี '2009' SELECT BDATE FROM pp WHERE BDATE LIKE '2009%'; 68
LIKE ตัวอย่าง เลือกดูข้อมูลจากตาราง pp แสดงวันที่คลอดที่อยู่ในปี '2009' SELECT BDATE FROM pp WHERE BDATE LIKE '2009%'; ผลลัพธ์ 69
LIKE โจทย์ เลือกดูข้อมูลจากตาราง pp แสดงวันที่คลอดที่เป็นวันที่ 13 เมษายน 70
LIKE โจทย์ เลือกดูข้อมูลจากตาราง pp แสดงวันที่คลอดที่เป็นวันที่ 13 เมษายน SELECT * FROM pp WHERE BDATE LIKE '%0413'; ผลลัพธ์ 71
ORDER BY ใช้เพื่อจัดเรียงข้อมูลแต่ละแถวตามลำดับของข้อมูลในคอลัมน์หนึ่งๆ 72
ORDER BY รูปแบบ SELECT <column name> FROM <Table name> ORDER BY column-name [DESC] ตัวอย่าง ต้องการทราบวันที่คลอด (BDATE) และสถานที่คลอด (BPLACE) ทั้งหมดจากตาราง pp โดยให้แสดงผลเรียงตามลำดับ วันที่คลอดจากวันที่ล่าสุด SELECT BDATE , BPLACE FROM pp ORDER BY BDATE DESC; 73
ORDER BY ตัวอย่าง ต้องการทราบวันที่คลอด (BDATE) และสถานที่คลอด (BPLACE) ทั้งหมดจากตาราง pp โดยให้แสดงผลเรียงตามลำดับวันที่คลอดจากวันที่ล่าสุด SELECT BDATE , BPLACE FROM pp ORDER BY BDATE DESC; ผลลัพธ์ 74
ORDER BY ถ้าไม่กำหนด “DESC” (Descending) จะถือว่าเป็นการเรียงลำดับข้อมูลจากค่าน้อยไปค่ามาก (Ascending) 75
ORDER BY โจทย์ ต้องการทราบวันที่มารับบริการทั้งหมดจากตาราง anc โดยให้แสดงผลเรียงตามลำดับวันที่มารับบริการจากวันที่มารับบริการล่าสุด 76
ORDER BY โจทย์ ต้องการทราบวันที่มารับบริการทั้งหมดจากตาราง anc โดยให้แสดงผลเรียงตามลำดับวันที่มารับบริการจากวันที่มารับบริการล่าสุด SELECT DATE_SERV FROM anc ORDER BY DATE_SERV DESC; ผลลัพธ์ 77
คำสั่งการจัดการโครงสร้างข้อมูล โดย ถนอม ห่อวงศ์สกุล
CREATE DATABASE ใช้ในการสร้างฐานข้อมูล 79
CREATE DATABASE รูปแบบ ตัวอย่าง การสร้างฐานข้อมูลที่มีชื่อว่า pp CREATE DATABASE database_name ตัวอย่าง การสร้างฐานข้อมูลที่มีชื่อว่า pp CREATE DATABASE pp 80
CREATE DATABASE ตัวอย่าง การสร้างฐานข้อมูลที่มีชื่อว่า pp ผลลัพธ์ 81
CREATE DATABASE โจทย์ จงสร้างฐานข้อมูลที่ชื่อว่า training 82
CREATE DATABASE โจทย์ จงสร้างฐานข้อมูลที่ชื่อว่า training ผลลัพธ์ 83
DROP DATABASE ใช้ในการลบฐานข้อมูล 84
DROP DATABASE รูปแบบ ตัวอย่าง การลบฐานข้อมูลที่ชื่อว่า pp DROP DATABASE database_name ตัวอย่าง การลบฐานข้อมูลที่ชื่อว่า pp DROP DATABASE pp; 85
DROP DATABASE ตัวอย่าง การลบฐานข้อมูลที่ชื่อว่า pp ผลลัพธ์ 86
DROP DATABASE โจทย์ จงลบฐานข้อมูลที่ชื่อว่า training 87
DROP DATABASE โจทย์ จงลบฐานข้อมูลที่ชื่อว่า training ผลลัพธ์ 88
CREATE TABLE ใช้ในการสร้างตารางในฐานข้อมูล โดยกำหนดลักษณะของข้อมูลเป็นคอลัมน์ 89
CREATE TABLE รูปแบบ CREATE TABLE [Table-Name]( column1 data_type [NOT NULL] [UNIQUE], column2 data_type [NOT NULL] [UNIQUE], column3 data_type [NOT NULL] [UNIQUE], ... columnN data_type [NOT NULL] [UNIQUE], [PRIMARY KEY (column)) ตัวอย่าง การสร้างตารางที่ชื่อว่า epi โดยกำหนดคอลัมน์ ดังนี้ CREATE TABLE epi( PCUCODE VARCHAR(5), CID VARCHAR(13), SEQ VARCHAR(8), DATE_SERV VARCHAR(8), VCCTYPE VARCHAR(3), VCCPLACE VARCHAR(5)); 90
CREATE TABLE ตัวอย่าง ผลลัพธ์ CREATE TABLE epi( PCUCODE VARCHAR(5), CID VARCHAR(13), SEQ VARCHAR(8), DATE_SERV VARCHAR(8), VCCTYPE VARCHAR(3), VCCPLACE VARCHAR(5)); ผลลัพธ์ 91
CREATE TABLE โจทย์ จงสร้างตารางที่ชื่อว่า person โดยกำหนดคอลัมน์ ดังนี้ PCUCODE เป็นชนิดตัวอักขระ ความยาวเท่ากับ 5 CID เป็นชนิดตัวอักขระ ความยาวเท่ากับ 13 PERNAME เป็นชนิดตัวอักขระ ความยาวเท่ากับ 10 NAME เป็นชนิดตัวอักขระ ความยาวเท่ากับ 25 LNAME เป็นชนิดตัวอักขระ ความยาวเท่ากับ 30 92
CREATE TABLE โจทย์ จงสร้างตารางที่ชื่อว่า person โดยกำหนดคอลัมน์ดังนี้ PCUCODE VARCHAR(5), CID VARCHAR(13), PERNAME VARCHAR(10), NAME VARCHAR(25), LNAME VARCHAR(30)); ผลลัพธ์ 93
DROP TABLE ใช้ในการลบตาราง 94
DROP TABLE รูปแบบ ตัวอย่าง การลบตาราง epi DROP TABLE [Table-Name] 95
DROP TABLE ตัวอย่าง การลบตาราง epi DROP TABLE epi; ผลลัพธ์ 96
DROP TABLE โจทย์ จงลบตารางที่มีชื่อว่า person ในฐานข้อมูล training 97
DROP TABLE โจทย์ จงลบตารางที่มีชื่อว่า person ในฐานข้อมูล training ผลลัพธ์ 98
ALTER TABLE เป็นคำสั่งที่ใช้ในการแก้ไขโครงสร้างของตารางที่มีอยู่ เช่น การเพิ่ม ลบ หรือปรับเปลี่ยนคอลัมน์ในตาราง 99
ALTER TABLE รูปแบบที่ 1 การเพิ่มคอลัมน์ในตาราง ALTER TABLE [Table-Name] ADD column datatype ตัวอย่าง การเพิ่มคอลัมน์ TIME_SERV ในตาราง epi โดยมีชนิดของข้อมูลเป็นอักขระที่มีความยาว 4 หลัก ALTER TABLE epi ADD TIME_SERV VARCHAR(4); 100
ALTER TABLE ตัวอย่าง การเพิ่มคอลัมน์ TIME_SERV ในตาราง epi โดยมีชนิดของข้อมูลเป็นอักขระที่มีความยาว 4 หลัก ALTER TABLE epi ADD TIME_SERV VARCHAR(4); ผลลัพธ์ 101
ALTER TABLE โจทย์ จงเพิ่มคอลัมน์ในตาราง person ดังนี้ SEX เป็นข้อมูลชนิดตัวอักขระ ความยาว 1 หลัก BIRTH เป็นข้อมูลชนิดตัวอักขระ ความยาว 8 หลัก 102
ALTER TABLE โจทย์ จงเพิ่มคอลัมน์ในตาราง person ดังนี้ ผลลัพธ์ ADD COLUMN SEX VARCHAR(1) NULL AFTER LNAME, ADD COLUMN BIRTH VARCHAR(8) NULL AFTER SEX; ผลลัพธ์ 103
ALTER TABLE รูปแบบที่ 2 การเปลี่ยนชนิดข้อมูลของคอลัมน์ในตาราง ALTER TABLE [Table-Name] CHANGE column1 datatype ตัวอย่าง เปลี่ยนชนิดข้อมูลของคอลัมน์ TIME_SERV ในตาราง epi จากที่เป็นชนิดตัวอักขระความยาว 4 หลักเป็นความยาว 6 หลัก ALTER TABLE epi CHANGE TIME_SERV TIME_SERV VARCHAR(6); 104
ALTER TABLE ตัวอย่าง การเปลี่ยนชนิดข้อมูลของคอลัมน์ TIME_SERV ในตาราง epi จากที่เป็นชนิดตัวอักขระความยาว 4 หลักเป็นความยาว 6 หลัก ALTER TABLE epi CHANGE TIME_SERV TIME_SERV VARCHAR(6); ผลลัพธ์ 105
ALTER TABLE โจทย์ การเปลี่ยนชนิดข้อมูลของคอลัมน์ BIRTH ในตาราง person จากที่เป็นชนิดตัวอักขระความยาว 8 หลักเป็นความยาว 10 หลัก 106
ALTER TABLE โจทย์ จงเปลี่ยนชนิดข้อมูลของคอลัมน์ BIRTH ในตาราง person จากที่เป็นชนิดตัวอักขระความยาว 8 หลักเป็นความยาว 10 หลัก ALTER TABLE person CHANGE BIRTH BIRTH VARCHAR(10); ผลลัพธ์ 107
ALTER TABLE รูปแบบที่ 3 การลบคอลัมน์ในตาราง ALTER TABLE [Table-Name] DROP COLUMN column 108
ALTER TABLE ตัวอย่าง การลบคอลัมน์ SEQ ในตาราง epi ผลลัพธ์ ALTER TABLE epi DROP COLUMN SEQ; ผลลัพธ์ 109
ALTER TABLE โจทย์ จงลบคอลัมน์ PERNAME ในตาราง person 110
ALTER TABLE โจทย์ จงลบคอลัมน์ PERNAME ในตาราง person ผลลัพธ์ ALTER TABLE person DROP COLUMN PERNAME; ผลลัพธ์ 111
INSERT INTO ใช้ในการแทรกแถวใหม่ในตารางเพื่อเพิ่มข้อมูล มี 2 รูปแบบ คือ 112
INSERT INTO รูปแบบที่ 1 ไม่ระบุชื่อคอลัมน์ที่จะแทรกข้อมูล INSERT INTO [Table-Name] VALUES (value1, value2, value3,...) ตัวอย่าง การเพิ่มข้อมูลในตาราง epi จำนวน 1 รายการ โดยไม่ระบุชื่อคอลัมน์ที่จะแทรกข้อมูล INSERT INTO epi VALUES ('00001','3900055550013','C4211195','20110401','052','10682') 113
INSERT INTO ตัวอย่าง การเพิ่มข้อมูลในตาราง epi จำนวน 2 รายการ โดยไม่ระบุชื่อคอลัมน์ที่จะแทรกข้อมูล INSERT INTO epi VALUES ('00001','3900055550013','C4211195','20110401','052','10682'); ผลลัพธ์ 114
INSERT INTO รูปแบบที่ 2 ระบุชื่อคอลัมน์และข้อมูลที่จะแทรก INSERT INTO [Table-Name] (column1, column2, column3,...) VALUES (value1, value2, value3,...) ตัวอย่าง การเพิ่มข้อมูลในตาราง epi จำนวน 1 รายการ โดยระบุชื่อคอลัมน์และข้อมูลที่จะแทรก INSERT INTO epi (PCUCODE,SEQ,DATE_SERV,VCCTYPE,VCCPLACE) VALUES ('00001','C4211200','20110402','052','10682') 115
INSERT INTO ตัวอย่าง การเพิ่มข้อมูลในตาราง epi จำนวน 1 รายการ โดยระบุชื่อคอลัมน์และข้อมูลที่จะแทรก INSERT INTO epi (PCUCODE,SEQ,DATE_SERV,VCCTYPE,VCCPLACE) VALUES ('00001','C4211200','20110402','052','10682'); ผลลัพธ์ 116
INSERT INTO โจทย์ 1 จงเพิ่มข้อมูลลงในตาราง person โดยใช้วิธีการเพิ่มข้อมูลรูปแบบที่ 1 ดังนี้ 117
INSERT INTO โจทย์ 1 จงเพิ่มข้อมูลลงในตาราง person โดยใช้วิธีการเพิ่มข้อมูลรูปแบบที่ 1 ดังนี้ INSERT INTO person VALUES ('10000','0000000000100','สมชาย','เผ่าไทย','1','1983-04-05'); VALUES ('10000','0000000000200','สมหมาย','ใจดี','1','1980-01-28'); ผลลัพธ์ 118
INSERT INTO โจทย์ 2 จงเพิ่มข้อมูลลงในตาราง person โดยใช้วิธีการเพิ่มข้อมูลรูปแบบที่ 2 ดังนี้ 119
INSERT INTO โจทย์ 2 จงเพิ่มข้อมูลลงในตาราง person โดยใช้วิธีการเพิ่มข้อมูลรูปแบบที่ 2 ดังนี้ INSERT INTO person (CID,NAME,LNAME,SEX) VALUES ('0000000000800','พินิจ','ใจดี','1'); ผลลัพธ์ 120
UPDATE ใช้ในการปรับปรุงเรคคอร์ดที่มีอยู่ในตารางเพื่อปรับปรุงข้อมูล 121
UPDATE รูปแบบ UPDATE [Table-Name] SET column1=value, column2=value2,... WHERE some_column=some_value ตัวอย่าง การปรับปรุงข้อมูลในตาราง epi ให้คอลัมน์ CID มีค่าเท่ากับ 3900055550050 โดยมีเงื่อนไขว่าเฉพาะเรคคอร์ดที่ SEQ เท่ากับ C4211200 UPDATE epi SET CID='3900055550050' WHERE SEQ='C4211200'; 122
UPDATE ตัวอย่าง การปรับปรุงข้อมูลในตาราง epi ให้คอลัมน์ CID มีค่าเท่ากับ 3900055550050 โดยมีเงื่อนไขว่าเฉพาะเรคคอร์ดที่ SEQ เท่ากับ C4211200 UPDATE epi SET CID='3900055550050' WHERE SEQ='C4211200'; ผลลัพธ์ 123
UPDATE โจทย์ จงปรับปรุงข้อมูลในตาราง person ให้คอลัมน์ BIRTH มีค่าเท่ากับ '1989-05-13' โดยมีเงื่อนไขว่าเฉพาะเรคคอร์ดที่ CID เท่ากับ '0000000000800' 124
UPDATE โจทย์ ผลลัพธ์ UPDATE person SET BIRTH='1989-05-13' WHERE CID='0000000000800‘; ผลลัพธ์ 125
DELETE ใช้ในการลบเรคคอร์ดที่มีอยู่ในตาราง โดยสามารถกำหนดเงื่อนไขเรคคอร์ดที่ต้องการจะลบ 126
DELETE รูปแบบ DELETE FROM [Table-Name] WHERE some_column=some_value ตัวอย่าง การลบเรคคอร์ดในตาราง epi โดยมีเงื่อนไขว่าเรคคอร์ดที่มี CID เท่ากับ 3900055550050 DELETE FROM epi WHERE CID='3900055550050‘; 127
DELETE ตัวอย่าง การลบเรคคอร์ดในตาราง epi โดยมีเงื่อนไขว่าเรคคอร์ดที่มี CID เท่ากับ 3900055550050 DELETE FROM epi WHERE CID='3900055550050‘; ผลลัพธ์ 128
DELETE โจทย์ การลบเรคคอร์ดในตาราง person โดยมีเงื่อนไขว่าเรคคอร์ดที่มี CID เท่ากับ 0000000000800 129
DELETE โจทย์ การลบเรคคอร์ดในตาราง person โดยมีเงื่อนไขว่าเรคคอร์ดที่มี CID เท่ากับ 0000000000800 DELETE FROM person WHERE CID='0000000000800' ผลลัพธ์ 130
TRUNCATE TABLE ใช้ในการลบข้อมูลทั้งหมดที่มีอยู่ในตาราง 131
TRUNCATE TABLE รูปแบบ ตัวอย่าง การลบข้อมูลทั้งหมดในตาราง epi TRUNCATE TABLE [Table-Name] ตัวอย่าง การลบข้อมูลทั้งหมดในตาราง epi TRUNCATE TABLE epi; 132
TRUNCATE TABLE ตัวอย่าง การลบข้อมูลทั้งหมดในตาราง epi ผลลัพธ์ 133
TRUNCATE TABLE โจทย์ จงลบข้อมูลในตาราง person โดยใช้คำสั่ง TRUNCATE TABLE 134
TRUNCATE TABLE โจทย์ จงลบข้อมูลในตาราง person โดยใช้คำสั่ง TRUNCATE TABLE TRUNCATE TABLE person; ผลลัพธ์ 135