SQL


1. [Mandatori] Jangan gunakan count(nama lajur) atau count(constant) dan bukannya count(*) ialah sintaks standard untuk mengira baris yang ditakrifkan oleh SQL 92. Ia tiada kaitan dengan pangkalan data dan tiada kaitan dengan NULL dan bukan NULL adalah tidak relevan.

Penjelasan: count(*) akan mengira baris dengan nilai NULL, manakala count(nama lajur) tidak akan mengira baris dengan nilai NULL dalam lajur ini.


2. Kiraan [Wajib](kol berbeza) Kira bilangan nombor berbeza dalam lajur kecuali NULL. Ambil perhatian bahawa count(distinct

col 1, col 2 ) akan mengembalikan 0 jika salah satu lajur semuanya NULL , walaupun lajur yang lain mempunyai nilai yang berbeza.


3. [Wajib] Apabila nilai lajur tertentu semuanya NULL, hasil pengembalian kiraan(kol) ialah 0, tetapi hasil pulangan jumlah(kol) ialah

NULL, jadi gunakan sum() Sentiasa beri perhatian kepada isu NPE.

Contoh positif: Anda boleh menggunakan kaedah berikut untuk mengelakkan masalah NPE jumlah: PILIH IF(ISNULL(SUM(g)) ,0, SUM(g))DARI jadual;


4 . [Mandatori] Gunakan ISNULL() untuk menentukan sama ada ia adalah nilai NULL. Nota: Perbandingan langsung NULL dengan sebarang nilai ialah NULL.

Penjelasan:

1) NULL<>Hasil pulangan NULL ialah NULL, bukan palsu.

2) Hasil pulangan NULL=NULL ialah NULL, tidak benar.

3) Hasil pulangan NULL<>1 ialah NULL, tidak benar.

5. [Mandatori] Semasa menulis logik pertanyaan paging dalam kod, jika kiraan ialah 0, ia harus dikembalikan terus untuk mengelakkan daripada melaksanakan pernyataan paging berikutnya.


6 [Mandatori] Kunci asing dan lata tidak dibenarkan Semua konsep kunci asing mesti diselesaikan di lapisan aplikasi.

Penjelasan: (Penjelasan konsep) student_id dalam jadual pelajar ialah kunci utama, kemudian student_id dalam jadual gred ialah kunci asing. Jika anda mengemas kini student_id dalam jadual pelajar dan mencetuskan kemas kini student_id dalam jadual gred pada masa yang sama, ia adalah kemas kini berlata. Kekunci asing dan kemas kini lata sesuai untuk konkurensi rendah pada satu mesin dan tidak sesuai untuk kluster teragih dan berkonkurensi tinggi menyekat dengan kuat dan mempunyai risiko ribut kemas kini pangkalan data mempengaruhi kelajuan pemasukan pangkalan data;

7 [Mandatori] Penggunaan prosedur tersimpan adalah dilarang.


8 [Mandatori] Apabila menyemak data, memadam atau mengubah suai rekod, anda mesti memilih terlebih dahulu untuk mengelakkan pemadaman tidak sengaja, dan hanya selepas pengesahan anda boleh melaksanakan kenyataan kemas kini.


9. [Cadangan] Elakkan operasi jika ia tidak dapat dielakkan, anda perlu menilai dengan teliti bilangan elemen koleksi di belakang dan mengawalnya dalam masa 1000.


10. [Rujukan] Jika terdapat keperluan untuk globalisasi, semua penyimpanan dan perwakilan aksara dikodkan dalam utf -8, maka kaedah pengiraan aksara

Nota:

Arahan:

PILIH PANJANG" ("Easy Work" ; Pulangannya ialah 12

PILIH KARAKTER _ PANJANG("Kerja Mudah"); pengekodan.


11 [Rujukan] TRUNCATE TABLE lebih pantas daripada DELETE dan menggunakan kurang sistem dan sumber log transaksi Walau bagaimanapun, TRUNCATE

tidak mempunyai urus niaga dan tidak mencetuskan pencetus, yang boleh menyebabkan kemalangan, jadi ia tidak digalakkan. digunakan dalam kod pembangunan ini.

Nota:

TRUNCATE TABLE fungsinya adalah sama seperti pernyataan DELETE tanpa klausa WHERE.