Chapter3

Post on 22-Jan-2017

62 views 2 download

Transcript of Chapter3

Mr. Phonepaseuth PHONHDALA 1

SQL Server 2000

ພາກທີ 3ການຈດການັ SQL Server 2000 ໃນລະດບຖານຂມນູັ ໍ ້

3.1. ມາຮຈູກກບ້ ັ ັ Transact-SQL SQL ( Structured Query Language ) ເປນພາສາທໃຊໃນການຄວຣັ ີ ິ ີ່ ້

ແລະຈດການຖານຂມນູັ ໍ ້

ສາມາດແບງອອກເປນ່ ັ 2 ປະເພດ ຕາມລກສະນະການໃຊວຽກດງນັ ັ ີ້ ່ :້

Mr. Phonepaseuth PHONHDALA 2

3.1.1. DDL ( Data Definition Language )

3.1.2. DML ( Data Manipulation Language )

ເປນຄາສງທໃຊໃນການກາໜດັ ໍ ັ ີ ໍ ົ່ ່ ້ ແລະຈດການກບອອບເຈກຕາງໆຂອງຖານຂມນູັ ັ ັ ໍ່ ້

ເຊງໄດແກຄາສງິ ໍ ັ່ ່້ ່ :

CREATE TABLE

ALTER TABLE

DROP TABLE

ເປນຄາສງທໃຊໃນການຈດການກບຂມນູທເກບຢໃູນຖານຂມນູັ ໍ ັ ີ ັ ັ ໍ ີ ັ ໍ່ ່ ້ ່ ້້ ່ ຄາສງໄດແກໍ ັ່ ້ :່

SELECT

INSERT

UPDATE

DELETE

Mr. Phonepaseuth PHONHDALA 3

3.2. ການເລອກໃຊເຄອງມໃນການຄວຣຂມນູື ື ື ິ ີ ໍ້ ່ ້

3.2.1. ISQL

3.2.2. OSQL

ໄດເພມຄວາມສາມາດໃນສວນການສະໜບສະໜນູກບທກຸຄາສງຂອງ້ ່ີ ັ ັ ໍ ັ່ ່ SQL

Server 2000 ໂດຍມການຕດຕຜານທາງີ ິ ໍ່ ່ ODBCສາມາດແລນ່(Run) ຄາສງໍ ັ່ Transact-SQL, Stored Procedure ແລະ

ສຄບຕໄຟລິ ໌ (໌ Script File) ໄດໃນທກຸຮບູແບບ້ .

ເຄອງມທື ື ີ່ ່ SQL Server 2000 ຕຽມໄວໃຫສາລບການຄວຣຂມນູມດງນ້ ້ ໍ ັ ິ ີ ໍ ີ ັ ີ້ ່ :້

ໃຊວຽກໃນລກສະນ້ ັ ະ Text Mode ຂອງ DOS Prompt

ເປນການສສານແບບເກາທມຢໃູນເວເຊນັ ື ົ ີ ີ ີ ີ່ ່ ່ ່ 6.5

ບສາມາດໃຊຄາສງເພອຄວຣຂມນູປະເພດໍ ໍ ັ ື ິ ີ ໍ່ ່ ່ ້້ ntex

Mr. Phonepaseuth PHONHDALA 4

ວທການໃຊມຂກາໜດດງນິ ີ ີ ໍ ໍ ົ ັ ີ້ ້ ່ :້

ຮບູແບບຄາສງການເອນໃຊໍ ັ ີ່ ້ ້

osql –Sservername –Uusername -Ppassword

ກອນການຄວຣຂມນູໃຫເລມດວຍຄາສງ່ ້ ້ິ ີ ໍ ີ ໍ ັ້ ່ ່ use databasename

ຫາກມການພມຄວຣໃນແຖວທຜານມາຜດພາດີ ິ ິ ີ ີ ິ່ ່ , ສາມາດໃຊຄາສງ້ ໍ ັ່ reset ເພອື່

ຍກເລກແຖວຄາສງທງໝດົ ີ ໍ ັ ັ ົ່ ແລວຈງເລມພມຄາສງໃໝອກເທອໜງ້ ່ິ ີ ິ ໍ ັ ີ ື ຶ່ ່ ່ ່ ່

ແຖວສດຸທາຍຂອງຄາສງໃຫກາໜດເປນ້ ້ໍ ັ ໍ ົ ັ່ go ເພອເລມການຄວຣຂມນູື ີ ິ ີ ໍ່ ່ ້

ຖາຕອງການອອກຈາກການເຮດວຽກໃຫຄາສງ້ ້ ້ັ ໍ ັ່ quit ຫຼື exit

Mr. Phonepaseuth PHONHDALA 5

ຮບູທີ 3.1ການໃຊ້ OSQL ເພອຄວຣຂມນູື ິ ີ ໍ່ ້

Mr. Phonepaseuth PHONHDALA 6

ເປນເຄອງມທມລກສະນະໃຊວຽກງາຍັ ື ີ ີ ີ ັ່ ່ ້ ່ ເພາະເປນແບບັ Graphic Mode ສາ

ມາດເອນໃຊໄດຫາຍວທດງນີ ິ ີ ັ ີ້ ່ ້້ ້ ຼ :

3.2.3. Query Analizer

ວທທິ ີ ີ່ 1: ພມຄາສງິ ໍ ັ່ isqlw ທີ່ DOS Prompt ຫຼື ຈາກເມນູ Start > Run

ວທທິ ີ ີ່ 2: ກດປມຸົ ່ Start > Programs > Microsoft SQL Server >

