My Sql Server

  • Uploaded by: Mr.sila Srisunthorn
  • 0
  • 0
  • October 2019
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View My Sql Server as PDF for free.

More details

  • Words: 1,259
  • Pages: 11
บทที่ 9 ภาษา SQL (Standard Query Language) 9.1 ภาษา Standard relational database Query Language (SQL) ภาษาที่กลายเปนภาษามาตรฐานสําหรับระบบฐานขอมูลคือ ภาษา Standard relational database Query Language หรือเอสคิวแอล (SQL) หรือซีควอล (SE-QUEL) ซึ่งเปนภาษาที่พัฒนาขึ้นมาโดยบริษัท ไอบีเอ็ม ภาษา SQL (Standard Query Language) เปนสวนหนึ่งของระบบฐานขอมูลแบบรีเลชั่นเนล (Relational Database) ทีไ่ ดรบั ความนิยมมากเพราะงายตอความเขาใจ และอยูในรูปภาษาอังกฤษ ภาษา SQL แบงออกเปน 2 สวน คือ • ภาษาที่ใชสําหรับนิยามขอมูล (Data Definition Language-DDL) • ภาษาสําหรับการจัดการขอมูลล (Data Manipulation Language: DML) • ภาษาควบคุม (Control Language) • ภาษาในการเลือกขอมูล (Data Query Language) รูปแบบการใชคําสั่ง SQL สามารถใชไดเปน 2 รูปแบบ ดังนี้ คือ • คําสั่ง SQL ที่ใชเรียกดูขอมูลไดทันที (Interactive SQL) เปนการเรียกใชคําสั่ง SQL สั่งงานบนจอภาพ เพื่อเรียกดูขอมูลในขณะที่ทํางานไดทันที เชน SELECT CITY FROM SUPPLIER WHERE SNO = ‘SE’; • คําสั่ง SQL ที่ใชเขียนรวมกันโปรแกรมอื่น ๆ (Embedded SQL) เปนคําสั่ง SQL ที่ใชรวมกับคําสั่งของโปรแกรมภาษาตาง ๆ เชน PL/1 PASCAL ฯลฯ หรือแม แตกับคําสั่งในโปรแกรมที่ระบบจัดการฐานขอมูลนั้นมีใชเฉพาะ เชน ORACLE มี PL/SQL (Procedural Language /SQL) ที่สามารถเขียนโปรแกรมและนําคําสั่ง SQL มาเขียนรวมดวย เปนตน ตัวอยางการใชคําสั่ง SQL ในภาษา PL/1 EXEC SQL SELECT CITY INTO :XCITY FROM SUPPLIER WHERE SNO = ‘S4’;

9.2 ภาษาที่ใชสําหรับนิยามขอมูล (Data Definition Language-DDL ) Data Definition Language (DDL) เปนภาษาที่ใชนิยามโครงสรางขอมูล เพื่อเปลี่ยนแปลง หรีอ ยกเลิกโครงสรางฐานขอมูลตามที่ออกแบบไว โครงสรางดังกลาวคือ สคีมา (Schema) นั้นเอง ตัวอยางเชน การกําหนดใหฐานขอมูลประกอบดวยตารางอะไรบาง ชื่ออะไร ประเภทใด มีอินเด็กซ (Index)

เอกสารประกอบการบรรยายวิชา 204204 การออกแบบและพัฒนาฐานขอมูล

8-2

