Chapter3

54
Mr. Phonepaseuth PHONHDALA 1 SQL Server 2000 ພາກທ 3 ການຈດການ SQL Server 2000 ໃນລະດບຖານຂມູນ 3.1. ມາຮູຈກກບ Transact-SQL SQL ( Structured Query Language ) ເປນພາສາທໃຊໃນການຄວຣ ແລະຈດການຖານຂມູນ ສາມາດແບງອອກເປນ 2 ປະເພດ ຕາມລກສະນະການໃຊວຽກດງນ :

Transcript of Chapter3

Page 1: Chapter3

Mr. Phonepaseuth PHONHDALA 1

SQL Server 2000

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

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

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

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

Page 2: Chapter3

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

Page 3: Chapter3

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

Page 4: Chapter3

Mr. Phonepaseuth PHONHDALA 4

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

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

osql –Sservername –Uusername -Ppassword

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

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

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

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

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

Page 5: Chapter3

Mr. Phonepaseuth PHONHDALA 5

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

Page 6: Chapter3

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

Page 7: Chapter3

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 ຈດກມຸຂມນູທຜນໄດຮບສະແດງຄກນັ ໍ ີ ົ ັ ື ັ່ ້້ ່

Page 8: Chapter3

Mr. Phonepaseuth PHONHDALA 8

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

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

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

Page 9: Chapter3

Mr. Phonepaseuth PHONHDALA 9

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

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

Page 10: Chapter3

Mr. Phonepaseuth PHONHDALA 10

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

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

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

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

Page 11: Chapter3

Mr. Phonepaseuth PHONHDALA 11

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

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

Page 12: Chapter3

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. ການເລອກສະເພາະແຖວທຕອການມາສະແດງຂມນູື ີ ໍ່ ້້

Page 13: Chapter3

Mr. Phonepaseuth PHONHDALA 13

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

Page 14: Chapter3

Mr. Phonepaseuth PHONHDALA 14

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

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

Page 15: Chapter3

Mr. Phonepaseuth PHONHDALA 15

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

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

Page 16: Chapter3

Mr. Phonepaseuth PHONHDALA 16

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

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

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

Page 17: Chapter3

Mr. Phonepaseuth PHONHDALA 17

Wildcards ຄວາມໝາຍ

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

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

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

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

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

Page 18: Chapter3

Mr. Phonepaseuth PHONHDALA 18

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

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

Page 19: Chapter3

Mr. Phonepaseuth PHONHDALA 19

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

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

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

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

Page 20: Chapter3

Mr. Phonepaseuth PHONHDALA 20

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

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

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

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

Page 21: Chapter3

Mr. Phonepaseuth PHONHDALA 21

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

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

Page 22: Chapter3

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

Page 23: Chapter3

Mr. Phonepaseuth PHONHDALA 23

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

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

Page 24: Chapter3

Mr. Phonepaseuth PHONHDALA 24

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

Page 25: Chapter3

Mr. Phonepaseuth PHONHDALA 25

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

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

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

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

Page 26: Chapter3

Mr. Phonepaseuth PHONHDALA 26

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

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

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

Page 27: Chapter3

Mr. Phonepaseuth PHONHDALA 27

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

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

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

Page 28: Chapter3

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) ຊອກຄາໃຫຍສດຸຂອງຖນ່ ່ ັ

Page 29: Chapter3

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)

Page 30: Chapter3

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

Page 31: Chapter3

Mr. Phonepaseuth PHONHDALA 31

+ = 60+ = 60

+ = 49+ = 49

+ = 27+ = 27

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

Page 32: Chapter3

Mr. Phonepaseuth PHONHDALA 32

>250>250

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

Page 33: Chapter3

Mr. Phonepaseuth PHONHDALA 33

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

HAVING

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

Page 34: Chapter3

Mr. Phonepaseuth PHONHDALA 34

3.5.2. COMPUTE ແລະ COMPUTE BY

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

ດວຍ້ Aggregate Function.

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

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

COMPUTE aggregate_expression(s) [BY column_list]

Page 35: Chapter3

Mr. Phonepaseuth PHONHDALA 35

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

Page 36: Chapter3

Mr. Phonepaseuth PHONHDALA 36

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

Page 37: Chapter3

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 )

Page 38: Chapter3

Mr. Phonepaseuth PHONHDALA 38

Natural JOIN

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

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

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

Page 39: Chapter3

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

Page 40: Chapter3

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

Page 41: Chapter3

Mr. Phonepaseuth PHONHDALA 41

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

Page 42: Chapter3

Mr. Phonepaseuth PHONHDALA 42

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

Page 43: Chapter3

Mr. Phonepaseuth PHONHDALA 43

3.7. ການໃຊ້ SUB QUERIES

3.7.1. Nested Subqueries

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

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

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

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

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

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

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

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

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

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

Page 44: Chapter3

Mr. Phonepaseuth PHONHDALA 44

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

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

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

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

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

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

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

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

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

Page 45: Chapter3

Mr. Phonepaseuth PHONHDALA 45

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

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

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

Page 46: Chapter3

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

Page 47: Chapter3

Mr. Phonepaseuth PHONHDALA 47

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

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

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

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

Page 48: Chapter3

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

Page 49: Chapter3

Mr. Phonepaseuth PHONHDALA 49

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

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

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

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

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

ຮບູທີ 3.34 Correlated Subqueries with EXISTS

Page 50: Chapter3

Mr. Phonepaseuth PHONHDALA 50

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

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

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

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

Page 51: Chapter3

Mr. Phonepaseuth PHONHDALA 51

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

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

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

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

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

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

Page 52: Chapter3

Mr. Phonepaseuth PHONHDALA 52

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

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

select_statement1 UNION [ALL] select_statement2

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

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

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

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

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

Page 53: Chapter3

Mr. Phonepaseuth PHONHDALA 53

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

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

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

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

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

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

Page 54: Chapter3

Mr. Phonepaseuth PHONHDALA 54

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

===== =====