미니옵빠의 code stubs

MySQL 12 - 기타 : Set 명령문 본문

Database/Mysql

MySQL 12 - 기타 : Set 명령문

미니옵빠 2011. 8. 28. 19:49
출처 박재진 님의 블러그 | 안개섬
원문 http://blog.naver.com/yuzuhara/140030113726

SET

 

SET [GLOBAL | SESSION] sql_variabl=expression, [[GLOBAL | SESSION]

sql_variable=expression...]

 

MySQL 서버와 클라이언트에서 사용되는 다양한 옵션을 세팅한다. 다음과 같은 값들을 세팅할 수

있다.

 

CHARACTER SET charcater_set_name | DEFAULT

 

 모든 문자열에 대해 매핑할 문자셋을 지정한다. Source 버전의 MySQL 에 있는 sql/convert.cc

 파일을 수정하여 원하는 문자셋을 추가할 수 있다.

 

PASSWORD = PASSWORD ('some password')

 

 현재 사용자의 비밀번호를 설정한다.

 

PASSWORD FOR user = PASSWORD ('some password')

 

 임의의 사용자의 비밀번호를 설정한다. 다음 두 문장은 같은 의미를 지닌다.

 mysql> SET PASSWORD FOR bob@"%.loc.gov" = PASSWORD("newpass");

 mysql> UPDATE mysql.user SET password=PASSWORD("newpass")

                                         WHERE user='bob' AND host="%.loc.gov";

 

SQL_AUTO_IS_NULL = 0  | 1

 

 1 로 설정하면 WHERE IS NULL 조건으로 SELECT 문을

 실행했을 때 저장된 로우를 추출한다. 기본값은 1 이다.

 

AUTOCOMMIT = 0 | 1

 

 1 로 설정하면 auto commit 모드가 된다. auto commit 모드가 되면 매 SQL 실행시마다 실행 결과

 가 데이터베이스에 반영된다. 트랜잭션 기능을 사용할 때는 0 으로 설정하도록 한다.

 

BIG_TABLES = 0 | 1

 

 예전 명칭은 SQL_BIG_TABLES 이다. 1 로 설정되면 모든 임시 테이블을 디스크가 아니라 메모리

 에 저장된다. 이렇게 하면 속도는 다소 느려지겠지만 테이블이 용량을 초과하여 에러가 발생하는

 경우는 발생하지 않을 것이다. 기본값은 1 이다.

 

SQL_BIG_SELECTS = 0 | 1

 

 0 으로 설정되면 MySQL 은 시간이 오래 걸릴 것 같은 SELECT 문에 대해서는 실행을 중지할 것

 이다. 기본값은 1 이다.

 

SQL_BUFFER_RESULT = 0 | 1

 

 SQL_BUFFER_RESULT 는 SELECT 문에 의해 생성된 결과를 임시 테이블에 저장한다. 이것은

 테이블의 Lock 을 일찍 풀고자 할 때 도움이 되며, 클라이언트로 결과를 전송하는데 시간이

 오래 걸릴 때 도움이 된다.

 

LOW_PRIORITY_UPDATES = 0 | 1

 

 예전 명칭은 SQL_LOW_PRIORTY_UPDATES 이다. 1 로 설정되면 모든 INSERT, UPDATE,

 DELETE 그리고 LOCK TABLE WRITE 는 해당 테이블에 대한 SELECT 문이나

 LOCK TABLE READ 가 끝날 때까지 기다린다.

 

MAX_JOIN_SIZE = value | DEFAULT

 

 예전 명칭은 SQL_MAX_JOIN_SIZE 이다. Join 된 SELECT 문에 대해 value 로 지정한 값까지만

 검색을 한다. 이 값을 설정하면 Join 이 잘못 걸려서 SELECT 문이 너무 오랫동안 실행되는 것을

 방지할 수 있다.

 

 이 값을 설정하면 SQL_BIG_SELECTS 로 설정된 값은 무시된다. 그러나 다시

 SQL_BIG_SELECTS 를 설정하면 다시 MAX_JOIN_SIZE 로 설정된 값이 무시된다.

 

QUERY_CACHE_TYPE = OFF | ON | DEMAND

QUERY_CACHE_TYPE = 0 | 1 | 2

 

 다음과 같이 쿼리에 대한 캐쉬를 설정한다.

 

+-----------------+--------------------------------------------------------------------+

| 옵션                   | 설명                                                                                               |

+-----------------+--------------------------------------------------------------------+

| 0 혹은 OFF          | 쿼리를 캐쉬하지 않는다.

| 1 혹은 ON           | SELECT SQL_NO_CACHE ... 로 실행한 쿼리를 제외한 모든 쿼리의

|                          | 결과를 캐쉬한다.

| 2 혹은 DEMAND   | SELECT SQL_CACHE ... 로 실행한 쿼리만 캐쉬한다.

+-----------------+--------------------------------------------------------------------+

 

SQL_SAFE_UPDATES = 0 | 1

 

1 로 설정하면 UPDATE 나 DELETE 실행시 WHERE 조건에 키나 LIMIT 를 사용하지 않은 문장은

 실행을 중지한다.

 

SQL_SELECT_LIMIT = value | DEFAULT

 

 SELECT 문에 의해 생성되는 최대 로우의 개수를 설정한다.

 

SQL_LOG_OFF = 0 | 1

 

 1 로 설정되면 해당 클라이언트가 슈퍼 유저의 권한을 가지고 있을 때, 해당 클라이언트의 표준

 로그를 남기지 않는다. UPDATE 로그하고는 상관없다.

 

SQL_LOG_UPDATE = 0 | 1

 

 0 으로 설정되면 해당 클라이언트가 슈퍼 유저의 권한을 가지고 있을 때, 해당 클라이언트의

 UPDATE 로그를 남기지 않는다. 표준 로그하고는 상관 없다.

 

SQL_QUOTE_SHOW_CREATE = 0 | 1

 

 1 로 설정하면 SHOW CREATE TABLE 문 실행시 모든 테이블명과 칼럼명을 작은 따움표로

 둘러싼다.

 

TIMESTAMP = timestamp_value | DEFAULT

 

 현재 클라이언트에 대한 시간을 설정한다.

 

LAST_INSERT_ID = #

 

 LAST_INSERT_ID() 함수에 의해 리턴될 값을 설정한다.

 

INSERT_ID = #

 

 다음에 실행될 INSERT 문 등에 의해 저장될 AUTO_INCREMENT 값을 설정한다.