ภาษา DDLประกอบดวย 3 คําสั่งคือ • คําสั่งการสราง (Create) ไดแก การสรางตารางและอินเด็กซ CREATE TABLE ( Attribute 1 Type 1, Attribute 2 Type 2 , ) CREATE Unique Index on X
เชน CREATE TABLE S11 (SNO CHAR(5) Not NULL, SNAME CHAR(10) , STATUS integer ) CREATE Unique Index XS11 on S11(SNO) • คําสั่งเปลี่ยนแปลงโครงสราง ALTER TABLE < ชือ่ ตารางที่ตั้งขึ้น > <คําสั่งการเปลี่ยนแปลง> (<ชื่อคอลัมน ประเภทขอมูล>); ตัวอยางเชน ALTER TABLE SUPPLIER ADD (LAST_SNAME Char(10)); • คําสั่งยกเลิก (Drop) ตางๆ การลบโครงสรางตาราง DROP TABLE < ชือ่ ตารางที่ตั้งขึ้น > ภาษาดังกลาวคือ ภาษาที่ใชสรางฐานขอมูลลงในคอมพิวเตอร หลังจากที่เราไดออกแบบแลววา ฐานขอมูลมีกี่รีเลชั่น แตละรีเลชั่นมีความสัมพันธอยางไร จากนั้นการใชภาษา DDL นี้แปลงรีเลชั่น ตางๆ ใหอยูในรูปภาษาสําหรับนิยามขอมูล เพื่อปอนเขาสูระบบฐานขอมูล เพื่อสรางฐานขอมูลที่แทจริง ใหเกิดขึ้นในคอมพิวเตอร ภาษา DDL สามารถสรุปคําสั่งตางๆไดดังตอไปนี้ คําสั่ง ความหมาย CREATE TABLE นิยามโครงสรางขอมูลในรูปตารางบนฐานขอ มูล DROP TABLE ลบโครงสรางตารางขอมูลออกจากระบบ ALTER TABLE แกไขปรับปรุงโครงสรางตาราง

8-3

บทที่ 8 พีชคณิตเชิงสัมพันธและแคลคูลัสเชิงสัมพันธ

คําสั่ง CREATE INDEX DROP INDEX CREATE VIEW DROP VIEW

ความหมาย สรางดัชนีของตาราง ลบ ดัชนีของตารางออกจากระบบ กําหนดโครงสรางวิวของผูใช ลบโครงสรางวิวออกจากระบบ

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

เอกสารประกอบการบรรยายวิชา 204204 การออกแบบและพัฒนาฐานขอมูล

8-4

