+ All Categories
Home > Documents > Structured Query Language - Chiang Mai University

Structured Query Language - Chiang Mai University

Date post: 02-Mar-2022
Category:
Upload: others
View: 1 times
Download: 0 times
Share this document with a friend
24
Modern Management and Information Technology Collage of Arts, Media and Technology, Chiang Mai University Structured Query Language
Transcript

Modern Management and Information TechnologyCollage of Arts, Media and Technology,

Chiang Mai University

Structured Query Language

SQL (Structured Query Language) เป็นภาษามาตราฐานบนระบบฐานข้อมูลเชิงสมัพันธ์ สามารถใช้งานได้กบัเครื่องคอมพิวเตอร์หลายระดบั ปัจจุบนัมีซอฟตแ์วร์ระบบจัดการฐานข้อมูล (DBMS) ที่สนับสนุนการใช้คาํสั่ง SQL เช่น ORACLE, DB2, MS-SQL, MS-Access

เริ่มพัฒนาครั้งแรกโดย almaden research center ของบริษัท IBM โดยมีชื่อเริ่มแรกว่า “ซีเควล” (Sequel)

ปี ค.ศ. 1986 ทางด้าน American National Standards Institute (ANSI) จึงได้กาํหนดมาตรฐานของ SQL ขึ้น

ผู้ผลิตได้ซอฟต์แวร์ได้ขยาย SQL ออกไปจนเกนิข้อกาํหนดของ ANSI โดยเพิ่มคุณสมบัติอื่นๆ ที่คิดว่าเป็นประโยชน์เข้าไปอกีแต่โดยหลักทั่วไปแล้วกย็ังปฏบิตัิตามมาตราฐานของ ANSI

ประเภทคาํส ัง่ของภาษา SQL ภาษาสาํหรับการนิยามข้อมูล (Data Definition Language : DDL)

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

ภาษาสาํหรับการจัดการข้อมูล (Data Manipulation Language : DML) ประกอบด้วยคาํสั่งที่ใช้ในการเรียกใช้ข้อมูล การเปลี่ยนแปลงข้อมูล การเพิ่มหรือลบข้อมูล เป็นต้น

ภาษาควบคุม (Data Control Language : DCL) : ประกอบด้วยคาํสั่งที่ใช้ในการควบคุม การเกดิภาวะพร้อมกนั หรือการป้องกนัการเกดิเหตุการณท์ี่ผู้ใช้หลายคนเรียกใช้ข้อมูลพร้อมกนั และคาํสั่งที่เกี่ยวข้องกบัการควบคุมความปลอดภัยของข้อมูลด้วยการกาํหนดสทิธขิองผู้ใช้ที่แตกต่างกนั เป็นต้น

ชนดิของขอ้มูลทีใ่ชใ้นภาษา SQL ตัวหนังสอื

ความยาวคงที่ (Fixed-length Character) จะใช้ char(n) หรือ

character(n) ความยาวไม่คงที่ (Variable-length Character) จะใช้ varchar(n)

จาํนวนเลข

มีจุดทศนิยม (Decimal) จะใช้ dec(m,n) หรือ decimal(m,n) ไม่มีจุดทศนิยม (Integer) จะใช้ int, integer (10 หลกั) หรือ smallint

(5หลัก)

เลขจาํนวนจริง (Number) จะใช้ number(n) ข้อมูลในลักษณะอื่นๆ

วันที่และเวลา (Date/Time) จะใช้ date

การสร้าง Table

ไวยากรณ์

CREATE TABLE tablename

(column1 datatype [constraint],

column2 datatype [constraint],

column3 datatype [constraint],…);

ตวัอย่าง

CREATE TABLE employee

(first varchar(15),

last varchar(20),

age number(3),

address varchar(30),

city varchar(20),

state varchar(20));

ตย การใช ้constraintCREATE TABLE SALESTAB(SALENO integer NOT NULL,SALENAME char(10) NOT NULL,ADDRESS char(10),SALECOM decimal);

CREATE TABLE SALESPEOPLE(SALENO integer NOT NULL UNIQUE,SALENAME char(10) NOT NULL UNIQUE,ADDRESS char(10),SALECOM decimal);

CREATE TABLE SALESPEOPLE(SALENO integer NOT NULL UNIQUE PRIMARY KEY,SALENAME char(10) NOT NULL UNIQUE,ADDRESS varchar(30),SALECOM decimal);

