25 ก.ย. 2554

Data Definition Language (DDL)


เป็นภาษาที่ใช้นิยามโครงสร้างข้อมูล เพื่อเปลี่ยนแปลง หรือยกเลิกโครงสร้างฐานข้อมูลตามที่ออกแบบไว้ โครงสร้างดังกล่าวคือ สคีมา (Schema) นั้นเอง
 ตัวอย่างเช่น
การกำ หนดให้ฐานข้อมูลประกอบด้วยตารางอะไรบ้าง ชื่ออะไร ประเภทใด มีอินเด็กซ์ (Index)
เอกสารประกอบการบรรยายวิชา 204204 การออกแบบและพัฒนาฐานข้อมูล 8 - 2
ภาษา DDLประกอบด้วย 3 คำ สั่งคือ

1.คำสั่งการสร้าง (Create) ได้แก่ การสร้างตารางและอินเด็กซ์
CREATE TABLE
( Attribute 1 Type 1,
Attribute 2 Type 2 ,)
CREATE Unique Index on X

เช่น
CREATE TABLE S11
(SNO CHAR(5) Not NULL,
SNAME CHAR(10) ,
STATUS integer)
CREATE Unique Index XS11 on S11(SNO)

2.คำสั่งเปลี่ยนแปลงโครงสร้าง
ALTER TABLE < ชื่อตารางที่ตั้งขึ้น >
<คำ สั่งการเปลี่ยนแปลง> (<ชื่อคอลัมน์ ประเภทข้อมูล>);
ตัวอย่างเช่น
ALTER TABLE SUPPLIER
ADD (LAST_SNAME Char(10));

3.คำสั่งยกเลิก (Drop) ต่างๆ
การลบโครงสร้างตาราง
DROP TABLE < ชื่อตารางที่ตั้งขึ้น >


ภาษาดังกล่าวคือ ภาษาที่ใช้สร้างฐานข้อมูลลงในคอมพิวเตอร์ หลังจากที่เราได้ออกแบบแล้วว่าฐานข้อมูลมีกี่รีเลชั่น แต่ละรีเลชั่นมีความสัมพันธ์อย่างไร จากนั้นการใช้ภาษา DDL นี้แปลงรีเลชั่น
ต่างๆ ให้อยู่ในรูปภาษาสำ หรับนิยามข้อมูล เพื่อป้อนเข้าสู่ระบบฐานข้อมูล เพื่อสร้างฐานข้อมูลที่แท้จริง
ให้เกิดขึ้นในคอมพิวเตอร์ ภาษา DDL สามารถสรุปคำ สั่งต่างๆได้ดังตอไปนี้
CREATE TABLE = นิยามโครงสร้างข้อมูลในรูปตารางบนฐานข้อมูล
DROP TABLE = ลบโครงสร้างตารางข้อมูลออกจากระบบ
ALTER TABLE = แก้ไขปรับปรุงโครงสร้างตาราง


CREATE INDEX = สร้างดัชนีของตาราง
DROP INDEX = ลบ ดัชนีของตารางออกจากระบบ
CREATE VIEW = กำ หนดโครงสร้างวิวของผู้ใช้
DROP VIEW =ลบโครงสร้างวิวออกจากระบบ