การสรางดัชนีจะใชคําสั่ง CREATE INDEX แลวตามดวยชื่อดัชนีที่เราตั้งขึ้น ดังรูปแบบ ตอไปนี้ CREATE [UNIQUE] INDEX < ชื่อตารางที่ตั้งขึ้น > ON (<ชือ่ ตารางที่สรางดัชนี> (< ชื่อคอลัมน_1> [,< ชื่อคอลัมน_2>]…); การลบดัชนี เมื่อตองการลบดัชนีที่สรางขึ้น ก็สามารถทําไดดวยคําสั่ง DROP INDEX แลวตามดวย ชือ่ ดัชนีที่ตองการลบ ดังรูปแบบดังนี้ DROP INDEX <ชื่อดัชนี> 9.3 ภาษาสําหรับการจัดการขอมูล (Data Manipulation Language-DML) หลังจากที่เราสรางโครงสรางฐานขอมูลขึ้นแลว คําสั่งตอไปในการปอนขอมูลลงในฐานขอมูล และเปลีย่ นแปลงขอมูล ในฐานขอมูล โดยการใชภาษาสําหรับการจัดการขอมูล (Data Manipulation Language-DML) ใชจดั การขอมูลภายในตารางภายในฐานขอมูล และภาษาแกไขเปลี่ยนแปลงตาราง แบงออกเปน 4 Statement คือ • Select Statement : การเรียกหา (Retrieve) ขอมูลจาก ฐานขอมูล • Insert Statement : การเพิ่มเติมขอมูลลงใน ตาราง (Table) จาก ฐานขอมูล • Delete Statement: การลบขอมูลลงออกจาก ตาราง (Table) จาก ฐานขอมูล • Update Statement: การเปลี่ยนแปลงขอมูลลงใน ตาราง (Table) จาก ฐานขอมูล คําสั่ง ความหมาย SELECT เรียกคนขอมูลในตาราง INSERT เพิ่มแถวขอมูลลงในตาราง DELETE ลบแถวขอมูล UPDATE ปรับปรุงแถวขอมูลในตาราง คําสั่งคนหาขอมูล (Query Statement) คําสั่ง SELECT เปนคําสั่งการเรียกดูขอมูล หรือ คนขอมูล ตามเงื่อนไขที่ระบุบ เนื่องจากคําสั่ง SELECT เปนคําสั่งที่มีรูปแบบการใชงานที่งายเพื่อชวยในการคนหาขอมูลที่ซับซอน ดังมีรูปแบบดังนี้ SELECT <ชื่อคอลัมนที่ตองการดูขอมูล> FROM <ชื่อตาราง> WHERE <เงือ่ นไขตามที่ระบุบ> SELECT --- เปนคําสั่งใหทําการเรียกดูขอมูลในคอลัมนที่ระบุ ซึ่งอาจจะมากกวา หนึ่งก็ได และถามี มากกวาหนึ่งคอลัมนตองคั่นดวย คอมมา (,) และนอกจากนี้ยังสามารถใชเครื่องหมาย ดอกจัน (*) เพื่อแสดงถึงการขอดูขอมูลทั้งหมดไดอีกดวย

บทที่ 8 พีชคณิตเชิงสัมพันธและแคลคูลัสเชิงสัมพันธ

8-5

FROM --- เปนคําสวนประกอบของคําสั่งที่บอกถึงตารางที่ตองการดู ซึ่งอาจจะมีมากกวาหนึ่งตารางก็ ได ที่จะถูกเรียกใชจากคําสั่ง SELECT WHERE--- เปนสวนประกอบของคําสง ที่ใชบงบอกเงื่อนไขที่จะใชในการคนหาขอมูล ขึ้นมาจากตา รางใด ๆ ที่อยูหลัง FROM นี้ การเรียกดูแบบซอนกัน (Nested SELECT Statement) SELECT <ชื่อคอลัมน> FROM <ชื่อตาราง> WHERE <ชื่อคอลัมน> IN ( SELECT <ชื่อคอลัมน> FROM <ชื่อตาราง> WHERE <ชื่อคอลัมน> ) คําสั่งเติมขอมูล (Insert Statement) INSERT INTO < ชื่อตาราง > VALUES (< ชื่อคอลัมน_1> [,< ชื่อคอลัมน_2>]…);

คําสั่งแกไขและลบแถว (Update Statement ) UPDATE < ชื่อตาราง > SET <คาที่ตองการ> WHERE <เงื่อนไข>

9.4 ภาษาควบคุม (Control Language) ใชเปนภาษาที่ใชควบคุมระบบรักษาความปลอดภัย ของฐานขอมูล ประกอบดวยคําสั่ง 2 คําสั่งคือ • คําสั่ง GRANT เปนคําสั่งที่ใชกําหนดสิทธิใหกับผูใชแตละคนใหมีสิทธกระทําการใดกับขอมูลเชน การเพิ่มขอมูล การแกไข หรือ การลบขอมูลในตารางใดบาง • คําสั่ง REVOKE เปนคําสั่งใหมีการยกเลิกสิทธนั้นหลังจากที่ได GRANT แลว คาบูลลีน ( Boolean-Type Data) • AND • OR • NOT

เอกสารประกอบการบรรยายวิชา 204204 การออกแบบและพัฒนาฐานขอมูล

• • • • • • • • • • •

8-6

= > หรือ >= < หรือ =< <> Bulit-In Function COUNT SUM AVG MAX MIN DISTINCT

ชุดคําสั่ง GROUP BY, ORDER BY และ HAVING เนือ่ งจากขอมูลที่สนใจมักจะเปน ผลสรุป หรือ ขอมูลที่ใชในการตัดสินใจ ภาษา SQL จึงไดออก แบบใหมี ชุดคําสั่งพิเศษ ที่ทําหนาที่แบงออกเปนกลุมๆ ไดแก

1.1 ชุดคําสั่ง GROUP BY GROUP BY เปนคําสั่งใหมีการจัดกลุมแถวขอมูลตามคอลัมน โดยขอมูลที่เหมือนกันจะถูกจัดใหอยูในกลุมเดียวกัน ดังนั้นจากตัวอยางตาราง S SELECT S# , MAX( QTY) FROM SPJ GROUP BY S# ผลลัพธ S# QTY S1 700 S2 800 S3 500 S4 300 S5 800 1.2 ชุดคําสั่ง ORDER BY ORDER BY เปนคําสั่งใหมีการเรียงลําดับขอมูลในแถวขอมูลตามคอลัมน

บทที่ 8 พีชคณิตเชิงสัมพันธและแคลคูลัสเชิงสัมพันธ

8-7

โดยขอมูลที่เหมือนกันจะถูกจัดเรียงจากนอยไปมาก ถาไมการระบุบ แตถาระบุบวาเปน DESC จะเรียงจากมากไปนอย ดังนั้นจากตัวอยางตอไปนี้ SELECT S# , MAX( QTY) FROM SPJ GROUP BY S# ORDER BY 2 DESC S# QTY S5 800 S2 800 S1 700 S3 500 S4 300 หมายเหตุ ตัวเลข 2 ที่อยูหลัง ORDER BY จะเปน การบอกระบบใหทําการเรียงลําดับขอมูล ตามลําดับคอลัมนที่ 2 ของคําสั่ง SQL ซึ่งก็คือ MAX(QTY) นั่นเอง

1.3 ชุดคําสั่ง HAVING HAVING เหมือนกับคําสั่ง WHERE ที่ตองตามดวยเงื่อนไข แต HAVING จะใชในกรณีที่มีการจัดก ลุมหรือการใช GROUP BY สรุปชุดคําสั่งมาตรฐานของ SQL 1. CREATE TABLE [[database.]owner.]table_name (column_name datatype [not null | null] IDENTITY [(seed, increment)][constraint] [, column_name datatype [not null | null IDENTITY [(seed, increment)]]]. [constraint] …) [ON segment name] 2. DELETE [FROM] table_name WHERE column_name = “value” 3. ALTER TABLE [[]] ADD NULL [Canstsaint] [WITH nocmeck] {drop [ ] 4. UPDATE table_name SET column_name= value WHERE column_name =operator_value

เอกสารประกอบการบรรยายวิชา 204204 การออกแบบและพัฒนาฐานขอมูล

5. CREATE VIEW View_name AS SELECT column FROM table_1 …. WHERE table_key_1=table_key_2

หนงสืออางอิง 1. ชนวัฒน ศรีสอาน, การออกแบบและพัฒนาฐานขอมูล, มหาวิทยาลัยเทคโนโลยีสุรนารี : นครราชสีมา, 2542. 2. ศิริลักษณ โรจนกิจอํานวย, ระบบฐานขอมูล, พิมพครั้งที่ 3, ดวงกลมสมัย : กรุงเทพฯ, 2542

8-8

8-9

บทที่ 8 พีชคณิตเชิงสัมพันธและแคลคูลัสเชิงสัมพันธ

แบบฝกหัดทายบทที่ 9 จงใชภาษา SQL เขียนสมการคําตอบ ของ Schema ตอไปนี้ STUDENT(StudentNumber, Name, Class, Major) COURSE (CourseNumber, CourseName, CreditHour, Department) PREREQUISITE(PrerequisiteNumber, CourseNumber) SECTION(SectionIdentifier, CourseNumber, Semester, Year, Instructor) GRADE_REPORT(StudentNumber, SectionIdentifier, Grade) หมายเหตุ Class ประกอบดวย ปที่1(Freshy) , ปที่2 (Junior), ปที่ 3( Sephormor) , ปที่4( Senoir) 1.1) จงหา ชื่อของนักศึกษาชั้นปที่ 4 ( Senior) ที่มีสาขาเนนหนัก ‘IS’ 1.2) ในทุก ๆ วิชาที่สอนดวย อาจารย ดร. เกง จงหา รหัสวิชานั้น ๆ , เทอมการศึกษา (semester) , ปการศึกษา(Year) และ จํานวนนักเรียนที่สอนในแตละsection 1.3) จงหาชื่อ และ Transcript ของแตละ Senoir Student ที่มี Class = 5 และ มี major = ‘COSC’ โดย Transcript ประกอบดวย course name, course number, credit hours, semester, year และ grade สําหรับแตละ course ที่นักศึกษาลงทะเบียน 1.4) จงหา ชื่อของรายวิชา ที่สอนดวย อาจารย ดร. เกง ในป 2540 ถึง 2541 1.5) จงหา ชื่อของนักศึกษา และ major ที่มีผลการเรียน 4.00 ตลอดการเรียน 1.6) จงหา ชื่อ และ major ของ นักศึกษา ที่ไมเคยไดเกรด A มาเลย ตลอดการเรียน 1.7) จงหา ชื่อของนักศึกษา ที่ลงทะเบียนเรียนวิชา 204-204 1.8) จงหา ชื่อของวิชา ที่เปน Prerequisite ของวิชา Electrical Circuit I (205-100)

