13 Perintah SQL Paling Penting Mana-mana Pengaturcara Perlu Tahu

13 Perintah SQL Paling Penting Mana-mana Pengaturcara Perlu Tahu

Pangkalan data mendorong web moden. Setiap laman web besar atau dinamik menggunakan pangkalan data dalam beberapa cara, dan bila digabungkan dengan Bahasa Pertanyaan Berstruktur (SQL) , kemungkinan memanipulasi data benar-benar tidak berkesudahan. Sekiranya anda sudah mengetahui SQL, pastikan anda mengetahui kemahiran pengaturcaraan ini yang harus diketahui oleh semua pembangun laman web.





Hari ini saya akan menunjukkan kepada anda beberapa arahan SQL teras anda perlu tahu sebagai pengaturcara.





Terdapat banyak nama untuk data yang dikembalikan dari jadual pangkalan data. Data biasanya disebut sebagai Baris , Rekod , atau Tuples . Saya akan menggunakan istilah ini secara bergantian sepanjang artikel ini.





Kata Pengantar

Semua contoh hari ini akan berdasarkan empat jadual fiksyen. The pelanggan jadual mengandungi nama dan umur pelanggan:

The ketinggian jadual mengandungi nama dan ketinggian mana-mana orang:



The kakitangan jadual mengandungi nama dan umur anggota kakitangan - sama seperti jadual pelanggan:

Jadual terakhir dipanggil orang mengandungi nama dan umur orang, seperti jadual pelanggan dan kakitangan:





1. Pilih

The pilih pernyataan adalah yang paling mudah, dan penting untuk anda memahaminya kerana ia menyokong hampir semua perintah lain. Ini dianggap sebagai amalan terbaik untuk menulis kata-kata SQL terpelihara anda dengan huruf besar, kerana ini menjadikan perintah lebih mudah dibaca dan difahami.

Seperti namanya, pilih digunakan untuk pilih data dari pangkalan data. Inilah penggunaan paling mudah:





SELECT * FROM table;

Terdapat dua bahagian untuk ini. Bahagian pertama ( PILIH * ) menentukan lajur mana yang ingin anda pilih. Tanda bintang menunjukkan bahawa anda ingin memilih semua lajur dalam jadual. Bahagian kedua ( DARI meja ) memberitahu mesin pangkalan data anda di mana anda ingin mendapatkan data ini. Ganti 'table' dengan nama jadual pangkalan data anda.

Pilihan ini dikenali sebagai 'pilih bintang.' Menggunakan tanda bintang adalah kaedah yang baik untuk mengetahui data apa yang ada dalam jadual, tetapi saya tidak mengesyorkan anda menggunakannya untuk sebarang kod pengeluaran. Apabila menggunakan bintang terpilih, terserah kepada mesin pangkalan data untuk menunjukkan data yang anda inginkan. Anda tidak mempunyai kendali atas pesanan data dikembalikan, jadi jika seseorang menambahkan lajur baru ke meja, anda mungkin mendapati pemboleh ubah dalam bahasa pengaturcaraan anda tidak lagi mewakili data yang betul. Nasib baik, ada jalan penyelesaiannya.

Anda dapat menyatakan secara jelas lajur mana yang ingin anda ambil, seperti ini:

SELECT age, name FROM people;

Pertanyaan ini mengambil lajur 'umur' dan 'nama' dari jadual 'orang'. Menjadi eksplisit ini sedikit membosankan jika anda mempunyai banyak data, tetapi melakukannya akan mengurangkan masalah pada masa akan datang, serta menjadikan SQL anda lebih mudah difahami oleh mana-mana pengaturcara masa depan.

Sekiranya anda ingin memilih sekeping data tambahan, tetapi tidak disimpan di mana-mana jadual anda, anda boleh melakukannya seperti ini:

SELECT age, '1234' FROM people;

Sebarang rentetan dalam tanda kutip tunggal akan dikembalikan dan bukannya sepadan dengan nama lajur.