Query Analizer

ວທທິ ີ ີ່ 3: ຂະນະທຢໃູນີ່ ່ Enterprise Manager ໃຫເລອກເມນູ້ ື Tool >

Query Analizer

Mr. Phonepaseuth PHONHDALA 7

3.3. ການ SELECT ເພອສະແດງຂມນູື ໍ່ ້ຄາສງໃນການຄວຣເພອສະແດງຂມນູມຮບູແບບດງນໍ ັ ິ ີ ື ໍ ີ ັ ີ່ ່ ້ ່ :້

SELECT select_list [INTO new_table]

FROM table_ssource

[WHERE search_condition]

GROUP BY group_by_expression]

[ORDER BY order_expression [ASC | DESC] ]

ຄເວດີ ີ ( Keyword ) ແຕລະຕວທມຄວາມກຽວຂອງກບການເລອກຂມນູມດງນ່ ່ ້ົ ີ ີ ັ ື ໍ ີ ັ ີ່ ້ ່ :້

SELECT ເລອກຖນຂມນູທຕອງການສະແດງື ັ ໍ ີ້ ່ ້

FROM ກາໜດຕາຕະລາງຂມນູທກຽວຂອງໍ ົ ໍ ີ້ ່ ່

WHERE ເລອກແຖວທກງກບເງອນໄຂື ີ ົ ັ ື່ ່ ທໄດກາໜດໄວີ ໍ ົ່ ້ ້

GROUP BY ຈດກມຸຂມນູທຜນໄດຮບສະແດງຄກນັ ໍ ີ ົ ັ ື ັ່ ້້ ່

Mr. Phonepaseuth PHONHDALA 8

HAVING ຄກນກບື ັ ັ WHERE ໃຊເມອມ້ ື ີ່ GROUP BY ORDER BY ກາໜດການລຽນລາດບຂອງຂມນູຜນໄດຮບໍ ົ ໍ ັ ໍ ົ ັ້ ້

3.3.1. ການເລອກແຕລະຖນຂອງຕາຕະລາງມາສະແດງື ັ່

ຮບູທີ 3.2 ການເລອກແຕລະຖນຂອງຕາຕະລາງມາສະແດງື ັ່

Mr. Phonepaseuth PHONHDALA 9

3.3.2. ການປຽນຊຂອງຖນໃນການສະແດງຜນ່ ື ັ ົ່

ຮບູທີ 3.3 ການປຽນຊຂອງຖນ່ ື ັ່

Mr. Phonepaseuth PHONHDALA 10

ການປຽນຊຖນນສາມາດເຮດໂດອກວທໜງດງນ່ ້ື ັ ີ ັ ີ ິ ີ ຶ ັ ີ່ ້ ່ ່ :້

ຮບູທີ 3.4 ການປຽນຊຂອງຖນ່ ື ັ່

ຈາກຮບູທີ 3.3 ແລະ 3.4 ເຮາສາມາດໃຊຮບູແບບໄວຍາກອນຂອງົ ້ ANSI ໂດຍໃຊ້ຄເວດີ ີ ດງຮບູທັ ີ່ 3.5 ເຊງຈະໃຫຜນໄດຮບຄກນິ ົ ັ ື ັ່ ້ ້

ຮບູທີ 3.5 ໃຊຮບູແບບໄວຍາກອນຂອງ້ ANSI ໃນການປຽນຊຂອງຖນ່ ື ັ່

Mr. Phonepaseuth PHONHDALA 11

3.3.3. ການເພມຂຄວາມເຂາລະຫວາງການສະແດງຜນີ ໍ ົ ົ່ ້ ້ ່

ຮບູທີ 3.6 ເພມຂຄວາມລະຫວາງການສະແດງຜນີ ໍ ົ່ ້ ່

Mr. Phonepaseuth PHONHDALA 12

3.4.1. ການປຽບທຽບດວຍໂຕດາເນນການ້ ໍ ີ ( Comparison Operators )

ຕາຕະລາງທີ 3.1 ໂຕດາເນນການໍ ີ ( Operators )

ໂຕດາເນນການໍ ີ ຄວາມໝາຍ

= ເທາກບົ ັ່ ( Equal )

> ຫາຍກວຼ ່ າ ( Greater Then )

< ໜອຍກວ້ ່ າ ( Less Then )

>= ຫາຍກວຼ ່ າ ຫເທາກບຼື ົ ັ່ ( Greater then or Equal To )

<= ໜອຍກວ້ ່ າ ຫເທາກບຼື ົ ັ່ ( Less Then or Equal )

<> ບເທາກບໍ ົ ັ່ ່ ( Not Equal )

!= ບເທາກບໍ ົ ັ່ ່ ( ບແມນມາດຕະຖານໍ່ ່ SQL-92 )

!> ໜອຍກວ້ ່ າ ( ບແມນມາດຕະຖານໍ່ ່ SQL-92 )

!< ຫາຍກວຼ ່ າ ( ບແມນມາດຕະຖານໍ່ ່ SQL-92 )

3.4. ການເລອກສະເພາະແຖວທຕອການມາສະແດງຂມນູື ີ ໍ່ ້້

Mr. Phonepaseuth PHONHDALA 13

ຮບູທີ 3.7 ຕວຢາງການໃຊໂຕດາເນນການົ ໍ ີ່ ້ ເທາກບົ ັ່ ( = )

Mr. Phonepaseuth PHONHDALA 14

3.4.2. ການເລອກແຖວໃນຊວງທຕອງການື ີ່ ້່ ( Ranges )