CREATE TABLE NAMEFIELD(FIRSTNAME char(10) NOT NULL ,LASTNAME char(10) NOT NULL UNIQUE,CITY char(10),PRIMARY KEY (FIRSTNAME ,LASTNAME ));

ถ้า ต้องการสร้างตารางลูกค้า ( CUSTOMERSTAB) โดยกาํหนดให้CUSNO เป็น PRIMARY KEY และคอลัมน์SALENO เป็นคีย์นอก

(foreign key) ที่ใช้เชื่อมโยงหรืออ้างองิข้อมูลกบัตาราง พนักงานขาย(

SALESTAB) โดยใช้คาํสั่งอย่างใดอย่างหนึ่งดังนี้

CREATE TABLE CUSTOMERSTAB(CUSNO integer NOT NULL PRIMARY KEY,CUSNAME char(10) ,ADDRESS varchar(50),SALENO integer,FOREIGN KEY (SALENO) REFERENCES SALESTAB(SALENO));

CREATE TABLE CUSTOMERSTAB(CUSNO integer NOT NULL PRIMARY KEY,CUSNAME char(10) ,ADDRESS varchar(50),SALENO integer REFERENCES SALESTAB(SALENO));

ขอ้คาํนงึในการสร้างตาราง

ในการสร้างตารางแต่ละตารางอย่างน้อยที่สดุต้องกาํหนดคอลัมน์ได้ 1 คอลัมน์

รายละเอยีดของแต่ละคอลัมน์แยกจากกนัด้วยเครื่องหมาย comma (,)

สิ้นสดุคาํสั่งด้วยเครื่องหมาย semicolon (;)

*ข้อคาํนึงเหล่านี้อาจมีความแตกต่างกนัไปบ้าง ขึ้นอยู่กบัผู้ผลิตแต่ละราย

การลบ Table DROP statement ที่ใช้ในการลบ Table หรือยกเลิก

ไวยากรณ์

DROP TABLE tablename ;

ตวัอย่าง

DROP TABLE employee;

การแกไ้ข table รปูแบบ

ALTER TABLE <table name>Database update(<column_name> data type [SIZE]);

เช่นALTER TABLE SALESPEOPLE ADD SALESTAB_FAX CHAR(15);คือการเพิ่ม SALESTAB_FAX ลงในตาราง SALEPEOPLE

ALTER TABLE SALESPEOPLE RENAME ADDRESS TO COUNTRY;คือการเปลี่ยนชื่อคอลัมม์จาก ADDRESS เป็น country

ALTER TABLE TEAMSADD TYPE CHAR(1) AFTER TEAMNO;เพิ่ม TYPE หลัง TEAMNO ในตาราง TEAMS

ALTER TABLE TEAMSDROP TYPE;ทาํการลบ TYPE ออกจากตาราง TEAMS

ALTER TABLE PLAYERCHANGE BIRTH_DATE DATE_OF_BIRTH DATE;ทาํการเปลี่ยนชื่อคอลัมม์ BIRTH_DATE เป็น DATE_OF_BIRTH มีโครงสร้างเป็น date

ALTER TABLE PLAYERSCHANGE TOWN TOWN varchar(40) NOT NULL;เปลี่ยนชนิดของ town ให้เป็น varchar ขนาด 40 และไม่เป็นค่า null

การสร้างดชัน ี(index) ดัชนีมีความสาํคัญคือ ช่วยเพิ่มความสามารถในการค้นหาข้อมูลได้เรว็ยิ่งขึ้น

ถ้าตารางข้อมูลใดไม่มกีารสร้างดชันีไว้การค้นหาข้อมูลในตารางนั้นจะต้องทาํการค้นหา

แบบเรียงลาํดับจากแถวแรกจนถงึแถวสดุท้าย

ดัชนีสามารถช่วยให้ผู้ใช้หาข้อมูลแต่ละแถวตามที่กาํหนดเฉพาะเจาะจงตามต้องการได้โดย

อตัโนมัติ

การสร้างดัชนีจะทาํให้การค้นหาข้อมูลเรว็ขึ้น แต่การสร้างดัชนีกเ็ปลื้องพื้นที่ใน

หน่วยความจาํ

สมมติว่าตารางลูกค้ามีข้อมูลป้อนไว้หลายรายการ และต้องการหาลูกค้าหมายเลข 2999

เนื่องจากไม่ได้เรียงลาํดับแถวตามหมายเลขลูกค้าไว้ ปกติโปรแกรมจะต้องค้นหาไปที่ละ