2. Di mana

Perintah pilih sangat baik untuk mengambil data, tetapi bagaimana jika anda ingin menyaring hasilnya sedikit lagi? Bagaimana dengan mendapatkan semula orang yang mempunyai mata biru? Bagaimana dengan orang yang dilahirkan pada bulan Januari yang bekerja sebagai mekanik? Di sinilah tempat di mana arahan masuk. Ini membolehkan anda menerapkan syarat pada yang terpilih, dan anda hanya menambahkannya ke akhir pernyataan:

SELECT age, name FROM people WHERE age > 10;

Pertanyaan ini kini terhad kepada orang yang berumur lebih dari 10 tahun. Anda boleh menggabungkan pelbagai syarat menggunakan DAN pengendali:

SELECT age, name FROM people WHERE age > 10 AND age <20;

The DAN perintah berfungsi sama seperti yang berlaku dalam bahasa Inggeris: ia menerapkan syarat lain untuk pernyataan tersebut. Dalam contoh ini, data yang dikembalikan akan menjadi catatan dengan usia antara 10 dan 20. Oleh kerana tidak ada hasil yang sepadan, tidak ada data yang dikembalikan.

teks percuma dalam talian menghantar dan menerima mesej teks

Perintah lain yang boleh digunakan bersama dengan ini adalah ATAU . Inilah contohnya:

SELECT age, name FROM people WHERE age > 10 OR name = 'Joe';

Pertanyaan ini mengembalikan rekod di mana umurnya lebih dari 10 tahun, atau namanya sama dengan 'Joe'. Perhatikan bagaimana hanya ada satu tanda sama? Sebilangan besar bahasa pengaturcaraan menggunakan persamaan berganda (==) untuk memeriksa kesetaraan. Ini tidak diperlukan untuk sebahagian besar enjin pangkalan data (tetapi dapat sangat sesuai dengan setiap persekitaran, jadi periksa dulu).

3. Pesanan

The pesanan arahan digunakan untuk menyusun hasil yang dikembalikan. Ia satu lagi mudah digunakan. Cukup tambahkan pada akhir pernyataan anda:

SELECT name, age FROM people ORDER BY age DESC;

Anda perlu menentukan lajur dan susunannya, yang mana mungkin ASC untuk menaik atau DESC untuk turun. Anda boleh memesan dengan beberapa lajur seperti ini:

SELECT name, age FROM people ORDER BY name ASC, age DESC

PERINTAH OLEH mungkin yang paling berguna apabila digabungkan dengan perintah lain. Tidak semua pertanyaan akan mengembalikan data secara logik atau teratur - perintah ini membolehkan anda mengubahnya.

4. Sertailah

The sertai arahan digunakan untuk sertai data berkaitan disimpan dalam satu atau lebih jadual. Anda sertai jadual kedua ke jadual pertama, dan tentukan bagaimana data disambungkan. Inilah contoh asas:

cara unzip fail tar.gz
SELECT age, name, height FROM people LEFT JOIN heights USING (name);

Terdapat beberapa perkara yang berlaku di sini. Anda harus memulakan dengan sintaks 'LEFT JOIN', yang menentukan bahawa anda ingin bergabung dengan jadual menggunakan gabungan jenis kiri. Seterusnya, tentukan jadual yang ingin anda sertai (ketinggian). The MENGGUNAKAN (nama) sintaks menyatakan bahawa lajur 'nama' dapat dijumpai di kedua-dua jadual, dan bahawa ini harus digunakan sebagai kunci untuk menggabungkan jadual bersama-sama.

Jangan risau jika lajur anda mempunyai nama yang berbeza di setiap jadual. Anda boleh menggunakan 'ON' dan bukannya 'USING':

SELECT age, name, height FROM people LEFT JOIN heights ON (namea = nameb);

