Saya ingin menulis perintah SQL tunggal untuk menjatuhkan beberapa kolom dari satu tabel dalam satu ALTER TABLE
pernyataan.
Dari dokumentasi ALTER TABLE MSDN ...
DROP { [CONSTRAINT] constraint_name | COLUMN column_name }
Menentukan bahwa constraint_name atau column_name dihapus dari tabel. DROP COLUMN tidak diperbolehkan jika tingkat kompatibilitas 65 atau lebih awal. Beberapa kolom dan batasan dapat didaftar.
Dikatakan bahwa mutliple kolom dapat dicantumkan dalam pernyataan tetapi sintaksisnya tidak menunjukkan koma opsional atau apa pun yang bahkan akan mengisyaratkan sintaks.
Bagaimana saya harus menulis SQL untuk menjatuhkan beberapa kolom dalam satu pernyataan (jika mungkin)?
sumber
Meringkas
Oracle :
MS SQL Server :
MySQL :
PostgreSQL
Waspadalah
DROP COLUMN
tidak secara fisik menghapus data untuk beberapa DBMS. Misalnya untuk MS SQL. Untuk jenis panjang tetap ( int , numerik , float , datetime , uniqueidentifier dll) ruang dikonsumsi bahkan untuk catatan yang ditambahkan setelah kolom dijatuhkan. Untuk menghilangkan ruang yang terbuang lakukanALTER TABLE ... REBUILD
.sumber
COLUMN
kata kunci seperti di MySql.Ketahuilah bahwa DROP COLUMN tidak menghapus data secara fisik, dan untuk tipe panjang tetap (int, numerik, float, datetime, uniqueidentifier, dll.) Ruang tersebut dikonsumsi bahkan untuk catatan yang ditambahkan setelah kolom dijatuhkan. Untuk menghilangkan ruang yang terbuang lakukan
ALTER TABLE ... REBUILD
.sumber
ALTER INDEX PK_IndexName ON TableName REBUILD
dan itu akan merebut kembali ruang. Ini agak dijelaskan di sini: msdn.microsoft.com/en-us/library/ms189858.aspx di bawah bagian "Membangun Kembali Indeks".Ini mungkin terlambat, tetapi membagikannya untuk pengguna baru yang mengunjungi pertanyaan ini. Untuk menjatuhkan beberapa kolom, sintaks sebenarnya adalah
Jadi untuk setiap kolom Anda perlu menentukan "drop kolom" di Mysql 5.0.45.
sumber
Sintaks seperti yang ditentukan oleh Microsoft untuk menjatuhkan bagian kolom dari pernyataan ALTER adalah ini
Perhatikan bahwa [, ... n] muncul setelah nama kolom dan di akhir seluruh klausa drop. Ini artinya ada dua cara untuk menghapus banyak kolom. Anda dapat melakukan ini:
atau ini
Sintaks kedua ini berguna jika Anda ingin menggabungkan setetes kolom dengan menjatuhkan batasan:
Saat menjatuhkan kolom, SQL Sever tidak mendapatkan kembali ruang yang diambil oleh kolom yang dijatuhkan. Untuk tipe data yang disimpan inline di baris (int misalnya) itu bahkan dapat mengambil ruang pada baris baru yang ditambahkan setelah pernyataan alter. Untuk menyiasati ini, Anda perlu membuat indeks berkerumun di atas meja atau membangun kembali indeks berkerumun jika sudah memilikinya. Membangun kembali indeks dapat dilakukan dengan perintah REBUILD setelah memodifikasi tabel. Tapi berhati-hatilah, ini bisa lambat di meja yang sangat besar. Sebagai contoh:
sumber
Untuk MySQL (ver 5.6), Anda tidak dapat melakukan beberapa drop kolom dengan satu
drop
pernyataan tunggal tetapi lebih dari satudrop
pernyataan:BTW,
drop <col_name>
singkatan untukdrop column <col_name>
seperti yang Anda lihat daridrop c3
atas.sumber
Jika itu hanya satu kolom untuk menghapus sintaks di bawah ini berfungsi
ALTER TABLE tablename DROP COLUMN column1;
Untuk menghapus beberapa kolom, menggunakan
DROP COLUMN
tidak berfungsi, sintaks di bawah ini berfungsiALTER TABLE tablename DROP (column1, column2, column3......);
sumber
sumber
Umum:
Misalnya:
sumber
kueri ini akan mengubah beberapa kolom mengujinya.
sumber
untuk MySQL DB.
Atau Anda dapat menambahkan beberapa kolom sambil mengubah di baris yang sama:
sumber