제약사항 DEFAULT 속성은 컬럼에 입력되는 데이터의 값이 없을 경우 기본적으로 입력 되는 초기값을 의미합니다. 특정한 컬럼에 데이터를 지정하지 않을 때 NULL로 설정되지 않고 지정한 초기값으로 설정됩니다.

09.2.1 쿼리 실습

테이블에서 City 속성은 기본값이 ‘Seoul’로 되어 있습니다. 만일 City 컬럼의 값이 없는 경우는 기본값 ‘Seoul’을 입력하라는 의미입니다.

| 예제 쿼리 |

CREATE TABLE members (
    Id int NOT NULL,
    LastName varchar(255) NOT NULL,
    FirstName varchar(255),
    City varchar(255) DEFAULT 'Seoul'
);

기본값 속성은 다음과 같이 함수를 이용하여 설정할 수도 있습니다.

| 예제 쿼리 |

CREATE TABLE Orders (
    Id int NOT NULL,
    OrderNumber int NOT NULL,
    RegOrder date DEFAULT GETDATE()
);

ALTER TABLE 명령을 통하여 기본값을 추가로 설정을 변경할 수 있습니다.

| 예제 쿼리 |

ALTER TABLE members ALTER City SET DEFAULT 'Seoul'; 

기본값을 삭제할 수도 있습니다.

| 예제 쿼리 |

ALTER TABLE members ALTER City DROP DEFAULT; 

09.2.2 PHP 실습

PHP 코드를 통하여 컬럼의 기본값 속성을 정의하는 실습입니다. 관련 메서드를 생성하 여 소스에 적용합니다.

| PHP 예제 | mysql.class.php 파일에 메서드 예제를 추가합니다.

public function constraintDEFAULT($tbname, $field, $default)
{
            if ($tbname){
                if($default){
                    $queryString = "ALTER TABLE $tbname ALTER $field SET DEFAULT '$default'"; 
                } else {
                    $queryString = "ALTER TABLE $tbname ALTER $field DROP DEFAULT";
                }

                // 쿼리를 전송합니다.
                if (mysqli_query($this->dbcon, $queryString)=== TRUE){
                    $this->msgEcho("쿼리성공] ".$queryString);
                    $this->msgEcho(" 기본값 설정!");

                    // 객체 반환, 매서드체인
                    return $this; 

                } else {
                    $this->msgEcho("Error] ".$queryString);
                }
                
            
            } else {
               $this->msgEcho("Error] 테이블 이름이 없습니다."); 
            }

}

예제 파일 | attri-01.php

<?php
 
	include "dbinfo.php";
	include "mysql.class.php";
 
	// ++ Mysqli DB 연결.
	$db = new JinyMysql();
 
	$tbname = "members";
	$field = "City";
	$default = "Seoul";
    
	// 속성 기본값을 설정합니다.
	$db->constraintDEFAULT($tbname, $field, $default);
 
?>
  

화면 출력

mysql connected!
쿼리성공] ALTER TABLE members ALTER City SET DEFAULT 'Seoul'
기본값 설정!