Pernyataan on secara jelas menyatakan lajur mana yang perlu diketengahkan. Terdapat banyak jenis penyertaan, dan memerlukan masa yang lama untuk membincangkan butiran masing-masing, jadi berikut adalah ringkasan ringkas penggunaannya:

  • (INNER) BERSAMA - Mengembalikan baris dengan perlawanan di kedua-dua jadual.
  • KIRI (OUTER) BERSAMA - Mengembalikan semua baris dari meja kiri, dengan sebarang padanan dari meja kanan. Sekiranya tidak ada perlawanan, rekod jadual kiri masih dikembalikan.
  • KANAN (KELUAR) BERSAMA - Ini adalah kebalikan dari gabungan kiri: semua baris dari meja kanan dikembalikan, bersama dengan sebarang perlawanan di meja kiri.
  • BERSAMA PENUH (OUTER) - Mengembalikan sebarang rekod dengan perlawanan di kedua-dua jadual.

Sintaks 'INNER' atau 'OUTER' adalah pilihan. Perkara itu menjadikan perkara lebih mudah difahami, tetapi anda tidak perlu menentukannya untuk sebahagian besar masa.

5. Alias

Sekarang anda sudah mengetahui asasnya, mari kita lihat alias arahan. Ini digunakan untuk menamakan semula jadual sementara - lebih banyak nama panggilan daripada yang lain, kerana nama baru ini hanya ada di dalam transaksi individu yang anda jalankan. Inilah cara anda menggunakannya:

SELECT A.age FROM people A;

Anda boleh menggunakan nama sah yang anda suka, tetapi saya suka menggunakan huruf abjad. Sebelum setiap nama lajur, alias adalah awalan. Alias ​​ini diberikan kepada jadual sebaik sahaja dinyatakan. Ini sama seperti melakukan ini:

SELECT people.age FROM people;

Daripada mengetik nama jadual panjang, anda boleh mengetik huruf yang ringkas dan senang diingat - tetapi apa gunanya? Jika anda memilih dari lebih daripada satu jadual, mudah untuk keliru mengenai lajur yang mana yang termasuk dalam jadual itu. Sekiranya kedua-dua jadual anda mempunyai lajur dengan nama yang sama, pertanyaan pangkalan data anda mungkin gagal dijalankan tanpa merujuk nama atau alias jadual secara jelas. Berikut adalah contoh dengan dua jadual:

SELECT staff.age, staff.name, customers.age, customers.name FROM staff, customers;

Dan inilah pertanyaan yang sama dengan alias:

SELECT A.age, A.name, B.age, B.name FROM staff A, customers B;

Jadual kakitangan diberi alias 'A', dan meja pelanggan diberi alias 'B'. Jadual pengasingan sangat membantu membuat kod anda lebih mudah difahami, dan mengurangkan jumlah menaip yang harus anda lakukan.

Anda juga boleh menamakan semula lajur dengan alias menggunakan perintah 'AS':

SELECT age AS person_age FROM people;

Apabila pertanyaan ini dijalankan, lajur sekarang akan dipanggil 'person_age' dan bukannya 'usia'.

6. Kesatuan

Kesatuan adalah perintah yang hebat. Ini membolehkan anda menambahkan baris antara satu sama lain. Tidak seperti gabungan yang menambahkan lajur yang sepadan, penyatuan boleh menambahkan baris yang tidak berkaitan dengan syarat mereka mempunyai bilangan dan nama lajur yang sama. Inilah cara anda menggunakannya:

SELECT age, name FROM customers
UNION
SELECT age, name FROM staff;

Anda boleh memikirkan kesatuan sebagai kaedah menggabungkan hasil dua pertanyaan. Kesatuan hanya akan mengembalikan hasil di mana terdapat baris unik antara kedua-dua pertanyaan. Anda boleh menggunakan sintaks 'UNION ALL' untuk mengembalikan semua data, tanpa mengira pendua:

SELECT age, name FROM customers
UNION ALL
SELECT age, name FROM staff;

