Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

MySQL에서 데이터베이스와 테이블을 '존재하지 않을 때만' 한 번 생성하는 방법 (PHP 연동 포함)

PHP와 MySQL로 개발할 때 스크립트가 실행될 때마다 데이터베이스나 테이블이 중복 생성되어 'already exists' 오류가 발생하는 경우가 있습니다. 이럴 때는 SQL의 IF NOT EXISTS 옵션을 사용하면 대상이 이미 존재하지 않을 때만 생성되도록 처리할 수 있어 안전합니다.

1. 데이터베이스를 한 번만 생성하기

데이터베이스가 존재하지 않는 경우에만 생성하려면 아래 문법을 사용합니다.

CREATE DATABASE IF NOT EXISTS yourDatabaseName;

2. 테이블을 한 번만 생성하기

테이블 역시 같은 방식으로, 이미 존재하지 않을 때만 생성됩니다.

CREATE TABLE IF NOT EXISTS yourTableName
(
    yourColumnName yourDatatype,
    .
    .
    N
);

3. 실제 실행 예제

먼저 login이라는 이름의 데이터베이스를 생성해 보겠습니다.

mysql> CREATE DATABASE IF NOT EXISTS login;
Query OK, 1 row affected (0.23 sec)

위 쿼리는 데이터베이스가 성공적으로 생성되었음을 의미합니다. 만약 login 데이터베이스가 이미 존재한다면 오류 없이 그대로 통과됩니다.

다음은 테이블을 생성하는 쿼리입니다.

mysql> CREATE TABLE IF NOT EXISTS DemoTable
(
    Id int
);
Query OK, 0 rows affected (0.56 sec)

위 결과 역시 테이블이 정상적으로 생성되었음을 보여줍니다. 테이블이 이미 있다면 아무 작업도 수행하지 않고 넘어갑니다.

4. PHP에서 연결하여 실행하기

PHP 스크립트에서 위 로직을 적용하려면 먼저 MySQL 서버에 접속한 뒤 쿼리를 실행하면 됩니다. mysqli 확장을 사용한 예시는 다음과 같습니다.

<?php
$conn = new mysqli("localhost", "yourUsername", "yourPassword");

if ($conn->connect_error) {
    die("연결 실패: " . $conn->connect_error);
}

// 데이터베이스가 없을 때만 생성
$conn->query("CREATE DATABASE IF NOT EXISTS login");

// 생성한 데이터베이스 선택
$conn->select_db("login");

// 테이블이 없을 때만 생성
$conn->query("CREATE TABLE IF NOT EXISTS DemoTable (
    Id INT
)");

$conn->close();
?>

이처럼 IF NOT EXISTS를 활용하면 스크립트를 여러 번 실행해도 중복 생성 오류 없이 데이터베이스와 테이블을 안전하게 초기화할 수 있습니다.