แถวจนตลอดทั้งตารางเพื่อหาค่าลูกค้าหมายเลข 2999 ในคอลัมน์ CUSNO อย่างไรก็ดีถ้ามีดัชนีอยู่ในคอลัมน์ CUSNO โปรแกรมกจ็ะตรงไปที่หมายเลข 2999 ในดัชนีเลย

รูปแบบคาํส ัง่ในการสร้างดชัน ี CREATE INDEX <index name>

ON <table name>(<column>name>[,<column name>]..);

เช่น CREATE UNIQUE INDEX CLIENTGROUP ON CUSTOMERSTAB(SALENO);

จากคาํสั่ง “UNIQUE” เป็นการระบุว่าดัชนี( index) ที่สร้างขึ้นในคอลัมน์ CLIENTGROUP ซึ่งในคอลัมน์นี้จะมีค่าที่ซํา้กนัไม่ได้ และจะใช้คอลัมน์ SALENO เป็นข้อมูลในการค้นหา ผลของคาํสั่งตารางลูกค้าจะมี CLIENTGROUP เป็นดัชนี( index) ในการค้นหาข้อมูล โดยเรียงลาํดบัตามข้อมูลในคอลัมน์ SALENO ของตารางลูกค้า index คอลัมน์CLIENTGROUP ที่สร้างขึ้นนี้จะไม่ถูกเกบ็ไว้ในตารางลูกค้า แต่จะถูกเกบ็ไว้แยกต่างหากในหน่วยความจาํของเครื่องคอมพิวเตอร์

การลบดชัน ี

รปูแบบ

DROP INDEX <index name>;

เช่น

DROP INDEX CLIENTGROUP ;

ภาษาสาํหรบัการจดัการขอ้มูล (Data Manipulation Language : DML) การบันทกึข้อมูล -- INSERT

การปรับปรงุข้อมูล -- UPDATE

การลบข้อมูล -- DELETE

การเรียกข้อมูล -- SELECT

การบนัทกึขอ้มูล

รปูแบบ

INSERT INTO <tablename>[(column 1, column 2,…)]VALUE(<value1,value2, …>);

เช่น

ต้องการใส่ข้อมูลทุกคอลัมน์

INSERT INTO SALESTABVALUES( 1001, “Chaiwat”, “Bangkok”,0.12);

การใส่ข้อมูลบางคอลัมน์

INSERT INTO CUSTOMERSTAB(ADDRESS,CUSNAME,CUSNO)VALUES( 'Bangkok','Arlee', 2001);

ค่าที่ระบุใน VALUES จะถูกจัดเกบ็เรียงลาํดับตามคอลัมน์ที่ระบุ เช่น Bangkok จะถูกจัดเกบ็ใน ADDRESS ดังนั้นจะต้องระบุตาํแหน่งการจัดเกบ็ให้ถูกต้อง

การปรบัปรุงขอ้มูล รปูแบบ

UPDATE <table name> SET <column 1>[, column 2,…] = <expression |sunquery>[WHERE<condition>];

เช่น

UPDATE CUSTOMERSTAB SET RATING = 200

WHERE SALENO = 1001;

คือการเปลี่ยนค่า RATING เป็น 200 ที่ตาราง CUSTOMERSTAB สาํหรับ SALENO ที่มีค่า 1001

หากใช้

UPDATE CUSTOMERSTABSET RATING = 200;

จะหมายถงึ ให้เปลี่ยน RATING เป็น 200 ในทุกๆแถวของตาราง CUSTOMERSTAB

การลบขอ้มูล รูปแบบ

DELETE FROM <table name>[WHERE<condition>];

เช่น

DELETE FROM SALESTABWHERE SALENO = 1003;แถวที่มี SALENO=1003 จะถูกลบออกไป

DELETE FROM SALESTAB;จะเป็นลบข้อมูลทุกแถวในตาราง SALESTAB

การเรยีกดูขอ้มูล การเรียกดูทุกคอลัมน์ในตาราง

SELECT *FROM <table name>;เช่น select * from checks;

การเรียกดูบางคอลัมน์SELECT <column 1, column 2,…>

FROM <table name>; เช่น

SELECT CHECK#, amount from checks;

การเรียกดูข้อมูลแบบมีเงื่อนไข

SELECT <column 1, column 2,…>FROM <table name>[WHERE<condition>];

เช่น

SELECT * FROM BIKES

WHERE NAME = ‘BURLEY’ ;


Recommended