ຮບູທີ 3.8 ເລອກສະເພາະແຖວທຢໃູນຊວງທຕອງການື ີ ີ່ ່່ ່ ້

Mr. Phonepaseuth PHONHDALA 15

3.4.3. ການເລອກສະເພາະແຖວທຢໃູນລາຍການື ີ່ ່ ( Lists )

ຮບູທີ 3.9 ເລອກສະເພາະແຖວທຢໃູນລາຍການື ີ່ ່

Mr. Phonepaseuth PHONHDALA 16

ຮບູທີ 3.10 ເລອກສະເພາະແຖວທບຢໃູນລາຍການື ີ ໍ່ ່ ່

3.4.4. ການເລອກແຖວທຮຂູມນູພຽງບາງສວນື ີ ໍ່ ້້ ່

ເປນການໃຊຄເວດັ ີ ີ້ Like ຮວມກບ່ ັ Wildcards

Mr. Phonepaseuth PHONHDALA 17

Wildcards ຄວາມໝາຍ

% ສະຕງທມອກຂະຣະຕງແຕິ ີ ີ ັ ັ່ ້ ່ 0 ຕວົ ເປນຕນໄປັ ົ້ ._ ( underscore ) ແທນຕວອກສອນພຽງຕວດຽວົ ັ ົ .

[ ] ແທນອກຂະຣະໜງຕວັ ຶ ົ່ ເຊງຢໃູນຊວງທກາໜດໃຫິ ີ ໍ ົ່ ່່ ່ ້ ເຊນັ່ : [A-M]

[ ^ ] ມຄວາມໝາຍກງກນຂາມກບີ ົ ັ ັ້ [ ]

ຕາຕະລາງທີ 3.2 ປະເພດຂອງ Wildcards

ຕວຢາງົ ່ 3.1 ສະແດງສະເພາະຊນກສກສາທມຄາວື ັ ຶ ີ ີ ໍ່ ່ າ່ pa ລວມຢນູາ່ ໍ

Mr. Phonepaseuth PHONHDALA 18

ຕວຢາງົ ່ 3.2 ສະແດງສະເພາະນກສກສາທມຊຂນຕນດວຍຄາວັ ຶ ີ ີ ື ື ົ ໍ່ ່ ້ ້ ້ າ່: Phone

ຕວຢາງົ ່ 3.3 ສະແດງສະເພາະນກສກສາທມຊລງທາຍຕນດວຍຄາວັ ຶ ີ ີ ື ົ ົ ໍ່ ່ ້້ ້ າ່: Vanh

Mr. Phonepaseuth PHONHDALA 19

ຕວຢາງົ ່ 3.4 ສະແດງສະເພາະນກສກສາທມຊັ ຶ ີ ີ ື່ ່ 4 ຕວອກສອນົ ັ ໂດຍອກສອນທາອດຈະເປນຫຍງັ ໍ ິ ັ ັ

ກໄດໍ່ ້ ແຕອກ່ ີ 3 ຕວທເຫອຕອງລງທາຍດວຍົ ີ ື ົ່ ຼ ້ ້ ້ one

ຕວຢາງົ ່ 3.5 ສະແດງສະເພາະນກສກສາທຕວອກສອນຕວທາອດຂອງຊຢລູະຫວາງັ ຶ ີ ົ ັ ົ ໍ ິ ື່ ່ ່ ່ E ຫາ M ຕຈາກໍ່

ນນຈະເປນຕວໃດກໄດັ ັ ົ ໍ້ ່ ້

Mr. Phonepaseuth PHONHDALA 20

ຕວຢາງົ ່ 3.7 ສະແດງສະເພາະນກສກສາທຕວອກສອນັ ຶ ີ ົ ັ່ 2 ຕວທາອດຂອງຊແມນົ ໍ ິ ື່ ່ Ph ແຕອກສອນ່ ັ

ຕວທົ ີ່ 3 ຕອງບແມນຕວ້ ່ໍ ົ່ o ສວນທເຫອຈະມຫບມຕວອກສອນຕາມມາກໄດ່ ້ີ ື ີ ື ໍ ີ ົ ັ ໍ່ ່ ່ຼ ຼ

ຕວຢາງົ ່ 3.6 ສະແດງສະເພາະນກສກສາທຕວອກສອນຕວທາອດຂອງຊບຢລູະຫວາງັ ຶ ີ ົ ັ ົ ໍ ິ ື ໍ່ ່ ່ ່ ່ E ຫາ P ຕໍ່

ຈາກນນຈະເປນຕວໃດກໄດັ ັ ົ ໍ້ ່ ້

Mr. Phonepaseuth PHONHDALA 21

3.4.5. ການເລອກແຖວທມຄາຫວາງເກບຢູື ີ ີ ັ່ ່ ່ ່ ( NULL = Unknown Value )

ຮບູທີ 3.11 ເລອກສະເພາະແຖວທມຄາຫວາງເກບຢໃູນຖນື ີ ີ ັ ັ່ ່ ່ ່ Region

Mr. Phonepaseuth PHONHDALA 22

3.4.6. ການເລອກແຖວໂດຍກາໜດຫາຍໆເງອນໄຂຮວມກນື ໍ ົ ື ັຼ ່ ່

ຕາຕະລາງ 3.3 ຄາຄວາມຈງໃນທາງຕກກະສາດ່ ິ ັ

ຈະເປນການໃຊໂຕດາເນນການທາງຕກກະສານັ ໍ ີ ັ້ ( Logical Operator ) ເຂາົ້

