Post on 22-Jan-2017
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
===== =====