Saya telah bekerja dengan T-SQL di MS SQL untuk beberapa waktu sekarang dan entah bagaimana setiap kali saya harus memasukkan data ke dalam tabel, saya cenderung menggunakan sintaks:
INSERT INTO myTable <something here>
Saya mengerti bahwa kata kunci INTO
adalah opsional di sini dan saya tidak harus menggunakannya tetapi entah bagaimana kata kunci itu menjadi kebiasaan dalam kasus saya.
Pertanyaanku adalah:
- Apakah ada implikasi penggunaan
INSERT
sintaks versusINSERT INTO
? - Mana yang sepenuhnya memenuhi standar?
- Apakah keduanya valid dalam implementasi standar SQL lainnya?
sql
sql-server
tsql
kristof
sumber
sumber
Mereka adalah hal yang sama,
INTO
sepenuhnya opsional dalam T-SQL (dialek SQL lain mungkin berbeda).Bertentangan dengan jawaban lain, saya pikir itu merusak keterbacaan untuk digunakan
INTO
.Menurut saya ini adalah hal yang konseptual: Dalam persepsi saya, saya tidak memasukkan baris ke dalam tabel bernama "Pelanggan", tetapi saya memasukkan Pelanggan . (Ini terkait dengan fakta yang saya gunakan untuk memberi nama tabel saya dalam bentuk tunggal, bukan jamak).
Jika Anda mengikuti konsep pertama,
INSERT INTO Customer
kemungkinan besar akan "terasa tepat" untuk Anda.Jika Anda mengikuti konsep kedua, kemungkinan besar itu
INSERT Customer
untuk Anda.sumber
Ini mungkin opsional di mySQL, tetapi wajib di beberapa DBMS lain, misalnya Oracle. Jadi SQL akan lebih berpotensi portabel dengan kata kunci INTO, untuk apa nilainya.
sumber
Satu pelajaran yang saya dapat dari masalah ini adalah Anda harus selalu konsisten! Jika Anda menggunakan INSERT INTO, jangan gunakan INSERT juga. Jika Anda tidak melakukannya, beberapa programmer mungkin akan menanyakan pertanyaan yang sama lagi.
Berikut adalah contoh kasus lain yang terkait: Saya memiliki kesempatan untuk memperbarui prosedur tersimpan yang sangat lama di MS SQL 2005. Masalahnya adalah terlalu banyak data yang dimasukkan ke tabel hasil. Saya harus mencari tahu dari mana data itu berasal. Saya mencoba mencari tahu di mana catatan baru ditambahkan. Di bagian awal SP, saya melihat beberapa INSERT INTO. Kemudian saya mencoba mencari "INSERT INTO" dan mengupdatenya, tetapi saya melewatkan satu tempat di mana hanya "INSERT" yang digunakan. Yang itu sebenarnya menyisipkan 4k + baris data kosong di beberapa kolom! Tentu saja, saya hanya perlu mencari INSERT. Namun, itu terjadi pada saya. Saya menyalahkan programmer IDIOT sebelumnya :) :)
sumber
Di SQL Server 2005, Anda dapat memiliki sesuatu di antara INSERT dan INTO seperti ini:
Meskipun bekerja tanpa INTO, saya lebih suka menggunakan INTO agar mudah dibaca.
sumber
Keduanya melakukan hal yang sama. INTO bersifat opsional (dalam T-SQL SQL Server) tetapi membantu keterbacaan.
sumber
Saya lebih suka menggunakannya. Ia memelihara sama merasakan sintaks deliniasi dan mudah dibaca sebagai bagian lain dari bahasa SQL, seperti
group BY
,order BY
.sumber
Saya mulai menggunakan SQL di ORACLE, jadi ketika saya melihat kode tanpa INTO, kode itu terlihat 'rusak' dan membingungkan.
Ya, itu hanya pendapat saya, dan saya tidak mengatakan Anda harus selalu menggunakan INTO. Tetapi jika Anda tidak melakukannya, Anda harus menyadari bahwa banyak orang lain mungkin akan memikirkan hal yang sama, terutama jika mereka belum mulai membuat skrip dengan implementasi yang lebih baru.
Dengan SQL saya pikir itu juga sangat penting untuk menyadari bahwa Anda MENAMBAHKAN BARIS ke TABEL, dan tidak bekerja dengan objek. Saya pikir tidak akan membantu bagi pengembang baru untuk menganggap baris / entri tabel SQL sebagai objek. Sekali lagi, hanya pendapat saya.
sumber
Jika tersedia gunakan fungsi standar. Bukan berarti Anda membutuhkan portabilitas untuk database khusus Anda, tetapi kemungkinan besar Anda membutuhkan portabilitas untuk pengetahuan SQL Anda. Contoh T-SQL yang tidak menyenangkan adalah penggunaan isnull, gunakan coalesce!
sumber