จากตารางตอไปนี้ จงหาคําตอบ SUPPLIER ( S#, SNAME, STATUS, CITY) S# SNAME S1 Smith S2 Jones S3 Blake S4 Clark S5 Adams

STATUS 20 10 30 20 30

CITY London Paris Paris London Athens

8 - 10

เอกสารประกอบการบรรยายวิชา 204204 การออกแบบและพัฒนาฐานขอมูล

PART (P#,PNAME, COLOR, WEIGHT, CITY) P# PNAME COLOR P1 Nut Red P2 Bolt Green P3 Screw Blue P4 Screw Red P5 Cam Bule P6 Cog Red

WEIGHT 12 17 17 14 12 19

CITY London Paris Rome London Paris London

ตาราง J J# J1 J2 J3 J4 J5 J6 J7 ตาราง SPJ S# S1 S1 S2 S2 S2 S2 S2 S2 S2 S2 S3 S3 S4

JNAME Sorter Runch Reader Console Collator Terminal Tape P# P1 P1 P3 P3 P3 P3 P3 P3 P3 P5 P3 P4 P6

CITY Paris Rome Athens Athens London Oslo London J# J1 J4 J1 J2 J3 J4 J5 J6 J7 J2 J1 J2 J3

QTY 200 700 400 200 200 500 600 400 800 100 200 500 300

8 - 11

บทที่ 8 พีชคณิตเชิงสัมพันธและแคลคูลัสเชิงสัมพันธ

S# S4 S5 S5 S5 S5 S5 S5 S5 S5 S5 S5 • • • • • • • • •

P# P6 P2 P2 P5 P5 P6 P1 P3 P4 P5 P6

J# J7 J2 J4 J5 J7 J2 J4 J4 J4 J4 J4

จงหาวา มีคนสงของชื่อใดบางที่สง Nut จงหาวา มีคนสงของชื่อใดบางที่มีสถานะ (Status) อยูระหวาง 5 ถึง 30 จงหาวา มีคนสงของชื่อใดบางที่สง Nut , Screw และ Bolt จงหาชื่อชิ้นสวนทั้งหมดที่สงโดยคนสงของ S4 จงหาชื่อคนสงของ(supplier) ที่สง ชิ้นสวนที่ผลิตในเมืองที่เขาอยู จงหา ชื่อของชิ้นสวน (PNAME) และ PNO ของชิ้นสวนที่มีสีเขียว และ สีแดง จงหาชื่อของคนสงของที่สงชิ้นสวน P2 และ P4 จงหาชื่อของคนสงของที่สงชิ้นสวน P2 หรือ P4 จงหา ของคนสงของที่สงชิ้นสวน ที่มีสีเขียว หรือ สีแดง

QTY 300 200 100 500 100 200 100 800 800 400 500

Related Documents

My Sql Server
October 2019 19
Sql Server
November 2019 28
Sql Server
November 2019 18
Sql Server
May 2020 11
Sql Server
November 2019 35
Sql Server
May 2020 13

More Documents from "Jackson Arruda Diniz"

Howtocheckvirusinusbdrive
October 2019 16
My Sql Server
October 2019 19
Mind Map
October 2019 35
Presentation Dfd R1
October 2019 16