Perhatikan bagaimana susunan baris berubah? Union beroperasi dengan cara yang paling cekap, sehingga data yang dikembalikan dapat berubah mengikut urutan.

Kes penggunaan yang mungkin untuk kesatuan adalah subtotal: anda dapat menyatukan pertanyaan dari jumlah keseluruhan ke pertanyaan dari jumlah individu untuk senario tertentu.

7. Masukkan

Anda sekarang tahu semua tentang pengambilan data dari pangkalan data, tetapi bagaimana dengan memasukkannya? Di sinilah tempat masukkan arahan masuk. Berikut adalah contoh:

INSERT INTO people(name, age) VALUES('Joe', 102);

Anda mesti menentukan nama jadual (orang), dan lajur yang ingin anda gunakan (nama dan umur). Sintaks 'NILAI' kemudian digunakan untuk memberikan nilai yang akan dimasukkan. Ini harus mengikut urutan yang sama dengan lajur yang telah ditentukan sebelumnya.

Anda tidak dapat menentukan klausa mana untuk sisipan, dan anda perlu memastikan anda mengikuti kekangan jadual yang diperlukan.

8. Kemas kini

Setelah memasukkan beberapa data, wajar untuk menukar baris tertentu. Inilah kemas kini sintaks arahan:

UPDATE people SET name = 'Joe', age = 101;

Anda mesti menentukan jadual yang ingin anda ubah, dan kemudian menggunakan sintaks 'SET' untuk menentukan lajur dan nilai barunya. Contoh ini bagus, tetapi ia akan mengemas kini setiap rekod - sesuatu yang tidak selalu diingini!

Agar lebih spesifik, anda boleh menggunakan klausa 'DI MANA' sama seperti ketika memilih:

UPDATE people SET name = 'Joe', age = 101 WHERE name = 'James';

Anda bahkan boleh menentukan beberapa syarat menggunakan 'AND' dan 'OR':

UPDATE people SET name = 'Joe', age = 101 WHERE (name = 'James' AND age = 100) OR name = 'Ryan';

Perhatikan bagaimana kurungan digunakan untuk mengekang syarat.

bolehkah anda mencampur dan memadankan ram

9. Masukkan

Alamak adalah perkataan yang terdengar aneh, tetapi ia adalah perintah yang sangat berguna. Katakan anda mempunyai kekangan di atas meja anda, dan anda telah menyatakan bahawa anda hanya mahukan rekod dengan nama unik - misalnya, anda tidak mahu menyimpan dua baris dengan nama yang sama. Sekiranya anda cuba memasukkan beberapa nilai 'Joe', mesin pangkalan data anda akan menyebabkan kesalahan dan enggan melakukannya (betul). UPSERT membolehkan anda mengemas kini rekod jika sudah ada. Ini sangat berguna! Tanpa arahan ini, anda perlu menulis banyak logik untuk memeriksa terlebih dahulu jika ada rekod, masukkan jika tidak, jika tidak, dapatkan kunci utama yang betul dan kemudian kemas kini.

Malangnya, upserts dilaksanakan secara berbeza dalam mesin pangkalan data yang berbeza. PostgreSQL baru-baru ini memperoleh kemampuan ini, sedangkan MySQL memilikinya sejak beberapa lama. Inilah sintaks MySQL untuk rujukan:

INSERT INTO people(name, age)
VALUES('Joe', 101)
ON DUPLICATE KEY UPDATE age = 101;

Perhatikan bagaimana ini pada dasarnya adalah kemas kini dan pernyataan sisipan, yang dapat disimpulkan sebagai 'kemas kini jika penyisipan gagal.'

10. Padamkan

Padam digunakan untuk membuang rekod sepenuhnya - ia boleh merosakkan jika disalahgunakan! Sintaks asasnya sangat mudah digunakan:

DELETE FROM people;

