วันพุธที่ 6 มกราคม พ.ศ. 2553

บทที่ 6 การแบ็คอัพและรีสโตร์ข้อมูล

บทที่ 5 การรักษาความปลอดภัย

บทที่5

การรักษาความปลอด ภัยของข้อมูล

ปัจจุบัน มีการนำเอา Microsoft SQL Sever 7.0 มาใช้งานเพิ่มขึ้นทั้งภายในและภายนอกองค์กรในฐานะที่คุณเป็นผู้ควบคุมระบบ จึงต้องบริหารการเข้าข้อมูลอย่างมีประสิทธิภาพให้แก่ผู้ใช้ที่เป็นพนักงาน บริษัทภายนอกและผู้ใช้ การตั้งค่าปฏิบัติการให้กับการอนุญาตสิทธิ์ในการเข้าสู่ระบบ และการกำหนดบทบาทซึ่งการอนุญาตสิทธ์และบทบาทที่คุณกำหนดขึ้นมาให้จะกำหนดว่า ผู้ใช้สามารถทำอะไรได้บ้างและเข้าถึงข้อมูลประเภทใด
เป้าหมายหลักในการจัดการกับระบบรักษาความปลอดภัยที่ควรจะเป็น คือ

  • ทำ ความสมดุลกับความต้องการในการเข้าถึงฐานข้อมูลของผู้ใช้ได้ ในขณะเดียวกันสามารถป้องกันไม่ให้ผู้ที่ไม่ได้รับอนุญาตเข้าใช้งานในฐาน ข้อมูล
  • กำจัดสิทธ์ของฐานข้อมูล จึงทำให้ผู้ใช้อื่น ๆ ไม่สามรถเข้ามาทำการเรียกใช้คำสั่งและโพรซิเดอร์ต่าง ๆ ทำงาน ที่อาจทำให้เกิดความเสียหายแก่ระบบได้ (ไม่ว่าจะเป็นการจงใจเข้ามาคุกคามระบบหรือโยบังเอิญ
  • ปิดช่องทางความปลอกภัยอื่น ๆ ซึ่งอาจเกิดจากผู้ใช้ทั่ว ๆ ไป ที่เป็นสมาชิกกลุ่มควบคุมระบบของ Windows NT

ระบบรักษาความปลอดภัยของ SQL Sever 7.0
ผู้ใช้สามารถทำการควบคุมการเข้าถึงฐานข้อมูลโยใช้องค์ประกอบต่างๆของแบบ จำลองระบบรักษาความปลอดภัยที่มีอยู่ใน SQL Sever ซึ่งองค์ประกอบต่างๆ มีดังนี้
1.โหมดการยืนยันสิทธิ์ของ SQL Sever ( SQL Sever Authentication Mode)
2. ล็อกอินเซิร์ฟเวอร์ (Sever login)
3.การอนุญาตสิทธ์ (Permission)
4. บทบาท (Role)

  • โหมดการยืนยันสิทธิ์ของ SQL Sever มีการยืนยันสิทธ์อยู่ 2 แบบ คือ
    • Windows NT Authentication เท่านั้น ทำงานได้ดีที่สุดเมื่อมีการเข้าถึงฐานข้อมูลภายในองค์กรเท่านั้น
    • ระบบรักษาความปลอดภัยแบบผสม ทำงานำได้ดีที่สุดเมื่อมีการเข้าถึงฐานข้อมูล

จากผู้ใช้ภายนอกหรือเมื่อคุฯณไม่ได้ใช้โดเมนของวินโดว์
ผู้ใช้สามรถตั้งค่าปฏิบัติการให้โหมดของระบบรักษาความปลอดภัยเหล่านี้ระดับ เซิร์ฟเวอร์และสามารถนำไปใช้กับฐานข้อมูลทั้งหมดในเครื่องเซิร์ฟเวอร์ได้

Windows NT Authentication
ด้วย Windows NT Authentication นั้น สามรถใช้บัญชีรายชื่อของผู้ใช้และของกลุ่มที่มีอยู่ในโดเมนวินโดว์เพื่อใช้ ยืนยันสิทธ์ได้ ซึ่งให้ผู้โดเมนสามารถเข้าถึงฐานข้อมูลได้ โดยไม่ต้องใช้ Login ID และรหัสผ่าน SQL Sever ประโยชน์คือ ผู้ใช้โดเมนไม่ต้องเก็บการติดตามของรหัสผ่ายหลาย ๆ ตัว และถ้าหากต้องการเปลี่ยนแปลรหัสผ่านของโดเมนที่ไม่มีผลต่อรหัสผ่านของ SQL Sever แต่อย่างใด อย่างไรก็ตาม ผู้ใช้ยังต้องทำงาที่ขึ้นอยู่กับเกณฑ์ต่าง ๆ ของแบบจำลองระบบรักษาความปลอดภัยของวินโดว์อยู่ กล่าวคือ สามารถใช้โมเดลระบบรักษาความปลอดภัยของวินโดว์ในการล็อคอินบัญชีรายชื่อ ตรวจสอบล็อคอิน ละบังคับให้ผู้ใช้เปลี่ยนรหัสผ่านเป็นระยะ ๆ ได้
เมื่อใช้ Windows NT Authentication แล้ว SQL Sever จะมีการรองรับผู้ใช้โดยอัตโนมัติโดยตั้งอยู่บนพื้นฐานของชื่อบัญชีรายชื่อ ผู้ใช้ หรือสมาชิกของกลุ่ม ถ้าผู้ใช้หรือกลุ่มของผู้ใช้นั้นได้รับอนุญาตให้ทำการเข้าถึงฐานข้อมูลได้ ผู้ใช้สามารถเข้าถึงฐานข้อมูลโดยอัตโนมัติ โดยค่าเริ่มต้นนั้นจะมีบัญชีรายชื่อผู้ใช้ภายในเครื่อง 2 ชื่อ ที่ถูกแก้ไขให้สามรถเข้าใช้งาน SQL Sever ซึ่งคือ บัญชีรายชื่อของกลุ่ม Administrator ภายในละบัญชีรายชื่อของผู้ใช้ที่เป็น Administrator ของเครื่องนั้น บัญชีรายชื่อภายในเครื่องจะถูกแสดงผลเป็น BULTIN\ หรือ COM-PUTERNAME\ ใน Enterprise Manager เช่น Administrator จะถูกแสดงเป็น BULTIN\Administrators
ระบบรักษาความปลอดภัยแบบผสมและล็อคอิน SQL Sever
การใช้งานระบบรักษาความปลอดภัยแบบผสม คือ การใช้การยืนยันสิทธ์ของ Windows NT และการล็อคอินของ SQL Sever ร่วมกัน ล็อคอินของ SQL Sever เป็นวิธีหลักที่ใช้โดยผู้ใช้ภายนอกบริษัท เช่น ผู้ใช้ฐานข้อมูลผ่านระบบอินเตอร์เน็ต แอพพลิเคชันที่สามารถเข้าถึง SQL Sever จากอินเตอร์เน็ตที่อาจถูกตั้งค่าปฏิบัติการให้ใช้บัญชีรายชื่อผู้ใช้ที่ได้ ระบุไว้โดยอัตโนมัติหรือมีกรอบโต้ตอบให้ผู้ใช้กรอก Login ID และรหัสผ่านของ SQL Sever ก็ได้
การใช้งานระบบรักษาความปลอดภัยแบบผสม ตอนแรก SQL Sever จะตรวจสอบว่าผู้ใช้กำลังทำการติดต่อโดยล็อคอินของ SQL Sever ที่ถูกต้องหรือไม่ ถ้าผู้ใช้มีล็อคอินและรหัสผ่านที่ถูกต้อง การติดต่อของผู้ใช้จะถูกตอบรับ ถ้าผู้ใช้มีรายชื่อที่ใช้ในการล็อคอินถูกต้องแต่มีรหัสผ่านที่ไม่ถูกต้อง การติดต่อของผู้ใช้ก็จะถูกปฏิเสธ SQL Sever จะตรวจสอบว่าข้อมูลของบัญชีรายชื่อที่มีอยู่ใน Windows NT ถ้าผู้ใช้ล็อคอินไม่ถูกต้องเท่านั้น ซึ่งในที่นี้ SQL Sever จะตรวจสอบว่าบัญชีรายชื่อของผู้ใช้ Windows NT นั้นได้รับการอนุญาตให้ติดต่อกับเซิร์ฟเวอร์ได้หรือไม่ ถ้าบัญชีรายชื่อนั้นได้รับอนุญาต ก็มีการตอบรับการติดต่อ แต่ถ้าไม่เป็นเช่นนั้นก็จะถูกปฏิเสธการติดต่อ
ฐานข้อมูลทั้งหมดที่มีอยู่ใน SQL Sever จะมีล็อคอินที่ถูกสร้างขึ้นมาพร้อมกับ SQL Sever อยู่แล้วด้วยจุดประสงค์พิเศษ ซึ่งล็อคอินเหล่านี้คือ sa, guest และ dbo

  • ล็อคอินเซิร์ฟเวอร์

สามารถ ตั้งค่าปฏิบัติการให้ทำการเข้าถึง SQL Sever ได้โดยมีการล็อคอินของเซิร์ฟเวอร์หรือบทบาท หรือทั้งคู่ การมีโหมดในการยืนยันสิทธิ์ 2 โหมดนั้นทำให้มีการล็อคอินของเซิร์ฟเวอร์ 2 ประเภท ผู้ใช้สามารถสร้างล็อคอินของโดเมนโดยใช้บัญชีรายชื่อของโดเมน ซึ่งสามารถเป็นบัญชีรายชื่อของผู้ใช้ บัญชีรายชื่อของกลุ่มแบบภายในเครื่อง หรือบัญชีรายชื่อของกลุ่มแบบ Global ได้ ผู้ใช้สามารถสร้างล็อคอินของ SQL Sever โดยระบุ Login ID และรหัสผ่านที่ไม่ซ้ำกัน มีล็อคอินหลายชื่อที่มีการตั้งค่าปฏิบัติการเอาไว้แล้ว ประกอบด้วย

    • กลุ่ม Administrator ภายในเครื่อง
    • บัญชีรายชื่อของ Administrators ภายในเครื่อง
    • ล็อคอิน sa
    • ล็อคอิน guest (เป็นล็อคอินที่ถูกตั้งค่าปฏิบัติการไว้ แต่จะไม่ทำงานโดยอัตโนมัติ)
    • ผู้ใช้ที่ชื่อ dbo (ผู้ใช้ที่ชื่อ dbo ผู้ใช้ฐานข้อมูลพิเศษ)

การทำงานด้วย Administrators
Administrator เป็นกลุ่มที่ผู้ใช้ที่มีอยู่ภายใน Database Sever โดยปกติแล้วสมาชิกของกลุ่มจะรวมถึงบัญชีรายชื่อภายในเครื่องที่มีสิทธ์เป็น Administrator และผู้ที่ใช้อื่น ๆ ที่ถูกกำหนดให้เป็นผู้ควบคุมระบบภายในเครื่องใน SQL Sever กลุ่มนี้จะถูกกำหนดให้ได้รับอนุญาตเป็น System Administrator (Sysadmin) ดดยบทบาทของเซิร์ฟเวอร์ตามค่าเริ่มต้น
การทำงานกับ Administrator
Administrator เป็นบัญชีรายชื่อของผู้ที่อยู่ภายในเซิร์ฟเวอร์ บัญชีรายชื่อนี้จะทำให้เป็นผู้มีสิทธ์ในระดับผู้บริหารระบบในระบบภายใน เครื่อง และในเบื้องต้นนั้นสามารถใช้บัญชีรายชื่อนี้ได้เมื่อติดตั้งระบบ หาดเครื่องเซิร์ฟเวอร์เป็นส่วนหนึ่งของโดเมน Windows NT แล้ว โดยปกติบัญชีรายชื่อที่ชื่อ Administrator จะมีสิทธ์พิเศษของโดเมนการใช้บัญชีรายชื่อนี้ใน SQL Sever จะได้รับอนุญาตให้เป็นผู้ที่มีบทบาทเป็น System Administrator ของเซิร์ฟเวอร์โดยค่าเริ่มต้น
หมายเหตุ ใน Enterprise Manager บทบาทของเซิร์ฟเวอร์จะถูกบอกด้วยชื่อเต็ม System Administrator และ
ชื่อปกติ เช่น Sysadmin แต่เมื่ออ้างถึงบทบาทของเซิร์ฟเวอร์ในโพรซิเดอร์ หรือ Transaction-
SQL ให้ใช้ชื่อปกติ เช่น Sysadmin ใน SQL Sever ไม่มีชื่อเต็มสำหรับบทบาทของ
ฐานข้อมูล ซึ่งไม่ตรงกับข้อกำหนดก่อนสำหรับบทบาทของเซิร์ฟเวอร์

การทำงานกับล็อคอิน sa
ล็อค อิน sa เป็นบัญชีรายชื่อของผู้ควบคุมระบบของ SQL Sever ด้วยรูปแบบของระบบรักษาความปลอดภัยใหม่ที่ถูกรวบรวมและเพิ่มเติมขึ้นนั้น ล็อคอิน sa จะไม่จำเป็นอีกต่อไป และโดยหลัก ๆ แล้วล็อคอินนี้จะถูกจัดทำขึ้นให้สามารถใช้ได้กับเวอร์ชันที่แล้ว ถ้าเป็นการล็อคของผู้ควบคุมระบบคนอื่นนั้น sa จะได้รับอนุญาตให้เป็นผู้ที่มีบทบาทเป็น System Administrator ของเซิร์ฟเวอร์ ดดยค่าเริ่มต้น เมื่อเริ่มต้น เมื่อติดตั้ง SQL Sever การล็อคอิน sa จะไม่ถูกกำหนดรหัสผ่าน ดังนั้น จึงควนกำหนดรหัสผ่านเพื่อปกกันผู้ที่ไม่ได้รับอนุญาตเข้าถึงเซิร์ฟเวอร์
การทำงานกับล็อคอิน Guest
ล็อค อิน Guest เป็นล็อคอินพิเศษที่สามารถเพิ่มให้ฐานข้อมูล เพื่อยอมให้ใครก็ตามที่มีล็อคอินของ SQL Sever เข่าเข้าถึงฐานข้อมูลได้ ผู้ที่เข้าถึงฐานข้อมูลโดยใช้บัญชีรายชื่อ Guest จะถูกกำหนดให้เป็นผู้ใช้ Guest และได้รับการถ่ายทอดสิทธิ์จากการอนุญาตสิทธ์ต่างๆ ของบัญชีรายชื่อ Guest เช่น หากตั้งค่าปฏิบัติการให้บัญชีรายชื่อของโดเมน GOTEAM ให้เข้าถึง SQL Sever ได้ซึ่ง GOTEAM สามารถเข้าถึงฐานข้อมูลโดยใช้ล็อคอิน Guest ได้ ดังนั้น เมื่อ GOTEAM เข้าถึงฐานข้อมูลด้วยล็อคอิน Guest บุคคลนั้นจะได้รับการถ่ายทอดทั้งหมดจากบัญชีรายชื่อ Guest ด้วย
โดยค่าเริ่มต้นแล้วล็อคอิน Guest ไม่มีอยู่ในฐานข้อมูลที่สร้างขึ้นมาใหม่ แต่สามารถสร้างหรือลบออกจากฐานข้อมูลได้ยกเว้นฐานข้อมูล Master และ Tempdb ผู้ใช้ส่วนใหญ่จะเข้าถึงฐานข้อมูล Master และ Tempdb
เป็น Guest จึงไม่สามารถลบบัญชีรายชื่อในชื่อ Guest ออกจากฐานข้อมูลเหล่านี้ได้ แต่ไม่ต้องกังวลเพราล็อคอิน Guest มีสิทธ์จำกัดในการทำงานฐานข้อมูล Master และ Tempdb
ก่อนการใช้ล็อคอิน Guest ควรบันทึกสิ่งเหล่านี้ไว้

  • การล็อคอิน Guest เป็นสมาชิกของบทบาทของเซิร์ฟเวอร์ Public และสามารถรับการถ่ายทอดสิทธิ์จากบทบาทนี้
  • บัญชีรายชื่อ Guest ต้องถูกกำหนดให้ฐานข้อมูล ก่อนที่จะมีใครสามารถเข้าถึงฐานข้อมูลในฐานะ Guest ได้
  • ล็อค อิน Guest มีการใช้เมื่อบัญชีรายชื่อของผู้ใช้มีการเข้าถึง SQL Sever เท่านั้น แต่จะไม่สามารถเข้าถึงฐานข้อมูลได้โดยใช้บัญชีรายชื่อของผู้ใช้นี้

การทำงานกับ dbo
เจ้าของฐานข้อมูลหรือ dbo ผู้ใช้ประเภทพิเศษของฐานข้อมูลและสามารถได้รับสิทธิ์พิเศษ กล่าวคือ ผู้ใช้ที่เป็นผู้สร้างฐานข้อมูลถือเป็นเจ้าของฐานข้อมูล dbo จะได้รับการถ่ายทอดสิทธิ์ทั้งหมดในฐานข้อมูล และสามารถถ่ายทอดสิทธิ์เหล่านี้ไปยังผู้ใช้คนอื่น ๆ ได้ เนื่องจากสมาชิกของผู้ที่มีบทบาทเป็น System Administrator ของเซิร์ฟเวอร์ถูกแม็ปกับผู้ที่ใช้ dbo ที่มีสิทธิ์พิเศษโดยอัตโนมัติ การลบ็อคอินโดยใช้บทบาทของ System Administrator จึงสามารถทำงานได้ทุกอย่างเหมือนกับ dbo
อ็อปเจ๊กที่ถุกสร้างขึ้นในฐานข้อมูลของ SQL Sever ก็มีเจ้าของเช่นเดียวกัน เจ้าของถูกอ้างถึงเป็นเจ้าของอ็อปเจ็คต์ของฐานข้อมูล อ็อปเจ็คต์ที่ถูกสร้างขึ้นโดยสมาชิกที่มีบทบาทเป็น System Administrator ของเซิร์ฟเวอร์นั้นจะถือว่าเป็นของผู้ใช้ dbo โดยอัตโนมัติ อ็อปเจ็คต์ที่ไม่ได้ถูกสร้างขึ้นโดยสมาชิกผู้ที่มีบทบาทเป็น System Administrator ของเซิร์ฟเวอร์จะถือว่าเป็นของผู้ใช้ที่สร้างอ็อปเจ็คต์ของเซิร์ฟเวอร์และ สร้างตารางชื่อ Sales เป็นของ dbo และมีคุณสมบัติครบถ้วนที่จะเป็น dbo.Sales หรือ Sales แต่ถ้าหาก GOTTEAM ไม่ได้เป็นสมาชิกของผู้ที่มีบทบาทเป็น System Administrator ของเซิร์ฟเวอร์ แต่ได้สร้างตารางชื่อ Sales ขึ้นมาจะถือว่า Sales เป็นของ GOTEAM และมีคุณสมบัติครบถ้วนที่จะเป็น GOTEAM. Sales
หมายเหตุ ทาง ด้านเทคนิค dbo ไม่ใช่การล็อคอินพิเศษ จึงไม่สามารถล็อคอินเข้าสู่เซิร์ฟเวอร์หรือฐานข้อมูลได้ในฐานะ dbo แต่เราเป็นผู้สร้างฐานข้อมูลหรือกลุ่มของอ็อปเจ็คต์ในฐานข้อมูลนั้น

  • การอนุญาตสิทธิ์

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

  • การอนุญาตสิทธ์ของอ็อปเจ็คต์

การ อนุญาตสิทธ์ของอ็อปเจ็คต์จะควบคุมการเข้าถึงตาราง วิว คอลัมน์ และ Stored Procedure ซึ่งสามารถควบคุมการเข้าถึงอ็อปเจ็คต์เหล่านี้ได้ โดยการอนุญาตสิทธิ์ การปฏิเสธ หรือการยกเลิกความสามารถในการประมวลผลคำสั่ง หรือ Stored Procedure เช่น สามารถอนุญาตให้ผู้ใช้สามารถใช้คำสั่ง SELECT เข้อมูลชึ้นมาจากตารางได้ แต่ไม่ให้สิทธิ์ในการ Insert, Update หรือ Delete

การอนุญาตสิทธิ์ของอ็อปเจ็กต์


ประเภทของอ็อปเจ็คต์

การกระทำที่เป็นไปได้

Column

Select Update

Row

N/A (ถูกกำหนดที่ระดับของตารางซึ่งอาจมีผลกระทบกันหลาย ๆ คอลัมน์)

Stored Procedure

Execute

Table

Select, Insert, Update, Delete และ References

View

Select, Insert, Update และ Delete

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


การอนุญาตสิทธิ์

คำอธิบาย

Create Database

กำหนด ว่าล็อคอินนั้นสามารถสร้างฐานข้อมูลได้ ผู้ใช้จะต้องอยู่ในฐานข้อมูล Master หรือเป็นสมาชิกของผู้ที่มีบทบาทเป็น System Administrator ของเซิร์ฟเวอร์

Create Default

กำหนดว่าผู้ใช้สามารถสร้างค่าเริ่มต้นให้แก่คอลัมน์ของตารางได้

Create Procedure

กำหนดว่าผู้ใช้สามารถสร้าง Stored Procedure ได้

Create Rule

กำหนดว่าผู้ใช้สามารถสร้างกฎของคอลัมน์ของตารางได้

Create Table

กำหนดว่าผู้ใช้สามารถสร้างตารางได้

Create View

เป็นการกำหนดให้ผู้ใช้สามารถสร้างวิว ได้

Backup Database

กำหนดให้ผู้ใช้สามารถสำรองข้อมูลได้

Backup Log

กำหนดว่าผู้ใช้สามารถสำรอง Transaction Log ได้

3. การอนุญาตสิทธิ์เต็มที่
สมาชิกของบทบาทของระบบที่ได้กำหนดไว้ก่อนในฐานข้อมูล/เจ้าของอ็อปเจ็คต์ของ ฐานข้อมูลเท่านั้นที่สามารถปฏิบัติงานกับการอนุญาตสิทธิ์เต็มที่ได้ การอนุญาตสิทธิ์เต็มที่สำหรับบทบาทไม่สามารถเปลี่ยนหรือประยุกต์ใช้กับบัญชี รายชื่ออื่น ๆ ได้ (ยกเว้นบัญชีรายชื่อเหล่านี้เป็นสมาชิกของบทบาท) เช่น สมาชิกของ System Administrator สามารปฏิบัติงานใด ๆ ใน SQL Sever ได้ พวกเขาสามารถขยายฐานข้อมูล หรือยกเลิกการทำงานได้ คุณไม่สามารถยกเลิกหรือให้สิทธิ์เหล่านี้แก่บัญชีรายชื่ออื่น ๆ ได้ ฐานข้อมูลเจ้าอ็อปเจ็คต์ฐานข้อมูลจะได้รับสิทธิ์การอนุญาตสิทธิ์เต็มที่นี้ ด้วย ซึ่งเป็นการอนุญาตให้ปฏิบัติงานใด ๆ ทั้งในฐานข้อมูลและอ็อปเจ็คต์ที่ตนเป็นเจ้าของได้ เช่น ผู้ใช้ที่เป็นเจ้าของตารางจะสามารถดู เพิ่ม เปลี่ยนแปลง ลบข้อมูล และสามารถเปลี่ยนแปลงรายละเอียดในตารางและควบคุมการอนุญาตของตาราได้ด้วย

  • บทบาท (Role)

บทบาท คล้ายกับการ Windows NT มาก คือ ยอมให้คุณสามารถกำหนดการอนุญาตสิทธิ์ให้แก่กลุ่มของผู้ใช้ได้ง่าย และมีการอนุญาตที่ถูกสร้างมาให้พร้อมกับระบบ (การอนุญาตสิทธิ์เต็มที่) ซึ่งสามารถเปลี่ยนแปลงได้ บทบาทมี 2 ประเภท คือ

  • บทบาทของเซิร์ฟเวอร์ ใช้ที่ระดับเซิร์ฟเวอร์
  • บทบาทของฐานข้อมูล ใช้ระดับฐานข้อมูล
  • บทบาทของเซิร์ฟเวอร์

ผู้ ใช้บทบาทของเซิร์ฟเวอร์ในการอนุญาตให้สามารถควบคุมระบบของเซิร์ฟเวอร์ได้ ถ้าผู้ใช้ทำการสร้างล็อคอินให้กับสมาชิกของของบทบาท ผู้ใช้ที่ใช้ล็อคอินนี้สามารถปฏิบัติงานตามบทบาทที่ได้รับอนุญาตไว้ได้ เช่น สมาชิกที่มีบทบาทเป็น System Administrator จะได้รับการอนุญาตสิทธิ์มากที่สุดใน SQL Sever และสามารถปฏิบัติงานใด ๆ ก็ได้
บทบาทของเซิร์ฟเวอร์จะถูกกำหนดที่ระดับเซิร์ฟเวอร์และมีการกำหนดไว้ก่อน ซึ่งหมายความว่าการอนุญาตสิทธิ์เหล่านี้จะมีผลต่อเซิร์ฟเวอร์ทั้งหมดและไม่ สามารถเปลี่ยนแปลงการกำหนดการอนุญาตสิทธิ์นี้ได้ ซึ่งส่วนต่อว่าจะแสดงสรุปบทบาทของเซิร์ฟเวอร์แต่ละประเภทจากระดับต่ำสุด (ผู้สร้างฐานข้อมูล)จนระดับสูงสุด (System Administrator )
ผู้สร้างฐานข้อมูล (DBcreator) บทบาทของ dbcreator นั้นถูกออกแบบเพื่อใช้กับผู้ใช้ที่ต้องการสร้างหรือปรับปรุงแก้ไขฐานข้อมูล สมาชิกที่อยู่ในบทบาทนี้สามารถเพิ่มสมาชิกไปใช้กับผู้ที่ต้องการจัดการกับ ไฟล์ของดิสก์ สมาชิกของบทบาทนี้สามารถเพิ่มสมาชิกไปใน dbcretor สามารถใช้คำสั่ง ALTER DATABASE, CREATEDATABASE และ sp_rcnamedb ได้
ผู้ควบคุมระบบดิสก์ (Diskadmin) บทบาทของ Diskadmin ถูกออก แบบเพื่อใช้กับผู้ใช้ที่ต้องการจัดการกับไฟล์ของดิสก์ สมาชิกของบทบาทนี้สามารถเพิ่มสมาชิกไปใน Diskadmin และสามารถใช้คำสั่ง DISK INIT, DISK MIRROR, DISK REEIT, DISK REINIT,DISK REMIRROR, sp_addumpdevice, sp_diskdefault และ sp_dropdevice ได้
ผู้ควบคุมระบบประมวลผล (Processadmin) บทบาทของ Processadmin ถูกออกแบบเพื่อให้ใช้กับผู้ใช้ที่ต้องการควบคุมการประมวลผลของ SQL Sever สมาชิกที่อยู่ในบทนี้สามารถเพิ่มสมาชิกไปใน Processadmin และสามารถยกเลิกการประมวลผลได้
ผู้ควบคุมระบบความรักษาความปลอดภัย (Securityadmin) บทบาทของ Securityadmin ถูกออกแบบเพื่อให้ใช้กับผู้ใช้ซึ่งต้องการจัดการกับล็อคอิน สร้างการอนุญาตสิทธิ์ให้กับฐานข้อมูลและอ่านไฟล์ Log ที่เป็นข้อผิดพลาด สมาชิกที่อยู่ในบทบาทนี้สามารถเพิ่มสมาชิกไปใน Securityadmin และสามรถอนุญาต ปฏิเสธ และยกเลิกการ create Database และอ่านไฟล์ Log ได้ พวกเขาสามารถทำงานต่าง ๆ ดังนี้ได้ sp_addlinkedsrvlogin, sp_addlogin, sp_defaultdb,
Sp_dfaultlanguage, sp_denylohin, sp_droplinkedsrvlogin, sp_droplogin, sp_grantlogin, sp_helplogins, sp_remoteoption และ sp_revokelogin
ผู้ควบคุมเซิร์ฟเวอร์ (Severadmin) บทบาทของ severadmin ถูกออก แบบเพื่อให้ใช้กับผู้ใช้ที่ต้องการกำหนดตัวเลือกของการตั้งค่าปฏิบัติการให้ กับเซิร์ฟเวอร์และการปิดเครื่องเซิร์ฟเวอร์ สมาชิกในกลุ่มนี้สามารถเพิ่มสมาชิกไปใน severadmin และสามารถใช้คำสั่ง DBCC PINTABLE, RECONFIGURE, SHUTDOWN, sp_configure และ sp_tableoption ได้
ผู้ควบคุมระบบติดตั้ง (Setupadmin) บทบาทของ Setupadmin กู กออกแบบเพื่อให้ใช้กับผู้ใช้ที่ต้องการจัดการเซิร์ฟเวอร์ที่ต้องการเชื่อม ต่อกันอยู่และการควบคุมกระบวนการในตอนเริ่มใช้งาน สมาชิกในกลุ่มนี้สามารถเพิ่มสมาชิกไปใน Setupadmin และสามารถเพิ่ม ลบ และตั้งค่าปฏิบัติการให้กับเซิร์ฟเวอร์ที่ต้องการเชื่อมต่ออยู่ และสามารถควบคุมขั้นตอนการเริ่มใช้งานได้
ผู้ควบคุม (Sysadmin) บทบาทของ Sysadmin ถูกออก แบบ เพื่อให้ใช้กับผู้ใช้ที่ต้องการควบคุมการทำงานของ SQL Sever และติดตั้งฐานข้อมูลทั้งหมด สมาชิกในกลุ่มนี้สามารถทำงานได้ทุกอย่าง

  • บทบาทของฐานข้อมูล

เมื่อ ผู้ใช้ต้องการกำหนดการอนุญาตสิทธิ์ที่ระดับฐานข้อมูล สามารถใช้บทบาทของฐานข้อมูลได้ บทบาทของฐานข้อมูลจะถูกกำหนดให้ตั้งให้อยู่บนพื้นฐานต่อฐานข้อมูล หมายความว่า ฐานข้อมูลแตะละตัวจะมีบทบาทเป็นของตัวเอง ซึ่ง SQL Sever 7.0 ให้การสนับสนุนบทบาทของฐานข้อมูลอยู่ 3 ประเภท

    • บทบาทมาตรฐานที่ผู้ใช้กำหนดขึ้น
    • บทบาทของแอพพริเคชันที่ผู้ใช้กำหนดขึ้น
    • บทบาทของฐานข้อมูลที่มีการกำหนดไว้ก่อน (หรือกำหนดไว้ตายตัว)
    • บทบาท มาตรฐานยอมให้ใช้สร้างบทบาทด้วยการให้อนุญาตสิทธิ์ และการให้สิทธิ์โดยเฉพาะผู้ใช้สามารถใช้บทบาทมาตรฐานในการรวมกลุ่มผู้ใช้ไว้ ด้วยกัน แล้วกำหนดการอนุญาตสิทธิ์อย่างเดียวให้บทบาทนั้นแทนที่จะต้องให้สิทธิ์แก่ ผู้ใช้ทีละคน เช่น ผู้ใช้สามารถสร้างบทบาทที่เรียกว่า Usersc และอนุญาตให้ผู้ใช้สามารถใช้คำสั่ง SELECT, INSERT, และ UPDATE ที่ตารางที่ระบุไว้ในฐานข้อมูล แต่ไม่อนุญาตให้มีสิทธิ์ทำงานอื่น ๆ
    • บทบาท ของแอพพริเคชัน ยอมให้ผู้ใช้สร้างบทบาทที่มีการรักษาความปลอดภัยด้วยรหัสผ่านสำหรับแอพพริเค ชันที่ได้ระบุไว้ เช่น ผู้ใช่สามารถติดต่อผ่านทางแอพพริเคชันที่ใช้เก็บที่ชื่อ NetReady ซึ่งแอพพริเคชันนี้จะใช้บทบาทได้และผู้ใช้ก็สามารถได้รับการอนุญาตสิทธิ์และ การให้สิทธิ์ได้ ผู้ใช้หรือบทบาทอื่น ๆ ไม่สามารถกำหนดบทบาทของแอพพริเคชันได้ซึ่งบทบาทของแอพพริเคชันจะพร้อมใช้งาน เมื่อแอพพริเคชันนั้นได้เชื่อมต่อกับฐานข้อมูลแล้ว
    • SQL Sever มีบทบาทฐานข้อมูลที่ได้มีการกำหนดไว้เช่นกัน ซึ่งเป็นบทบาทที่มีการให้ระบบอยู่แล้วและมีการอนุญาตสิทธิ์ที่ไม่สามารถ เปลี่ยนแปลงได้ ผู้ใช้สามารถใช้บทบาทของฐานข้อมูลที่ได้มีการกำหนดไว้กับการกำหนดสิทธิ์ เพื่อทำการควบคุมระบบฐานข้อมูลและสามารถกำหนดให้ใช้ล็อคอินเดียวใช้หลาย บทบาทได้

Public บทบาทของฐานข้อมูลสาธารณะ เป็นบทบาทที่เป็นค่าเริ่มต้นที่ได้กำหนดให้กับผู้ใช้ฐานข้อมูลทั้งหมด ผู้ใช้ได้รับการถ่ายทอดอนุญาตสิทธิ์และการให้สิทธิ์พิเศษของบทบาทสาธารณะ และบทบาทนี้ใช้แทนการอนุญาตสิทธิ์และการให้สิทธิพิเศษที่เป็นขั้นต่ำที่สุด บทบาทใด ๆ ที่คุณกำหนดให้แก่ผู้อยู่นอกเหนือบทบาทสาธารณะ ให้เพิ่มการให้อนุญาตสิทธิ์และการให้สิทธิ์พิเศษ ถ้าผู้ใช้ต้องการให้ผู้ใช้ฐานข้อมูลทุกคนได้รับการอนุญาตสิทธิพิเศษให้กำหนด การอนุญาตสิทธิ์นั้นให้แก่บทบาทสาธารณะ
db_accessadmin เป็น บทบาทที่กำหนดขึ้นสำหรับผู้ใช้ที่ต้องการเพิ่มหรือลบล็อคอินในฐานข้อมูล สมาชิกในบทบาทนี้สามารถทำได้ง่าย ๆ ในฐานข้อมูลที่ถูกเลือกไว้ดังนี้ sp_addalias , sp_adduser, sp_dropalias , sp_dropuser , sp_grantdbaccess และsp_revokedbaccess
db_backupoperator เป็นบทบาทที่กำหนดขึ้นสำหรับผู้ใช้ที่ต้องการสำรองฐานข้อมูลสมาชิกในบทบาท นี้สามารถทำงานต่าง ๆ ในฐานข้อมูลที่ถูกเลือกไว้ดังนี้ BACKUP FATABASE , BACKUP LOG , CHECKPOINT , DBAA CHEKALLOC , DBCC CHECKCATALOG , DBCC CHECKDB , DBCC TEXTALL , DBCC TEXTALLOC , AND DBCCUPDATEUSAGE
db_datareader เป็นบทบาทที่กำหนดขึ้นสำหรับผู้ใช้ที่ต้องการดูข้อมูลในฐานข้อมูลสมาชิกใน บทบาทนี้สามารถเลือกดูข้อมูลทั้งหมดจากทุกตารางในฐานข้อมูลได้
db_datawriter เป็นบทบาทที่กำหนดขึ้นสำหรับผู้ใช้ที่ต้องการปรับปรุงข้อมูลในตารางที่อยู่ ในฐานข้อมูล สมาชิกในบทบาทนี้สามารถใช้งานอ็อปเจ็กต์ในฐานข้อมูลที่เลือกไว้ได้ ดังนี้ DELETE , INSERT และUPDATE
db_ddlladmin เป็นบทบาทที่กำหนดขึ้นสำหรับผู้ใช้ที่ต้องการทำงานที่เกี่ยวข้องกับ Data Definiton Language (DDL) ของ SQL Server สมาชิกในบทบาทนี้สามารถส่งค่าคำสั่งของ DDL ใดออกไปก็ได้ ยกเว้นคำสั่ง GRANT , REVOKE หรือ DENY สมาชิกในบทนี้สามารถทำงานต่าง ๆ ในฐานข้อมูลที่ถูกเลือกไว้ได้ ดังนี้ REFEREBCES , sp_changeobjectowner , sp_procoption , sp_recompile , sp_rename และ sp_tableoption
db_denydatareader เป็นบทบาทที่กำหนดขึ้น เพื่อใช้จำกัดการเข้าถึงข้อมูลในฐานข้อมูลด้วยการล็อกอิน สมาชิกในบทบาทนี้สามารถปฏิเสธ หรือยกเลิกการให้อนุญาตสิทธิ์ในการใช้คำสั่ง SELECT กับอ็อปเจ็กต์ในฐานข้อมูลได้
db_denydatawriter เป็นบทที่กำหนดขึ้นเพื่อใช้จำกัดการอนุญาตสิทธิ์ในการปรับปรุงฐานข้อมูลโดย การล็อกอิน สมาชิกของบทบาทนี้สามารถปฏิเสธ หรือยกเลิกการให้อนุญาตสิทธิ์ในการใช้คำสั่ง INSERT , UPDATE และ DELETE กับอ็อบเจ็กต์ที่อยู่ในฐานข้อมูลได้
db_seurityadmin เป็นบทบาทที่กำหนดขึ้นให้กับผู้ใช้ที่ต้องการจัดการกับการให้อนุญาตสิทธิ์ เจ้าของอ็อบเจ็กต์ และบทบาท สมาชิกที่อยู่ในบทบาทนี้สามารถทำงานต่าง ๆ ในฐานข้อมูลที่เลือกไว้ได้ ดังนี้ DENY , GRANT , REVOKE , sp_addapprole , sp_addrole , sp_addrloemember , sp_addrolepassword , sp_changeobjectowner , sp_dropapprole , sp_droprole และ sp_droprolemember
db_owner เป็นบทบาทที่กำหนดขึ้นสำหรับผู้ใช้ที่ต้องการควบคุมงานทุกด้านในฐานข้อมูล สมาชิกในบทบาทนี้สามารถกำหนดสิทธิ์ ปรับปรุงการตั้งค่าในฐานข้อมูล การบำรุงรักษาฐานข้อมูลและทำงานในการควบคุมระบบอื่น ๆ ในฐานข้อมูลได้
การจัดการกับล็อคอินของเซิร์ฟเวอร์
SQL Server สามารถใช้ล็อกอินของฌดเมนที่อยู่ในวินโดวส์และล็อกอินใน SQL Server ได้ ถ้าตั้งค่าปฏิบัติการให้เซิร์ฟเวอร์เป็นระบบรักษาความปลอดภัยแบบผสม ผู้ใช้สามารถใช้ล็อคอินทั้ง 2 แบบ หรือถ้าตั้งค่าปฏิบัติการเป็นแบบอื่นจะสามารถใช้ล็อกอินของโดเมนที่อยู่ใน วินโดว์ได้เท่านั้น
การดูแลและการแก้ไขล็อคอินที่มีอยู่
การดูแลการดูแลและการแก้ไขล็อคอินสามารถทาตามขั้นตอนต่าง ๆ ดังนี้

  • เริ่มใช้งาน Enterprise Manager แล้วเข้าไปที่เซิร์ฟเวอร์ที่ต้องการทำงานด้วย
  • ในโฟลเดอร์ Security ของเซิร์ฟเวอร์เลือกรายการ Logins ในกรอบด้านซ้ายซึ่งในขณะนี้กรอบด้านขวาจะแสดงล็อคอินปัจจุบัน

  • Name คือ ชื่อล็อคอิน
  • Type คือ ประเภทของล็อกอินซึ่ง Standard คือ ล็อคอินของ SQL Server , Windows NT User คือ บัญชีรายชื่อผู้ใช้ของโดเมนและ Windows NT Group คือ บัญชีรายชื่อกลุ่มของโดเมน
  • Server Access คือ ประเภทของการให้อนุญาตสิทธิ์ผู้ใช้ในการเข้าถึงเซิร์ฟเวอร์ Permit หมายถึง ผู้ใช้สามารถเข้าถึงเซิร์ฟเวอร์ได้ Deny หมายถึงผู้ใช้ไม่สามารถเข้าถึงเซิร์ฟเวอร์ได้
  • Default Database คือ ค่าเริ่มต้นของฐานข้อมูลสำหรับผู้ใช้
  • User คือ ชื่อของผู้ใช้ที่ใช้ในการล็อคอินในฐานข้อมูล
  • Default Language คือ ค่าเริ่มต้นของภาษาที่ใช้กับผู้ใช้
  • การ ดูบทบาทของเซิร์ฟเวอร์และสิทธิ์ในการเข้าถึงฐานข้อมูลของผู้ใช้ ให้ดับเบิ้ลคลิกที่ชี่อผู้ใช้ที่อยู่นารายการของผู้ใช้ในกรอบด้านขวา ซึ่งจะเปิดกรอบโดยโต้ตอบ SQL Server Login Properties ขึ้น
  • สามารถ แก้ไขคุณสมบัติต่าง ๆ ให้กับบัญชีรายชื่อนี้ได้โดยใช้ฟิลด์ต่าง ๆ ที่อยู่ในแท็ป General, Server Roles และ Database Access ได้

การดูแลและแก้ไขล็อคอินที่มีอยู่ โดยใช้คำสั่ง Transaction – SQL

sp_helpogis [[@LoginNamePattern = ]] ‘login’]


