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

Cara Memeriksa Apakah Tabel Sudah Ada Sebelum Membuatnya di MySQL

Di MySQL, Anda dapat menggunakan IF NOT EXISTS klausa dari CREATE TABLE pernyataan untuk memeriksa apakah tabel dengan nama yang sama sudah ada di database atau belum.

Jika tabel tidak ada, itu akan dibuat. Jika sudah ada, tidak akan dibuat.

Contoh

Ini berjalan seperti ini:

CREATE TABLE IF NOT EXISTS t1 (
  c1 INT,
  c2 VARCHAR(10)
);

Dimana t1 adalah nama tabel, dan semua yang berada di antara tanda kurung adalah definisi tabel (yaitu kolom, dll).

Dalam hal ini, tabel hanya akan dibuat jika belum ada yang bernama t1 .

Periksa bahwa Tabel Sekarang Sudah Ada

Kita dapat menggunakan sys.table_exists() prosedur untuk memeriksa apakah tabel sekarang ada:

CALL sys.table_exists('test', 't1', @table_type); 
SELECT @table_type;

Hasil:

+-------------+
| @table_type |
+-------------+
| BASE TABLE  |
+-------------+

Di sini, test adalah nama database, dan t1 adalah nama tabel yang saya periksa keberadaannya.

Dalam hal ini, hasilnya adalah BASE TABLE yang berarti tabel tersebut memang ada.

Ini hanyalah salah satu dari banyak cara untuk memeriksa apakah tabel ada di MySQL.

Coba Buat Tabel Lagi

Sekarang jika kita mencoba membuat tabel itu lagi:

CREATE TABLE IF NOT EXISTS t1 (
  c1 INT,
  c2 VARCHAR(10)
);

Kami tidak mendapatkan kesalahan:

Query OK, 0 rows affected, 1 warning (0.00 sec)

Tapi kami mendapat peringatan.

Jadi mari kita periksa peringatannya:

SHOW WARNINGS;

Hasil:

+-------+------+---------------------------+
| Level | Code | Message                   |
+-------+------+---------------------------+
| Note  | 1050 | Table 't1' already exists |
+-------+------+---------------------------+

Seperti yang diharapkan, ini memberi tahu kita bahwa tabel sudah ada.

Tanpa IF NOT EXISTS Klausa

Inilah yang terjadi jika kita tidak menggunakan IF NOT EXISTS klausa ketika mencoba membuat tabel yang sudah ada:

CREATE TABLE t1 (
  c1 INT,
  c2 VARCHAR(10)
);

Kali ini kami mendapatkan kesalahan:

ERROR 1050 (42S01): Table 't1' already exists

Penting untuk diperhatikan bahwa IF NOT EXISTS klausa tidak memeriksa struktur/definisi tabel. Ini hanya memeriksa bahwa tidak ada tabel yang ada dengan nama yang sama yang kami coba berikan ke tabel yang kami buat.

Dengan kata lain, hanya karena tabel dengan nama tersebut sudah ada, bukan berarti tabel tersebut memiliki definisi yang benar.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PHP:beberapa kueri SQL dalam satu pernyataan mysql_query

  2. Apa perbedaan antara rangkaian karakter utf8mb4 dan utf8 di MySQL?

  3. Bagaimana menghubungkan ke database MySQL

  4. Perbedaan MySQL JOIN vs LEFT JOIN

  5. MySQL JATUHKAN KENDALA UNIK