ຊວຍ່ ເຊງໄດແກິ່ ້ ່ AND, OR ແລະ NOT

AND True False NULLTrue True False NULLFalse False False FalseNULL NULL False NULL

OR True False NULLTrue True True TrueFalse True False NULLNULL True NULL NULL

NOTTrue FalseFalse TrueNULL NULL

Mr. Phonepaseuth PHONHDALA 23

ຮບູທີ 3.12 ການໃຊໂຕດາເນນການທາງຕກກະສາດ້ ໍ ີ ັ AND

ຮບູທີ 3.13 ການໃຊໂຕດາເນນການທາງຕກກະສາດ້ ໍ ີ ັ NOT

Mr. Phonepaseuth PHONHDALA 24

ຮບູທີ 3.14 ການໃຊໂຕດາເນນການທາງຕກກະສາດ້ ໍ ີ ັ OR

Mr. Phonepaseuth PHONHDALA 25

3.4.7. ການກາຈດຜນໄດຮບຂອງແຖວຂມນູທຄກນໍ ັ ົ ັ ໍ ີ ື ັ້ ້ ່

ຮບູທີ 3.15 ຜນໄດຮບທບໃຊົ ັ ີ ໍ້ ້່ ່ ແລະໃຊ້ DISTINCT

ຜນໄດຮບທບໄດົ ັ ີ ໍ້ ້່ ່ ໃຊ ້DISTINCT

ຜນໄດຮບທໃຊົ ັ ີ້ ້່DISTINCT

Mr. Phonepaseuth PHONHDALA 26

3.4.8. ການເລອກສະເພື າະ n ແຖວຂມນູທາອດໍ ໍ ິ້

ຮບູທີ 3.17 ການໃຊຄເວດ້ ີ ີ PERCENT

ຮບູທີ 3.16 ເລອກສະເພສື ະ 3 ແຖວທາອດໍ ິ

Mr. Phonepaseuth PHONHDALA 27

3.4.9. ການລຽນລາດບຜນໄດຮບຂອງຂມນູທຖກນາມາສະແດງໍ ັ ົ ັ ໍ ີ ື ໍ້ ້ ່

ຮບູທີ 3.18 ການລຽນລາດບແຕໃຫຍຫານອຍດວຍໍ ັ ່ ່ ້ ້ DESC ຖາຕອງການລຽນ້ ້

ແຕນອຍຫາໃຫຍໃຫໃຊ່ ້ ່ ້ ້ ASC

Mr. Phonepaseuth PHONHDALA 28

3.5. ການຈດກມຸຂມນູເພອສະແດງຜນັ ໍ ື ົ່ ້ ່3.5.1. Aggregate Function

ເປນຟງເຊນຊຸດໜງທໃຊສາລບຄດໄລຄາຜນບວກຂອງຂມນູໃນຕາຕະລາງັ ັ ີ ຶ ີ ໍ ັ ິ ົ ໍ່ ່ ້້ ່ ່ ຫຼື

ພຽງບາງກມຸຂອງແຖວທມຂມນູດຽວກນໄດ່ ້ີ ີ ໍ ັ່ ້ .

ຈະເປນການໃຊວຽກຮວມກບຄເວດັ ັ ີ ີ້ ່ GROUPE BY ແລະ HAVING

ຟງເຊນັ ີ ຜນໄດຮບົ ັ້

AVG ( [ ALL | DISTINCT ] Column_name) ຊອກຄາສະເລຍຂອງຖນ່ ່ ັ ເຊງກາໜດໂດຍິ ໍ ົ່ ALL ຫຼື DISTINCT

COUNT(*) ນບຈານວນແຖວຂອງຜນໄດຮບທງໝດັ ໍ ົ ັ ັ ົ້

COUNT( ALL | DISTINCT ) Column_name ນບຈານວນແຖວຂອງຖນັ ໍ ັ ເຊງກາໜດໂດຍິ ໍ ົ່ ALL ຫຼື DISTINCT

COUNT_BIGຄກນກບື ັ ັ COUNT ແຕຈະໄດປະເພດຂອງຂມນູກບມາເປນ່ ້ ໍ ັ ັ້ bigintແທນທຈະເປນີ ັ່ int

MAX (Column_name) ຊອກຄາໃຫຍສດຸຂອງຖນ່ ່ ັ

Mr. Phonepaseuth PHONHDALA 29

ຟງເຊນັ ີ ຜນໄດຮບົ ັ້

MIN (Column_name) ຊອກຄານອຍສດຸຂອງຖນ່ ້ ັ

SUM ( ALL | DISTINCT ) Column_name ຊອກຜນບວກຂອງຖນົ ັ ເຊງກາໜດໂດຍິ ໍ ົ່ ALL ຫຼື DISTINCT

ຕາຕະລາງ 3.4 ລາຍລະອຽດຂອງ Aggregate Function

ຮບູທີ 3.19 ຕວຢາງການໃຊົ ່ ້ ຟງເຊນັ ີ COUNT(*)

ຮບູທີ 3.20 ຕວຢາງການໃຊົ ່ ້ ຟງເຊນັ ີ MAX(column_name)

Mr. Phonepaseuth PHONHDALA 30

ຮບູທີ 3.21 ຕວຢາງການໃຊົ ່ ້ ຟງເຊນັ ີ SUM(column_name)

3.5.2. GROUP BY ແລະ HAVINGຄເວດີ ີ GROUP BY ມລກສະນະການເຮດວຽກຄາຍກນກບີ ັ ັ ັ ັ້ SELECT ແຕ່

