ຄອມພິວເຕີປະເພດເອກະສານ

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 ການໂຕ້ຖຽງທີ່ແຕກຕ່າງກັນຄວນຈະໄດ້ຮັບການປະຖິ້ມໄວ້ໃນຫນຶ່ງໃນສອງກໍລະນີ:

  1. ທ່ານປະຕິບັດການຄັດເລືອກຂອງຕາຕະລາງແລະມີຄວາມຫມັ້ນໃຈໃນມູນຄ່າເປັນເອກະລັກໃນແຕ່ລະ. ໃນກໍລະນີດັ່ງກ່າວນີ້, ການນໍາໃຊ້ຂອງການໂຕ້ຖຽງແມ່ນບໍ່ເຫມາະສົມ, ເພາະວ່າມັນເປັນພາລະເພີ່ມເຕີມກ່ຽວກັບເຄື່ອງແມ່ຂ່າຍຫຼືລູກຄ້າ (ໂດຍອີງຕາມປະເພດຂອງ DBMS ໄດ້).
  2. ທ່ານມີຄວາມຢ້ານກົວຂອງສູນເສຍຂໍ້ມູນຂອງທ່ານ. ຂໍໃຫ້ເຮົາຈົ່ງອະທິບາຍ.

ນາຍຈ້າງຄິດຂໍໃຫ້ທ່ານບອກຮູບທີ່ທ່ານມີ, ມີສະແດງເຖິງມູນຂອງພຽງແຕ່ສອງຖັນຂອງເກມ - ປະເພດແລະສີ. ອອກຈາກນິໄສ, ທ່ານໃຫ້ການໂຕ້ຖຽງທີ່ແຕກຕ່າງກັນ:

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

ເພາະສະນັ້ນ, ເປັນລາຍລັກອັກສອນການຮ້ອງຂໍທີ່ມີການໂຕ້ຖຽງຄວາມຕ້ອງທີ່ແຕກຕ່າງກັນເພື່ອຈະລະມັດລະວັງແລະການທີ່ຈະຕັດສິນໃຈກ່ຽວກັບຄໍາຮ້ອງສະຫມັກຂອງຕົນ, ໂດຍອີງຕາມວຽກງານຂອງແຕ່ຢ່າງໃດ.

ທາງເລືອກທີ່ແຕກຕ່າງກັນ

ກົງກັນຂ້າມກັບການໂຕ້ຖຽງທີ່ແຕກຕ່າງກັນ - ການໂຕ້ຖຽງທັງຫມົດ. ໃນຄໍາຮ້ອງສະຫມັກຂອງຕົນແຖວຊ້ໍາຈະຖືກເກັບໄວ້. ແຕ່ເປັນຖານຂໍ້ມູນໄວ້ໃນຕອນຕົ້ນແລະເຫັນວ່າວ່າມັນເປັນສິ່ງຈໍາເປັນທີ່ຈະສະແດງຄ່າທັງຫມົດ, ການໂຕ້ຖຽງໄດ້ທັງຫມົດ - ມັນເປັນແທນທີ່ຈະເປັນຮອບຄັດເລືອກກ່ວາການໂຕ້ຖຽງຫນ້າຕົວຈິງ. ພວກເຮົາຫວັງວ່າໃນປັດຈຸບັນທີ່ທ່ານເຂົ້າໃຈວ່າທີ່ແຕກຕ່າງກັນ (SQL) ຖືກນໍາໃຊ້. ຄໍາອະທິບາຍໃຫ້ທ່ານຂໍ້ມູນຂ່າວສານຢ່າງເຕັມທີ່ກ່ຽວກັບຄວາມເປັນໄປໄດ້ຂອງການນໍາໃຊ້ການໂຕ້ຖຽງນີ້ໃນການແກ້ໄຂບັນຫາທີ່ແຕກຕ່າງກັນໄດ້. ຫຼັງຈາກທີ່ທັງຫມົດ, ຍ້ອນວ່າມັນໄດ້ຫັນອອກ, ເຖິງແມ່ນດັ່ງກ່າວເປັນການໂຕ້ຖຽງທີ່ງ່າຍດາຍໃນຄໍາຮ້ອງສະຫມັກຂອງຕົນ hides ຄວາມເປັນໄປໄດ້ເປັນຮູປະທໍາຫຼາຍຂອງການສູນເສຍຂໍ້ມູນບາງສ່ວນແລະສະແດງຂໍ້ມູນບໍ່ຖືກຕ້ອງ.

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

Copyright © 2018 lo.birmiss.com. Theme powered by WordPress.