Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Ubah tabel jika ada atau buat jika tidak ada

MySQL INFORMATION_SCHEMA database untuk menyelamatkan:

-- First check if the table exists
IF EXISTS(SELECT table_name 
            FROM INFORMATION_SCHEMA.TABLES
           WHERE table_schema = 'db_name'
             AND table_name LIKE 'wild')

-- If exists, retreive columns information from that table
THEN
   SELECT COLUMN_NAME, DATA_TYPE, IS_NULLABLE, COLUMN_DEFAULT
     FROM INFORMATION_SCHEMA.COLUMNS
    WHERE table_name = 'tbl_name'
      AND table_schema = 'db_name';

   -- do some action, i.e. ALTER TABLE if some columns are missing 
   ALTER TABLE ...

-- Table does not exist, create a new table
ELSE
   CREATE TABLE ....

END IF;

Informasi lebih lanjut:

PERBARUI:

Pilihan lain, mungkin lebih mudah, adalah membuang tabel yang ada dan membuatnya kembali dengan skema baru. Untuk melakukan ini, Anda perlu:

  1. Buat tabel sementara, salinan persis dari tabel yang ada
  2. Isi tabel sementara dengan data dari tabel lama
  3. Jatuhkan meja lama
  4. Buat tabel baru dengan skema baru
  5. Isi tabel baru dengan informasi dari tabel sementara
  6. Lepaskan tabel sementara.

Jadi, dalam kode SQL:

CREATE TABLE old_table_copy LIKE old_table;

INSERT INTO old_table_copy
SELECT * FROM old_table;

DROP TABLE old_table;

CREATE TABLE new_table (...new values...);

INSERT INTO new_table ([... column names from old table ...])
SELECT [...column names from old table ...] 
FROM old_table_copy;

DROP TABLE old_table_copy;

Sebenarnya langkah terakhir, "Jatuhkan tabel sementara.", Anda bisa melewatkannya sebentar. Untuk jaga-jaga, Anda ingin memiliki semacam cadangan dari tabel lama, "berjaga-jaga".

Informasi lebih lanjut:



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Stempel waktu tanpa perubahan pada pembaruan

  2. Bagaimana cara mengoptimalkan kueri jika tabel berisi 10.000 entri menggunakan MySQL?

  3. Masukkan konten file ke kolom tabel MySQL

  4. Tabel data agregat

  5. Siapkan MySQL 8 dari Binary Tarball