ໃຊໃນກລະນທເປນການຈດກມຸຕາມແຖວຂອງຜນໄດຮບ້ ່ ້ໍ ີ ີ ັ ັ ົ ັ່ .

ສວນ່ HAVING ມລກສະນະການເຮດວຽກຄາຍກນກບີ ັ ັ ັ ັ້ WHERE ເຊງຈິ່ ະ

ຖກໃຊຮວມກບື ັ້ ່ GROUP BY ເຊງມຮບູແບບດງນິ ີ ັ ີ່ ່ :້

GROUP BY [ALL] non_aggregate_expression(s)

HAVING seach_criterial

Mr. Phonepaseuth PHONHDALA 31

+ = 60+ = 60

+ = 49+ = 49

+ = 27+ = 27

ຮບູທີ 3.22 ຕວຢາງການໃຊົ ່ ້ ຄເວດີ ີ GROUP BY

Mr. Phonepaseuth PHONHDALA 32

>250>250

ຮບູທີ 3.23 ຕວຢາງການໃຊົ ່ ້ ຄເວດີ ີ HAVING ຮວມກບ່ ັ GROUP BY

Mr. Phonepaseuth PHONHDALA 33

ນອກຈາກນເຮາຍງສາມາດໃຊີ ົ ັ້ ້ WHERE ເພອກອງສະເພາະແຖວຂມນູທຕອງການື ໍ ີ່ ້ ່ ້ກອນທຈະນາມາຈດກມຸດວຍ່ ່ ້ີ ໍ ັ່ GROUP BY ແລະສະແດງຜນໄດຮບຕາມເງອນໄຂຂອງົ ັ ື້ ່

HAVING

ຮບູທີ 3.24 ຕວຢາງການໃຊົ ່ ້ ຄເວດີ ີ WHERE ຮວມກບ່ ັ GROUP BY

Mr. Phonepaseuth PHONHDALA 34

3.5.2. COMPUTE ແລະ COMPUTE BY

COMPUTE ໃຊໃນການສະຫລບຸຂມນູທໄດຈາກຜນໄດຮບຈາກການຄວຣ້ ້ ້ໍ ີ ົ ັ ິ ີ້ ່

ດວຍ້ Aggregate Function.

ສວນ່ COMPUTE BY ຈະເປນການສະຫລບຸຂມນູໃນແຕລະກມຸຂອງຖນັ ໍ ັ້ ່ ່ດຽວກນັ.

ໂດຍມຮບູແບບການໃຊວຽກດງນີ ັ ີ້ ່ :້

COMPUTE aggregate_expression(s) [BY column_list]

Mr. Phonepaseuth PHONHDALA 35

ຮບູທີ 3.25 ຕວຢາງການໃຊົ ່ ້ ຄເວດີ ີ COMPUTE

Mr. Phonepaseuth PHONHDALA 36

ຮບູທີ 3.25 ຕວຢາງການໃຊົ ່ ້ ຄເວດີ ີ COMPUTE BY

Mr. Phonepaseuth PHONHDALA 37

3.6. ການ JOIN ເພອຄວຣຂມນູຈາກຫາຍຕາຕະລາງື ິ ີ ໍ່ ້ ຼ3.6.1. INNER JOINs

ແບງອອກເປນ່ ັ 2 ແບບຄ:ື Equi JOIN ແລະ Natural JOIN

Equi JOIN

ຖນທນາມາປຽບທຽບກນຂອງັ ີ ໍ ັ່ 2 ຕາຕະລາງ ຈະມການຊາໃຫເຫນີ ໍ ້ ້ ັ

ຮບູທີ 3.26 Equi JOIN ( SQL Server Syntax )

Mr. Phonepaseuth PHONHDALA 38

Natural JOIN

ຮບູທີ 3.27 Equi JOIN ( ANSI Syntax )

ຜນໄດຮບຈະຄາຍກນກບົ ັ ັ ັ້ ້ Equi JOIN ແຕຈະບສະແດງຖນທໃຊປຽບທຽບຊາໃຫເຫນ່ ້ ້ໍ ັ ີ ໍ່ ່ ້ ັ

ຮບູທີ 3.28 Natural JOIN ( SQL Server Syntax )

Mr. Phonepaseuth PHONHDALA 39

ຮບູທີ 3.29 Natural JOIN ( ANSI Syntax )

3.6.2. OUTER JOINs

ANSI SQL Server ຜນໄດຮບົ ັ້

LEFT OUTER JOIN *=

=*

ບມໍ ີ່

ຂມນູຂອງແຕລະລາຍການຈະຍດຂມນູທມາຈາກຕາຕະລາງທາອດເປນຫກໍ ຶ ໍ ີ ໍ ິ ັ ັ້ ້ ່່ ຼ

ໂດຍລວມກບຂມນູຈາກຕາຕະລາງທສອງເມອມຂມນູກງຕາມເງອນໄຂັ ໍ ີ ື ີ ໍ ົ ື້ ່ ່ ້ ່

RIGHT OUTER JOINຂມນູຂອງແຕລະລາຍການຈະຍດຂມນູທມາຈາກຕາຕະລາງທໍ ຶ ໍ ີ ີ້ ້ ່ ່່ 2 ເປນຫກັ ັຼ

ໂດຍລວມກບຂມນູຈາກຕາຕະລາງທທາອດເມອມຂມນູກງຕາມເງອນໄຂັ ໍ ີ ໍ ິ ື ີ ໍ ົ ື້ ່ ່ ້ ່