Seperti kebanyakan arahan lain, ini akan dihapuskan semuanya ! Anda perlu menggunakan tempat untuk menghadkannya kepada bilangan baris yang sedikit lebih waras - idealnya:

DELETE FROM people WHERE name = 'Joe';

Sekiranya anda membangunkan sistem, selalunya bijak untuk melaksanakan 'soft delete'. Anda tidak pernah benar-benar menjalankan perintah hapus, sebaliknya anda membuat lajur yang dihapus, dan kemudian periksa lajur yang anda pilih - ia dapat mengelakkan banyak rasa malu sekiranya anda dapat dengan cepat dan mudah mengambil rekod yang sepatutnya dihapus. Namun, ini bukan pengganti sandaran yang betul.

11. Buat Jadual

The buat jadual arahan digunakan untuk membuat jadual. Ini satu lagi yang sangat mudah:

CREATE TABLE people (
name TEXT,
age, INTEGER,
PRIMARY KEY(name)
);

Perhatikan bagaimana nama dan batasan lajur berada di dalam kurungan, dan lajur diberi jenis data yang sesuai. Kunci utama ditentukan, seperti yang diperlukan dalam reka bentuk pangkalan data yang baik.

12. Jadual Perubahan

The ubah jadual arahan digunakan untuk mengubah struktur jadual. Ini sedikit terhad, kerana pangkalan data anda tidak akan membiarkan anda mengubah jadual jika data yang ada akan menyebabkan konflik - misalnya mengubah rentetan menjadi bilangan bulat. Sekiranya berlaku, betulkan data terlebih dahulu, kemudian ubah jadual. Inilah contohnya:

ALTER TABLE people ADD height integer;

Contoh ini menambah lajur yang disebut 'tinggi' jenis integer ke jadual orang. Sebenarnya tidak ada batasan pada apa yang boleh anda ubah.

13. Jadual Turun

Perintah terakhir adalah jatuhkan meja . Anggap ini sebagai penghapusan, tetapi daripada menghapus satu rekod, ia akan menghapus setiap rekod bersama dengan jadual! Inilah cara anda menggunakannya:

DROP TABLE people;

Ini adalah arahan yang cukup drastik, dan tidak ada sebab ia perlu diprogramkan ke dalam sistem anda. Ia hanya boleh dilakukan secara manual dalam kebanyakan kes, dan boleh juga sangat merosakkan.

Itu sahaja untuk hari ini. Saya harap anda belajar beberapa helah berguna! Anda boleh belajar bagaimana membuat laman web , dan kemudian gunakan kemahiran baru anda untuk menjadikannya dinamik - pastikan anda tidak melakukan kesalahan ini atau membiarkannya terdedah kepada suntikan SQL. Sekiranya anda tidak pasti anda perlu mempelajari SQL, adakah anda telah mempertimbangkan penjana laman web statik?

Mengapa tidak meninggalkan komen di bawah dengan petua dan trik SQL kegemaran anda?

Kredit Imej: HYS_NP / Shutterstock

Berkongsi Berkongsi Tweet E-mel Adakah Perlu Ditingkatkan ke Windows 11?

Windows telah direka bentuk semula. Tetapi apakah itu cukup untuk meyakinkan anda untuk beralih dari Windows 10 ke Windows 11?

Baca Seterusnya
Topik-topik yang berkaitan
  • Pengaturcaraan
  • Pengaturcaraan
  • SQL
Mengenai Pengarang Joe Coburn(136 Artikel Diterbitkan)

Joe adalah lulusan Sains Komputer dari University of Lincoln, UK. Dia seorang pembangun perisian profesional, dan ketika dia tidak terbang drone atau menulis muzik, dia sering didapati mengambil gambar atau menghasilkan video.

Lagi Dari Joe Coburn

Langgan buletin kami

Sertailah buletin kami untuk mendapatkan petua, ulasan, ebook percuma, dan tawaran eksklusif!

Klik di sini untuk melanggan