-คำสั่งนิยามโครงสร้างตาราง
การสร้างตารางใน ฐานข้อมูลแบบรีเลชั่นเนล โดยเฉพาะฐานข้อมูลขนาดใหญ่บนระบบ
UNIX จะทำ ด้วยการป้อนคำ สั่งในลักษณะเท็กซ์โหมด (Text Mode) เข้าไปในระบบฐานข้อมูล ดังรูป
แบบต่อไปนี้
CREATE TABLE <ชื่อตาราง>
(<ชื่อคอลัมน์ ประเภทของข้อมูล>[,<ชื่อคอลัมน์ ประเภทของข้อมูล>]....);
- ประเภทของข้อมูล
ประเภทของข้อมูลแบ่งเป็น 5 ประเภทใหญ่ๆ ขึ้นอยู่กับซอฟต์แวร์ระบบฐานข้อมูลที่ใช้
ว่าคืออะไร ตัวอย่างเช่น CHAR, INTEGER, DATE ฯลฯ
คำ สั่งการลบโครงสร้างตาราง
DROP TABLE <ชื่อตารางที่ต้องการลบ>
คำ สั่งการเปลี่ยนแปลงโครงสร้างตาราง
ในกรณีที่ต้องการเปลี่ยนแปลงโครงสร้างตารางที่เคยนิยามไว้ สามารถใช้คำ สั่งต่อไปนี้
ALTER TABLE <ชื่อตารางที่ต้องการเปลี่ยนแปลง>
<คำ สั่งการเปลี่ยนแปลง><[,<ชื่อคอลัมน์ ประเภทของข้อมูล>]>คำสั่งดัชนี
ดัชนี ( INDEX ) มีความสำ คัญมากต่อฐานข้อมูลเชิงสัมพันธ์ เนื่องจาก ระบบฐาน
ข้อมูลแบบรีเลชั่นเนล (RDBMS) จะใช้ดัชนีในการค้นหาระเบียนที่ต้องการได้อย่างรวดเร็ว โดยดัชนีที่
ถูกสร้างขึ้น จะเก็บไว้แยกจากตารางในพื้นที่ต่างหาดของคอมพิวเตอร์ โดยปกติ ถ้าไม่มีการประกาศ
ดัชนี ไว้การค้นหาข้อมูลในตาราง นั้นจะต้องทำ แบบเรียงลำ ดับจากแถวที่หนึ่งจนถึงแถวสุดท้าย การ
สร้างดัชนีสำ หรับตารางใดๆ จะทำ ได้โดยการเลือกคอลัมน์ใดคอลัมน์หนึ่งจากตารางมาเป็นดัชนี และตา
รางหนึ่งๆ สามารถมีได้หลายดัชนี นอกจากเพิ่มความรวดเร็วในการดึงข้อมูลแล้ว ยังสามารถนำ ไปใช้ในการควบคุมคอลัมน์ที่นำ มาสร้างเป็นดัชนีให้มีการเก็บข้อมูลที่ไม่ซำ้กัน(Unique) อีกด้วย