FULL OUTER JOINຂມນູຂອງແຕລະລາຍການເກດຈາກຜນໄດຮບຈາກໍ ີ ົ ັ້ ່ ້ LEFT JOIN ແລະ

LIGHT JOIN ລວມກນັ

ຕາຕະລາງ 3.5 ປະເພດຂອງ OUTER JOIN

Mr. Phonepaseuth PHONHDALA 40

ຈາກຕາຕະລາງທີ 3.5 ພບວາການຍດຫກຈາກຕາຕະລາງທາອດົ ຶ ັ ໍ ິ່ ຼ ຫຕາຕຼື ະ

ລາງທີ່ 2 ຈະໃຫຜນໄດຮບຄກນ້ ້ົ ັ ື ັ ເມອມການສະຫບກນລະຫວາງປະເພດຂອງື ີ ັ ັ່ ຼ ່OUTER JOIN ເຊນັ່ :

FROM Customers LEFT OUTER JOIN Orders ON

Customers.CustomerID =Order.CustomerID

FROM Orders RIGHT OUTER JOIN Customers ON

Customers.CustomerID =Order.CustomerID

FROM Orders RIGHT OUTER JOIN Customers ON

Order.CustomerID =Customers.CustomerID

Mr. Phonepaseuth PHONHDALA 41

ຮບູທີ 3.30 ປຽບທຽບຜນໄດຮບຈາກົ ັ້ LEFT OUTER JOIN ແລະ RIGHT OUTERJOIN

Mr. Phonepaseuth PHONHDALA 42

ຮບູທີ 3.30 ຕວຢາງການໃຊົ ່ ້ FULL OUTER JOIN

Mr. Phonepaseuth PHONHDALA 43

3.7. ການໃຊ້ SUB QUERIES

3.7.1. Nested Subqueries

ປະເພດຂອງ Sub queries ເມອແບງຕາມລກສະນະການເຮດວຽກແລວມດງນື ັ ັ ີ ັ ີ່ ່ ້່ ້ :

ເປນຄວຣຍອຍທແຝງຕວຢໃູນຄວຣຫກັ ິ ີ ີ ົ ິ ີ ັ່ ່່ ຼ , ມໜາທຊອກຜນໄດຮບພາຍໃນຂອງຕວີ ີ ົ ັ ົ້ ້່

ເອງ ກອນທຈະຖກນາໄປປຽບທຽບກບເງອນໄຂທກຽວຂອງກບຜນໄດຮບ່ ່ ້ ້ີ ື ໍ ັ ື ີ ັ ົ ັ່ ່ ່ ເຊງຈະຖກິ ື່

ນາມາສະແດງຈາກຄວຣຫກໍ ິ ີ ັຼ

ຫກການກາໜດເງອນໄຂຼ ັ ໍ ົ ື່ຫກການກາໜດເງອນໄຂຼ ັ ໍ ົ ື່

1. ຫາກຜນໄດຮບຈາກຄວຣຍອຍເປນຄາດຽວໆອອກມົ ັ ິ ີ ັ້ ່ ່ ່ າ ສາມາດນາມາປຽບທຽບໍ

ກບໂອເປເຣເຕັ ີ ີ ( Operator ) ຕາງ່ ໆ ເຊນັ່ : <, =, >, <=, >=, <>, !>, <!

ພາຍໃນຄວຣໄດິ ີ .້

2. ຖາຫາກຜນໄດຮບອອກມາເປນຖນດຽວ້ ້ົ ັ ັ ັ , ແຕມຫາຍໆຄ່ ່ີ ຼ າ ສາມາດໃຊຄເວດ້ ີ ີ

[ NOT ] IN ເຊງໝາຍເຖງມຄາຂມນູຢພູາຍໃນຖນນິ ິ ີ ໍ ັ ີ່ ້ ້່ ່ ນາມາປຽບທຽບຮວມກບໍ ັ່ຄເວດີ ີ WHERE ໄດ.້

Mr. Phonepaseuth PHONHDALA 44

ຂກາໜດກຽວກບການໃຊໍ ໍ ົ ັ້ ່ ້ຂກາໜດກຽວກບການໃຊໍ ໍ ົ ັ້ ່ ້ Sub queriesSub queries

3. ຖາຜນໄດຮບອອກມາເປນຫາຍໆຖນ້ ້ົ ັ ັ ັຼ ສາມາດໃຊຄເວດ້ ີ ີ [ NOT ] EXISTS

ເພອປຽບທຽບື່ ເຊງໝາຍເຖງມຄາຂມນູຢພູາຍໃນຜນໄດຮບທມຢນູິ ິ ີ ໍ ົ ັ ີ ີ ີ່ ້ ່ ້່ ່ ້ ່ ໂດຍໃຊວຽກ້ຮວມກບຄເວດ່ ັ ີ ີ WHERE ເພອກາໜດເງອນໄຂໄດເຊນກນື ໍ ົ ື ັ ັ່ ່ ່້ .

1. ຕອງກາໜດໃຫຢພູາຍໃນວງເລບ້ ້ ່ໍ ົ ົ ັ ເພອສະແດງໃຫເຫນສວນຂອງຄວຣຍອຍື ິ ີ່ ້ ່ ່ັ

ໄວຢາງຊດເຈນ້ ່ ັ .

2. ຖາມການນາໄປປຽບທຽບກນຄາດຽວ້ ່ ່ີ ໍ ັ ໆ ດງນນຜນໄດຮບຈາກຄວຣຍອຍຕອງັ ັ ົ ັ ິ ີ່ ້ ້ ່ ້ອອກມາເປນຄາດຽວໆເຊນກນັ ັ ັ່ ່ ່ .

