ຄອມພິວເຕີ, ປະເພດເອກະສານ
SQL ທີ່ແຕກຕ່າງກັນ: ຄໍາອະທິບາຍ, ຕົວຢ່າງ, ຄຸນສົມບັດ
ປົກກະຕິແລ້ວໃນເວລາທີ່ທ່ານນໍາໃຊ້ SQL ເພື່ອດຶງຂໍ້ມູນຈາກຕາຕະລາງ, ຜູ້ໃຊ້ໄດ້ຮັບຂໍ້ມູນທີ່ຊ້ໍາຊ້ອນແມ່ນທີ່ມີຢູ່ແລ້ວຂອງແຖວເກັດທີ່ຢູ່ຊ້ໍາກັນຢ່າງແທ້ຈິງໄດ້. ເພື່ອຫຼີກເວັ້ນການສະຖານະການດັ່ງກ່າວນີ້, ການນໍາໃຊ້ SQL ການໂຕ້ຖຽງທີ່ແຕກຕ່າງກັນໃນປະໂຫຍກເລືອກໄດ້. ບົດຄວາມນີ້ຈະປຶກສາຫາລືຕົວຢ່າງຂອງການນໍາໃຊ້ການໂຕ້ຖຽງນີ້, ເຊັ່ນດຽວກັນກັບສະຖານະການທີ່ຄໍາຮ້ອງສະຫມັກຄວນຈະໄດ້ຮັບການປະຖິ້ມໄວ້ໂດຍການໂຕ້ຖຽງໄດ້.
ກ່ອນທີ່ພວກເຮົາດໍາເນີນການພິຈາລະນາຕົວຢ່າງສະເພາະໃດຫນຶ່ງ, ສ້າງຖານຂໍ້ມູນທີ່ຈໍາເປັນໃນຄູ່ນ່ຶຂອງຕາຕະລາງໄດ້.
ຕາຕະລາງການກະກຽມ
ຈິນຕະນາການທີ່ພວກເຮົາມີຂໍ້ມູນຮ້ານຖານຂໍ້ມູນກ່ຽວກັບຮູບທີ່ນໍາສະເຫນີໃນສອງຕາຕະລາງ. oboi ນີ້ຕາຕະລາງ (ຮູບ) ທີ່ມີທົ່ງນາ id (ບຸເປັນເອກະລັກ), ປະເພດ (ປະເພດຂອງຮູບ -. Paper, vinyl, ແລະອື່ນໆ), ສີ (ສີ), ເປັນ struct (ໂຄງປະກອບການ) ແລະລາຄາ (price) ໄດ້. ແລະຕາຕະລາງ Ostatki (ຕົກຄ້າງ) ມີຊາຍແດນ id_oboi (ອ້າງອິງເຖິງຕົວລະບຸເປັນເອກະລັກໃນຕາຕະລາງໄດ້ Oboi) ແລະຈໍານວນ (ຈໍານວນຂອງການມ້ວນໃນຫຼັກຊັບ).
ຕື່ມຂໍ້ມູນໃສ່ຕາຕະລາງຂໍ້ມູນ. ໃນຕາຕະລາງໄດ້ເພີ່ມຮູບທີ່ 9 ບັນທຶກ:
Oboi | ||||
id | ປະເພດ | ສີ | struct | ລາຄາ |
1 | ເຈ້ຍ | multicolor | ຄູ | 569 |
2 | ເຈ້ຍສອງຂັ້ນຕອນ | beige | ກ້ຽງ | 1148 |
3 | vinyl | ສີສົ້ມ | ຄູ | 504 |
4 | fleece | beige | ຄູ | 1020,9 |
5 | ເຈ້ຍສອງຂັ້ນຕອນ | beige | ກ້ຽງ | 1506 |
6 | ເຈ້ຍ | multicolor | ກ້ຽງ | 954 |
7 | vinyl | ສີນ້ໍາຕານ | ກ້ຽງ | 372 |
8 | fleece | ສີຂາວ | ຄູ | 980,1 |
9 | ຜ້າ | ສີບົວ | ກ້ຽງ | 1166,5 |
ຕາຕະລາງທີ່ມີຊາກ - ແລະເກົ້າບັນທຶກ:
Ostatki | |
id_oboi | ນັບ |
1 | 8 |
2 | 12 |
3 | 24 |
4 | 9 |
5 | 16 |
6 | 7 |
7 | 24 |
8 | 32 |
9 | 11 |
ພວກເຮົາດໍາເນີນການເພື່ອລາຍລະອຽດຂອງຄໍາສັ່ງທີ່ແຕກຕ່າງກັນໃນ SQL ໄດ້.
ວາງແຕກຕ່າງກັນໃນການເລືອກອານຸປະໂຫຍດ
ການໂຕ້ຖຽງທີ່ແຕກຕ່າງກັນຄວນຈະໄດ້ຖືກບັນຈຸໃນທັນທີຫຼັງຈາກການເລືອກຄໍາໃນການສອບຖາມໄດ້. ໄດ້ນໍາໃຊ້ກັບຄໍລໍາທັງຫມົດທີ່ລະບຸໄວ້ໃນປະໂຫຍກເລືອກ, ເນື່ອງຈາກວ່າມັນຈະໄດ້ຮັບການຍົກເວັ້ນຈາກຜົນການສອບຖາມສຸດທ້າຍຄື: ເບິ່ງຊ່ອຍແນ່ຢ່າງແທ້ຈິງ. ດັ່ງນັ້ນ, ເມື່ອເປັນພຽງພໍທີ່ຈະລະບຸເວລາທີ່ລາຍລັກອັກສອນ SQL «ເລືອກທີ່ແຕກຕ່າງກັນ»ການຮ້ອງຂໍ. ຂໍ້ຍົກເວັ້ນແມ່ນການນໍາໃຊ້ຂອງປະຕິບັດຫນ້າລວມພາຍໃນທີ່ແຕກຕ່າງກັນທີ່ເບິ່ງເປັນພຽງເລັກນ້ອຍຕໍ່ມາໄດ້.
ມັນຄວນຈະຈົດຈໍາວ່າສ່ວນໃຫຍ່ຂອງຖານຂໍ້ມູນແລະບໍ່ໄດ້ຮັບຮູ້ປະເພດຂອງການຮ້ອງຂໍ:
SELECT Ostatki.Count ທີ່ແຕກຕ່າງກັນ, Oboi ທີ່ແຕກຕ່າງກັນ. * ຈາກ oboi ດ້ານສະຫມັກ Ostatki ON Oboi.id = Ostatki.id_oboi |
ມີບໍ່ໄດ້ພິຈາລະນາອະພິປາຍຫຼາຍຄັ້ງຫຼືເມື່ອກໍານົດໄວ້, ແຕ່ກ່ອນທີ່ຈະຄັ້ງທີສອງ, ທີສາມຫຼືຖັນເລືອກອື່ນ. ທ່ານຈະໄດ້ຮັບຄວາມຜິດພາດໂດຍອ້າງອີງໃສ່ຄວາມຜິດພາດໃນໄວຍາກອນ.
ຄໍາຮ້ອງສະຫມັກທີ່ແຕກຕ່າງກັນການສອບຖາມໃນມາດຕະຖານ
ມັນເປັນທີ່ຈະແຈ້ງວ່າມີການກໍ່ສ້າງຕາຕະລາງໂຄງສ້າງທີ່ເຫມາະສົມແລະການຕື່ມໃຫ້ເຂົາເຈົ້າພາຍໃນຕາຕະລາງດຽວບໍ່ສະຖານະການໃນເວລາທີ່ມີ: ເບິ່ງຊ່ອຍແນ່ຢ່າງແທ້ຈິງ. ເພາະສະນັ້ນ, ປະຕິບັດການສອບຖາມ«ເລືອກ * ທີ່ແຕກຕ່າງກັນ»ທີ່ມີຕົວຢ່າງຂອງຕາຕະລາງຫນຶ່ງທີ່ໃຊ້ການບໍ່ໄດ້.
ພິຈາລະນາສະຖານະການໃນເວລາທີ່ພວກເຮົາຈໍາເປັນຕ້ອງຮູ້ສິ່ງທີ່ປະເພດພວກເຮົາມີຮູບ, ແຕ່ສໍາລັບຄວາມສະດວກ, ເພື່ອຈັດຮຽງຕາມປະເພດ:
SELECT Oboi.type ຈາກຄໍາສັ່ງ Oboi ແບ່ງຕາມປະເພດ |
ແລະໄດ້ຮັບຜົນໄດ້ຮັບ:
ປະເພດ |
ເຈ້ຍ |
ເຈ້ຍ |
ເຈ້ຍສອງຂັ້ນຕອນ |
ເຈ້ຍສອງຂັ້ນຕອນ |
vinyl |
vinyl |
ຜ້າ |
fleece |
fleece |
ດັ່ງທີ່ເຫັນໄດ້ໃນຕາຕະລາງທີ່ມີແຖວເກັດທີ່ຢູ່ຊ້ໍາກັນ. ຖ້າຫາກວ່າພວກເຮົາໄດ້ເພີ່ມການສະເຫນີເລືອກທີ່ແຕກຕ່າງກັນ:
SELECT Oboi.type ທີ່ແຕກຕ່າງກັນ ຈາກຄໍາສັ່ງ Oboi ແບ່ງຕາມປະເພດ |
ພວກເຮົາໄດ້ຮັບຜົນໄດ້ຮັບໂດຍບໍ່ມີການຄ້າງຫ້ອງທີ່:
ປະເພດ |
ເຈ້ຍ |
ເຈ້ຍສອງຂັ້ນຕອນ |
vinyl |
ຜ້າ |
fleece |
ດັ່ງນັ້ນ, ຖ້າຫາກວ່າເຫມາະສົມປ້ອນຂໍ້ມູນໃນຕາຕະລາງເປັນ, ຫຼັງຈາກນັ້ນທັນທີຫຼັງຈາກການໂທໂທລະສັບຫຼືຄໍາຮ້ອງຂໍຂອງຜູ້ຊື້ພວກເຮົາສາມາດຕອບຄໍາວ່າຮູບນ້ໍາ, ໄຟເບີກາດແລະຮູບ acrylic ສາມາດໃຊ້ໄດ້ໃນຮ້ານແມ່ນບໍ່. ເນື່ອງຈາກວ່າລະດັບຂອງຮ້ານຄ້າໄດ້ຖືກປົກກະຕິແລ້ວບໍ່ຈໍາກັດຫນຶ່ງຮ້ອຍຮູບ, ເບິ່ງບັນຊີລາຍຊື່ຂອງປະເພດທີ່ບໍ່ແມ່ນເອກະລັກທີ່ຈະເປັນການດີໃຊ້ແຮງງານຫຼາຍ.
ຄໍາຮ້ອງສະຫມັກປະຕິບັດຫນ້າທີ່ແຕກຕ່າງກັນລວມພາຍໃນ
ການໂຕ້ຖຽງທີ່ແຕກຕ່າງກັນ SQL ສາມາດໄດ້ຮັບການນໍາໃຊ້ດ້ວຍຟັງຊັ່ນລວມໃດໆ. ແຕ່ສໍາລັບຕ່ໍາສຸດແລະສູງສຸດຄໍາຮ້ອງສະຫມັກຂອງຕົນຈະບໍ່ມີຜົນກະທົບ, ແຕ່ໃນເວລາທີ່ການຄິດໄລ່ລວມຍອດຫຼືມູນຄ່າສະເລ່ຍປະຈໍາແມ່ນບໍ່ຄ່ອຍຈະສະຖານະການທີ່ບໍ່ມີໃຜຈະຕ້ອງໃຊ້ເວລາເຂົ້າໄປໃນບັນຊີຂອງການຄ້າງຫ້ອງທີ່ໄດ້.
ສົມມຸດວ່າພວກເຮົາຕ້ອງການທີ່ຈະກວດສອບຄວາມຈຸຂອງສາງຂອງພວກເຮົາແລະສົ່ງຄໍາຮ້ອງຂໍດັ່ງກ່າວນີ້, computes ຈໍານວນທັງຫມົດຂອງວົງຄ້າ:
ລວມ SELECT (Ostatki.count) ຈາກ Ostatki |
ຂໍຈະໃຫ້ຄໍາຕອບ 143 ຖ້າຫາກວ່າ, ແນວໃດກໍ່ຕາມ, ພວກເຮົາຈະມີການປ່ຽນແປງທີ່ຈະ:
ລວມ SELECT (Ostatki.count ທີ່ແຕກຕ່າງກັນ) ຈາກ Ostatki |
ພວກເຮົາໄດ້ຮັບການທັງຫມົດ 119, ເປັນຮູບສໍາລັບຕົວເລກສ່ວນ 3 ແລະ 7 ຢູ່ໃນຫຼັກຊັບຢູ່ໃນປະລິມານດຽວກັນ. ຢ່າງໃດກໍຕາມ, ມັນເປັນທີ່ຈະແຈ້ງວ່າຄໍາຕອບແມ່ນຜິດພາດ.
ສ່ວນຫຼາຍມັກຈະນໍາໃຊ້ໃນ SQL ນັບຫນ້າທີ່ແຕກຕ່າງກັນ. ດັ່ງນັ້ນ, ພວກເຮົາສາມາດຊອກຫາໄດ້ຢ່າງງ່າຍດາຍຊະນິດເປັນເອກະລັກຈໍານວນຂອງຮູບ, ພວກເຮົາມີ:
ນັບ SELECT (Oboi.type ທີ່ແຕກຕ່າງກັນ) ຈາກ oboi |
ແລະໄດ້ຮັບຜົນມາຈາກ 5 - ເຈ້ຍທໍາມະດາແລະສອງຊັ້ນ vinyl ແລະ fabric ທີ່ບໍ່ແມ່ນແສ່ວ. ແນ່ນອນເຫັນທັງຫມົດການໂຄສະນາໄດ້ເຊັ່ນ: "ພວກເຮົາພຽງແຕ່ມີຫຼາຍກວ່າ 20 ປະເພດທີ່ແຕກຕ່າງກັນຂອງຮູບ," ໂດຍຊຶ່ງຫມາຍຄວາມວ່າທີ່ຮ້ານນີ້ແມ່ນມ້ວນບໍ່ພຽງແຕ່ຄູ່ຜົວເມຍອາຍແກັສແລະຫຼາຍໆຮູບປະເພດທີ່ທັນສະໄຫມ.
ມັນເປັນທີ່ຫນ້າສົນໃຈທີ່ໃນການສອບຖາມດຽວກັນ, ທ່ານສາມາດກໍານົດປະຕິບັດຫນ້າທີ່ຫຼາກຫຼາຍເຊັ່ນ: ນັບ attribute DISTINCT, ແລະໂດຍບໍ່ມີການມັນ. ທີ່ເປັນສະຖານະການເທົ່ານັ້ນທີ່ແຕກຕ່າງກັນໃນ Select'e ສາມາດໃນປະຈຸບັນຫຼາຍຄັ້ງ.
ໃນເວລາທີ່ຈະຍົກເລີກການໃຊ້ຂອງການໂຕ້ຖຽງໄດ້
ຈາກການນໍາໃຊ້ SQL ການໂຕ້ຖຽງທີ່ແຕກຕ່າງກັນຄວນຈະໄດ້ຮັບການປະຖິ້ມໄວ້ໃນຫນຶ່ງໃນສອງກໍລະນີ:
- ທ່ານປະຕິບັດການຄັດເລືອກຂອງຕາຕະລາງແລະມີຄວາມຫມັ້ນໃຈໃນມູນຄ່າເປັນເອກະລັກໃນແຕ່ລະ. ໃນກໍລະນີດັ່ງກ່າວນີ້, ການນໍາໃຊ້ຂອງການໂຕ້ຖຽງແມ່ນບໍ່ເຫມາະສົມ, ເພາະວ່າມັນເປັນພາລະເພີ່ມເຕີມກ່ຽວກັບເຄື່ອງແມ່ຂ່າຍຫຼືລູກຄ້າ (ໂດຍອີງຕາມປະເພດຂອງ DBMS ໄດ້).
- ທ່ານມີຄວາມຢ້ານກົວຂອງສູນເສຍຂໍ້ມູນຂອງທ່ານ. ຂໍໃຫ້ເຮົາຈົ່ງອະທິບາຍ.
ນາຍຈ້າງຄິດຂໍໃຫ້ທ່ານບອກຮູບທີ່ທ່ານມີ, ມີສະແດງເຖິງມູນຂອງພຽງແຕ່ສອງຖັນຂອງເກມ - ປະເພດແລະສີ. ອອກຈາກນິໄສ, ທ່ານໃຫ້ການໂຕ້ຖຽງທີ່ແຕກຕ່າງກັນ:
SELECT Oboi.type ທີ່ແຕກຕ່າງກັນ, Oboi.color ຈາກ oboi ORDER BY Oboi.type |
ແລະ - ສູນເສຍຂໍ້ມູນບາງສ່ວນ:
ປະເພດ | ສີ |
ເຈ້ຍ | multicolor |
ເຈ້ຍສອງຂັ້ນຕອນ | beige |
vinyl | ສີນ້ໍາຕານ |
vinyl | ສີສົ້ມ |
ຜ້າ | ສີບົວ |
fleece | beige |
fleece | ສີຂາວ |
ມັນອາດຈະໃຫ້ປະທັບໃຈທີ່ໄດ້ຮູບເຈ້ຍ (ທໍາມະດາແລະສອງຊັ້ນ) ພວກເຮົາໄດ້ພຽງແຕ່ຫນຶ່ງໃຈ, ໃນຄວາມເປັນຈິງ, ເຖິງແມ່ນວ່າໃນຕາຕະລາງຂະຫນາດນ້ອຍຂອງພວກເຮົາຂອງສອງບົດຄວາມ (ຜົນໂດຍບໍ່ມີການແຕກຕ່າງກັນ):
ປະເພດ | ສີ |
ເຈ້ຍ | multicolor |
ເຈ້ຍ | multicolor |
ເຈ້ຍສອງຂັ້ນຕອນ | beige |
ເຈ້ຍສອງຂັ້ນຕອນ | beige |
vinyl | ສີນ້ໍາຕານ |
vinyl | ສີສົ້ມ |
ຜ້າ | ສີບົວ |
fleece | ສີຂາວ |
fleece | beige |
ເພາະສະນັ້ນ, ເປັນລາຍລັກອັກສອນການຮ້ອງຂໍທີ່ມີການໂຕ້ຖຽງຄວາມຕ້ອງທີ່ແຕກຕ່າງກັນເພື່ອຈະລະມັດລະວັງແລະການທີ່ຈະຕັດສິນໃຈກ່ຽວກັບຄໍາຮ້ອງສະຫມັກຂອງຕົນ, ໂດຍອີງຕາມວຽກງານຂອງແຕ່ຢ່າງໃດ.
ທາງເລືອກທີ່ແຕກຕ່າງກັນ
ກົງກັນຂ້າມກັບການໂຕ້ຖຽງທີ່ແຕກຕ່າງກັນ - ການໂຕ້ຖຽງທັງຫມົດ. ໃນຄໍາຮ້ອງສະຫມັກຂອງຕົນແຖວຊ້ໍາຈະຖືກເກັບໄວ້. ແຕ່ເປັນຖານຂໍ້ມູນໄວ້ໃນຕອນຕົ້ນແລະເຫັນວ່າວ່າມັນເປັນສິ່ງຈໍາເປັນທີ່ຈະສະແດງຄ່າທັງຫມົດ, ການໂຕ້ຖຽງໄດ້ທັງຫມົດ - ມັນເປັນແທນທີ່ຈະເປັນຮອບຄັດເລືອກກ່ວາການໂຕ້ຖຽງຫນ້າຕົວຈິງ.
Similar articles
Trending Now