음머어's 까망별

블로그 이미지
무지 인간의 첫 걸음..
by 까망별 음머어
  • 279,264Total hit
  • 150Today hit
  • 60Yesterday hit

'대소문자 구별'에 해당되는 글 1건

  1. 2008.10.27
    [MySQL] Identifier 대소문자 구별

MySQL은 Identifier의 대소문자 구별을 할까?
(Identifier는 Database명, Table명, Column 명 등을 말한다.)

-> 할 때도 있고, 안 할 때도 있다.

'이게 뭔말이야?' 라고 한다면,

MySQL이 설치되어 있는
OS가 대소문자 구분을 한다면, MySQL도 Identifier의 대소문자 구분을 할 것이고,
OS가 구분을 하지 않는다면, MySQL도 구분을 하지 않는다는 이야기이다.


아직도 이해가 가지 않는다면...

자.....일반적으로 ,
Database는 1개의 디렉토리와 매칭되고,
Table은 1개 또는 다수의 파일과 매칭된다.

즉, 우리가 어떤 값을 얻고자 할 때,
어떤 데이터베이스의 어떤 테이블의 값을 선택한다는 이야기는,
어떤 디렉토리의 어떤 파일을 열어서 검색한다는 이야기이다.


다시 말해서, OS를 이용하여 찾아가는 방식 그대로
MySQL에서 적용가능하다는 이야기....

예를 들자면, MS 의 윈도우 운영체제에서는 대소문자를 구분하지 않는다.
***<< MS  윈도우 >>*************************************************************
SELECT * FROM EMP; /* 대문자를 사용하는 경우 */
SELECT * FROM emp; /* 소문자를 사용하는 경우 */
*********************************************************************************
는 동일한 결과를 출력하며, 에러가 발생하지 않는다.

그러나, Linux 운영체제에서는 대소문자를 구분하므로,
***<< MS  윈도우 >>*************************************************************
SELECT * FROM EMP; /* 대문자를 사용하는 경우 */
SELECT * FROM emp; /* 소문자를 사용하는 경우 */
*********************************************************************************
둘 중의 하나는 틀린 SQL문장이 되게 된다.

이제 감이 좀 오시는지..?

그럼 이제 조금만 더 알아보자...
*********************************************************************************
show variables like 'lower_case_table_names';
*********************************************************************************
라고 입력하면,


*********************************************************************************
Variable_name               Value
--------------------------------------
lower_case_table_names  1                       -- Windows

*******************************************************

Variable_name               Value
--------------------------------------
lower_case_table_names  0                       -- Linux
*********************************************************************************
라는 결과가 보일 것이다.

이 변수의 의미는 다음과 같다.
-------------------------------------------------------------------------------------
0 : case sensitive    -> Unix, Linux
1 : case insensitive -> Windows (실제 저장시 모두 lowercase로 저장)
2 : case insensitive -> Mac OS X (실제로 sensitive 하게 저장되지만, insensitive 한 접근이 가능)
-------------------------------------------------------------------------------------

뭐.... 이런 변수가 있지만,
OS에 맞춰서 사용하는 것이 대세니깐.......

알아서들 사용하시기를... ^^;;




저작자 표시 비영리
신고
TRACKBACK 0 AND COMMENT 0

ARTICLE CATEGORY

모든 이야기 (77)
독백 (22)
MySQL (25)
Oracle (7)
영화 (6)
Linux (3)
DW(Data Warehouse) (0)
(7)
음악 (1)
Python (3)
Postgresql (2)

ARCHIVE