3. ບສາມາດໃຊຄເວດໍ ີ ີ່ ້ ORDER BY, COMPUTE ຫຼື SELECT INTO

ຮວມພາຍໃນຄວຣຍອຍໄດ່ ່ ້ິ ີ .

4. ການໃຊຄເວດ້ ີ ີ IN ເພອປຽບທຽບຜນໄດຮບຈາກຄວຣຍອຍຕອງອອກມາເປນື ົ ັ ິ ີ ັ່ ້ ່ ້ຄາດຽວ່ ່ ໆ ເທານນົ ັ່ ້ .

Mr. Phonepaseuth PHONHDALA 45

5. ການໃຊຄເວດ້ ີ ີ EXISTS ເພອປຽບທຽບກບຄວຣຍອຍຕອງກາໜດເປນື ັ ິ ີ ໍ ົ ັ່ ່ ້ SELECT *

6. ຖນທປະເພດຂອງຂມນູເປນັ ີ ໍ ັ່ ້ Text ແລະ Image ບສາມາດນາມາໃຊໃນຄວໍ ໍ ິ່ ້ ຣຍອຍໄດີ ່ .້

ຮບູທີ 3.30 ຕວຢາງົ ່ Nested Subqueries with IN

Mr. Phonepaseuth PHONHDALA 46

ຮບູທີ 3.31 ຕວຢາງົ ່ Nested Subqueries with EXISTS

ຈະເຫນວັ າ່ ຜນໄດຮບຈາກຮບູທົ ັ ີ້ ່ 3.31 ຈະກນກບຜນໄດຮບໃນຮບູທັ ັ ົ ັ ີ້ ່ 3.30

ນອກຈາກການໃຊ້ IN ແລະ EXISTS ໃນການປຽບທຽບແລວ້ ຍງມຄເວດອນທມັ ີ ີ ີ ື ີ ີ່ ່

ລກສະນະການເຮດວຽກໃກຄຽງກນດງນັ ັ ັ ັ ີ້ ່ :້

1. ANY ສາມາດໃຊຮວມກບໂອເປເຣເຕຕາງ້ ່ ່ັ ີ ີ ໆ(=, <, >, <=, >=, <>, !>, <!)

ເພອກາໜດຂອບເຂດຂອງຜນໄດຮບຈາກື ໍ ົ ົ ັ່ ້ Subqueries ໄດເຊນ້ ັ່ : ANY(4,5,6)

ໝາຍເຖງມຄາຫາຍກວາຕວໃດຕວໜງພາຍໃນວງິ ີ ົ ົ ຶ ົ່ ່ຼ ່ ຫເວາງາຍໆກຄມຄາຫາຍກວຼ ຼື ົ ໍ ື ີ້ ່່ ່ ່ າ 4

2. SOME ໃຊວຽກເຊນດຽວກນກບ້ ັ ັ ັ່ ANY ພຽງແຕເປນໄວຍາກອນຂອງ່ ັ ANSI

Mr. Phonepaseuth PHONHDALA 47

3. ALL ການເຮດວຽກຄາຍກບັ ັ້ ANY ຫຼື SOME ແຕພຈາລະນາເປນຜນຂອງທງ່ ິ ັ ົ ັ

ໝດແທນົ ເຊນັ່ : >ALL(4,5,6) ໝາຍເຖງມຄາຫາຍກວາຄາທງໝດໃນວງເລບິ ີ ັ ົ ົ ັ່ ່ ່ຼ ຫຼື

ເວາໃຫເຂາໃຈງາຍໆຄົ ົ ື້ ້້ ່ ມຄາຫາູຍກວີ ່ ່ າ 6.

ຮບູທີ 3.32 ຕວຢາງົ ່ Subqueries with ANY

Mr. Phonepaseuth PHONHDALA 48

ຮບູທີ 3.33 ຕວຢາງົ ່ Nested Subqueries with ALL

ສງເກດຜນໄດຮບຈາກຮບູທັ ົ ັ ີ້ 3.32 ເຊງເປນການໃຊິ ັ່ ້ = ANY(2,4,7,10,12,20,24)

ຈະໃຫຜນໄດຮບຄກນກບການໃຊ້ ້ ້ົ ັ ື ັ ັ IN.

ສວນຮບູທ່ ີ່ 3.33 ເປນການໃຊັ ້ > ALL (2,4,7,10,12,20,24) ດງນນຜນໄດຮບຈງັ ັ ົ ັ ິ່ ້ ່້ມຄາຫາຍກວີ ່ ່ຼ າ 24

Mr. Phonepaseuth PHONHDALA 49

3.7.2. Correlated Subqueriesຈະເປນການນາຄາຂອງແຕລະແຖວຈາກຄວຣພາຍນອກັ ໍ ິ ີ່ ່ ເຂາມາຮວມພຈາລະນົ ິ້ ່ າ

ນາກບຄວຣພາຍໃນໍ ັ ິ ີ ເຊງຕາງຈາກິ່ ່ Nested Subqueries ທຜນໄດຮບຂອງຄວຣີ ົ ັ ິ ີ່ ້ພາຍນອກ ແລະຄວຣພາຍໃນບມຄວາມກຽວຂອງກນິ ີ ໍ ີ ັ່ ່ ້ .

ຄວາມແຕກຕາງອກປະການໜງຄ່ ີ ຶ ື່ Correlated Subqueries ຈະມການເຮດີ ັ