การใช้งาน
EXEC sp_helplogins sa

การสร้างล็อคอินโดย Enterprise Manager
สามารถล็อคอินใหม่ใน Enterprise Manager โดยการใช้ Creater Login Wizard หรือกรอบโต้ตอบ Login Properties ได้ เนื่องจากขั้นตอนทั้งสองวิธีนี้มีความใกล้เคียงกันมาก แต่ในที่นี้จะเน้นการใช้กรอบตอบโต้ Login Properties และให้คุณใช้เทคนิคต่าง ๆ ของกรอบโต้ตอบ Create Login Wizard ถ้าต้องกานใช้วิซาร์ดให้ไปที่เมนู Tool แล้วเลือก Wizards ต่อมาให้คลิกที่เครื่องหมาย (+) ด้านหน้า Database แล้วดับเบิ้ลคลิก Create Login Wizard
การสร้างล็อคอินของ SQL มีขั้นตอนดังนี้

  • เปิด Enterprise Manager แล้วเข้าสู่ Server ที่ต้องการ
  • ในโฟลเดอร์ Security ของ Server ให้คลิกขวาที่รายการ Logins และเลือก New Login จะเปิดกรอบโต้ตอบ SQL Server Login Properties

  • ในฟิลด์ Name ให้พิมพ์ชื่อของบัญชีรายชื่อที่ต้องการให้เช่น Zebra
  • ถ้า กำลังสร้างล็อคอินของบัญชีรายชื่อโดเมน ให้เลือกปุ่มตัวเลือก Windows NT Authentication แล้วใช้คอมโบบ็อกซ์ Domain เพื่อสร้างโดเมนที่ต้องการใช้ ให้พิมพ์ชื่อโดเมนลงในคอมโบบ็อกซ์
  • การอนุญาตให้เข้าถึง Server ให้เลือกที่ปุ่มตัวเลือก Grant Access
  • การปฏิเสธการเข้าถึง Server ให้เลือกที่ปุ่ม Deny Access
  • ถ้าต้องการสร้างล็อคอิน SQL Server ใหม่ ให้เลือกที่ปุ่มตัวเลือก SQL Server Authentication แล้วใส่รหัสผ่าน
  • การ ระบุฐานข้อมูลและภาษาที่เป็นค่าเริ่มต้นสำหรับล็อคอิน การกำหนดค่าเริ่มต้นของฐานข้อมูลนั้นไม่ได้เป็นการใช้สิทธิ์ของล็อคอินในการ เข้าถึงฐานข้อมูลซึ่งเป็นเพียงการระบุถึงฐานข้อมูลที่จะไม่มีการระบุถึงชื่อ ฐานข้อมูลไว้ในคำสั่ง
  • คลิก OK เพื่อสร้างล็อคอินใน SQL Server Authentication ให้ยืนยันโดยการกรอกรหัสผ่านอีกครั้ง เมื่อมี Promp ขึ้นมา

การสร้างล็อคอินใหม่โดยใช้คำสั่ง Transaction – SQL

sp_addlogin [@loginname =] ‘login’
[,[@passwd =] ‘password’]
[,[@defdb =] ‘database’]
[,[@deflanguage =] ‘language’]
[,[@sid =] ‘sid’]
[,[@encryptopt =] ‘encryption_option’]

การใช้งาน
EXEC sp_addlogin webtr , webtester , Customer , us_english

การอนุญาตหรือการปฏิเสธการเข้าถึงเซิร์ฟเวอร์ Enterprise Manager
เมื่อสร้างล็อคอินใหม่หรือแก้ไขล็อคอินที่มีอยู่ในบัญชีรายชื่อของวินโดว์ ผู้ใช้สามารถอนุญาตหรือปฏิเสธการเข้าถึงเซิร์ฟเวอร์ของล็อคอินนี้ได้ การปฏิเสธการเข้าถึงเซิร์ฟเวอร์จะมีประโยชน์เมื่อบัญชีรายชื่อเฉพาะของ วินโดว์ถูกจำกัดการเข้าถึงเซิร์ฟเวอร์ชั่วคราว
การอนุญาตหรือปฏิเสธการเข้าถึงของล็อคอินที่มีอยู่ให้ทำตามขั้นตอนนี้

  • เริ่มใช้งาน Enterprise Manager แล้วเข้าถึงเซิร์ฟเวอร์ที่ต้องการ
  • ในโฟเดอร์ Security ของเซิร์ฟเวอร์ให้เลือกรายการ Logins ในกรอบด้านซ้าย
  • ในกรอบด้านขวา ให้ดับเบิ้ลคลิกที่บัญชีรายชื่อที่ต้องการทำงานด้วย และกรอบโต้ตอบ SQL Server Login Properties จะปรากฏขึ้น

  • การอนุญาตให้เข้าถึงเซิร์ฟเวอร์ให้เลือกที่ปุ่มตัวเลือก Grant Access
  • การปฏิเสธการเข้าถึงเซิร์อเวอร์ให้เลื่อกที่ปุ่มตัวเลือก Deny Access
  • คลิก OK

การปฏิเสธการเข้าถึงเซิร์ฟเวอร์โดยใช้คำสั่ง Transaction – SQL