การสร้างดัชนีจะใช้คำ สั่ง CREATE INDEX แล้วตามด้วยชื่อดัชนีที่เราตั้งขึ้น ดังรูปแบบ
ต่อไปนี้
CREATE [UNIQUE] INDEX < ชื่อตารางที่ตั้งขึ้น >
ON (<ชื่อตารางที่สร้างดัชนี> (< ชื่อคอลัมน์ 1> [,< ชื่อคอลัมน์ 2>]…);
การลบดัชนี
เมื่อต้องการลบดัชนีที่สร้างขึ้น ก็สามารถทำ ได้ด้วยคำ สั่ง DROP INDEX แล้วตามด้วย
ชื่อดัชนีที่ต้องการลบ ดังรูปแบบดังนี้DROP INDEX <ชื่อดัชนี>

24 ก.ย. 2554

Data Manipulation Language(DML )

DML
  เป็นภาษาใช้สำหรับจัดการข้อมูลภายในฐานข้อมูล ได้แก่การเรียกค้น เพิ่ม ลบ และปรับปรุงฐานข้อมูล ภาษาจัดการข้อมูล (DML) มี ประเภทหลักๆ คือเป็นภาษาที่ผู้ใช้กำหนดโครงสร้างหรือแบบแผนในการเก็บข้อมูล เช่น กำหนดหัวข้อและลักษณะของคอลัมน์ของตารางต่าง ๆ ที่จะใช้บันทึกข้อมูล ภาษากำหนดข้อมูล จะทำให้เกิดตารางที่จะจัดเก็บข้อมูลที่สำคัญต่อการทำงานของ DBMS ขึ้นมาชุดหนึ่ง ตารางนี้มีชื่อว่า พจนานุกรมข้อมูล (data dictionary) ซึ่งระบบจัดการฐานข้อมูลจะอาศัยโครงสร้างจากแฟ้มข้อมูลนี้เสมอ เช่น ดัชนี (index) ต่าง ๆ เป็นต้น
การเรียกดูข้อมูลออกจากฐานข้อมูลจะต้องผ่านคำสั่งหรือข้อความของภาษาจัดการข้อมูลหาข้อความ ซึ่งกลุ่มของข้อความเหล่านั้นมีลักษณะเป็นการถามระบบข้อมูลเพื่อให้ระบบจัดการฐานข้อมูลหาคำตอบจากข้อมูลที่เก็บไว้และตอบกลับมา กลุ่มของข้อความเหล่านั้นเรียกว่า ภาษาคำถาม (query language) แต่โดยทั่วไปแล้วคำว่า DML และ ภาษาคำถาม จะใช้แทนกันเสมอ
เช่น
SELECT EMPLOYEE-NAME
FROM EMPLOYEE-FILE
WHERE SEX = “FEMALE” AND SALARY GREATER THAN 5000
เป็นการไปเรียกดูข้อมูลชื่อของลูกจ้างที่เป็นผู้หญิงและมีเงินเดือนมากกว่า 5,000 จากฐานข้อมูลชื่อ EMPLOYEE-FILE
ที่มา: ttp://sot.swu.ac.th/CP342/lesson01/ms3t3.htm

คำสั่งในกลุ่ม Data Control Language (DCL)


เป็นคำสั่งที่เกี่ยวข้องกับการกำหนดสิทธิของผู้ใช้ในการเข้าถึงทรัพยากรของระบบฐานข้อมูล เช่น ตาราง ผู้ดูแลระบบฐานข้อมูลจะใช้คำสั่งในกลุ่มนี้กำหนดสิทธิให้กับผู้ใช้แต่ละคน หรือผู้ใช้จะกำหนดสิทธิเพื่ออนุญาตให้ผู้อื่นมาใช้ทรัพยากรที่ตนเองเป็นเจ้าของได้
คำสั่งที่ใช้กำหนดสิทธิในการใช้งานมี 2 คำสั่ง ได้แก่
1. คำสั่ง GRANT      เป็นคำสั่งที่ใช้กำหนดสิทธิให้กับผู้ใช้คนอื่นเพื่อให้สามารถใช้งานทรัพยากรที่จำเป็นได้
2. คำสั่ง REVOKE     เป็นคำสั่งที่ใช้ยกเลิกหรือเรียกคืนสิทธิที่เคยให้ไว้ ทำให้ผู้ใช้ที่ถูกยกเลิกสิทธิ    ไม่สามารถใช้งานทรัพยากรเดิมได้อีกต่อไป

หมายเหตุ :  คำสั่ง GRANT และ REVOKE จะใช้ได้ในระบบฐานข้อมูลที่รองรับผู้ใช้งานหลายคนเท่านั้น สำหรับระบบฐานข้อมูลเล็กๆ ที่ใช้บนเครื่องคอมพิวเตอร์ทั่วไป อย่างเช่น MS Access จะไม่สามารถใช้งานคำสั่งกลุ่มนี้ได้
การใช้คำสั่งควบคุมในระบบจัดการฐานข้อมูล MySQL

การกำหนดสิทธิในการเข้าถึงข้อมูล
สำหรับการกำหนดสิทธิในการเข้าถึงข้อมูลในระบบจัดการฐานข้อมูล MySQL สามารถกระทำผ่านสคริปต์ phpMyAdmin ได้    คำสั่งที่ใช้ในการกำหนดสิทธิในการเข้าถึงข้อมูลให้กับผู้ใช้แต่ละคนมีรูปแบบเป็นดังนี้


โดย  GRANT   คือ  คำสั่งที่ให้สิทธิในการใช้งานข้อมูล
            privileges คือ สิทธิที่ต้องการอนุญาตให้ใช้งานซึ่งแบ่งออกเป็นหลายระดับ
 db_name.object   เป็นชื่อตารางหรือชื่อวิว  แต่ถ้าหากต้องการกำหนดสิทธินั้นๆในทุกตารางที่มีในฐานข้อมูลที่กำหนด ให้ใช้  “db_name.* ” หรือถ้าต้องการให้เข้าถึงข้อมูลในทุกๆฐานข้อมูลและทุกตารางให้ใช้   “ *.* ”
            user_name      เป็นชื่อผู้ใช้ที่ต้องการให้สิทธินั้น
ตัวอย่าง   ต้องการกำหนดสิทธิในการเข้าถึงข้อมูลในฐานข้อมูล  registration   ให้กับอาจารย์วิทยา  มนัสวงค์   โดยอาจารย์วิทยา  สามารถเรียกดูข้อมูล  และปรับปรุงข้อมูลในตารางต่างๆ ได้  ใช้คำสั่งดังนี้
ตัวอย่าง   กำหนดสิทธิในการเข้าถึงข้อมูลในฐานข้อมูล  registration ที่ตาราง STUDENT แก่ Chumphon  โดยสามารถใช้สิทธิได้ทั้งหมด   ใช้คำสั่งดังนี้







4 ก.ย. 2554

ปฏิบัติการที่ 6 การจัดการฐานข้อมุลระบบสารสนเทศภูมิศาสตร์

h : จากข้อ e เมื่อแปลออกมาเป็นภาษาคำถามของมนุษย์จะได้ว่า "ให้เลือกแสดงฟิลด์รหัสนิสิต ชื่อนิสิต อาจารย์ที่ปรึกษา และชั้น จากตารางนักเรียน(student) โดยมีเงือนไขคือเป็นนิสิตชั้นปีที่2" ให้ลองแปลข้อ ออกมาเป็นภาษาคำถามของมนุษย์
ตอบ ให้เลือกแสดงฟิลด์รหัสนิสิต ชื่อนิสิต อาจารย์ที่ปรึกษา ชั้น และงานอดิเรก จากตารางนักเรียน(student)โดยมีเงือนไขคือ ตารางงานอดิเรกโดยมี คำว่า อ่าน
ดังรูป
I : ให้นิสิตสืบค้นข้อมูลด้วยภาษา SQL ตามคำถาม "ให้เลือกฟิลด์ทั้งหมดจากตารางรายวิชา(subject)
ตอบ สืบค้นด้วย SELECT subjectid, Name, Credit, Book, Teacher
                            
FROM subject;
ดังรูป
j: ให้นิสิตสืบค้นข้อมูลด้วยภาษา SQL ตามคำถาม "ให้เลือกฟิลด์รหัสรายวิชา ชื่อรายวิชา และจำนวนหน่วยกิต จากตารางรายวิชา(subject)"
ตอบ สืบค้นด้วย SELECT subjectid,Name,Credit
            FROM subject;
ดังรูป
k:ให้นิสิตสืบค้นข้อมูลด้วยภาษาSQLตามคำถาม"ใฟ้เลือกฟิลด์รหัสรายวิชา ชื่อรายวิชา และจำนวนหน่วยกิต จากตารางรายวิชา(subject) โดยมีเงือนไขคือเป็นรายวิชา 104111"
ตอบ สืบค้นด้วย  SELECT subjectid,Name,Credit
                       FROM subject
                       WHERE subjectid=104111;
ดังรูป
O : จากข้อ m เมื่อแปลออกมาเป็นภาษาคำถามของมนุษย์จะได้ว่า "ให้เลือกแสดงฟิลด์รหัสนิสิต ชื่อนิสิต คะแนน เกรด และชื่อรายวิชา จากตารางนักเรียน(student) การลงทะเบียน(Register) และรายวิชา(Subject) โดยมีเงือนไขคือแสดงเฉพาะนิสิตรหัส 4902 เท่านั้น ให้ลองแปล n ออกมาเป็นภาษาคำถามของมนุษย์
ตอบ ให้เลือกแสดงฟิลด์ รหัสนิสิต ชื่อนิสิต คะแนน เกรด และชื่อรายวิชา จากตารางนักเรียนstudent การลงทะเบียนจากตารางRegister และรายวิชาจากตารางSubject โดยมีเงือนไขคือ แสดงรหัสรายวิชา104111 เท่านั้น

p : ให้นิสิตสืบค้นข้อมูลด้วยภาษา SQL ตามคำถาม "ให้เลือกแสดงฟิลด์รหัสนิสิต ชื่อนิสิต คะแนน เกรด และชื่อรายวิชา จากตารางนักเรียน(Student)การลงทะเบียน(Register) และรายวิชา(Subject) โดยมีเงือนไขคือแสดงเฉพาะรายวิชารหัส 104111เท่านั้น และนิสิตอยู่ในชมรมภูมิศาสตร์เท่านั้น"
ตอบ สืบค้นโดย
SELECT Student.Studentid,student.Name,Register.Score,Register.Grade,Subject.Name ,student.Club
 FROM Register,student,Subject
WHERERegister.Studentid=student.StudentidANDRegister.Subjectid=Subject.SubjectidAND   Register.Subjectid=104111  AND student.Club='ภูมิศาสตร์';

ดังรูป