ຈາກຄວຣພາຍນອກໄປສຄູວຣພາຍໃນິ ີ ິ ີ່ ສວນ່ Nested Subqueries ຈະເຮດໃນັ

ທາງກງກນຂາມົ ັ ້ .

ຮບູທີ 3.34 Correlated Subqueries with EXISTS

Mr. Phonepaseuth PHONHDALA 50

ກອນຈະອະທບາຍຫກການເຮດວຽກຂອງຮບູທ່ ິ ັ ັ ີຼ ່ 3.34 ໃຫພຈາລະນາຂມນູຈາກ້ ິ ໍ ້

ຕາຕະລາງ order details ທມຜນບວກຂອງຈານວນີ ີ ົ ໍ່ quantity ໃນແຕລ່ະ order

ຍອຍໆທງໝດລວມກນຫາຍກວ່ ່ັ ົ ັ ຼ າ 250 ກອນ່ ຈາກຮບູທີ 3.35

ຮບູທີ 3.35 ພຈາລະນາຂມນູຈາກຕາຕະລາງິ ໍ ້ order details

Mr. Phonepaseuth PHONHDALA 51

ຮບູທີ 3.36 ການນາເອາຂມນູຈາກຄວຣພາຍນອກມາປຽບທຽບກບຄວຣພາຍໃນໍ ົ ໍ ິ ີ ັ ິ ີ້

ຮບູທີ 3.36 ເປນການນາຄັ ໍ າ່ orderid ເທາກບົ ັ່ 10895 ຈາກຕາຕະລາງ

orders ມາແທນຄາ່ orders.orderid ຄວຣພາຍໃນິ ີ

ຈາກຮບູທີ 3.36 ຖານາຄ້ ່ໍ າ orderid ເທາກບົ ັ່ 10515 ມາແທນຄາໃນຄວຣ່ ິ ີ

ພາຍໃນ ຈະບເຮດໃຫຮບູທໍ ັ ີ່ ້ 3.34 ເປນຈງໄດັ ິ (້ ພຈາລະນາຈາກຮບູທິ ີ 3.35 ) ດງັ່

ນນຂມນູຈາກັ ໍ້ ້ orderid ເທາົ່ 10515 ຈງບຖກນາມາສະແດງິ ໍ ື ໍ່ ່ .

Mr. Phonepaseuth PHONHDALA 52

3.8. ການລວມຂມນູດວຍໍ້ ້ UNIONເປນການນາຂມນູຈາກຜນໄດຮບທເກດຈາກຕາງຄວຣັ ໍ ໍ ົ ັ ີ ີ ິ ີ້ ່້ ່ ແຕມລກສະນະການສ່ ີ ັ ະ

ແດງຕາມລາດບຂອງຖນຄາຍໆກນໍ ັ ັ ັ້ ມາຈດສະແດງພອມກນັ ັ້ .

select_statement1 UNION [ALL] select_statement2

ຂກາໜດກຽວກບການໃຊໍ ໍ ົ ັ້ ່ ້ຂກາໜດກຽວກບການໃຊໍ ໍ ົ ັ້ ່ ້ UNIONUNION

1. ການສະແດງຜນໄດຮບຂອງຖນໃນແຕລະຄວຣຕອງມຈານວນເທາກນົ ັ ັ ິ ີ ີ ໍ ົ ັ້ ່ ້ ່ ລວມ

ທງຕອງມລາດບັ ີ ໍ ັ້ ແລະປະເພດຂອງຂມນູທຄກນໍ ີ ື ັ້ ່ .

2. ຫາກມການຝຊວຽກຮວມກບຄເວດີ ັ ີ ີ້ ່ INTO ສາມາດກາໜດໄວໄດພາຍໃນຄວຣໍ ົ ິ ີ້ ້ຫກເທານນຼ ັ ົ ັ່ ້

3. ໃນແຕລະຄວຣສາມາດໃຊຄເວດ່ ້ິ ີ ີ ີ GROUP BY ແລະ HAVING ໄດ້

Mr. Phonepaseuth PHONHDALA 53

4. ຫາກມການໃຊຄເວດີ ີ ີ້ ORDER BY ແລະ COMPUTE ຕອງວາງໄວຫງ້ ້ ຼ ັ

ສດຸຕຈາກໍ່ select_statement2 ເທານນົ ັ່ ້ ເພາະເຮດໜາທໃນການລຽນລາດບັ ີ ໍ ັ້ ່

ຫຄານວນຜນໄດຮບໃຫກບຂມນູທໄດຈາກຼື ໍ ົ ັ ັ ໍ ີ້ ້ ້້ ່ UNION.

5. ຊຖນຂອງຜນໄດຮບທຖກນາມາສະແດງຈະເປນໄປຕາມື ັ ົ ັ ີ ື ໍ ັ່ ່້ select_statement1

6. ຫາກ\ກາໜດໃຫເປນໍ ົ ັ້ UNION ALL ຜນໄດຮບທໄດຈະນາແຖວຂມນູທເກດົ ັ ີ ໍ ໍ ີ ີ້ ້່ ້ ່

ຈາກຄວຣທງສອງມາສະແດງທງໝດິ ີ ັ ັ ົ ໂດຍບຄານງເຖງຂມນູທຄກນໍ ໍ ຶ ິ ໍ ີ ື ັ່ ້ ່ .

Mr. Phonepaseuth PHONHDALA 54

ຮບູທີ 3.37 ຕວຢາງການໃຊົ ່ ້ UNION

===== =====