sp_denylogin [@[loginname =] ‘login’


การใช้งาน
EXEC sp_denylogin BUTLTIN

การอนุญาตการเข้าถึงเซิร์ฟเวอร์โดยใช้คำสั่ง Transaction – SQL

sp_grantlogin [@loginname =] ‘login’


การใช้งาน
EXEC sp_grantlogin BUTLTIN

การลบล็อคอินโดย Enterprise Manager
เมื่อผู้ใช้ไม่ต้องการใช้ล็อคอินนั้นอีกต่อไป ผู้ควบคุมระบบจะต้องลบล็อคอินออกจาก SQL Server ดังนี้

  • เปิด Enterprise Manager แล้วเข้าสู่ server ที่ต้องกาน
  • ในโฟลเดอร์ Security ของ server ให้คลิกขวาที่รายการ Logins ในกรอบด้านซ้าย
  • คลิกขวาที่ล็อคอินที่ต้องการลบ แล้วเลือก Delete จากเมนูลัด

เมื่อมี Prompt ขึ้นมาให้เลือกที่ Yes เพื่อยืนยัน

การลบชื่อผู้ใช้และกลุ่มในของบัญชีรายชื่อของวินโดว์ล็อคอิน Transaction – SQL

sp_revokelogin [@loginname =] ‘login’


การใช้งาน
EXEC sp_revokelogin GALAXY\WRSTANEK

การลบล็อคอิน QSL Server โดยใช้ Transaction – SQL

sp_droplogin [@loginname =] ‘login’


การใช้งาน
EXEC sp_droplogin Zebra

การเปลี่ยนรหัสผ่านโดย Enterprise Manager
ผู้ใช้สามารถเปลี่ยนรหัสผ่านของตนเองหรือให้ผู้ควบคุมระบบของวินโดว์ยกเลิกรหัสผ่านให้ได้ซึ่งมีขั้นตอนดังนี้

  1. เปิด Enterprise Manager แล้วเข้าสู่ Server ที่ต้องการ
  2. ในโฟลเดอร์ Security ของ Server ให้คลิกขวาที่รายการ Logins ในกรอบด้านซ้าย
  3. ดับเบิลคลิกที่ล็อคอินที่ต้องการเปลี่ยน ซึ่งจะปรากฏหรอบโต้ตอบ SQL Server Login Properties ขึ้น

  1. พิมพ์รหัสผ่านใหม่เข้าไปในฟิลด์ Password แล้วคลิก OK
  2. เมื่อมี Prompt ขึ้นมา ให้กรอกรหัสผ่านใหม่อีกครั้ง แล้วคลิก OK

การเปลี่ยนรหัสผ่านโดย Transaction – SQL

sp_password [[@old =] ‘old_password’,] {[@new =] ‘new_password’}
[,[@loginname =] ‘login’]


การตั้งค่าปฏิบัติการให้บทบาทของเซิร์ฟเวอร์
บทบาทของเซิร์ฟเวอร์เป็นการกำหนดสิทธิ์ให้แก่ผู้ควบคุมระบบของเซิร์ฟเวอร์ ให้ล็อคอินของบ SQL Server บทบาทของเซิร์ฟเวอร์สามารถถูกจัดการได้โดยบทบาทหรือตามล็อคอินแต่ละตัว
การกำหนดบทบาทจากล็อคอินโดย Enterprise Manager
การกำหนดหรือเปลี่ยนแปลงบทบาทของเซิร์ฟเวอร์เพื่อทำการล็อคอินนั้น มีขั้นตอนดังนี้

  1. เริ่มใช้ Enterprise Manager แล้วเข้าถึงเซิร์ฟเวอร์ที่ต้องการใช้งาน
  2. ในโฟลเดอร์ Security ของเซิร์ฟเวอร์ให้เลือกรายการ logins ในกรอบด้านซ้าย
  3. ดับเบิ้ลคลิกที่ล็อคอินที่ต้องการจะต้องค่าปฏิบัติการ กรอบโต้ตอบ SQL Server Login Properties จะปรากฏขึ้น
  4. เลือกแท็ป Server Roles
  5. อนุญาตให้ใช้งานบทบาทของเซิร์ฟเวอร์โดยเลือกเช็คบ็อกซ์ด้านหน้าบทบาทที่คุณต้องการใช้
  6. เมื่อตั้งค่าปฏิบัติการให้กับบทบาทของเซิร์ฟเวอร์แล้วให้เลิก OK

การเพิ่มล็อคอินให้แก่บทบาทของเซิร์ฟเวอร์ โดย Transaction-SQLL
Sp_addrsvrolemenber[@loginname=]’login’,[@rolename=]’role’

การใช้งาน
EXEC sp_addsrvrolemember GALAXY\WRSTANEK,sysadmin

การลบล็อคอินให้แก่บทบาทของเซิร์ฟเวอร์โดย Transaction – SQL

การใช้งาน
EXEC sp_dropsrvrolemember GALAXY\WRSTANEK , sysadmin

การกำหนดบทบาทให้กับหลายล็อคอินโดย Enterprise Manager
วิธีที่ง่ายที่สุดในการกำหนดบทบาทให้แก่ล็อคอินหลาย ๆ ตัว คือ ใช้กรอบโต้ตอบ Server Roles Properties การเข้าถึงกรอบโต้ตอบนี้ และการตั้งค่าปฏิบัติการให้ล็อคอินหลาย ๆ ตัว มีขั้นตอน ดังนี้

  1. เริ่มใช้ Enterprise Manager แล้วเข้าถึงเซิร์ฟเวอร์ที่ต้องการใช้งาน
  2. ในโฟลเดอร์ Security ของเซิร์ฟเวอร์ให้เลือกที่รายการ Server Role ในกรอบด้านซ้าย
  3. ที่ กรอบด้านขวาให้ดับเบิลคลิกที่บทบาทของเซิร์ฟเวอร์ที่ต้องการตั้งค่าปฏิบัติ การ ซึ่งจะเป็นการเปิดกรอบโต้ตอบ Server Role Properties ขึ้น

  1. คลิ กปุ่ม Add เพื่อเพิ่มล็อคอิน และในกรอบโต้ตอบ Add Members ให้เลือกล็อคอินที่คุณต้องการเพิ่ม การเลือกล็อคอินหลาย ๆ ตัวสามารถทำได้โดยกดปุ่ม Ctrl หรือ Shift ค้างไว้ ในขณะที่ล็อคอินอยู่
  2. การลบล็อคอิน ให้เลือกที่ล็อคอินแล้วคลิกปุ่ม Remove
  3. คลิกแท็ป Permission เพื่อดูการอนุญาตสิทธิ์ที่รวมอยู่ในบทบาทของเซิร์ฟเวอร์แล้ว ให้คลิก OK

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

การกำหนดการเข้าถึงและบทบาทด้วยล็อคอินโดย Enterprise Manager
สำหรับการล็อคอินแต่ละตัวนั้นผู้ใช้สามารถอนุญาตให้เข้าถึงฐานข้อมูล และกำหนดบทบาทได้ดังนี้

  1. เริ่มใช้ Enterprise Manager แล้วเข้าถึงเซิร์ฟเวอร์ที่ต้องการใช้งาน
  2. ในโฟลเดอร์ Security ของเซิร์ฟเวอร์ให้เลือกรายการ Logins ในหน้าต่างด้านซ้าย
  3. ดับเบิ้ลคลิกที่ล็อคอินที่ต้องการตั้งค่าปฏิบัติการ กรอบโต้ตอบ SQL Server Login Properties จะปรากฏขึ้น
  4. คลิกที่แท็ป Database Access
  5. เลือก เช็คบ็อกซ์ของฐานข้อมูลที่ล็อคอินมีการเข้าถึง และในลิสต์บ็อกซ์ Permit In Database Role ให้เลือกเช็คบ็อกซ์ด้านหน้าบทบาทของฐานข้อมูลที่ล็อคอินนี้มีอยู่ในฐาน ข้อมูลที่ถูกเลือกไว้

  1. ทำขั้นตอนที่ 5 กับฐานข้อมูลอื่น ๆ ที่ล็อคอินนี้จะมีการเข้าถึงอีกครั้ง
  2. เมื่อตั้งค่าปฏิบัติการให้บทบาทของฐานข้อมูลแล้ว ให้คลิก OK

การกำหนดบทบาทให้ล็อคอินหลาย ๆ ตัว โดย Enterprise Manager
ในระดับของฐานข้อมูลนั้น ผู้ใช้สามารถกำหนดบทบาทของฐานข้อมูลให้แก่ล็อคอินหลาย ๆ ตัวได้ ตามขั้นตอนดังนี้

  1. เริ่มใช้ Enterprise Manager แล้วเข้าถึงเซิร์ฟเวอร์ที่ต้องการใช้งาน
  2. ในโฟลเดอร์ Database คลิกที่เครื่องหมาย (+) ที่ด้านหน้าฐานข้อมูลที่ต้องการทำงานด้วย
  3. ในหน้าต่างด้านซ้าย ให้เลือก Roles เพื่อแสดงรายการของบทบาทของฐานข้อมูลในกรอบด้านขวา
  4. ดับเบิ้ลคลิกที่บทบาทที่ต้องการตั้งค่าปฏิบัติการ ซึ่งจะทำให้กรอบโต้ตอบ Database Role Properties ปรากฎขึ้น

  1. การ เพิ่มสมาชิกบทบาท ให้คลิกที่ Add แล้วในกรอบโต้ตอบ Add Role Members ให้เลือกล็อคอินที่ต้องการเพิ่ม การเลือกล็อคอินหลาย ๆ ตัวให้กดปุ่ม Ctrl หรือ Shift ค้างไว้ในขณะที่คลิกชื่อล็อคอิน
  2. การลบสมาชิกของบทบาทนั้น ให้เลือกที่ล็อคอินแล้วคลิก Remove
  3. เมื่อตั้งค่าปฏิบัติการให้บทบาทของฐานข้อมูลเสร็จแล้ว ให้คลิก OK

การสร้างบทบาทของฐานข้อมูลแบบมาตรฐานโดย Enterprise Manager
แม้ ว่าบทบาทที่ได้มีการกำหนดไว้แล้วนั้น จะมีการอนุญาตสิทธิ์ประเภทพิเศษที่ไม่สามารถเปลี่ยนแปลงได้ก็ตาม ผู้ใช้สามารถกำหนดการอนุญาตสิทธิ์ให้แก่บทบาทที่สร้างขึ้นสำหรับฐานข้อมูล นั้น ๆ ได้ เช่น สมมติว่า ฐานข้อมูลมีผู้ใช้อยู่ 3 ประเภท คือ ผู้ใช้ธรรมดา คือ ผู้ที่ต้องการเรียกดูข้อมูล ผู้จัดการ คือ ผู้ที่ต้องการแก้ไขข้อมูลได้ และนักพัฒนาโปรแกรม คือ ผู้ที่ต้องการแก้ไขอ็อปเจ็กต์ของฐานข้อมูลได้ ในกรณีนี้สามารถสร้างบทบาทได้ 3 ประเภท เพื่อใช้จัดการกับประเภทของผู้ใช้เหล่านี้ ต้องจัดการกับบทบาทเหล่านี้และไม่ให้มีบัญชีรายชื่อของผู้ใช้แตกต่างกัน
การสร้างบทบาทของฐานข้อมูลที่เป็นมาตรฐาน มีขั้นตอนดังนี้

  1. เริ่มใช้ Enterprise Manager แล้วไปที่โฟลเดอร์ Database โดยใช้รายการที่อยู่ในกรอบด้านซ้าย
  2. ในโฟลเดอร์ Database ให้คลิกที่เครื่องหมาย (+) ด้านหน้าฐานข้อมูลที่ต้องการทำงานด้วย
  3. คลิกขวาที่ Roles แล้วเลือก New Database Role จากเมนูลัด ซึ่งเปิดกรอบโต้ตอบ Database Roles Properties

  1. พิมพ์ชื่อบทบาทในฟิลด์ Name
  2. เลือกปุ่มตัวเลือก Standard Role
  3. คลิ ก Add เพื่อเพิ่มสมาชิกของบทบาท และในกรอบโต้ตอบ Add Role Members ให้เลือกล็อคอินที่ต้องการเพิ่ม เราสามารถเลือกล็อคอินหลาย ๆ ตัว ได้โดยการกดปุ่ม Ctrl หรือ Shift ค้างไว้ในขณะที่คลิกที่ชื่อล็อคอิน
  4. คลิก OK
  5. บทบาท ที่สร้างขึ้นมาใหม่จะปรากฏที่หน้าต่างด้านขวาของ Enterprise Manager ให้ดับเบิ้ลคลิกไปที่บทบาทนั้น เพื่อเปิดกรอบโต้ตอบ Database Role Properties ขึ้นอีกครั้ง
  6. คลิก Permissions แล้วใช้แท็ป Permissions เพื่อตั้งค่าปฏิบัติการให้การอนุญาตสิทธิ์ในการเข้าถึงฐานข้อมูลของบทบาทนี้

การสร้างบทบาทของฐานข้อมูลแบบแอพพลิเคชันโดย Enterprise Manager
บทบาท ของแอพพลิเคชันถูกออกแบบขึ้นให้ใช้กับแอพพลิเคชันที่มีการเข้าถึงฐานข้อมูล และไม่มีล็อคอินที่เกี่ยวข้องกับแอพพลิเคชัน ผู้ใช้สามารถตั้งค่าปฏิบัติการให้กับบทบาทของแอพพลิเคชันได้ตามขั้นตอนดัง นี้

  • เริ่มใช้ Enterprise Manager แล้วไปที่โฟลเดอร์ Database โดยใช้รายการที่อยู่ในกรอบด้านซ้าย
  • ในโฟลเดอร์ Database ให้คลิกที่เครื่องหมาย (+) ด้านหน้าฐานข้อมูลที่ต้องการทำงานด้วย
  • คลิกขวาที่ Roles แล้วเลือก New Database Role จากเมนูลัด ซึ่งจะเปิดกรอบโต้ตอบ Database Role Properties
  • พิมพ์ชื่อบทบาทลงในฟิลด์ Name
  • เลือกปุ่มตัวเลือก Application Role แล้วพิมพ์รหัสผ่านของบทบาทนี้ในฟิลด์ Password ซึ่งคุณจะไม่ถูกขอให้ยืนยันรหัสผ่าน

    1. คลิก OK
    2. บทบาท ที่สร้างขึ้นมาใหม่จะปรากฏที่หน้าต่างด้านขวาของ Enterprise Manager ให้ดับเบิ้ลคลิกไปที่บทบาทนั้น เพื่อเปิดกรอบโต้ตอบ Database Role Properties ขึ้นอีกครั้ง

    1. คลิก Permissions แล้วใช้แท็ป Permissions เพื่อตั้งค่าปฏิบัติการให้การอนุญาตสิทธิ์ในการเข้าถึงฐานข้อมูลของบทบาทนี้

    1. คลิก OK

    การยกเลิกสิทธิ์และบทบาทในการเข้าถึงจากล็อคอินโดย Enterprise Manager
    การยกเลิกสิทธิ์ในการเข้าถึงหรือการลบผู้ใช้ออกจากบทบาทในฐานข้อมูล ต้องทำขั้นตอนดังนี้

    1. เริ่มใช้ Enterprise Manager แล้วไปที่โฟลเดอร์ Security โดยใช้รายการในกรอบด้านซ้าย
    2. ในโฟลเดอร์ Security ให้เลือกที่รายการ Logins ในกรอบด้านซ้าย
    3. ดับเบิ้ลคลิกที่ล็อคอินที่คุณต้องการตั้งค่าปฏิบัติการซึ่งจะปรากฏกรอบโต้ SQL Server Login Properties ขึ้นมา
    4. คลิกที่แท็ป Database Access

    1. ลบ ค่าเช็คบ็อกซ์ของฐานข้อมูลที่จะไม่ให้ล็อคอินนี้เข้าถึง แล้วในลิสต์บ็อกซ์ Permit In Database Role ให้ลบค่าเช็คบ็อกซ์ด้านหน้าบทบาทของฐานข้อมูลที่จะไม่ให้ล็อคอินนี้มีอยู่ใน ฐานข้อมูลที่ได้เลือกไว้
    2. ทำซ้ำตามขั้นตอนที่ 5 กับฐานข้อมูลอื่น ๆ เพื่อไม่อนุญาตและไม่ให้สิทธิ์ในการเข้าถึงกับล็อคอินนั้น
    3. เมื่อเสร็จทุกขั้นตอนแล้วให้คลิก OK

    การลบบทบาทที่ผู้ใช้กำหนดขึ้นโดย Enterprise Manager
    การลบบทบาทที่ผู้ใช้กำหนดขึ้น มีขั้นตอนดังนี้

    1. เริ่มใช้ Enterprise Manager แล้วไปที่โฟลเดอร์ Database โดยใช้รายการในกรอบด้านซ้าย
    2. ในโฟลเดอร์ Database ให้คลิกที่เครื่องหมาย (+) ด้านหน้าฐานข้อมูลที่ต้องการทำงานด้วย
    3. คลิก Roles ที่อยู่ในกรอบด้านซ้าย

    1. เลือกบทบาทที่คุณต้องการลบ แล้วกดปุ่ม Delete
    2. เมื่อเกิด Prompt ขึ้น ให้เลือก Yes เพื่อยืนยันการลบบทบาทนั้น

    การจัดการกับการเข้าถึงบทบาทโดย Transaction-SQL
    การเข้าถึงฐานข้อมูล

    บทบาทที่ได้กำหนดไว้ล่วงหน้า

    บทบาทมาตรฐานของฐานข้อมูล

    สมาชิกที่อยู่ในบทบาทของฐานข้อมูล

    บทบาทของแอพพลิเคชัน
    การใช้งาน
    DENY CREATE TABLE
    TO Devs, Testers

    DENY INSERT,UPDATE,DELETE
    ON customer..customers
    TO Users,[GALAXY\Sales]
    การให้อนุญาตสิทธิ์ของอ็อปเจ็กต์จากล็อคอินโดย Enterprise Manager
    การให้อนุญาตสิทธิ์ของอ็อปเจ็กต์นั้นใช้กับตาราง วิว และ Stored Procedure การอนุญาตสิทธิ์ที่กำหนดให้กับอ็อปเจ็กต์เหล่านี้ ประกอบด้วยคำสั่ง SELECT, INSERT, UPDATE และ DELETE
    ใน Snterprise Manager ผู้ใช้สามารถอนุญาต ยกเลิก หรือปฏิเสธการอนุญาตสิทธิ์ของอ็อปเจ็กต์ได้ โดยทำตามขั้นตอน ดังนี้

    1. ใช้โฟลเดอร์ Databases โดยใช้รายการที่อยู่ในกรอบด้านซ้าย
    2. คลิกเครื่องหมาย (+) ด้านหน้าฐานข้อมูลที่ต้องการทำงานด้วย แล้วเลือก User
    3. ใน กรอบด้านขวา จะเห็นรายการของผู้ใช้ฐานข้อมูล ให้ดับเบิ้ลคลิกที่ผู้ใช้ที่ด้องการตั้งค่าปฏิบัติการ เป็นการเปิดกรอบโต้ตอบ Database User Properties ขึ้นมา

    1. คลิกที่ Permissions เพื่อแสดงแท็ป Permission ขึ้นมา

    1. การ กำหนดการอนุญาติสิทธิ์ของอ็อปเจ็กนั้น ให้เลือกปุ่มตัวเลือก List ALL Object แล้วใช้รายหารในกรอบด้านขวาของชื่ออ็อปเจ็กต์ และชื่อเจ้าของเพื่อใช้ในการกำหนดสิทธิ์ เครื่องหมายถูก คือ การให้อนุญาตสิทธิ์ เครื่องหมาย x สีแดง คือการปฏิเสธการอนุญาตสิทธิ์ ส่วนการลบเครื่องหมายถูกออก คือ การยกเลิกการอนุญาตสิทธิ์
    2. คลิก Apply หรือ Ok เพื่อกำหนดสิทธิ์

    การอนุญาตสิทธิ์ของอ็อปเจ็กต์ให้แก่ล็อคอินหลายๆ ตัวโดย Enterprise Manager
    เราสามารถกำหนดการให้สิทธิ์โดยใช้อ็อปเจ็กต์ได้ด้วย และในวิธีนี้จะกำหนดการอนุญาตสิทธิ์ของอ็อปเจ็กต์ให้แก่ล็อคอินหลาย ๆ ตัว สามารถทำได้ตามขั้นตอนดังนี้

    1. เริ่มใช้ Enterprise Manager และไปที่โฟลเดอร์ Database โดยใช้รายการที่อยู่ในกรอบด้านซ้าย
    2. คลิ กเครื่องหมาย (+) ทีด้านหน้าฐานข้อมูลที่ต้องการทำงานด้วย แล้วเลือกประเภทของอ็อปเจ็กต์ที่คุณต้องการทำงานรวมด้วย เช่น Tables, Views หรือ Stored Procedure
    3. ในกรอบด้านขวา ให้ดับเบิ้ลคลิกที่ตาราง วิว หรือ Stored Procedure ที่ต้องการตั้งค่าปฏิบัติการ เป็นการเปิดกรอบโต้ตอบ Database User Properties ขึ้นมา

    1. ในกรอบโต้ตอบคุณสมบัตินั้น ให้คลิก Permissions ซึ่งจะเปิดกรอบโต้ตอบ Object Properties ขึ้นมา

    • การ กำหนดการอนุญาตสิทธิ์ให้กับการล็อคอิน ให้เลือกปุ่มตัวเลือก List All Users ชื่อของรายหาร User/DB Roles/Public ที่อยู่ในกรอบด้านขวาเพื่อใช้กำหนดการให้อนุญาตสิทธิ์ คอลัมน์ชื่อ Public นั้นเป็นการกำหนดการอนุญาตสิทธิ์ ส่วนเครื่องหมาย x สีแดง คือ การปฏิเสธการอนุญาตสิทธิ์ ส่วนการลบเครื่องหมายถูกออก คือ การยกเลิกเสนออนุญาตสิทธิ์

บทที่ 4 การคิวรี่ (Query)

บทที่ 3 การจัดการฐานข้อมูล

บทที่3

การจัดการฐานข้อมูล

คำสั่งของภาษา
ภาษา SQL (สามารถอ่านออกเสียงได้ 2 แบบ คือ “เอสคิวแอล” (SQL) หรือ “ซีเควล” (Sequel) ย่อมมาจาก Structured Query Language หรือภาษาในการสอบถามข้อมูล เป็นภาษาทางด้านฐานข้อมูล ที่สมารถสร้างและปฏิบัติการกับฐานข้อมูลแบบสัมพันธ์ (Relational Database) โดยเฉพาะ และเป็นภาษาที่มีลักษณะคลายกับภาษาอังกฤษ ภาษา SQL ถูกพัฒนาขึ้นจากแนวคิดของ Relational Calculus และ Relational Algebra เป็นหลัก ภาษา SQL เริ่มพัฒนาครั้งแรกโดย Almaden Research Center ของบริษัท IBM โดยมีชื่อเริ่มแรกว่า “ซีเควล” (Sequel) ต่อมาได้เปลี่ยนชื่อเป็น “เอสคิวแอล” (SQL) หลังจากนั้นภาษาSQL ได้ถูกนำมาพัฒนาโดยผู้ผลิตซอฟต์แวร์ด้านระบบจัดการฐานข้อมูลเชิงสัมพันธ์จน เป็นที่นิยมกันอย่างแพร่หลายในปัจจุบัน โดยผู้ผลิตแต่ละรายก็พยายามที่จะพัฒนาระบบจัดการฐานข้อมูลของตนให้มีลักษณะ เด่นเฉพาะขึ้นมา ทำให้รูปแบบการใช้คำสั่ง SQL มีรูปแบบที่แตกต่างกันไปบ้าง เช่น Oracle Access SQL Base ของ Sybase Ingres หรือ SQL Server ของ Microsoft เป็นต้น ดังนั้นในปี ค.ศ. 1986 ทางด้าน American National Standards Institute (ANSI) จึงได้กำหนดมาตรฐานของ SQL ขึ้น อย่างไรก็ดี โปรแกรมฐานข้อมูลที่ขายในท้องตลาด ได้ขยาย SQL ออกไปจนเกินข้อกำหนดของ ANSI โดยเพิ่มคุณสมบัติอื่น ๆ ที่คิดว่าเป็นประโยชน์เข้าไปอีก แต่โดยหลักทั่วไปแล้วก็ยังปฏิบัติตามมาตรฐานของ ANSI ในการอธิบายคำสั่งต่าง ๆ ของภาษาSQL

1. ประเภทของคำสั่งในภาษา SQL
ภาษา SQL เป็นภาษาที่ใช้งานได้ตั้งแต่ระดับเครื่องคอมพิวเตอร์ส่วนบุคคลพีซีไปจนถึง ระดับเมนเฟรม ประเภทของคำสั่งในภาษา (SQL The Subdivision of SQL) แบ่งออกเป็น 3 ประเภท คือ
1. ภาษาสำหรับการนิยามข้อมูล(Data Definition Language :DDL) ประกอบด้วยคำสั่งที่ใช้ในการกำหนดโครงสร้างข้อมูลว่ามีคอลัมน์อะไร แต่ละคอลัมน์เก็บข้อมูลประเภทใด รวมถึงการเพิ่มคอลัมน์การกำหนดดัชนี การกำหนดวิวหรือตารางเสมือนของผู้ใช้ เป็นต้น
2. ภาษาสำหรับการจัดการข้อมูล (Data Manipulation Language :DML) ประกอบด้วยคำสั่งที่ใช้ในการเรียกใช้ข้อมูลการเปลี่ยนแปลงข้อมูล การเพิ่มหรือลบข้อมูล เป็นต้น
3. ภาษาควบคุม (Data Control Language : DCL)ประกอบด้วยคำสั่งที่ใช้ในการควบคุมการเกิดภาวะพร้อมกัน หรือการป้องกันการเกิดเหตุการณ์ที่ใช้หลายคนเรียกใช้ข้อมูลพร้อมกัน และคำสั่งที่เกี่ยวข้องกับการควบคุมความปลอดภัยของข้อมูลด้วยการกำหนดสิทธิ์ ของผู้ใช้ที่แตกต่าง เป็นต้น
2. ชนิดของข้อมูล (Data Type)
การใช้ชนิดข้อมูลได้อย่างถูกต้องในการสร้างฐานข้อมูลทำให้การจัดสรรการใช้ เนื้อที่หน่วยความจำได้อย่างมีประสิทธิภาพ หน่วยความจำนี้รวมถึงฮาร์ดดิสก์ด้วย ดังนั้น เราควรจะทำความรู้จักชนิดข้อมูลที่ใช้ในฐานข้อมูล SQL Server ก็จะมีความคล้ายคลึงกับชนิดข้อมูลของผู้ผลิตรายอื่น ๆ เพราะใช้มาตรฐาน ANSI เป็นต้นแบบในการผลิตแอพพลิเคชันฐานข้อมูล ซึ่งแบ่งเป็นชนิดของข้อมูล ดังนี้

2.1 Character


ชนิดข้อมูล

ขอบเขตของชนิดข้อมูล

ขนาดหน่วยความจำ (ไบต์)

Char[(n)]

1 - 8000

n

Varchar[(n)]

1 – 8000

ความยาวข้อมูล

Text

231-1(2,147,483,647) ตัวอักษร

16+Multiple of 2k

2.2 Binary


ชนิดข้อมูล

ขอบเขตของชนิดข้อมูล

ขนาดหน่วยความจำ (ไบต์)

Binary(n)

1 - 8000

n

Varbinary(n)

1 - 8000

n + 1

Image

231 -1(2,147,483,647) ไบต์

16+Multiple of 2k

Timestamp

ใช้สำหรับเปลี่ยนการจัดการ

16

2.3 Date


ชนิดข้อมูล

ขอบเขตของชนิดข้อมูล

ขนาดหน่วยความจำ (ไบต์)

Datetime

วันที่เริ่มต้นตั้งแต่ January 1,1753 ถึง December 31,9999 ความละเอียดถึง 1/1000 วินาที

8

Smalldetetime

วันที่เริ่มต้นตั้งแต่ January 1,1900 ถึง June 6,2079

4

2.4 Logical


ชนิดข้อมูล

ขอบเขตของชนิดข้อมูล

ขนาดหน่วยความจำ (ไบต์)

Bit

0 หรือ 1

1

2.5 Numeric


ชนิดข้อมูล

ขอบเขตของชนิดข้อมูล

ขนาดหน่วยความจำ (ไบต์)

Int

±2,147,483,647

4

Smallint

±32767

2

Tinyint

0 255

1

Float(p)
P (Precision) คือ การนับจำนวน รวมของเลขหน้าและหลังทศนิยม มีค่าตั้งแต่ 1 ถึง 28
S (Scale) คือ จำนวนตัวเลขหลัง ทศนิยม

±1.79E+308

4 (Precision<16)
8(Precision>=16)

Double p

±1.79E+308

8

Real

±1.79E+308

4

Numeric(p,s)
Decimal(p,s)

±103

2 ถึง 17

Money

±$922,337,203,685,477.5807

8

Smallmoney

±$214,748.3647

4

3.การจัดการสร้าง เพิ่ม และลดขนาดของดาต้าเบส
การสร้างดาต้าเบสโดย Enterprise Manager

  • เปิด Enterprise Manager แล้วเข้าสู่ Server ที่ต้องการ
  • ในกรอบด้านซ้ายให้คลิกเมาส์ปุ่มขวาที่ Database แล้วเลือก New Database จะปรากฏไดอะลอก Database Properties
  • ให้พิมพ์ชื่อฐานข้อมูลลงไปในช่อง Name กำหนดขนาดของไฟล์ข้อมูล
  • ระบุตำแหน่งของไฟล์ดาต้าเบสในช่อง Location หรือจะมีค่าตามดีฟอลต์ก็ได้
  • กำหนดขนาดของไฟล์ข้อมูลที่ช่อง Intial Size
  • ในกรอบ File Growth ถ้าเลือกออปชั่น By Percent แล้วใส่ค่า แต่ถ้าระบุเป็นขนาดที่ต้องการให้คลิกออปชั่น In Megabytes และระบุจำนวน
  • ใน กรอบ Maximum File Size คือ ระบุขนาดของไฟล์สูงสุดที่ขยายได้ ถ้าเลือกออปชั่น Unrestricted Filegrowth คือ ขยายจนเต็มดิสก์ หรือเลือก Restict Filegrowth คือ กำหนดขนาดของไฟล์สูงสุด

CAPJOR หน้าจอ

  • คลิกแท็ป Transaction Log เพื่อกรอกข้อมูล Transaction Log
  • คลิกเมาส์ที่ช่อง Intial Size เพื่อกำหนดขนาดไฟล์เริ่มต้นของ Transaction Log แล้วใส่ค่า
  • คลิกเช็คบ็อกซ์ Automatically Grow File
  • ที่กรอบ File Growth เลือกออปชั่น In Megabytes แล้วใส่ค่า (แสดงถึงหน่วย MB)
  • ที่กรอบ Maximum File Size เลือกออปชั่น Restrict File Growth (MB) แล้วใส่ค่าเป็น 5

CAPJOR หน้าจอ

  • คลิกปุ่ม OK

การสร้างดาต้าเบสโดย Transact-SQL

CREATE DATABASE database_name ON
PRIMARY(NAME = logical_file_name,
FILENAME = ‘os_file_name’,
SIZE = size
[,MAXSIZE = max_size| UNLIMITED]
[,FILEGROWTH = growth_increment])
LOG ON
(NAME = logical_file_name,
FLENAME = ‘os_file_name’,
SIZE = size
[,MAXSIZE = max_size | UNLIMITED]
[,FILEGROWTH = growth_increment])


ตัวอย่าง สร้างดาต้าเบสชื่อ First DB ให้มีขนาดของดาต้าเบสและ Transaction Log ดังนี้

  • Database มี Initial Size 8 MB, File Growth 20%. Maximum File Size 25 MB
  • Transaction Log มี Initial Size 2 MB, File Growth 2 MB. Maximum File Size 5 MB

CREATE DATABASE First DB ON
PRIMARY (NAME = first_data,
FILENAME ‘c : \mssq17\data\first.mdf’ .
SIZE = 8MB,
MAXSIZE = 25 MB,
FILEGROWTH = 20%)

LOG ON
(NAME = first_log,
FILENAME = ‘c : \mssq17\data\first.ldf’,
SIZE = 2 MB,
MAXSIZE = 5 MB,
FILEGROWTH = 2 MB)

การดูรายละเอียดของดาต้าเบสโดย Enterprise Manager

  • เปิด Enterprise Manager แล้วเข้าสู่ Server ที่ต้องการ
  • ในการอบด้านซ้ายให้นำเมาส์ไปคลิกที่โฟลเดอร์ Database

CAPJOR หน้าจอ

  • ในกรอบด้านซ้ายให้คลิกเมาส์เลือกชื่อดาต้าเบสที่จะดูรายละเอียด จะมีรายละเอียดแสดงที่วินโดว์ด้านขวา

Owner คือ ชื่อยูสเซอร์ที่สร้างดาต้าเบส
Date Created คือ วันที่สร้าง
Size คือ ขนาดของดาต้าเบส
Space Available คือ เนื้อที่ที่ยังว่างอยู่
Database Options คือ ออปชั่นของดาต้าเบส
Number of Users คือ จำนวน Database User ของ Pubs
นอกจากนี้ยังบอกรายละเอียดของแบ็คอัพว่าทำเมื่อใด เช่น Database Backup Differential Backup หรือ Transaction Log Backup

  • ถ้าคลิกที่แท็ป Tables & Indexes จะได้รายละเอียดของอินเด็กซ์ ขนาดของแต่ละเทเบิล

CAPJOR หน้าจอ

  • คลิกแท็ป Space Allocated เพื่อดูขนาดของเนี้อที่ที่ใช้ และเนื้อที่ว่างสำหรับ Data File และ Log File

CAPJOR หน้าจอ

การดูรายละเอียดของดาต้าเบสโดย Transact – SQL และ Stored Procedure

Transact – SQL และ Stored Procedure

แสดงรายละเอียด

SELECT*FROM sysdatabases

แสดงรายชื่อของดาต้าเบสทั้งหมด

SELECT*FROM sysusers

แสดงรายชื่อของยูสเซอร์ใน Current Database

sp_tables

แสดงรายชื่อเทเบิลใน Current Database

sp_helpfile

แสดงรายชื่อไฟล์บนดิสก์ที่ลิงค์ไปยัง Current Database

sp_dboption databasename

เรียกดูออปชั่นของดาต้าเบส

sp_helpdb [database]

แสดง รายละเอียดของดาต้าเบสทั้งหมดในเซิร์ฟ เวอร์(ถ้าระบุชื่อของดาต้าเบสจะแสดงเฉพาะดาต้าเบสนั้นได้แก่ ชื่อ Database, Size, Owner ฯลฯ

sp_spaceused [table]

แสดงเนี้อที่ที่ใช้ของ Current Database หรือถ้าระบุชื่อเทเบิลจะแสดงเนื้อที่การใช้งานของเทเบิล

การกำหนดออปชั่นให้กับดาต้าเบส
ออปชั่นที่กำหนดให้กับดาต้าเบสมีผลต่อการใช้งานดาต้าเบส ดังเช่นที่เราจะพบอยู่บ่อย ๆ ว่าบางครั้งเราไม่สามารถใช้คำสั่งบางคำสั่งได้เช่น SELECT INTO (เพื่อสร้างเทเบิลใหม่จากเทเบิลเดิม) เป็นเพราะออปชั่นของดาต้าเบสมิได้เซ็ทให้สามารถทำได้ สำหรับรายละเอียดออปชั่นต่าง ๆ จะแบ่งเป็น 2 กลุ่ม คือ Access และ Setting มีดังนี้

การจัดการฐานข้อมูล

คำสั่งของภาษา
ภาษา SQL (สามารถอ่านออกเสียงได้ 2 แบบ คือ “เอสคิวแอล” (SQL) หรือ “ซีเควล” (Sequel) ย่อมมาจาก Structured Query Language หรือภาษาในการสอบถามข้อมูล เป็นภาษาทางด้านฐานข้อมูล ที่สมารถสร้างและปฏิบัติการกับฐานข้อมูลแบบสัมพันธ์ (Relational Database) โดยเฉพาะ และเป็นภาษาที่มีลักษณะคลายกับภาษาอังกฤษ ภาษา SQL ถูกพัฒนาขึ้นจากแนวคิดของ Relational Calculus และ Relational Algebra เป็นหลัก ภาษา SQL เริ่มพัฒนาครั้งแรกโดย Almaden Research Center ของบริษัท IBM โดยมีชื่อเริ่มแรกว่า “ซีเควล” (Sequel) ต่อมาได้เปลี่ยนชื่อเป็น “เอสคิวแอล” (SQL) หลังจากนั้นภาษาSQL ได้ถูกนำมาพัฒนาโดยผู้ผลิตซอฟต์แวร์ด้านระบบจัดการฐานข้อมูลเชิงสัมพันธ์จน เป็นที่นิยมกันอย่างแพร่หลายในปัจจุบัน โดยผู้ผลิตแต่ละรายก็พยายามที่จะพัฒนาระบบจัดการฐานข้อมูลของตนให้มีลักษณะ เด่นเฉพาะขึ้นมา ทำให้รูปแบบการใช้คำสั่ง SQL มีรูปแบบที่แตกต่างกันไปบ้าง เช่น Oracle Access SQL Base ของ Sybase Ingres หรือ SQL Server ของ Microsoft เป็นต้น ดังนั้นในปี ค.ศ. 1986 ทางด้าน American National Standards Institute (ANSI) จึงได้กำหนดมาตรฐานของ SQL ขึ้น อย่างไรก็ดี โปรแกรมฐานข้อมูลที่ขายในท้องตลาด ได้ขยาย SQL ออกไปจนเกินข้อกำหนดของ ANSI โดยเพิ่มคุณสมบัติอื่น ๆ ที่คิดว่าเป็นประโยชน์เข้าไปอีก แต่โดยหลักทั่วไปแล้วก็ยังปฏิบัติตามมาตรฐานของ ANSI ในการอธิบายคำสั่งต่าง ๆ ของภาษาSQL

1. ประเภทของคำสั่งในภาษา SQL
ภาษา SQL เป็นภาษาที่ใช้งานได้ตั้งแต่ระดับเครื่องคอมพิวเตอร์ส่วนบุคคลพีซีไปจนถึง ระดับเมนเฟรม ประเภทของคำสั่งในภาษา (SQL The Subdivision of SQL) แบ่งออกเป็น 3 ประเภท คือ
1. ภาษาสำหรับการนิยามข้อมูล(Data Definition Language :DDL) ประกอบด้วยคำสั่งที่ใช้ในการกำหนดโครงสร้างข้อมูลว่ามีคอลัมน์อะไร แต่ละคอลัมน์เก็บข้อมูลประเภทใด รวมถึงการเพิ่มคอลัมน์การกำหนดดัชนี การกำหนดวิวหรือตารางเสมือนของผู้ใช้ เป็นต้น
2. ภาษาสำหรับการจัดการข้อมูล (Data Manipulation Language :DML) ประกอบด้วยคำสั่งที่ใช้ในการเรียกใช้ข้อมูลการเปลี่ยนแปลงข้อมูล การเพิ่มหรือลบข้อมูล เป็นต้น
3. ภาษาควบคุม (Data Control Language : DCL)ประกอบด้วยคำสั่งที่ใช้ในการควบคุมการเกิดภาวะพร้อมกัน หรือการป้องกันการเกิดเหตุการณ์ที่ใช้หลายคนเรียกใช้ข้อมูลพร้อมกัน และคำสั่งที่เกี่ยวข้องกับการควบคุมความปลอดภัยของข้อมูลด้วยการกำหนดสิทธิ์ ของผู้ใช้ที่แตกต่าง เป็นต้น
2. ชนิดของข้อมูล (Data Type)
การใช้ชนิดข้อมูลได้อย่างถูกต้องในการสร้างฐานข้อมูลทำให้การจัดสรรการใช้ เนื้อที่หน่วยความจำได้อย่างมีประสิทธิภาพ หน่วยความจำนี้รวมถึงฮาร์ดดิสก์ด้วย ดังนั้น เราควรจะทำความรู้จักชนิดข้อมูลที่ใช้ในฐานข้อมูล SQL Server ก็จะมีความคล้ายคลึงกับชนิดข้อมูลของผู้ผลิตรายอื่น ๆ เพราะใช้มาตรฐาน ANSI เป็นต้นแบบในการผลิตแอพพลิเคชันฐานข้อมูล ซึ่งแบ่งเป็นชนิดของข้อมูล ดังนี้

2.1 Character


ชนิดข้อมูล

ขอบเขตของชนิดข้อมูล

ขนาดหน่วยความจำ (ไบต์)

Char[(n)]

1 - 8000

n

Varchar[(n)]

1 – 8000

ความยาวข้อมูล

Text

231-1(2,147,483,647) ตัวอักษร

16+Multiple of 2k

2.2 Binary


ชนิดข้อมูล

ขอบเขตของชนิดข้อมูล

ขนาดหน่วยความจำ (ไบต์)

Binary(n)

1 - 8000

n

Varbinary(n)

1 - 8000

n + 1

Image

231 -1(2,147,483,647) ไบต์

16+Multiple of 2k

Timestamp

ใช้สำหรับเปลี่ยนการจัดการ

16

2.3 Date


ชนิดข้อมูล

ขอบเขตของชนิดข้อมูล

ขนาดหน่วยความจำ (ไบต์)

Datetime

วันที่เริ่มต้นตั้งแต่ January 1,1753 ถึง December 31,9999 ความละเอียดถึง 1/1000 วินาที

8

Smalldetetime

วันที่เริ่มต้นตั้งแต่ January 1,1900 ถึง June 6,2079

4

2.4 Logical


ชนิดข้อมูล

ขอบเขตของชนิดข้อมูล

ขนาดหน่วยความจำ (ไบต์)

Bit

0 หรือ 1

1

2.5 Numeric


ชนิดข้อมูล

ขอบเขตของชนิดข้อมูล

ขนาดหน่วยความจำ (ไบต์)

Int

±2,147,483,647

4

Smallint

±32767

2

Tinyint

0 255

1

Float(p)
P (Precision) คือ การนับจำนวน รวมของเลขหน้าและหลังทศนิยม มีค่าตั้งแต่ 1 ถึง 28
S (Scale) คือ จำนวนตัวเลขหลัง ทศนิยม

±1.79E+308

4 (Precision<16)
8(Precision>=16)

Double p

±1.79E+308

8

Real

±1.79E+308

4

Numeric(p,s)
Decimal(p,s)

±103

2 ถึง 17

Money

±$922,337,203,685,477.5807

8

Smallmoney

±$214,748.3647

4

3.การจัดการสร้าง เพิ่ม และลดขนาดของดาต้าเบส
การสร้างดาต้าเบสโดย Enterprise Manager

  • เปิด Enterprise Manager แล้วเข้าสู่ Server ที่ต้องการ
  • ในกรอบด้านซ้ายให้คลิกเมาส์ปุ่มขวาที่ Database แล้วเลือก New Database จะปรากฏไดอะลอก Database Properties
  • ให้พิมพ์ชื่อฐานข้อมูลลงไปในช่อง Name กำหนดขนาดของไฟล์ข้อมูล
  • ระบุตำแหน่งของไฟล์ดาต้าเบสในช่อง Location หรือจะมีค่าตามดีฟอลต์ก็ได้
  • กำหนดขนาดของไฟล์ข้อมูลที่ช่อง Intial Size
  • ในกรอบ File Growth ถ้าเลือกออปชั่น By Percent แล้วใส่ค่า แต่ถ้าระบุเป็นขนาดที่ต้องการให้คลิกออปชั่น In Megabytes และระบุจำนวน
  • ใน กรอบ Maximum File Size คือ ระบุขนาดของไฟล์สูงสุดที่ขยายได้ ถ้าเลือกออปชั่น Unrestricted Filegrowth คือ ขยายจนเต็มดิสก์ หรือเลือก Restict Filegrowth คือ กำหนดขนาดของไฟล์สูงสุด

CAPJOR หน้าจอ

  • คลิกแท็ป Transaction Log เพื่อกรอกข้อมูล Transaction Log
  • คลิกเมาส์ที่ช่อง Intial Size เพื่อกำหนดขนาดไฟล์เริ่มต้นของ Transaction Log แล้วใส่ค่า
  • คลิกเช็คบ็อกซ์ Automatically Grow File
  • ที่กรอบ File Growth เลือกออปชั่น In Megabytes แล้วใส่ค่า (แสดงถึงหน่วย MB)
  • ที่กรอบ Maximum File Size เลือกออปชั่น Restrict File Growth (MB) แล้วใส่ค่าเป็น 5

CAPJOR หน้าจอ

  • คลิกปุ่ม OK

การสร้างดาต้าเบสโดย Transact-SQL

CREATE DATABASE database_name ON
PRIMARY(NAME = logical_file_name,
FILENAME = ‘os_file_name’,
SIZE = size
[,MAXSIZE = max_size| UNLIMITED]
[,FILEGROWTH = growth_increment])
LOG ON
(NAME = logical_file_name,
FLENAME = ‘os_file_name’,
SIZE = size
[,MAXSIZE = max_size | UNLIMITED]
[,FILEGROWTH = growth_increment])


ตัวอย่าง สร้างดาต้าเบสชื่อ First DB ให้มีขนาดของดาต้าเบสและ Transaction Log ดังนี้

  • Database มี Initial Size 8 MB, File Growth 20%. Maximum File Size 25 MB
  • Transaction Log มี Initial Size 2 MB, File Growth 2 MB. Maximum File Size 5 MB

CREATE DATABASE First DB ON
PRIMARY (NAME = first_data,
FILENAME ‘c : \mssq17\data\first.mdf’ .
SIZE = 8MB,
MAXSIZE = 25 MB,
FILEGROWTH = 20%)

LOG ON
(NAME = first_log,
FILENAME = ‘c : \mssq17\data\first.ldf’,
SIZE = 2 MB,
MAXSIZE = 5 MB,
FILEGROWTH = 2 MB)

การดูรายละเอียดของดาต้าเบสโดย Enterprise Manager

  • เปิด Enterprise Manager แล้วเข้าสู่ Server ที่ต้องการ
  • ในการอบด้านซ้ายให้นำเมาส์ไปคลิกที่โฟลเดอร์ Database

CAPJOR หน้าจอ

  • ในกรอบด้านซ้ายให้คลิกเมาส์เลือกชื่อดาต้าเบสที่จะดูรายละเอียด จะมีรายละเอียดแสดงที่วินโดว์ด้านขวา

Owner คือ ชื่อยูสเซอร์ที่สร้างดาต้าเบส
Date Created คือ วันที่สร้าง
Size คือ ขนาดของดาต้าเบส
Space Available คือ เนื้อที่ที่ยังว่างอยู่
Database Options คือ ออปชั่นของดาต้าเบส
Number of Users คือ จำนวน Database User ของ Pubs
นอกจากนี้ยังบอกรายละเอียดของแบ็คอัพว่าทำเมื่อใด เช่น Database Backup Differential Backup หรือ Transaction Log Backup

  • ถ้าคลิกที่แท็ป Tables & Indexes จะได้รายละเอียดของอินเด็กซ์ ขนาดของแต่ละเทเบิล

CAPJOR หน้าจอ

  • คลิกแท็ป Space Allocated เพื่อดูขนาดของเนี้อที่ที่ใช้ และเนื้อที่ว่างสำหรับ Data File และ Log File

CAPJOR หน้าจอ

การดูรายละเอียดของดาต้าเบสโดย Transact – SQL และ Stored Procedure

Transact – SQL และ Stored Procedure

แสดงรายละเอียด

SELECT*FROM sysdatabases

แสดงรายชื่อของดาต้าเบสทั้งหมด

SELECT*FROM sysusers

แสดงรายชื่อของยูสเซอร์ใน Current Database

sp_tables

แสดงรายชื่อเทเบิลใน Current Database

sp_helpfile

แสดงรายชื่อไฟล์บนดิสก์ที่ลิงค์ไปยัง Current Database

sp_dboption databasename

เรียกดูออปชั่นของดาต้าเบส

sp_helpdb [database]

แสดง รายละเอียดของดาต้าเบสทั้งหมดในเซิร์ฟ เวอร์(ถ้าระบุชื่อของดาต้าเบสจะแสดงเฉพาะดาต้าเบสนั้นได้แก่ ชื่อ Database, Size, Owner ฯลฯ

sp_spaceused [table]

แสดงเนี้อที่ที่ใช้ของ Current Database หรือถ้าระบุชื่อเทเบิลจะแสดงเนื้อที่การใช้งานของเทเบิล

การกำหนดออปชั่นให้กับดาต้าเบส
ออปชั่นที่กำหนดให้กับดาต้าเบสมีผลต่อการใช้งานดาต้าเบส ดังเช่นที่เราจะพบอยู่บ่อย ๆ ว่าบางครั้งเราไม่สามารถใช้คำสั่งบางคำสั่งได้เช่น SELECT INTO (เพื่อสร้างเทเบิลใหม่จากเทเบิลเดิม) เป็นเพราะออปชั่นของดาต้าเบสมิได้เซ็ทให้สามารถทำได้ สำหรับรายละเอียดออปชั่นต่าง ๆ จะแบ่งเป็น 2 กลุ่ม คือ Access และ Setting มีดังนี้

ออปชั่นของ Access

ความหมาย

DBP Use Only

กำหนด ให้ดาต้าเบสใช้ได้เฉพาะผู้ที่เป็นสมาชิกของ Fixed Database Role หรือ DB_Owner เท่านั้น ถ้าขณะนั้นยังคงมียูสเซอร์ใช้งานค้างอยู่เขายังสามารถทำงานได้ แต่เมื่อใดที่ยูสเซอร์นั้นเลิกการติดต่อหรือเปลี่ยนไปใช้ ดาต้าเบสอื่นก็จะกลับเข้ามาใช้อีกไม่ได้ จนกว่าจะกำหนดออปชั่นนี้ใหม่ให้เป็น False ส่วนใหญ่มักจะใช้เมื่อทำ Maintenance ระบบและไม่อนุญาตให้ยูสเซอร์อื่น ๆ เข้ามาใช้งานขณะนั้น

Single User

จำกัดการใช้งาน SQL Server ได้ครั้งละ 1 คนเท่านั้น มักจะใช้ตอนกู้ดาต้าเบส Master หรือเปลี่ยนชื่อดาต้าเบส

Read Only

กำหนดให้สามารถอ่านข้อมูลจาก SQL Server ได้เท่านั้น ไม่สามารถเพิ่ม แก้ไขหรือลบข้อมูลในดาต้าเบสได้

ANSI NULL Default

ปกติ SQL Server จะให้ดีฟอลต์ทุกคอลัมน์เป็น NOT NULL แต่ถ้ากำหนดออปชั่นนี้ให้เป็น True ค่าดีฟอลต์จะกลายเป็น NULL

Recusive Triggers

ถ้า กำหนดให้เป็น True จะทำให้การอ้างอิงของทริกเกอร์ที่กระทำกับเทเบิลที่หนึ่งไปยังเทเบิลที่สอง และในเทเบิลที่สองสามารถสร้างทริกเกอร์ให้กระทำย้อนกลับมาที่เทเบิลที่หนึ่ง ได้

Select Into/Bulk Copy

ยอมทำบางคำสั่งโดยไม่บันทึกลง Transaction Log เช่นSelect Intoและ BCP

Torn Page Detection

เมื่อ กำหนดให้เป็น True ระบบจะตรวจสอบแต่ละเพจว่าบันทึกลงดิสก์ถูกต้องสมบูรณ์หรือไม่ ทั้งนี้เพราะขณะที่บันทึกเพจนั้นอาจเกิดไฟดับ หรือระบบล่ม จะทำให้การบันทึกของเพจนั้นไม่สมบูรณ์ ในกรณีที่เซ็ทเป็น True จะทำให้ไม่สามารถรีสโตร์ดาต้าเบสได้ถ้ามีเพจเสียเกิดขึ้น

Auto Close

ถ้า กำหนดให้เป็น True ระบบดาต้าเบสจะปิดดาต้าเบสถ้าไม่มีคนใช้งาน และถ้ามีคนขอเข้ามาใช้ดาต้าเบสอีก ระบบก็จะเปิดให้ใช้โดยอัตโนมัติ ค่าดีฟอลต์จะกำหนดให้เป็น True เมื่อใช้ SQL Server ที่เป็นรุ่น Desktop Edition ส่วนรุ่นอื่น ๆ จะกำหนดให้เป็น Fault เพื่อจัดการไฟล์ดาต้าเบสได้ในแบบเดียวกันกับไฟล์ทั่ว ๆ ไป เช่น ก็อปปี้ แต่วิธีการนี้ไม่เหมาะกับงานที่มีทรานแซคชั่นมาก ๆ

Auto Shrink

เมื่อ กำหนดให้เป็น True ระบบจะตรวจสอบดาต้าเบส และ Transaction Log ถ้าพบว่ามีเนี้อที่ว่างมากกว่า 25 เปอร์เซ็นต์ จะทำการลดขนาดของดาต้าเบสโดยอัตโนมัติ สำหรับการลดขนาดของ Transaction Log จะไม่ทำทันที แต่ทำเมื่อมีการแบ็คอัพหรือลบคำสั่งที่มีใน Transaction Log ออกแล้ว แต่การลดขนาดไม่สามารถจะลดให้เล็กกว่าขนาดของไฟล์ที่สร้างไว้

Auto Create Statistics

เมื่อ กำหนดให้เป็น True ระบบจะจัดทำตัวเลขสถิติให้กับคอลัมน์ของเทเบิลที่มีคิวรีโดยใช้ WHERE clause เพื่อใช้ปรับประสิทธิภาพการดึงข้อมูลให้เร็วขึ้น

Auto Update Statistics

ถ้ากำหนดให้เป็น True ค่าสถิติของคอลัมน์จะถูกเปลี่ยนแปลงโดยอัตโนมัติเมื่อข้อมูลในคอลัมน์เปลี่ยน

Use Quoted Identifiers

ถ้ากำหนดให้เป็น True จะต้องใส่ “ ” เมื่อต้องการอ้างชื่อออปเจ็กต์ ต่าง ๆ ในดาต้าเบส


การกำหนดออปชั่นให้กับดาต้าเบสด้วย Enterprise Manager

  • เปิด Enterprise Manager แล้วเข้าสู่ Server ที่ต้องการ
  • ใน กรอบด้านซ้ายให้นำเมาส์ไปคลิกที่โฟลเดอร์ Database แล้วเลื่อนเมาส์ไปยังชื่อดาต้าเบสที่ต้องการกำหนดออปชั่น คลิกเมาส์ปุ่มขวาเลือก Properties
  • ที่หน้าจอ Properties คลิกที่แท็ป Options จะเห็นออปชั่นทั้งหมด จากนั้นถ้าต้องการเลือกให้ออปชั่นใดเป็น True ก็ให้คลิกที่เช็คบ็อกซ์หน้าข้อนั้น

CAPJOR หน้าจอ

  • ที่หน้าจอ Properties ให้คลิกที่เช็คบ็อกซ์หน้า Select Ino/Bulk Copy จากนั้นคลิก OK

การกำหนดออปชั่นให้กับดาต้าเบสด้วย Transact – SQL

Sp_dboption [[@dbname = ] ‘database’]
[,[@optname =] ‘option_name’]
[,[@optvalue = ] ‘value’]

ตัวอย่าง กำหนดให้ Pubs มีพร็อพเพอร์ตี้ ‘Select Into/Bulkcopy’ เป็น True
sp_dboption ‘pubs’ , ‘select into/bulkcopy’ , ‘true’

การเพิ่มขนาดดาต้าเบสโดย Exterprise Manager
เมื่อใช้ดาต้าเบสไประยะ ถ้าพบว่าขนาดของดาต้าเบสเล็กเกินไปก็ขยายเพิ่มเติมได้ โดยทำดังนี้

  • เปิด Enterprise Manager แล้วเข้าสู่ Server ที่ต้องการ
  • ใน กรอบด้านซ้ายให้ดับเบิ้ลคลิก Folder Database แล้วเลือกคลิกขวาแล้วเลือก Properties จะเข้าหน้าจอ Database Properties คลิกแท็ป General การเข้าหน้าจอนี้ครั้งแรกจะมีไฟล์เดียว การเพิ่มขนาดทำได้ 2 วิธี
    • เพิ่มขนาดของไฟล์เดิม ทำได้โดยคลิกที่คอลัมน์ Space Allocated (MB) แล้วระบุขนาดของไฟล์ใหม่ซึ่งต้องมีค่ามากกว่าเดิมลงไป
    • เพิ่มไฟล์ใหม่ ทำได้โดยคลิกบรรทัดที่สองแล้วใส่รายละเอียดของไฟล์ใหม่

CAPJOR หน้าจอ

  • คลิก OK

การเพิ่มขนาดดาต้าเบสโดย Transact – SQL

ALTER DATABASE database_name
{Add FILE
| ADD LOG FILE
| MODIFY FILE
ส่วนของ กำหนดดังนี้
(NAME = logical_file_name,
FILENAME = ‘os_file_name’,
SIZE = size
[, MAXSIZE = max_size |UNLIMITED]
[, FILEGROWTH = GROWTH_INCREMENT])

ตัวอย่าง ขยายขนาดเนื้อที่ของดาต้าเบสชื่อ First DB ให้เป็น 40 เมกกะไบต์
ALTER DATABASE First DB
MODIFY FILE (NAME = ‘first_data’,
SIZE = 40 MB)

ตัวอย่าง เพิ่มไฟล์ให้ดับดาต้าเบสชื่อ First DB อีก 1 ไฟล์ มีขนาดเริ่มต้น 5 MB และ
ขนาดสูงสุด 20 MB
ALTER DATABASE First DB
MODIFY FILE (NAME = ‘first_data’,
FILENAME = ‘c’ :
\mssp17\data\first_data3_data.ndf’,
SIZE = 5 MB,
MAXSIZE = 20 MB)


การเพิ่มขนาดของ Transaction Log โดย Enterprise Manager

  • เปิด Enterprise Manager แล้วเข้าสู่ Server ที่ต้องการ
  • ใน กรอบด้านซ้ายให้ดับเบิ้ลคลิก Folder Database แล้วเลือกคลิกขวาแล้วเลือก Properties จะเข้าหน้าจอ Database Properties คลิกแท็ป Transaction Log การเข้าหน้าจอนี้ครั้งแรกจะมีไฟล์เดียว การเพิ่มขนาดทำได้ 2 วิธี
    • เพิ่มขนาดของไฟล์เดิม ทำได้โดยคลิกที่คอลัมน์ Space Allocated (MB) แล้วระบุขนาดของไฟล์ใหม่ซึ่งต้องมีค่ามากกว่าเดิมลงไป
    • เพิ่มไฟล์ใหม่ ทำได้โดยคลิกบรรทัดที่สองแล้วใส่รายละเอียดของไฟล์ใหม่

3. คลิก OK

การเพิ่มขนาดของ Transaction Log โดย Transact – SQL
ตัวอย่าง ให้ขยายขนาดเนื้อที่ Transaction Log ของ Pubs ให้เป็น 6 เมกกะไบต์
ALTER DATABASE Pubs
MODIFY FILE (NAME = ‘pubs_Log’,
SIZE = 6 MB)
ตัวอย่าง ให้ขยายขนาดเนื้อที่ Transaction Log ของ Pubs โดยการเพิ่มไฟล์ขนาด 2 เมกกะไบต์ และเมื่อเต็มก็ขยายได้อีกแต่ใหญ่ไม่เกิน 5 เมกกะไบต์
ALTER DATABASE pubs
ADD LOG FILE (NAME = ‘pubs_log2’,
FILENAME = ‘c : \mssspl7\data\pubs_log2’.ldf’,
SIZE = 2 MB,
MAXSIZE = 5 MB)
การลดขนาดของดาต้าเบสโดย Enterprise Manager
การลดขนาดของดาต้าเบสจะทำการลบพื้นที่หรือเพจว่าง ๆ ที่อยู่ในดาต้าเบสนั้น ซึ่งลดขนาดได้ทั้งส่วนที่เก็บข้อมูล และส่วนที่เป็น Transaction Log โดยมีวิธีการดังนี้

  • เปิด Enterprise Manager แล้วเข้าสู่ Server ที่ต้องการ
  • ใน กรอบด้านซ้ายให้นำเมาส์ไปคลิกที่โฟลเดอร์ Database แล้วเลื่อนเมาส์ไปยังชื่อดาต้าเบสที่ต้องการลดขนาด คลิกเมาส์ปุ่มขวาเลือก All Tasks > Shrink Database
  • ที่หน้าจอ Shrink Database คลิกที่ Re – Organize Database… และ Shrink Database File… แล้วคลิก OK

  • Re – Organize Database – Move Data Pages to The Beginning of The Files หมายถึงการปรับเนื้อที่ในดาต้าเบสใหม่ โดยขยับมาใช้เนื้อที่ในส่วนต้น ๆ ของดาต้าเบสที่ว่างไว้ให้เต็ม
  • Shrink Database Files – Trucate Trailing Free Space From The end of The Files หมายถึงให้ลบเนื้อที่ว่างที่อยู่ทางด้านท้ายไฟล์ออกไป
  • R\Periodically Cheek to See If The Database Disk Space Be Shurnk หมายถึง กำหนดให้มีการลดขนาดของดาต้าเบสเป็นระยะ ๆ แต่ทั้งนี้ต้องกำหนดวันและเวลาที่จะทำ โดยคลิกที่ปุ่ม Schedule

การลดขนาดของดาต้าเบสโดย Transact – SQL
การปรับลดขนาดของดาต้าเบส เพื่อลดขนาดของพื้นที่ของทุกไฟล์ในส่วนที่ยังไม่ได้ใช้คำสั่งนี้จะทำได้กับ ดาต้าเบสเท่านั้น และมีข้อจำกัดว่าค่าที่ปรับลดนี้จะเล็กกว่าดาต้าเบส Model หรือเล็กกว่าขนาดเริ่มต้นที่สร้างไว้ไม่ได้

DBCC SHRINKDATABASE
database_name [, targer_percent]
[,{ NOTRUNCATE | TRUNCATEONLY }]


database_name คือ ชื่อของดาต้าเบสที่ต้องการลดขนาด
target_percent คือ ขนาดของเนื้อที่ว่างเป็นเปอร์เซ็นต์ที่จะให้คงเหลืออยู่หลังจากลดขนาดดาต้า เบสแล้ว ถ้าไม่ระบุจะลดขนาดให้เท่าที่สามารถจะทำได้
NOTRUNCATE คือ ย้ายเพจข้อมูลที่อยู่ท้ายไฟล์ไปยังเพจที่อยู่ต้น ๆ ส่วนเพจท้าย ๆ ที่ว่างอยู่นั้นให้คงไว้ ทำให้ขนาดไฟล์เท่าเดิม
TRUNCATEONLY คือ พื้นที่ว่างที่ไม่ได้ใช้ให้กับระบบปฏิบัติการ โดยไม่มีการขยับเพจของข้อมูล เมื่อใช้ออปชั่นนี้ไม่ต้องระบุ targer_percent

ตัวอย่าง ให้ลดขนาดดาต้าเบส Pubs โดยให้เลือกเนื้อที่ว่างประมาณ 10 %
DBCC SHRINKDATABASE(Pubs, 10)
การลดขนาดไฟล์ของดาต้าเบส (DBCC SHRINK FILE)
การปรับลดขนาดของไฟล์ข้อมูลหรือไฟล์ Transaction Log ของดาต้าเบส เพื่อลดขนาดของพื้นที่ว่างโดยระบุขนาดสุดท้ายของไฟล์ไว้ เช่น ถ้าไฟล์มีขนาด 10 MB ต้องการลดขนาดโดยให้ target_size เป็น 8 MB ระบบจะทำการย้ายข้อมูลในส่วนของ 2 MB ที่จะต้องถูกตัดออกไปให้ขยับมาอยู่ในส่วนของ 8 MB ให้ได้ แต่อย่างไรก็ตามจะไม่สามารถปรับลดขนาดให้เล็กกว่าขนาดเนื้อที่ที่จริงได้

DBCC SHRINKFILE
(file_name [, targer_size]
[,{EMPTYFILE | NOTRUNCATE | TRUNCATEONLY }] )

target_size คือ ขนาดของไฟล์เป็นเมกกะไบต์ที่เหลือหลังจากลดขนาดไฟล์แล้ว
EMPTYFILE คือ เป็นเพียงการย้ายข้อมูลในไฟล์ไปยังไฟล์อื่น ๆ ที่อยู่ในกรุ๊ปเดียวกัน และไม่อนุญาตให้บันทึกข้อมูลลงในไฟล์เดิมได้ และถ้าต้องการจะลบไฟล์นี้ทิ้งไห้ใช้คำสั่ง Aletr Database ที่มีออปชั่น Remove File

ALTER DATABASE databasename
REMOVE FILE logical_file_name

ตัวอย่าง ให้ลดขนาดไฟล์ในส่วนที่เป็น Transaction Log ของด้าต้าเบส Pubs โดยให้เหลือเนื้อที่เพียง 10 เมกกะไบต์
DBCC SHRINKFILE (Pubs_Log, 10)

การลบดาต้าเบสโดย (Enterprise Manager)

  • เปิด Enterprise Manager แล้วเข้าสู่ Server ที่ต้องการ
  • ในกรอบด้านซ้ายให้นำเมาส์ไปคลิกที่โฟล์เดอร์ Database แล้วเลื่อนเมาส์ไปยังชื่อดาต้าเบสที่ต้องการลบ คลิกเมาส์ปุ่มขวาเลือก Delete
  • จะแสดงหน้าต่างการยืนยัน ถ้าแน่ใจคลิก OK

การลบดาต้าเบสโดย Transact – SQL

DROP DATABASE database_name [,…]

ตัวอย่าง ลบ Database ชื่อ Pubs
DROP DATABASE Pubs

4.การจัดการเทเบิล
เทเบิลนั้นถือได้ว่าเป็นออปเจ็กต์ประเภทหนึ่งของดาต้าเบส ซึ่งใช้เก็บข้อมูลต่าง ๆ ไว้โดยมีโครงสร้างเหมือนตาราง 2 มิติ คือ ถ้ามองในแนวนอน คือแถวข้อมูล (Row) และถ้ามองในแนวตั้ง คือ คอลัมน์ของข้อมูล (column) ก่อนการสร้างเทเบิลจะต้องกำหนดรายละเอียดของเทเบิลได้ก่อน
หลักเกณฑ์การสร้างเทเบิล
ในการสร้างเทเบิลนั้นมีหลักเกณฑ์คร่าว ๆ ดังนี้ คือ

  • ชื่อของคอลัมน์ภายในเทเบิลเดียววันต้องไม่ซ้ำกัน แต่ใช้ชื่อคอลัมน์เหมือนกัน แต่คนละเทเบิลได้
  • ขนาด ของข้อมูลเก็บได้ไม่เกิน 8060 ไบต์ต่อแถว โดยนับตามขนาดของชนิดข้อมูลและชนิดข้อมูลประเภท Image, Text แต่ละชนิดคิดขนาดเป็น 16 ไบต์ต่อแถว
  • มีจำนวนไม่เกิน 1024 คอลัมน์ต่อหนึ่งเทเบิล
  • ชื่อ ของเทเบิลจะต้องเป็นไปตามกฎของการตั้งชื่อ แต่อาจตั้งชื่อเทเบิลซ้ำกันโดยมีเจ้าของเป็นคนละคนกัน เวลาที่จะเรียกใช้ก็ให้ระบุชื่อเจ้าของพร้อมทั้งชื่อเทเบิล

การสร้างเทเบิลโดย Enterprise Manager
ตัวอย่าง ให้สร้างเทเบิล Book โดยมีโครงสร้างดังนี้


Column Name

Description

Data Type

Index/NULL

ID_book

รหัสหนังสือ

CHAR(5)

PK/NOT NULL

ISBN

รหัส ISBN

CHAR(15)

NOT NULL

Book_title

ชื่อหนังสือ

VARCHAR(50)

NOT NULL

Book_auther

ชื่อผู้แต่ง

VARCHAR(50)

(NULL)

Book_price

ราคาหนังสือ

INT

NOT NULL

Book_intostock

จำนวนหนังสือในสต็อค

INT

NOT NULL

Book_note

หมายเหตุ

VARCHAR(100)

(NULL)

ID_type

รหัสประเภทหนังสือ

CHAR(2)

FK/NOT NULL

  • เปิด Enterprise Manager แล้วเข้าสู่ Server ที่ต้องการ
  • ในกรอบด้านซ้ายให้คลิกเมาส์ที่เครื่องหมาย + ที่ Database
  • ในกรอบด้านซ้ายให้คลิกเมาส์ที่เครื่องหมาย + โฟลเดอร์ดาต้าเบสที่ต้องการ จะเห็นโฟลเดอร์ชื่อ Tables
  • คลิกเมาส์ปุ่มขวาที่ Tables แล้วเลือก New Table
  • ที่หน้าจอ Choose Name ให้ตั้งชื่อเทเบิลว่า Book แล้วคลิก OK
  • จะแสดงหน้าจอที่มีลักษณะเป็นตารางให้ใส่ชื่อคอลัมน์ที่ต้องการพร้อมทั้งรายละเอียดของคอลัมน์ในเทเบิล โดยแต่ละส่วนมีความหมาย ดังนี้

ชื่อ

ความหมาย

Column Name

ชื่อของคอลัมน์

Data Type

ชนิดของข้อมูล

Length

ปกติ เมื่อล็อค Data Type แล้ว ความยาวของข้อมูลจะถูกกำหนดตามค่าดีฟอลต์ ยกเว้นชนิดข้อมูลบางอย่างที่สามารถกำหนดความยาวเองได้ด้วย ได้แก่ Char, Nchar, Varbinary, varchar และ Nvarchar ส่วนชนิดข้อมูลที่เป็นตัวเลข เช่น Float, Numeric ความยาวจะแปรไปตามขนาดของ Precision

Precision

จำนวน หลักของข้อมูลที่มีชนิดข้อมูลเป็นตัวเลข ปกติจะมีค่าตามดีฟอลต์ ยกเว้น Data Type ที่เป็น Decimal และ Numeric ที่กำหนดจำนวนหลักเองได้ (รวมตัวเลขหลังทศนิยม)

Scale

จำนวน หลักหลังจุดทศนิยม ปกติจะถูกกำหนดให้เป็น 0 ยกเว้นชนิดข้อมูลที่เป็น Decimal หรือ Numeric ที่กำหนดจำนวนหลักหลังจุดทศนิยมได้

Allow Null

ถ้า เลือก .....หมายถึงมีค่าเป็น Null ได้ โดยค่า Null มักใช้เป็นค่าดีฟอลต์เมื่อไม่มีการป้อนข้อมูลเข้ามาในคอลัมน์นี้ ค่านี้ไม่ใช่ค่า 0 หรือ Blank สิ่งที่ควรระวัง คือ ในคอลัมน์ที่เป็น Primary Key ไม่สามารถกำหนดให้มีค่า Null ได้ เพราะจะมีปัญหาในการคิวรีและอัพเดทข้อมูล

Default Value

กำหนด ให้ใส่ค่าดีฟอลต์นี้กับคอลัมน์โดยอัตโนมัติเมื่อมีการสร้างแถวใหม่ ซึ่งถ้าผู้ใช้ไม่ป้อนข้อมูลใด ๆ เข้ามา ข้อมูลในคอลัมน์นี้จะมีค่าเป็นดีฟอลต์ไป

Identity

ค่าเริ่มต้นของ Identity

Identiry Seed

ค่าที่จะให้เพิ่มขึ้นในแต่ละลำดับ

Is Row Guid

เก็บ ค่า Row Global Unique Id สำหรับบอกความเป็นเอกลักษณ์ของแถวข้อมูล คือการแยกให้ออกว่าแต่ละแถวของข้อมูลแตกต่างกันด้วยการใช้ค่าของ Row Guid

  • เมื่อ ใส่รายละเอียดของเทเบิลเรียบร้อยแล้ว ให้คลิกปุ่มที่ไอคอน Save บนทูลบาร์เพื่อบันทึก จากนั้นคลิกปุ่ม Close ที่มุมขาด้านบนเพื่อปิดหน้าจอ
  • เมื่อ กลับไปที่หน้าจอหลักของ Enterprise Manager อีกครั้ง จะเห็นเทเบิล Book ที่สร้าง ถ้าไม่เห็นชื่อเทเบิลให้คลิกเมาส์ปุ่มขวาที่ Tables แล้วเลือก Refresh

การสร้างเทเบิลโดย Transact – SQL

CREATE TABLE table_name
(column_name data_type [NULL | NOT NULL]
[[ DEFAULT Constrant_expression ]
| [ IDENTITY [( seed, increment )]
| [ ROWGUIDCOL ]]
[,…n ])

Default ข้อมูลในคอลัมน์จะมีค่าดีฟอลต์ตามที่ระบุไว้ที่ Constant_Expression ถ้า Insert ข้อมูลแล้วไม่ใส่ค่าให้กับคอลัมน์นี้ ซึ่งค่าดีฟอลต์ที่กำหนดไว้นี้จะต้องมีชนิดข้อมูลตรงกับชนิดข้อมูลตรงกับชนิด ข้อมูลของคอลัมน์นั้นด้วยจึงจะเก็บได้ เช่น การกำหนด Default เป็นเท็กซ์สำหรับคอลัมน์ที่มีชนิดข้อมูลที่เก็บตัวอักษร การกำหนด Default เป็นฟังก์ชันของวันที่ Getdate ( ) สำหรับคอลัมน์ที่มีชนิดข้อมูลเป็นวันที่ เป็นต้น

ตัวอย่าง สร้างเทเบิลชื่อ Book ดังนี้
USE Northwind
CREATE TABLE Book
(ID_book char (5) NOT NULL,
ISBN char (15) ,
Book_title varchar (50) ,
Book_auther varchar (50) ,
Book_price int ,
Book_intostock int ,
Book_note varchar (100) ,
ID_type char (2) NOT NULL)

ตัวอย่าง ให้สร้างเทเบิลประเภทหนังสือ โดยมีโครงสร้างดังนี้

Column Name

Description

Data Type

Index/NULL

ID_type

รหัสประเภทหนังสือ

CHAR (2)

PK/NOT NULL

Type_name

ชื่อประเภทหนังสือ

VARCHAR (50)

NOT NULL

USE Northwind
CREATE TABLE Type
(ID_type char(2) NOT NULL
Type_name varchar (50))

การสร้างเทเบิลแบบมี Identity
ในกรณีที่ต้องการให้คอลัมน์เก็บข้อมูลเป็นตัวเลขลำดับ ซึ่ง SQL Server จะใส่ข้อมูลให้เองโดยอัตโนมัติเมื่อมีการเพิ่มแถวใหม่ในเทเบิล เช่น 1, 2, 3, ... ไปเรื่อย ๆ หรือเรียงลำดับเป็นช่วง ๆ ละเท่า ๆ กัน เช่น 1, 5, 10, .... จะทำให้ได้โดย การกำหนดให้คอลัมน์นั้น เป็น Identity
เราสามารถกำหนดค่า Identity ให้กับคอลัมน์ที่มีชนิดข้อมูลเป็นตัวเลขเท่านั้น (ได้แก่ Int, Smallint, Tinyint, Numeric และ Decimal) และหนึ่งเทเบิลจะมีได้เพียงหนึ่งคอมลัมน์เท่านั้นที่เป็น Identity จากรูปแบบคำสั่ง Seed คือ ค่าตั้งต้น Increment คือ ค่าที่เพิ่มขึ้นในแต่ละลำดับ ถ้าไม่ระบุ Seed และ Increment จะมีค่าดีฟอลต์เป็น 1 และ 1 ตามลำดับ

ตัวอย่าง ให้สร้างเทเบิลลูกค้า โดยมีโครงสร้างดังนี้

Column Name

Description

Data Type

Index/NULL

ID_cust

รหัสลูกค้า

INT

PK/NOT NULL

Cust_name

ชื่อลูกค้า

CHAR(20)

NOT NULL

Cust_num

บ้านเลขที่

CHAR(5)

NOT NULL

Cust_road

ถนน

VARCHAR(30)

NOT NULL

Cust_locality

ตำบล

VARCHAR(30)

NOT NULL

Cust_amphut

อำเภอ

VARCHAR(30)

NOT NULL

Cust_province

จังหวัด

VARCHAR(20)

NOT NULL

Cust_post

รหัสไปรษณีย์

CHAR(5)

NOT NULL

Cust_tel

โทรศัพท์

CHAR(15)

NOT NULL

USE Northwind
CREATE TABLE Customer
(ID_cust int IDENTITY (1,1) NOT NULL,
Cust_name char(20),
Cust_num char(5),
Cust_road char(20), varchar(30),
Cust_locality varchar(30),
Cust_amphut varchar(30),
Cust_province varchar(20),
Cust_post char(5),
Cust_tel char(15)),

การสร้างเทเบิลแบบมี Default
USE Northwind
CREATE TABLE Customer
(ID_cust int IDENTITY (1,1) NOT NULL,
Cust_name char(30),
Cust_num char(5),
Cust_road char(20), varchar(30),
Cust_locality varchar(30),
Cust_amphut varchar(30),
Cust_province varchar(20), DEFAULT ‘Bangkok’
Cust_post char(5),
Cust_tel char(15)),

จากตัวอย่าง ถ้ามีการเพิ่มแถวข้อมูลเข้าไปที่เทเบิลนี้โดยไม่ระบุค่าให้กับคอลัมน์ Cust_province จะให้ค่าที่เก็บในเทเบิลเป็นคำว่า Bangkok

การเพิ่มคอลัมน์ในเทเบิลโดย Enterprise Manager

  • เปิด Enterprise Manager แล้วเข้าสู่ Server ที่ต้องการ
  • ในกรอบด้านซ้ายให้คลิกเมาส์ที่เครื่องหมาย + ที่ Database
  • ในกรอบด้านซ้ายให้คลิกเมาส์ที่เครื่องหมาย + ที่โฟลเดอร์ดาต้าเบสที่ต้องการ จะเห็นโฟลเดอร์ชื่อ Tables
  • คลิกเมาส์ปุ่มขวาที่ Tables แล้วเลือก Design Table
  • ที่ หน้าจอ Design Table ให้คลิกบรรทัดที่ว่างแล้วเติมคอลัมน์ที่จะเพิ่มให้ครบ ถ้าจะแทรกระหว่างคอลัมน์ที่มีอยู่เดิมให้นำเมาส์ไปคลิกที่คอลัมน์ใด ๆ ในบรรทัดที่จะแทรกคอลัมน์ใหม่ คลิกเมาส์ปุ่มขวาแล้วเลือก Insert Column

  • เมื่อ ใส่รายละเอียดที่ต้องการแก้ไขเรียบร้อย ให้คลิกไอคอนปุ่ม Save เพื่อบันทึกแล้วคลิกปุ่ม Close ที่มุมขวาด้านบนเพื่อปิดหน้าจอ จากตัวอย่างเป็นการเพิ่มคอลัมน์ในเทเบิล

การเพิ่มคอลัมน์ในเทเบิลโดย Transaction – SQL

ALTER TABLE table_name
ADD column_name data_type [NULL | NOT NULL]
DEFAULT default_value [,…n]

ตัวอย่าง เพิ่มคอลัมน์ในเทเบิล Customer ดังนี้

  • Sex มีชนิดข้อมูลเป็น Char (1) และ Default เป็น ‘M’
  • Birth_date มีชนิดข้อมูลเป็น Datetime

USE Nothwind
ALTER TABLE Customer
ADD Sex char
DEFAULT ‘M’
GO
ALTER TABLE Customer
ADD Birth_date datetime
GO

การลบคอลัมน์ในเทเบิลโดย Enterprise Manager
ขณะลบคอลัมน์สิ่งที่ควรระวัง คือ เมื่อสั่งลบและบันทึกจะไม่มีการถามยืนยันการลบอีกครั้ง ซึ่งหาดเกิดเปลี่ยนใจ ไม่ต้องการลบคอลัมน์นั้น ให้คลิก Close ที่มุมขวาด้านบนเพื่อปิดหน้าจอเลย จากนั้นโปรแกรมจะถามว่าต้องการบันทึกหรือไม่ ให้ตอบ No

  • เปิด Enterprise Manager แล้วเข้าสู่ Server ที่ต้องการ
  • ในกรอบด้านซ้ายให้คลิกเมาส์ที่เครื่องหมาย + ที่ Database
  • ในกรอบด้านซ้ายให้คลิกเมาส์ที่เครื่องหมาย + โฟลเดอร์ดาต้าเบสที่ต้องการ จะเห็นโฟลเดอร์ชื่อ Tables
  • คลิกเมาส์ที่ปุ่มขวา Tables แล้วเลือก Design Table
  • ที่หน้าจอ Design Table ให้คลิกบรรทัดที่ต้องการลบ จากนั้นคลิกเมาส์ปุ่มขวา เลือก Delete Column

คลิกไอคอนปุ่ม Save บนทูลบาร์เพื่อบันทึกการแก้ไข

การลบคอลัมน์ในเทเบิลโดย Enterprise Manager
ขณะลบคอลัมน์สิ่งที่ควรระวัง คือ เมื่อสั่งลบและบันทึกจะไม่มีการถามยืนยันการลบอีกครั้ง ซึ่งหากเกิดเปลี่ยนใจไม่ต้องการลบคอลัมน์นั้น ให้คลิก Close ที่มุมขวาด้านบนเพื่อปิดหน้าจอเลย จากนั้นโปรแกรมจะถามว่าต้องการบันทึกหรือไม่ ให้ตอบ No

  • เปิด Enterprise Manager แล้วเข้าสู่ Server ที่ต้องการ
  • ในกรอบด้านซ้ายให้คลิกเมาส์ที่เครื่องหมาย + ที่ Database
  • ในกรอบด้านซ้ายให้คลิกเมาส์ที่เครื่องหมาย + โฟลเดอร์ดาต้าเบสที่ต้องการจะเห็นโฟลเดอร์ชื่อ Tables
  • คลิกเมาส์ปุ่มขวาที่ Tables แล้วเลือก Design Table
  • ที่หน้าจอ Design Table ให้คลิกบรรทัดที่ต้องการลบ จากนั้นคลิกเมาส์ปุ่มขวาเลือก Delete Column

CAPJOR หน้าจอ

  • คลิกไอคอนปุ่ม Save บนทูลบาร์เพื่อบันทึกการแก้ไข

การลบคอลัมน์ในเทเบิลโดย Transaction – SQL

ALTER TABLE table_name
DROP COLUMN column_name


ตัวอย่าง ลบคอลัมน์ Birth_date ในเทเบิล Customer
USE Northwind
ALTER TABLE Customer
DROP COLUMN Birth_date
GO

การแก้ไขขนาดคอลัมน์ หรือชนิดของข้อมูลโดย Enterprise Manager

  • เปิด Enterprise Manager แล้วเข้าสู่ Server ที่ต้องการ
  • ในกรอบด้านซ้ายให้คลิกเมาส์ที่เครื่องหมาย + ที่ Database
  • ในกรอบด้านซ้ายให้คลิกเมาส์ที่เครื่องหมาย + โฟลเดอร์ดาต้าเบสที่ต้องการ จะเห็นโฟลเดอร์ชื่อ Tables
  • คลิกเมาส์ปุ่มขวาที่ Tables แล้วเลือก Design Table
  • ที่ หน้าจอ Design Table ให้เมาส์ไปคลิกที่ช่องของ Data Type ในบรรทัดที่ต้องแก้ไขจากนั้นเลือกชนิดข้อมูลที่ต้องการ หรือเปลี่ยนเฉพาะขนาดก็ให้เลือกที่ช่อง Length (ถ้าเป็นข้อมูลชนิดตัวเลข เช่น Numeric ต้องแก้ไขที่ Precision และ Scale)

CAPJOR หน้าจอ

  • คลิกไอคอนปุ่ม Save บนทูลบาร์เพื่อบันทึกการแก้ไข

การแก้ไขขนาดคอลัมน์ หรือชนิดของข้อมูลโดย Transaction – SQL

ALTER TABLE table_name
ALTER COLUMN column_name new_data_type [NULL | NOT NULL]

การ แก้ไขคอลัมน์อาจจะเป็นการแก้ไขความยาวของคอลัมน์ หรือเปลี่ยนชนิดของข้อมูลแต่ทั้งนี้ถ้ามีเทเบิลข้อมูลอยู่แล้ว ต้องพิจารณาไม่ให้ชนิดข้อมูลใหม่กระทบกับข้อมูลที่มีอยู่เดิม
ตัวอย่าง แก้ไขเทเบิล Customer โดยเปลี่ยนขนาดคอลัมน์ Cust_name จาก vachar (30) เป็น vachar (50)
USE Nothwind
ALTER TABLE Customer
ALTER COLUMN Cust_name vachar (50)

การแก้ไขชื่อคอลัมน์โดย Enterprise Manager

  • เปิด Enterprise Manager แล้วเข้าสู่ Server ที่ต้องการ
  • ในกรอบด้านซ้ายให้คลิกเมาส์ที่เครื่องหมาย + ที่ Database
  • ในกรอบด้านซ้ายให้คลิกเมาส์ที่เครื่องหมาย + โฟลเดอร์ดาต้าเบสที่ต้องการ จะเห็นโฟลเดอร์ชื่อ Tables
  • คลิกเมาส์ปุ่มขวาที่ Tables แล้วเลือก Design Table
  • ที่ หน้าจอ Design Table ให้เมาส์ไปคลิกที่ช่องของ Column Name ในบรรทัดที่ต้องแก้ไขจากนั้นลบชื่อเดิมเป็นชื่อใหม่ได้ทันที แต่ทั้งนี้จะต้องมีชื่อไม่ตรงกันกับชื่อคอลัมน์อื่นที่อยู่ในเทเบิลนั้น ในที่นี้เปลี่ยนชื่อคอลัมน์ Book_intostock เป็น Book_stock
  • คลิกไอคอนปุ่ม Save บนทูลบาร์เพื่อบันทึกการแก้ไข

การแก้ไขชื่อคอลัมน์โดย Transation – SQL

sp_rename ‘table.original_column_name’ , ‘new_column_name’ , ‘COLUMN’

ตัวอย่าง แก้ไขชื่อคอลัมน์ Book_intostock ในเทเบิล Book เป็น Book_stock
Sp_rename ‘Book.Book_intostock’ , ‘Book_stock’ , ‘COLUMN’

คอนสเตรนท์ (Constraint)

คอนสเตรนท์เป็นวิธีหนึ่งที่ช่วยตรวจเช็คความถูกต้องของข้อมูลให้อัตโนมัติ ทำให้สะดวกในการที่ไม่ต้องพัฒนาโปรแกรม เพื่อตรวจสอบความถูกต้องหรือความสอดคล้องกันของข้อมูลเมื่อมีการอ้างข้อมูล เมื่อมีการอ้างข้อมูลระหว่างเทเบิล นอกจากนี้ยังช่วยในการสร้างคีย์กำหนดความเป็นเอกลักษณ์หรือความไม่ซ้ำกันของ คอลัมน์เทเบิลได้ สำหรับประเภทของคอนสเตรนท์แบ่งออกได้เป็น

  • NOT NULL กำหนดให้คอลัมน์ไม่รับข้อมูลที่เป็น NULL
  • CHECK จำกัดค่าหรือเงื่อนไขของค่าที่จะใส่ลงในแต่ละคอลัมน์ และในเทเบิลหนึ่งอาจมีหลายคอนสเตรนท์ได้

CREATE TABLE Type
(ID_type int PRIMARY KEY,
Type_name varchar(50) ,
CONSTRAINT Chk_type CHECK (ID_type BETWEEN 1 and 99))

  • Unique กำหนดให้ข้อมูลในคอลัมน์หรือกลุ่มของคอลัมน์ในแต่ละแถวมีค่าที่ไม่ซ้ำกัน คือ จะไม่มีข้อมูลของแถวในคอลัมน์หนึ่งหรือกลุ่มของคอลัมน์นั้นซ้ำกันกับข้อมูล ในแถวอื่น ซึ่งจะคล้ายกันกับ Primary Key แต่ Primary Key จะไม่รับค่าที่ Null แต่ Unique จะรับค่าที่เป็น Null ได้
  • Pirmary Key กำหนดให้ข้อมูลในคอลัมน์หรือกลุ่มของคอลัมน์ในแต่ละแถวมีค่าที่ไม่ซ้ำกันและ ในหนึ่งเทเบิลจะมี Primary Key เพียงชุดเดียวเท่านั้น ในกรณีที่มีคอลัมน์อื่นหรือกลุ่มของคอลัมน์อื่นนอกเหนือจากที่กำหนดไว้เป็น Primary Key ซึ่งมีข้อมูลในแต่ละแถวไม่ซ้ำกัน ก็อาจกำหนดให้คอลัมน์นั้น ๆ เป็นคีย์ได้ เรียกว่า Candidate Key ในกรณีนี้อาจใช้ Candidate Key นี้เป็น Primary Key ก็ได้

สำหรับคอนสเตรนท์ต่าง ๆ นี้สามารถนำไปใช้ควบคุมในระดับคอลัมน์และเทเบิล

  • Foreign Key กำหนดความสัมพันธ์ระหว่างเทเบิลโดยข้อมูลที่เป็น Forign Key นี้จะมีอยู่ในทั้งสองเทเบิลที่เกี่ยวข้องกัน เพื่อใช้อ้างข้อมูลจากเทเบิลที่เกี่ยวข้องไปยังเทเบิลหลักได้
  • ในกระดับคอลัมน์ใช้เมื่อต้องการกำหนดให้กับคอมลัมน์และมีผลเฉพาะกับคอลัมน์นั้นเท่านั้น
  • ใน ระดับเทเบิลใช้เมื่อต้องการกำหนดให้กับหลาย ๆ คอลัมน์ที่อยู่ในเทเบิลนั้น เช่น ถ้า Primary Key ประกอบด้วยหลาย ๆ คอลัมน์ จะต้องกำหนดคอนสเตรนท์ในระดับเทเบิลโดยรวมทั้งสองคอลัมน์มาเป็น Primary Key

ตัวอย่าง เทเบิล Login มีรายละเอียดดังนี้


Column Name

Description

DataType

Index / NULL

Username

ชื่อผู้ใช้งาน

CHAR(10)

PK / NOT NULL

Password

รหัสของผู้ใช้งาน

CHAR(15)

PK / NOT NULL

Question

คำถาม

VARCHAR(20)

NOT NULL

Answer

คำตอบ

VARCHAR(20)

NOT NULL

CREATE TABLE Login
(Username char(10),
Password char(15),
Question varchar(20),
Answer varchar(20),
CONSTRAINT Login_key PRIMARY KEY (Username, Password))

การสร้าง Primary Key โดย Enterprise Manager
ในการจัดการคอนสเตรนท์ Primary Key นี้มีหลักเกณฑ์คร่าว ๆ ดังนี้

  • สร้างคอนสเตรนท์ Primary Key ลงในเทเบิลที่ยังไม่เคยมี Primary Key มาก่อน
  • เปลี่ยนแปลงหรือลบคอนสเตรนท์ Primary Key

เมื่อ มีการเพิ่ม Primary Key ในเทเบิลที่มีข้อมูลอยู่แล้ว SQL Server จะทำการตรวจสอบว่าข้อมูลในคอลัมน์หรือกลุ่มของคอลัมน์ที่เป็น Primary Key ว่ามีค่าเป็น NULL หรือมีข้อมูลซ้ำกันกับแถวอื่น ๆ หรือไม่ ซึ่งถ้ามีข้อมูลที่เกิดในลักษณะข้างต้น SQL Server จะส่งค่าที่แสดงความผิดพลาดกลับไป และไม่สร้างคอนสเตรนท์นั้นให้
ตัวอย่าง สร้าง Primary Key ให้กับคอลัมน์ ID_book ในเทเบิล book

  • เปิด Enterprise Manager แล้วเข้าสู่ Server ที่ต้องการ
  • ในกรอบซ้ายให้คลิกเมาส์ที่เครื่องหมาย + ที่ Database
  • ใน กรอบด้านซ้ายในคลิกเมาส์ที่เครื่องหมาย + โฟลเดอร์ดาต้าเบส Northwind เห็นโฟลเดอร์ Tables แล้ว คลิกไปที่โฟลเดอร์ Table จะเห็นโฟลเดอร์ชื่อ Book
  • คลิกเมาส์ปุ่มขวาที่ Book แล้วเลือก Design Table
  • ให้ คลิกคอลัมน์ของเทเบิลที่จะสร้าง Primary Key คือ คลิกที่ ID_book แล้วคลิกเมาส์ปุ่มขวาเลือก Set Primary Key จะเห็นรูปกุญแจปรากฏอยู่หน้าคอลัมน์ ID_book (ถ้า Primary Key ประกอบไปด้วยกลุ่มของคอลัมน์ให้คลิกที่คอลัมน์แรกก่อน แล้วกดปุ่ม Ctrl ค้างไว้ จากนั้นก็นำเมาส์ไปคลิกอีกคอลัมน์ที่จะเป็น Primary Key ร่วม แล้วค่อยคลิกเมาส์ปุ่มขวาเลือก Set Primary Key)

CAPJOR หน้าจอ

  • คลิกไอคอนปุ่ม Save บนทูลบาร์เพื่อบันทึกการแก้ไข

การลบ Primary Key โดย Enterprise Manager

  • เปิด Enterprise Manager แล้วเข้าสู่ Server ที่ต้องการ
  • ในกรอบด้านซ้ายให้คลิกเมาส์ที่เครื่องหมาย + ที่ Database
  • ใน กรอบด้านซ้ายในคลิกเมาส์ที่เครื่องหมาย + โฟลเดอร์ดาต้าเบส Northwind เห็นโฟลเดอร์ Tables แล้ว คลิกไปที่โฟลเดอร์ Table จะเห็นโฟลเดอร์ชื่อ Book
  • คลิกเมาส์ปุ่มขวาที่ Book แล้วเลือก Design Table
  • ให้ คลิกคอลัมน์ของเทเบิลที่จะลบ Primary Key คือ คลิกที่ ID_book แล้วคลิกเมาส์ปุ่มขวาเลือก Set Primary Key จะไม่เห็นรูปกุญแจปรากฏอยู่หน้าคอลัมน์ ID_book

CAPJOR หน้าจอ

  • คลิกไอคอนปุ่ม Save บนทูลบาร์เพื่อบันทึกการแก้ไข

การสร้าง Foreign Key โดย Enterprise Manager
Foreign Key เป็นคอลัมน์หรือกลุ่มของคอลัมน์ที่ใช้ในการเชื่อมข้อมูลที่อยู่ใน 2 เทเบิลสำหรับคอลัมน์ที่จะเชื่อมกันในเทเบิล จะต้องมีขนาดเท่ากันและเป็นข้อมูลประเภทเดียวกัน ยกเว้นบางกรณี คือ

  • คอลัมน์ที่เป็นประเภท Char จะเชื่อมไปยังคอลัมน์ที่เป็นประเภท Varchar ได้
  • คอลัมน์ที่เป็นประเภท Binary จะเชื่อมไปยังคอลัมน์ที่เป็นประเภท Varbinary ได้
  • ส่วนคอลัมน์ที่กำหนดชนิดข้อมูลขึ้นมาเอง จะเชื่อมไปยังชนิดข้อมูลที่เป็นพื้นฐานของคอลัมน์นั้น

วิธีการสร้างต้องใช้ Database Diagram โดยจะเลือกให้ Type เป็นเทเบิลหลัก และ Book เป็นเทเบิลที่จะสร้าง Foreign Key ไปยัง Type

  • เปิด Enterprise Manager แล้วเข้าสู่ Server ที่ต้องการ
  • ในกรอบด้านซ้ายให้คลิกเมาส์ที่เครื่องหมาย + ที่ Database
  • ในกรอบด้านซ้ายในคลิกเมาส์ที่เครื่องหมาย + โฟลเดอร์ดาต้าเบส Northwind เห็นโฟลเดอร์ Diagrams
  • ให้คลิกเมาส์ปุ่มขวาที่โฟลเดอร์ Diagrams แล้วเลือก New Database Diagram
  • ที่หน้าจอ Create Database Diagram Wizard ให้คลิก Next

  • ที่ ตำแหน่ง Available Tables ให้นำเมาส์ไปคลิกที่ชื่อของ Book แล้วกดปุ่ม Ctrl ค้างไว้ จากนั้นนำเมาส์ไปคลิกที่ Type คลิกปุ่ม Add จะเห็นชื่อของทั้งสองเทเบิลไปปรากฏที่กรอบด้านขวามือของ Tables to Add to Diagram
    • Add related Tables Automatically เมื่อเลือกออปชั่นนี้แล้วจะทำให้ SQL Server ดึงเอาชื่อเทเบิลที่มีความสัมพันธ์แบบ Primary Key และ Foreign Key กับเทเบิลที่ถูกเลือกไว้ในกรอบ Available Tables ไปปรากฏอยู่ในกรอบ Tables to Add to Diagram ด้วย
  • ที่หน้าจอ Completing the Create Database Diagram Wizard ให้คลิก Finish

  • ที่ หน้าจอ Diagram ให้คลิกเมาส์ที่ตำแหน่งสีเทา ๆ หน้าคอลัมน์ ID_type บนเทเบิล Type แล้วคลิกลากไปยังเทเบิล Book โดยวางเมาส์ลงบนตำแหน่งของคอลัมน์ ID_type

CAPJOR หน้าจอ

  • ที่ หน้าจอ Create Relationship ให้คลิก OK สำหรับ Relationship Name คือ ชื่อคอนสเตรนท์ที่เป็นแบบ Foreign Key จะแก้ไขหรือไม่ก็ได้ ส่วน Primary Key Table และ Foreign Key Table จะแสดงชื่อของคีย์ที่เชื่อมหรือลิงค์ถึงกันอยู่

CAPJOR หน้าจอ

  • ในหน้าจอ Diagram ให้คลิกไอคอนปุ่ม Save บนทูลบาร์เพื่อบันทึก จะเห็นหน้าจอ Save As ให้ตั้งชื่อของ ไดอะแกรมนี้ แล้วคลิก OK

CAPJOR หน้าจอ

  • ทีหน้าจอ Save ให้คลิก Yes แล้วเครื่องจะกลับไปที่หน้าจอของ Diagram อีกครั้งให้คลิกปุ่ม Close ที่มุมขวาด้านบนเพื่อปิดหน้าจอ

CAPJOR หน้าจอ
การลบ Foreign Key โดย Enterprise Manager

  • เปิด Enterprise Manager แล้วเข้าสู่ Server ที่ต้องการ
  • ในกรอบด้านซ้ายให้คลิกเมาส์ที่เครื่องหมาย + ที่ Database
  • ในกรอบด้านซ้ายในคลิกเมาส์ที่เครื่องหมาย + โฟลเดอร์ดาต้าเบส Northwind เห็นโฟลเดอร์ Diagrams
  • ให้ ดับเบิลคลิกเมาส์ที่โฟลเดอร์ Diagrams จะเห็นวินโดว์ด้านขวามีไอคอนที่เป็นรูป Diagrams อยู่ ให้คลิกเมาส์ปุ่มขวาเลือก Design Diagram
  • ที่หน้า จอ Diagrams ให้คลิกเมาส์ตรงเส้นที่เชื่อมต่อทั้งสองเทเบิล แล้วคลิกเมาส์ปุ่มขวาเลือก Delete Relationship from Database เมื่อมีข้อความยืนยันการลบให้คลิก Yes

CAPJOR หน้าจอ
การสร้าง Primary Key และ Foreign Key โดย Transaction – SQL
แบบที่ 1


CREATE TABLE table_name
(column_name data_type NO NULL [CONSTRAINT constraint_name]
{PRIMARY KEY [CLUSTERED | NON CLUSTERED]
| REFERENCES ref_table (ref_column)}
[,…..n])

ตัวอย่าง สร้างเทเบิลชื่อ Product_Item พร้อมทั้งกำหนดให้ Item_id เป็น Primary Key
USE pubs
GO
CREATE TABLE Product_Item
(Item_id smallint NOT NULL CONSTRAINT pk_item_id PRIMARY KEY,
Item_name varchar(20)
Price money)

ตัวอย่าง สร้างเทเบิลชื่อ order_details ให้มี order_id เป็น Primary Key และ Item_id เป็น Forein Key ที่เชื่อมไปยังเทเบิล product_item
USE pubs
GO
CREATE TABLE Order_Details
(Order_id smallint NOT NULL IDENTITY (1,1)
CONSTRAINT pk_order_id PRIMARY KEY ,
Item_id smallint NOT NULL ,
CONSTRAINT item_id_ref REFERENCES Product_Item(Item_id) )
แบบที่ 2


CREATE TABLE table_name
(column_name data_type [NULL | NO NULL]
[ , …..])
[ , { CONSTRAINT constraint_name PRIMARY KEY (column_name) ]
| CONSTRAINT constraint_name FOREIGN KEY (column_name)]
| REFERENCES ref_table (ref_column) } )

ตัวอย่าง สร้างเทเบิลชื่อ Product_Item พร้อมทั้งกำหนดให้ Item_id เป็น Primary Key
USE pubs
GO
CREATE TABLE Product_Item
(Item_id smallint NOT NULL,
Item_name varchar (20)
Price money,
CONSTRAINT pk_item_id PRIMARY KEY (Item_id))
ตัวอย่าง สร้างเทเบิลชื่อ order_details ให้มี order_id เป็น Primary Key และ Item_id เป็น Foreign Key ที่เชื่อมไปยังเทเบิล Product_item
USE pubs
GO
CREATE TABLE Order_Ketails
(Order_id smallint NOT NULL IDENTITY (1,1) ,
Item_id smallint NOT NULL ,
CONSTRAINT pk_order_id PRIMARY KEY (Order_id) ,
CONSTRAINT item_id_ref FOREIGN KEY (Iterm_id)
REFERENCES Product_Item(Item_id) )
การแก้ไขเทเบิลโดยเพิ่ม Primary Key และ Foreign Key โดย Transaction – SQL
เมื่อสร้างเทเบิลไปแล้ว และต้องการเพิ่มส่วนที่เป็น Primary key หรือ Foreign Key
CAPJOR หน้าจอ
ตัวอย่าง แก้ไขเทเบิล Order_Details โดยเพิ่มส่วนของคอนสเตรนท์ Primary Key
ALTER TABLE Order_Details
ADD CONTRAINT pk_order_id PRIMARY KEY (Order_id)
ตัวอย่าง แก้ไขเทเบิล Order_Details โดยเพิ่มส่วนของคอนสเตรนท์ Foreign Key
ALTER TABLE Order_Details
ADD CONTRAINT iter_id_ref REFERENCES Product_Item (Item_id))

การสร้าง Unique โดย Enterprise Manager
การกำหนดคอนสเตรนท์แบบ Unique นั้น มักจะกำหนดให้กับคอลัมน์ที่ต้องการให้มีข้อมูลที่ไม่ซ้ำกัน ซึ่งอาจเป็นคอลัมน์ใด ๆ ที่ไม่ใช่ Primary Key ส่วนคอลัมน์ที่เป็น Primary Key จะมีคอนสเตรนท์ เป็น Unique อยู่แล้ว และสามารถกำหนดให้หลาย ๆ คอลัมน์มีคอนสเตรนท์ Unique ได้
ตัวอย่าง จะสร้างคอลัมน์ ISBN และ Book_title ในเทเบิล Book เป็น Unique ซึ่งเมื่อนำ 2 คอลัมน์มารวมกัน ข้อมูลทุก ๆ แถวของทั้งสองคอลัมน์นั้นจะมีค่าไม่ซ้ำกันด้วย

  • เปิด Enterprise Manager แล้วเข้าสู่ Server ที่ต้องการ
  • ในกรอบด้านซ้ายให้คลิกเมาส์ที่เครื่องหมาย + ที่ Database
  • ในกรอบด้านซ้ายในคลิกเมาส์ที่เครื่องหมาย + โฟลเดอร์ดาต้าเบส Northwind เห็นโฟลเดอร์ Tables
  • ในกรอบด้านขวา ให้คลิกเมาส์ปุ่มขวาที่เทเบิล Book แล้วเลือก Design Table
  • คลิกที่ปุ่ม Table and Index Properties บนทูลบาร์ จะปรากฏหน้าจอ Properties ให้คลิกที่แท็ป Indexes/Keys จากนั้นคลิกปุ่ม New

CAPJOR หน้าจอ

  • ที่ กรอบของ Column Name ให้เลื่อนเมาส์มาที่บรรทัดว่าง ๆ จะปรากฏลูกศรด้านขวา ให้คลิกที่ลูกศรนั้นก็จะเห็นชื่อคอลัมน์ ให้เลือกชื่อคอลัมน์เป็น ISBN และ ในบรรทัดถัดมาให้เลือกคอลัมน์ Book_Title

CAPJOR หน้าจอ

  • ที่ Index Name ให้ตั้งชื่ออินเด็กซ์นี้เป็น Book_idx

CAPJOR หน้าจอ

  • คลิกที่เช็คบ็อกซ์หน้า Create Unique เพื่อสร้างคอนสเตรนท์ Unique
  • คลิ ก Close เมื่อหน้าจอกลับไปที่ Design Table ให้คลิกปุ่ม Save บนทูลบาร์เพื่อบันทึกแล้วปิดหน้าจอโดยคลิกปุ่ม Close ที่มุมขวาด้านบน

การสร้าง Check โดย Enterprise Manager
การกำหนดให้คอลัมน์มีคอนสเตรนท์แบบ Check เพื่อให้คอลัมน์รับข้อมูลตามเงื่อนไขที่กำหนดไว้เท่านั้นโดยเขียนเป็น เงื่อนไขแบบต่าง ๆ ดังนี้

  • เขียน เป็นเงื่อนไขทั่วไปที่ต้องการเช็ค เช่น ([BirthDate]) <> =0 and [Discount] <=1) เช็คค่าในคอลัมน์ Discount ต้องมีค่ามากกว่าหรือเท่ากับ 0 และน้อยกว่าหรือเท่ากับ 1 ส่วน (ID_type BETWEEN 1 and 99 ) คือ เช็คค่าในคอลัมน์ ID_type ต้องอยู่ในระหว่าง 1 ถึง 99
  • เขียนรูปแบบของ Check ตามลักษณะแพทเทิร์นข้อมูลของคอลัมน์นั้น เช่น (Cust_id LIKE ‘[0-9][0-9][0-9] – [0-9][0-9][0-9][0-9]’) หมายถึง ข้อมูลที่จะใส่ที่คอลัมน์นี้จะประกอบด้วยเลข 3 หลักแรก ที่มีค่าในแต่ละหลักเป็น 0 – 9 จากนั้นคั่นด้วยเครื่องหมาย – แล้วตามด้วยเลขอีก 4 หลัก แต่ละหลักมีค่าที่จะเป็น ไปได้ คือ 0 ถึง 9 เช่น ค่าที่สามารถใส่ให้คอลัมน์ Cust_id ได้แก่ 124 – 1200 เป็นต้น
  • เขียนในลักษณะที่เป็นกลุ่มของข้อมูล เช่น Check (pub_id IN ( ‘1548’ , ‘5874’))

วิธีการสร้าง Check ทำได้ดังนี้

  • เปิด Enterprise Manager แล้วเข้าสู่ Server ที่ต้องการ
  • ในกรอบด้านซ้ายให้คลิกเมาส์ที่เครื่องหมาย + ที่ Database
  • ในกรอบด้านซ้ายในคลิกเมาส์ที่เครื่องหมาย + โฟลเดอร์ดาต้าเบส Northwind เห็นโฟลเดอร์ Tables
  • ในกรอบด้านขวา ให้คลิกเมาส์ปุ่มขวาที่เทเบิล Type แล้วเลือก Design Table
  • คลิ กที่ปุ่ม Table and Index Properties บนทูลบาร์ จะปรากฏหน้าจอ Properties ให้คลิกที่แท็ป Tables จากนั้นคลิกปุ่ม New จะได้ชื่อของคอนสเตรนท์ Check ชื่อ CK_Type เป็น ดีฟอลต์ให้
  • ที่กรอบของ Constraint Expression ให้ใส่รูปแบบหรือแพทเทริร์นที่ใช้เช็คค่าของ ID_type ให้มีค่า 2 หลัก และแต่ละหลักต้องเป็นเลข 0 หรือ 9 เท่านั้น ดังรูปแบบ ([ID_type] like ‘[0 - 9] [0-9]’)
    • Check Exitsting Data on Creation เมื่อเลือกออปชั่นนี้จะทำให้มีการเช็คข้อมูลที่มีอยู่ในเทเบิลว่าตรงตาม เงื่อนไขของคอนสเตรนท์ที่สร้างขึ้น
    • Enable Constraint for Insert and Update ให้คอนสเตรนท์นี้มีผลต่อการทำงานเมื่อมีการ Insert และ Update
    • Enable Constraint for Replication ให้คอนสเตรนท์นี้มีผลต่อการก๊อปปี้ข้อมูลข้ามดาต้าเบส

CAPJOR หน้าจอ

  • คลิก Close เมื่อหน้าจอกลับไปที่ Design Table ให้คลิกปุ่ม Save บนทูลบาร์เพื่อบันทึก และปิดหน้าจอที่มุมขวาด้านบน

การสร้าง Unique และ Check โดย Transaction – SQL
เมื่อมีความต้องการกำหนดคอนสเตรนท์ให้ข้อมูลไม่ซ้ำกัน หรือตรวจสอบความถูกต้องของข้อมูลตามเงื่อนไข สามารถเลือกใช้คอนสเตรนท์ Unique และ Check ตามลำดับ
CAPJOR หน้าจอ
ตัวอย่าง
USE pubs
GO
CREATE TABLE Customer
(Cust_id smallint NOT NULL ,
First_name varchar(20),
Last_name varchar(20),
Address varchar(80),
CONSTRAINT unique_fullname
UNIQUE NONCLUSTERED (First_name, Last_name),
CONSTRAINT check_cust_id
CHECK (Cust_id LIKE ‘[0-9][0-9][0-9][0-9][0-9]’)
ในตัวอย่างข้างต้นกำหนดให้ Cust_id กำหนดให้เป็น char (5) รับข้อมูลในแต่ละหลักได้ เฉพาะ 0 ถึง 9 เท่านั้น และจากคอนสเตรนท์ unique_fullname หมายถึง เมื่อรวม first_name และ last_name เข้าด้วยกันแล้วจะไม่ซ้ำกับแถวอื่น
นอกจากรูปแบบข้างต้นที่กำหนด Check ไว้ท้ายคำสั่งแล้ว อาจกำหนด Check ไว้ต่อท้าย คอลัมน์นั้นเลยก็ได้

ตัวอย่าง แสดงการสร้างเทเบิลโดยมี Check Constraint
USE pubs
GO
CREATE TABLE Customer
(Cust_id smallint NOT NULL,
CONSTRAINT check_cust_id
CHECK (Cust_id LIKE ‘[0-9][0-9][0-9][0-9][0-9]’) ,
First_name varchar(20),
Last_name varchar(20),
Address varchar(80),
CONSTRAINT unique_fullname
UNIQUE NONCLUSTERED (First_name, Last_name))

การ Disable และ Enable คอนสเตรนท์โดย Transaction – SQL
การที่มีคอนสเตรนท์ในเทเบิลไม่ว่าจะเป็น Check, Foreign Key หรืออื่น ๆ นั้น จะพบว่าการจัดการกับข้อมูลทุกครั้งจะทำให้ใช้เวลาเพิ่มมากขึ้น แต่ในบางกรณีที่ต้องการทำงานบางอย่างให้รวดเร็ว เช่น การ Load ข้อมูลเป็นจำนวนมาก เพิ่มหรืออัพเดทข้อมูลทีละมาก ๆ หรือการทำ Replicate ดาต้าเบสข้ามเครื่อง ซึ่งข้อมูลอาจผ่านการตรวจสอบมาแล้ว ก็สามารถที่จะปิดหรือ Disable การทำงานของคอนสเตรนท์เหล่านี้ชั่วคราว และเมื่อต้องการให้คอนสเตรนท์เหล่านั้นกลับมาทำงานเหมือนเดิมก็ให้สั่ง Enable ใหม่
CAPJOR หน้าจอ

  • All หมายถึง ให้มีผลกับทุกคอนสเตรนท์
  • Check หมายถึง ให้ Enable คอนสเตรนท์ คือ มีผลให้คอนสเตรนท์นั้นกลับมาทำงานเหมือนเดิม
  • No Check หมายถึง การ Disable คอนสเตรนท์ซึ่งเป็นการยกเลิกคอนสเตรนท์นั้นชั่วคราว

ตัวอย่าง ให้ Disable คอนสเตรนท์ Foreign Key ของเทเบิล Order_Details (จากหัวข้อการสร้าง Primary Key และ Foreign key)
ALTER TABLE Order_Details
NOCHECK CONSTRAINT item_id_ref

ตัวอย่าง ให้ Enable คอนสเตรนท์ Foreign Key ของเทเบิล Order_Details
ALTER TABLE Customer
NOCHECK CONSTRAINT check_cust_id

ตัวอย่าง ให้ Enable คอนสเตรนท์ Check ของเทเบิล Customer
ALTER TABLE Customer
CHECK CONSTRAINT check_cust_id

การลบคอนสเตรนท์ โดย Transaction – SQL
เมื่อต้องการยกเลิกคอนสเตรนท์แบบถาวรทำได้โดยการสั่ง Drop คอนสเตรนท์นั้น
CAPJOR หน้าจอ
ตัวอย่าง ให้ลบคอนสเตรนท์ชื่อ pk_order_id จากเทเบิล Order_Details
ALTER TABLE Order_Details
DROP CONSTRAINT pk_order_id

การจัดการข้อมูลในเทเบิล
ในการเพิ่มและแก้ไขข้อมูลลงไปในเทเบิลคร่าว ๆ ดังนี้

  • ไม่สามารถป้อนข้อมูลที่มีค่าซ้ำกันในคอลัมน์ที่เป็น Primary Key หรือคอลัมน์ที่มีคอนสเตรนท์แบบ Unique ได้
  • การ เพิ่ม หรือการแก้ไขต้องระวังคอนสเตรนท์ Foreign Key ด้วย คือ ถ้ามีคอลัมน์ใดที่มีการอ้างอิงไปยังเทเบิลหลักก็ต้องป้อนหรือแก้ไขข้อมูลให้ สอดคล้องกัน เช่น ข้อมูลที่เพิ่มหากยังไม่มีในเทเบิลหลัก ก็ต้องเพิ่มในเทเบิลหลักเสียก่อน
  • คอลัมน์ที่เป็น Identity ไม่ต้องใส่ค่า และจะแก้ไขไม่ได้
  • คอลัมน์ที่เป็น Default จะใส่ค่าหรือไม่ใส่ก็ได้ ถ้าไม่ใส่จะได้ค่าตามที่กำหนดไว้ที่ Default
  • คอลัมน์ที่ระบุว่าเป็น Not Null จะต้องใส่ค่าทุกครั้ง
  • พึงระวังคอนสเตรนท์ Check หรือ Rule ของคอลัมน์ เพราะข้อมูลที่ใส่ในคอลัมน์ต้องเป็นไปตามกฎที่ระบุไว้
  • สำหรับ ข้อมูลที่เป็นวันที่แนะนำว่ารูปแบบการป้อนควรเป็น mm/dd/yy hh:mm:ss {PM หรือ AM} ซึ่งมีความละเอียดของเวลาถึงระดับวินาที โดยจะให้ปีเป็น yy 2 หลักหรือเป็น yyy 3 หลัก แต่ขอแนะนำให้ใช้ปีเป็น yyyy 4 หลัก นอกจากนี้จะใช้ – แทน / ในรูปแบบวันที่ก็ได้เมื่อเอ็กซีคิวต์แล้ว รูปแบบวันที่จะกลายเป็นแบบดีฟอลต์ mm/dd/yy และตามด้วยเวลาที่เราป้อน

การเพิ่มข้อมูลลงในเทเบิลโดย Enterprise Manager
ตัวอย่าง เพิ่มข้อมูลลงใน Table Type

  • เปิด Enterprise Manager แล้วเข้าสู่ Server ที่ต้องการ
  • ในกรอบด้านซ้ายให้คลิกเมาส์ที่เครื่องหมาย + ที่ Database
  • ในกรอบด้านซ้ายในคลิกเมาส์ที่เครื่องหมาย + โฟลเดอร์ดาต้าเบส Northwind เห็นโฟลเดอร์ Tables
  • ใน กรอบด้านขวา ให้คลิกเมาส์ปุ่มขวาที่เทเบิล Type แล้วเลือก Open Table > Return All Rows เพื่อแสดงข้อมูลทั้งหมาดในเทเบิล และถ้าเลือก Return Top จะให้ระบุว่าต้องการแสดงเฉพาะกี่แถวแรก
  • จะแสดง หน้าจอ Data in Table ‘Type’ ซึ่งเป็นตารางว่าง ๆให้ เนื่องจากยังไม่มีข้อมูลในเทเบิลนี้เลย ให้ใส่ข้อมูลลงไป โดยคลิกเมาส์ไปยังช่องแรกของแถวแรกในหน้าจอ เมื่อใส่ข้อมูลจนถึงช่องสุดท้ายของเทเบิลพอเคาะ Enter เคอร์เซอร์จะมารอที่แถวใหม่ของตาราง

CAPJOR หน้าจอ

  • เมื่อ คีย์ข้อมูลเรียบร้อยแล้วต้องบันทึกขัอมูลโดยคลิกที่ปุ่ม Run บนทูลบาร์ เพื่อให้ระบบทำาการเอ็กซีคิวต์ข้อมูลที่ป้อนเข้าไปก็ได้ ซึ่งการเอ็กซีคิวต์นี้จะทำการบันทึกข้อมูลลงบนดาต้าเบสด้วย ในกรณีที่มีการป้อนข้อมูลที่มีปริมาณมากควรจะสั่งบันทึกข้อมูลลงบนดาต้าเบส ให้บ่อย ๆ ถ้าจะปิดงานให้คลิกปุ่ม Close ที่มุมขวาด้านบน

การเพิ่มด้วย Insert…Values ลงในเทเบิลโดย Transaction SQL
เป็นคำสั่งที่ใช้ใส่ข้อมูลได้เพียงหนึ่งแถวต่อหนึ่งคำสั่ง
CAPJOR หน้าจอ

  • Table_name คือ ชื่อเทเบิลที่จะใส่ข้อมูล
  • Colmn_list คือชื่อคอลัมน์ที่ต้องการใส่ข้อมูล ให้ใช้ (Comma) คั่นแต่ละคอลัมน์ มักใช้ในกรณีที่ไม่ต้องการใส่ข้อมูลครบทุกคอลัมน์ สำหรับคอลัมน์ที่ไม่ระบุให้ใส่ค่านั้นจะต้องไม่มีพร็อพเพอร์ตี้เป็น Not Null หรือถ้ามีพร็อพเพอร์ตี้เป็น Default จะมีค่าตามค่าดีฟอลต์ ถ้าไม่มีการระบุชื่อคอลัมน์ใด ๆ ไว้เลย ค่าที่กำหนดได้กลัง Values จะต้องใส่ให้ครบทุกคอลัมน์และค่าจะต้องตรงกับลำดับในคอลัมน์ในเทเบิลนั้น
  • Default | Null | Expression คือ ข้อมูลที่ใส่ลงในคอลัมน์ต่าง ๆ ตามที่ระบุใน column_list ถ้าเป็น Default คือ ใส่ค่าที่กำหนดไว้เป็นดีฟอลต์ของคอลัมน์นั้น หรือ Null ก็จะใส่ค่า Null และ Enpression คือ ค่าใด ๆ ที่กำหนดให้กับคอลัมน์นั้นและคั่นข้อมูลแต่ละตัวด้วย ,(Comma)

ตัวอย่าง ใส่ข้อมูลลงในเทเบิล Type
INSERT INTO TYPE (ID_type, Type_name)
VALUE(4, ‘การ์ตูน’)

การเพิ่มด้วย Select…..Into ลงในเทเบิลโดย Transaction SQL
คำสั่งนี้เป็นการสร้างเทเบิลรวมทั้งก็อปปี้ข้อมูลและชื่อคอลัมน์เท่านั้นจาก เทเบิลเดิม เช่น สร้างเทเบิล Type_Bookและนำข้อมูลคอลัมน์ ID_type และ Type_name ของเทเบิล Type มาเป็นคอลัมน์ในเทเบิลใหม่นี้ด้วย
SELECT ID_type, Type_name
INTO Type_Test
FROM Type
หมายเหตุ ถ้าเอ็กซีคิวต์คำสั่งนี้ไม่ผ่าน อาจเกิดจากพร็อพเพอร์ต์ของดาต้าเบสที่เราใช้ ซึ่งไม่ได้กำหนด Select Into/Bulk Copy เป็น True

และถ้าใส่ข้อมูลให้ Type_Test ทุกคอลัมน์ ก็ทำได้โดยไม่ต้องระบุชื่อคอลัมน์ตามหลังชื่อเทเบิล
INSERT INTO Type_Test
VALUES (5, ‘ตลก’)

การเพิ่มด้วย Insert….Select ลงในเทเบิลโดย Transaction SQL
เป็นคำสั่งที่ช่วยในการใส่ข้อมูลลงในเทเบิลที่มีอยู่แล้ว โดยดึงข้อมูลที่ต้องการจากเทเบิลอื่น จาตัวอย่างที่แล้วมา Type_Test เป็นเทเบิลที่สร้างและก๊อปปี้ข้อมูลมาจากเทเบิล Type ถ้าหลังจากนี้ เทเบิล Type มีการเพิ่มข้อมูลอีกหลายรายการ และยูสเซอร์ต้องการจะใส่ข้อมูลส่วนที่เพิ่มขึ้นนี้ลงใน Type_Test สามารถทำได้ ดังนี้
INSERT INTO Type_Test
SELECT ID_type, Type_name
FROM Type
WHERE (ID_type
NOT IN (SELECT ID_type
FROM Type_Test))

การแก้ไขข้อมูลลงในเทเบิลโดย Enterprise Manager
ตัวอย่าง แก้ไขข้อมูลใน Table Type

  • เปิด Enterprise Manager แล้วเข้าสู่ Server ที่ต้องการ
  • ในกรอบด้านซ้ายให้คลิกเมาส์ที่เครื่องหมาย + ที่ Database
  • ในกรอบด้านซ้ายในคลิกเมาส์ที่เครื่องหมาย + โฟลเดอร์ดาต้าเบส Northwind เห็นโฟลเดอร์ Tables
  • ในกรอบด้านขวา ให้คลิกเมาส์ปุ่มขวาที่เทเบิล Type แล้วเลือก Open Table > Return All Rows เพื่อแสดงข้อมูลทั้งหมดเทเบิล
  • จะ แสดงหน้าจอ Data in Table ‘Type’ ซึ่งมีข้อมูลที่เรากรอก ให้เลื่อนเมาส์ไปยังข้อมูลที่แก้ไข ในที่นี้จะแก้ไขข้อมูลในคอลัมน์ Type_name จากกฎหมาย เป็นอาหาร

CAPJOR หน้าจอ

  • เมื่อ คีย์ข้อมูลเรียบร้อยแล้ต้องบันทึกข้อมูลโดยคลิกที่ปุ่ม Run บนทูลบาร์ เพื่อให้ระบบทำการเอ็กซีคิวต์ข้อมูลที่ป้อนเข้าไปก็ได้ ซึ่งการเอ็กซีควต์นี้จะทำการบันทึกข้อมูลลงบนดาต้าเบสด้วย ถ้าจะปิดงานให้คลิกปุ่ม Close ที่มุมขวาบน

การแก้ไขข้อมูลลงในเทเบิลโดย Transaction SQL
ข้อมูลที่มีอยู่ในเทเบิลสามารถที่จะปรับปรุงหรือแก้ไขใหม่ได้ โดยใช้คำสั่ง UPDATE ซึ่งในหนึ่งคำสั่งอาจอัพเดทข้อมูลหนึ่งแถว ทีละหลายแถว หรือทุก ๆ แถวในเทเบิลนั้นเลยก็ได้
CAPJOR หน้าจอ
ค่าที่กำหนดให้ใหม่ของแต่ละคอลัมน์นั้นจะใส่ไว้หลังคำว่า Set แต่ถ้ามีมากกว่าหนึ่งคอลัมน์ให้คั่นด้วย , (comma)
หมายเหตุ ถ้าไม่ระบุ Where การแก้ไขข้อมูลมีจะผลกับข้อมูลทั้งเทเบิล ถ้าต้องการแก้ไขเพียงบางแถว ให้ใส่เงื่อนไข หรือ Where
ตัวอย่าง แก้ไขข้อมูลในเทเบิล Type ให้เปลี่ยนข้อมูลแถวทีมี ID_type = 1 เฉพาะคอลัมน์ Type_name ให้มีค่าเป็น ‘การ์ตูน’
UPDATE Type SET Type_name = ‘การ์ตูน’
WHERE ID_Type = 1
ถ้าในตัวอย่างข้างต้นไม่ระบุ Where ไว้ด้วย จะแก้ข้อมูลทุก ๆ แถวในคอลัมน์ Type_name เป็น ‘การ์ตูน’ ทั้งหมด
นอกเหนือจาการอัพเดทข้างต้น ยังสามารถใช้ Subquery ช่วยในการอัพเดทในกรณีที่มีเงื่อนไขซับซ้อน
CAPJOR หน้าจอ
ถ้ามีการแก้ไขข้อมูลในคอลัมน์ Type_name ของเทเบิล Type และผู้ใช้ต้องการอัพเดทข้อมูลใน Type_Test ให้มีชื่อของ Type_name สอดคล้องกับ Type_name ของเทเบิล Type สามารถเขียนคำสั่งได้ดังนี้
UPDATE Type
SET Type_name =
(SELECT Type_name
FROM Type
WHERE Type.ID_type = Type_Test.ID_type)
จากตัวอย่าง คือการอัพเดทคอลัมน์ Type_name ของ Type_Test ให้มีชื่อตรงกับ Type_mane ของเทเบิล Type โดยที่บรรทัดที่ 3 – 5 จะทำการเช็คว่าคอลัมน์ของ Type_name ที่จะแก้ไขได้นี้จะต้องมี ID_type ตรงกัน

การลบข้อมูลในเทเบิลโดย Enterprise Manager
ตัวอย่าง ลบข้อมูลใน Table Type

  • เปิด Enterprise Manager แล้วเข้าสู่ Server ที่ต้องการ
  • ในกรอบด้านซ้ายให้คลิกเมาส์ที่เครื่องหมาย + ที่ Database
  • ในกรอบด้านซ้ายในคลิกเมาส์ที่เครื่องหมาย + โฟลเดอร์ดาต้าเบส Northwind เห็นโฟลเดอร์ Tables
  • ใน กรอบด้านขวา ให้คลิกเมาส์ปุ่มขวาที่เทเบิล Type แล้วเลือก Open Table > Return All Rows เพื่อแสดงข้อมูลทั้งหมดเทเบิล และถ้าเลือก Return Top จะให้ระบุว่าต้องการแสดงเฉพาะกี่แถวแรก
  • จะแสดง หน้าจอ Data in Table ‘Type’ ซึ่งมีข้อมูลที่เรากรอก ให้เลื่อนเมาส์ไปคลิกที่แถวที่ต้องการลบ ซึ่งจะเห็นเป็นแถบดำปรากฏอยู่ กดปุ่ม Delete บน Keyboard คลิก Yes เพื่อยืนยัน

CAPJOR หน้าจอ

  • ถ้าจะปิดงานให้คลิกปุ่ม Close ที่มุมขวาบน

การลบข้อมูลในเทเบิลโดย Transaction SQL
CAPJOR หน้าจอ
หมายเหตุ ถ้าไม่ระบุ Where การลบข้อมูลจะมีผลกับข้อมูลทั้งเทเบิล ถ้าต้องการลบเพียงบางแถวให้ใส่เงื่อนไข หรือ Where

ตัวอย่าง ลบข้อมูลในเทเบิล Type_Test เฉพาะแถวที่มีข้อมูลในคอลัมน์ ID_type เท่ากับ 1
DELETE Type_Test
WHERE ID_type =1

นอกเหนือจากการลบข้างต้น ยังสมารถใช้ Subquery ช่วยในการลบในกรณีที่มีเงื่อนไขซับซ้อน
CAPJOR หน้าจอ
ถ้าเทเบิล Type มีการลบข้อมูลบางรายการออกไป และผู้ใช้ต้องการลบข้อมูลออกจากเทเบิล Type_Test ที่สอดคล้องกันออกไปด้วย
DELETE Type_Test
WHERE ID_type NOT IN
(SELECT ID_type
FROM Type)
จากคำสั่งข้างต้นเป็นการลบข้อมูลใน Type_Test โดยเลือกเฉพาะแถวที่ ID_type ของ Type_Test ไม่มีอยู่ใน ID_type ของ Type

การลบข้อมูลทั้งเทเบิลโดย Transaction SQL
CAPJOR หน้าจอ
การใช้คำสั่ง Delete โดยที่ไม่ระบุ Where หรือ Truncate ต่างก็ให้ผลเหมือนกัน คือ ลบข้อมูลออกทั้งหมด แต่มีกลไกการทำงานต่างกันทำให้ Truncate ทำงานเร็วกว่า และกินกำลังเครื่องน้อยกว่า
การลบข้อมูลในคำสั่ง Delete นั้นจะลบทีละแถว และจะบันทึกการลบของแต่ละแถวลงใน Transaction Log แทน ทำให้ทำงานได้เร็ว แต่ไม่สามารถจะโรลแบ็ค (Roll Back) ข้อมูลที่ถูก Truncate ได้
นอกจากนี้ยังมีข้อที่แตกต่างกันอีกเล็กน้อย คือ เมื่อเรียกคำสั่ง Delete เพื่อลบข้อมูลทั้งเทเบิลแล้ว คอลัมน์ที่กำหนดไว้เป็น Identity จะยังคงเก็บค่าหลังสุดไว้ เมื่อใส่ข้อมูลในแถวใหม่ลงไปก็จะเพิ่มต่อจากค่าที่เก็บไว้หลังสุดนั้น ขณะที่ถ้าเพิ่มแถวในเทเบิลหลังเรียกคำสั่ง Truncate ค่าในคอลัมน์นั้นจะเริ่มใหม่ตามค่าเริ่มต้น (Seed) ที่กำหนดไว้
คำสั่ง Truncate ยังมีข้อจำกัดที่ไม่สามารถจะใช้กับเทเบิลหลักทีมีเทเบิลอื่น ที่มี คอนสเตรนท์ Foreign Key มาอ้างถึงได้
ตัวอย่าง ลบข้อมูลของ Type_Test ทั้งเทเบิล
TRUNCATE TABLE Type_Test

การสร้าง View สำหรับข้อมูล

คือ เทเบิลเสมือนที่สร้างจากการนำข้อมูลบางคอลัมน์ บางแถว จากเทเบิลตั้งแต่หนึ่งเทเบิลขึ้นไปมาจัดทำเป็นแถวและคอลัมน์เสมือนอย่าง เทเบิลนั่นเอง ซึ่งวิวนี้ไม่ได้เก็บข้อมูลอย่างเทเบิลแต่ข้อมูลที่เห็น คือ ข้อมูลจากเทเบิลหลักทั้งสิ้น วิวจะเก็บเพียงแต่โครงสร้างที่จะไปเรียกข้อมูลจากเทเบิลเท่านั้น
วิวที่สร้างขึ้นมานี้จะนำมาใช้งานในลักษณะเดียวกันกับเทเบิลได้เลย คือ ใช้กับคำสั่งต่าง ๆ เช่น Select และส่วนมากมักจะใช้ในกรณีต่าง ๆ ดังนี้

  • การ สร้างวิวให้เห็นบางคอลัมน์ บางแถว จากข้อมูลในเทเบิลหลัก จะช่วยทำให้เกิดความปลอดภัยของข้อมูลมากขึ้น โดยกำหนดให้ผู้ใช้เห็นข้อมูลจากวิว แทนที่จะเห็นข้อมูลจากเทเบิลหลัก และเลือกข้อมูลเหล่านั้นในวิวได้เหมือนกับเทเบิล
  • การ สร้างวิวเพื่อดึงข้อมูลบางส่วนจากเทเบิล หรือหลายเทเบิลให้แสดงเฉพาะคอลัมน์ที่จะนำไป ใช้ในการคิวรี จะช่วยให้การคิวรีง่ายขึ้น และไม่ซับซ้อน
  • ช่วย ให้การกำหนดสิทธิ์ในการใช้ข้อมูลทำได้ง่ายขึ้น คือ ไม่ต้องคอยกำหนดสิทธิ์ในการใช้ให้ กับแต่ละคอลัมน์ในเทเบิลแต่กำหนดสิทธิ์ที่วิวแทน
  • ช่วยให้สามารถนำวิวที่คิวรีข้อมูลจากหลาย ๆ เทเบิล ไปแปลงให้เป็นข้อมูลที่ใช้ในโปรแกรมอื่น ๆ ได้ง่าย

ข้อจำกัดวิว
การใช้วิวยังมีข้อจำกัดบางอย่าง คือ

  • การ เพิ่ม แก้ไข หรือลบข้อมูลผ่านวิวสามารถใช้คำสั่ง Select, Insert, Update และ Delete กับวิวได้ แต่ทั้งนี้ต้องไม่ขัดกับคอนสเตรนท์ เช่น ถ้าวิวดึงมาเพียงบางคอลัมน์ และคอลัมน์ที่เหลืออยู่ในเทเบิลหลักมีคอนสเตรนท์เป็น Not Null ก็จะทำให้เพิ่มข้อมูลผ่านวิวไม่ได้ (เพราะบังคับให้ใส่ข้อมูลกับคอลัมน์นั้นด้วย) และไม่สามารถเพิ่ม แก้ไข หรือลบข้อมูลผ่านวิว ถ้าวิวนั้นสร้างจากหนึ่งเทเบิลขึ้นไปหรือวิวที่สร้างจากคำสั่ง Union
  • การสร้างวิว ไม่สามารถใช้กับคำสั่ง Order by, Computer, Computer by และ Into

การสร้างวิวโดย Enterprise Manager

  • เปิด Enterprise Manager แล้วเข้าสู่ Server ที่ต้องการ
  • ในกรอบด้านซ้ายให้คลิกเมาส์ที่เครื่องหมาย + ที่ Database
  • ในกรอบด้านซ้ายในคลิกเมาส์ที่เครื่องหมาย + โฟลเดอร์ดาต้าเบส Northwind เห็นโฟลเดอร์ View
  • ให้คลิกขวาที่โฟลเดอร์ Views เลือก New View จะปรากฏหน้าจอใช้ออกแบบวิวแบ่งออกเป็นส่วนต่าง ๆ ดังนี้
    • Diagram Pane เป็นส่วนที่แสดงผังความสัมพันธ์ของเทเบิลต่าง ๆ ที่นำมาใช้สร้างวิว ซึ่งเทเบิลที่นำมาใช้สร้างวิวจะต้องเพิ่มเข้าไปใน Diagram Pane นี้ก่อนโดยคลิกปุ่ม Add Table และยังเป็นที่ใช้เลือกคอลัมน์ของเทเบิลต่าง ๆ ที่จะเป็นคอลัมน์ของวิวด้วย คือ ถ้าจะเลือกคอลัมน์ให้คลิกที่สี่เหลี่ยมเล็ก ๆ หน้าคอลัมน์นั้น หรือคลิกที่ช่องสี่เหลี่ยมเล็ก ๆ หน้า All Columns เพื่อเลือกทุกคอลัมน์ได้
    • Grid Pane เป็นส่วนที่ใช้กำหนดเงื่อนไขในการเลือกคอลัมน์ให้กับวิว เช่น เช็คบ็อกซ์ที่ช่อง Output หมายถึง ถ้ามีการเลือกคอลัมน์นั้นเพื่อสร้างวิวจะมีเครื่องหมาย... อยู่ และถ้าเลือกข้อมูลเพียงบางส่วนมาใช้ก็ให้ระบุเงื่อนไขสำหรับคอลัมน์ที่เลือกไว้แล้วที่ช่อง Criteria และ Or
    • SQL Pane คือส่วนที่แสดงคำสั่งจากรายละเอียดที่กำหนดไว้ใน Grid Panc หรือถ้าถนัดใช้คำสั่งของ Transaction SQL ก็ป้อนลงไปตรงนี้ได้เลย
    • Result Pane เป็นส่วนที่แสดงข้อมูลจากวิวที่กำลังสร้างนี้
  • ที่ หน้าจอออกแบบวิว ให้คลิกที่ปุ่ม Add Table บนทูลบาร์ จะได้หน้าจอ Add Table ที่หน้าจอนี้ให้คลิกชื่อเทเบิลที่จะไปสร้างวิว ถ้าต้องการใช้หลายเทเบิลก็กดปุ่ม Ctrl ค้างไว้แล้วคลิกทีละเทเบิล เมื่อเรียบร้อยคลิก Add และ Close ตามลำดับ

CAPJOR หน้าจอ

  • จะกลับไปที่หน้าจอการออกแบบวิว พร้อมแสดงรูปเทเบิลที่เราได้เลือกไว้บน Diagram Pane และใน SQL Pane ก็จะมีคำสั่งปรากฏอยู่ด้วย
  • ที่ Diagram Pane ให้คลิกเช็คบ็อกซ์หน้าคอลัมน์ที่จะไปสร้างวิว แล้วชื่อคอลัมน์จะไปแสดงที่ Grid Pane
  • ที่ Grid Pane เพิ่มเงื่อนไขในการเลือกข้อมูลเท่าที่ต้องการ

CAPJOR หน้าจอ

  • เมื่อกำหนดเรียบร้อย ให้คลิกปุ่ม Save เพื่อบันทึก จากนั้นให้ใส่ชื่อวิว แล้วคลิก OK

CAPJOR หน้าจอ

  • เครื่องจะกลับไปที่หน้าจอออกแบบวิวอีกครั้งหนึ่ง ให้คลิกปุ่ม Close ที่มุมขวา ด้านบนเพื่อเลิกการสร้างวิว

สำหรับการลบเทเบิลที่เลือกไปสร้างวิวนั้น สามารถทำโดยนำเมาส์ไปคลิกที่เทเบิลในส่วนของ Diagram Pane คลิกเมาส์ปุ่มขวาเลือก Remove

การสร้างวิวโดย Transaction SQL
CAPJOR หน้าจอ

  • [(column [,……n] ) ] คือ ชื่อคอลัมน์ในวิว เมื่อมีการสร้างวิวโดยดึงข้อมูลมาจากเทเบิล ชื่อคอลัมน์ที่เห็นบนวิว คือ ชื่อคอลัมน์ของเทเบิลนั่นเอง แต่ในบางกรณีที่มีการดึงคอลัมน์บนวิว ถ้าเป็นแบบนี้ต้องตั้งชื่อคอลัมน์ตอนสร้างวิวด้วย
  • Select_statement เป็นคำสั่งที่ใช้เลือก หรือดึงข้อมูลจากเทเบิลมาสร้างเป็นวิว คำสั่งนี้ดึงข้อมูลจากเทเบิลหรือวิวอื่น ๆ ก็ได้ แต่มีข้อจำกัดบางอย่าง คือ ในคำสั่งจะมี Order by, Computer, Computer by และ Into ไม่ได้ และอ้างถึงเทเบิลชั่วคราวไม่ได้เช่นกัน
  • [WITH CHECK OPTION] หมายถึงเมื่อสร้างวิวนี้แล้วการแก้ไขหรือเพิ่มเติมข้อมูลผ่านวิวจะตรวจสอบ ให้สอดคล้องกับตอนสร้างวิว เช่น ตอนสร้างวิวกำหนดว่าเลือกเฉพาะชื่อที่ขึ้นต้นด้วย A ถ้าต่อมาเพิ่มข้อมูลในวิวให้มีชื่อขึ้นต้นด้วย B ก็จะมีข้อความเตือนผิดพลาด

ตัวอย่าง การสร้างวิวจากเทเบิลเดียว โดยสร้างวิวชื่อ Book_view จากเทเบิล Book และ Type
CREATE VIEW Book_view
AS
SELECT ISBN, Book_title, Book_auther, Book_price, Book_stock,
Book_note, Type_name
FROM Book, Type

ดูข้อมูลในวิวโดย Enterprise Manager

  • เปิด Enterprise Manager แล้วเข้าสู่ Server ที่ต้องการ
  • ในกรอบด้านซ้ายให้คลิกเมาส์ที่เครื่องหมาย + ที่ Database
  • ในกรอบด้านซ้ายในคลิกเมาส์ที่เครื่องหมาย + โฟลเดอร์ดาต้าเบส Northwind เห็นโฟลเดอร์ View
  • ให้ คลิกขวาที่โฟลเดอร์ Views เลือก กรอบด้านซ้ายให้คลิกเมาส์ขวาวิวที่จะดูข้อมูล แล้วเลือก Open View > Return All Rows ซึ่งหมายถึง การแสดงข้อมูลทุกแถวจากวิวนั้น
  • จะปรากฏหน้าจอ Data in Table

CAPJOR หน้าจอ

การเรียกดูข้อมูลจากวิวโดย Transaction SQL
การเรียกข้อมูลจากวิว ก็สามารถใช้คำสั่ง Select เหมือนกับการใช้กับเทเบิล
ตัวอย่าง เรียกดูวิวชื่อ Book_view
SELECT *
FROM Book_view

การลบวิวโดย Enterprise Manager
เมื่อไม่ต้องการใช้วิวอีกก็สามารถจะลบวิวทิ้งได้ โดยข้อมูลในเทเบิลยังคงอยู่ และเมื่อเรียกคิวรีของวิวนั้น คิวรีก็จะ Fail ไป จนกว่าจะสร้างวิวที่มีชื่อตรงกับวิวนั้นขึ้นมาใหม่

  • เปิด Enterprise Manager แล้วเข้าสู่ Server ที่ต้องการ
  • ในกรอบด้านซ้ายให้คลิกเมาส์ที่เครื่องหมาย + ที่ Database
  • ในกรอบด้านซ้ายในคลิกเมาส์ที่เครื่องหมาย + โฟลเดอร์ดาต้าเบส Northwind เห็นโฟลเดอร์ View
  • ให้คลิกขวาที่โฟลเดอร์ Views เลือก กรอบด้านซ้ายให้คลิกเมาส์ขวาวิวที่จะต้องการลบแล้วเลือก Delete
  • ที่ หน้าจอ Drop Objects สามารถตรวจสอบว่ามีวิวนี้มีความสัมพันธ์กับออปเจ็กต์อื่นหรือไม่ โดยคลิกที่ Show Dependencies เมื่อดูเรียบร้อยและต้องการลบแน่นอนให้คลิก Drop All

CAPJOR หน้าจอ

การลบวิวโดย Transaction SQL
CAPJOR หน้าจอ
ตัวอย่าง ลบวิวชื่อ Book_view
DROP VIEW Book_view