Memproyeksikan Lajur dan Perangkap Alias
Mengapa anda tidak boleh merujuk alias SELECT dalam WHERE, dan cara penemu duga menguji skop alias
Memproyeksikan Lajur dan Perangkap Alias ialah pelajaran Persediaan Temu Duga SQL percuma di CoddyKit. Ini ialah pelajaran 1 daripada 4. Anda boleh membaca keseluruhan pelajaran di bawah secara percuma — kemudian berlatih secara praktikal dalam pelayar menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran Persediaan Temu Duga SQL, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus Persediaan Temu Duga SQL merangkumi sejumlah 4 pelajaran.
Unjuran: Memilih Lajur
Pemilihan lajur yang dikembalikan oleh pertanyaan dipanggil unjuran — itulah yang anda lakukan setiap kali menulis SELECT. Nyatakan lajur secara jelas dalam kod sebenar; gunakan SELECT * hanya untuk penerokaan pantas.
SELECT id, first_name, email
FROM employees;Mengapa Penemuduga Tidak Menyukai SELECT *
Mengapakah penemuduga tidak menyukai SELECT * dalam kod aplikasi? Ia rapuh (susunan lajur boleh berubah), membazirkan lebar jalur, menjejaskan penggunaan indeks dan menyembunyikan perkara yang sebenarnya anda perlukan. Nyatakan lajur anda. 👍
Memberikan Nama Alternatif kepada Lajur dengan AS
Nama alternatif menamakan semula lajur dalam hasil anda. Gunakan AS untuk kejelasan — ciri ini amat berguna pada lajur terhitung, kerana ungkapan rumit seperti salary * 12 boleh diberikan pengepala yang kemas dan mudah dibaca.
SELECT first_name AS name,
salary * 12 AS annual_salary
FROM employees;Meletakkan Tanda Petik pada Nama Alternatif yang Mengandungi Ruang
Jika nama alternatif mengandungi ruang atau perkataan terpelihara, anda mesti meletakkan tanda petik padanya. Cara mudah alih dan piawai ialah menggunakan tanda petik berganda. Petua: gunakan sahaja nama snake_case dan elakkan tanda petik sepenuhnya.
SELECT salary AS "Annual Pay"
FROM employees;Perangkap Besar: Skop Nama Alternatif dalam WHERE
Inilah perangkap yang paling kerap diuji: tetapkan nama alternatif dalam SELECT, kemudian tapis berdasarkan nama itu dalam WHERE, lalu operasi tersebut gagal. WHERE dijalankan sebelum SELECT, jadi nama alternatif itu belum wujud.
-- This raises an error
SELECT salary * 12 AS annual_salary
FROM employees
WHERE annual_salary > 100000;Sebabnya: Susunan Pelaksanaan Logik
Pembetulannya ialah mengetahui susunan klausa logik: FROM, WHERE, GROUP BY, HAVING, SELECT, kemudian ORDER BY. SELECT berada hampir di penghujung, jadi klausa terdahulu tidak dapat melihat aliasnya.
Pembetulan 1: Ulangi Ungkapan
Pembetulan yang paling mudah alih juga ringkas: ulangi sahaja ungkapan dalam WHERE dan bukannya menggunakan alias. Ia agak berulang, tetapi sentiasa berfungsi dalam setiap pangkalan data.
SELECT salary * 12 AS annual_salary
FROM employees
WHERE salary * 12 > 100000;Pembetulan 2: Bungkus dalam Subkueri atau CTE
Jika mengulangi ungkapan yang panjang kelihatan kurang kemas, kirakan ungkapan itu dalam subkueri atau CTE terlebih dahulu. Di situ alias menjadi lajur sebenar, jadi WHERE di bahagian luar boleh menapis berdasarkan alias tersebut.
SELECT *
FROM (
SELECT first_name, salary * 12 AS annual_salary
FROM employees
) t
WHERE annual_salary > 100000;Tempat Alias ARE Dibenarkan: ORDER BY
Berita baik: ORDER BY boleh menggunakan alias SELECT kerana ia dilaksanakan selepas SELECT. Jadi WHERE, GROUP BY dan HAVING tidak dapat melihat alias — tetapi ORDER BY boleh.
SELECT first_name, salary * 12 AS annual_salary
FROM employees
ORDER BY annual_salary DESC;Perbezaan Dialek untuk Disebut
Perlu disebut: MySQL secara longgar membenarkan alias dalam GROUP BY dan HAVING, manakala Postgres dan SQL Server mematuhi piawaian. Buat penaakulan berdasarkan susunan logik, kemudian nyatakan pengecualian itu.
Alias Jadual berbanding Alias Lajur
Jangan keliru antara kedua-duanya. Alias jadual memendekkan nama jadual dan boleh dilihat di mana-mana, termasuk dalam WHERE. Alias lajur pula menamakan semula output dan tidak boleh dilihat di situ — tepat berlawanan.
SELECT e.first_name, e.salary AS pay
FROM employees AS e
WHERE e.salary > 50000;Semakan Pantas
Uji perangkap utama ini.
Ringkasan
Ringkasan: utamakan lajur yang dinyatakan dengan jelas berbanding SELECT *, dan gunakan alias dengan AS. Alias SELECT tidak kelihatan dalam WHERE/GROUP BY/HAVING tetapi berfungsi dalam ORDER BY. Betulkannya dengan mengulangi ungkapan atau menggunakan CTE.
Pelajari SQL dengan tutor kecerdasan buatan — percuma
Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.
- Kursus
- 30
- Pelajaran
- 120
Soalan Lazim
Adakah pelajaran “Memproyeksikan Lajur dan Perangkap Alias” percuma?
Ya — teks penuh “Memproyeksikan Lajur dan Perangkap Alias” boleh dibaca secara percuma di web ini. Untuk berlatih secara interaktif menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7, serta membuka kunci baki kursus Persediaan Temu Duga SQL, tingkat taraf kepada CoddyKit PRO. Kursus Persediaan Temu Duga SQL merangkumi sejumlah 4 pelajaran.
Apakah yang akan saya pelajari dalam “Memproyeksikan Lajur dan Perangkap Alias”?
Mengapa anda tidak boleh merujuk alias SELECT dalam WHERE, dan cara penemu duga menguji skop alias Anda berlatih Persediaan Temu Duga SQL menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.
Adakah saya memerlukan pengalaman untuk memulakan Persediaan Temu Duga SQL?
Tiada pengalaman terdahulu diperlukan. Pembelajaran Persediaan Temu Duga SQL di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 1 daripada 4.
Berapa lamakah pelajaran “Memproyeksikan Lajur dan Perangkap Alias” diambil?
Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.
Bolehkah saya menulis dan menjalankan kod dalam pelajaran Persediaan Temu Duga SQL ini?
Ya. Setiap pelajaran Persediaan Temu Duga SQL menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.
Semua pelajaran dalam kursus ini
- Memproyeksikan Lajur dan Perangkap Alias
- Lajur Terhitung dan Keutamaan Ungkapan
- DISTINCT berbanding GROUP BY untuk Keunikan
- Ungkapan CASE dalam SELECT