IT 관련/Database

[MySQL] general_ci vs unicode_ci 차이는?

nullzone 2017. 12. 31.
반응형


general_ci vs unicode_ci 차이는?


Collate 이라고 나오는 general_ci, unicode_ci 는 무엇일까?

Collate는 정렬방법 이라고 할 수 있다.

간단한,예제를 실행해보면 알것이다.

예제 스크립에서 특수문자는 한글 자음을 치고 한자 키를 눌러서 입력 가능 하다. 


CREATE TABLE `Study_db`.`utf8_general_ci`(  
  `id` INT NOT NULL AUTO_INCREMENT,
  `test` VARCHAR(10) NOT NULL,
  PRIMARY KEY (`id`)
) CHARSET=utf8 COLLATE=utf8_general_ci;

INSERT INTO utf8_general_ci(test) VALUES('1'),('2'),('@'),('가'),('®'),('ㄲ'),('β'),('㉮'),('α') ,('⒂'),('나'),('a'),('B'),('b'),('A'),('ㅋ'),('ㅏ'),('+'),('*'),('가'),('µ'),('|');
SELECT id, test FROM utf8_general_ci ;
SELECT  test FROM utf8_general_ci ORDER BY test;



CREATE TABLE `Study_db`.`utf8_unicode_ci`(  
  `id` INT NOT NULL AUTO_INCREMENT,
  `test` VARCHAR(10) NOT NULL,
  PRIMARY KEY (`id`)
) CHARSET=utf8 COLLATE=utf8_unicode_ci;

INSERT INTO utf8_unicode_ci(test) VALUES('1'),('2'),('@'),('가'),('®'),('ㄲ'),('β'),('㉮'),('α') ,('⒂'),('나'),('a'),('B'),('b'),('A'),('ㅋ'),('ㅏ'),('+'),('*'),('가'),('µ'),('|');

SELECT id, test FROM utf8_unicode_ci;
SELECT test FROM utf8_unicode_ci ORDER BY test ;

 

general_ci, unicode_ci의 비교를 위해서 아래  Query를 실행해보자.

collate 세팅에 따라서 sorting되는 차이를 볼 수 있다.


SELECT a.t1 as order_no,  a.testA AS general_sort, b.testB AS unicode_sort
FROM
(
SELECT @rownum1 := @rownum1+1 AS t1, test AS testA
  FROM utf8_general_ci, (SELECT @rownum1 := 0) tmp ORDER BY test
) a,
(
SELECT @rownum := @rownum+1 AS t2, test AS  testB
  FROM utf8_unicode_ci, (SELECT @rownum := 0) tmp ORDER BY test
) b
WHERE a.t1 = b.t2;

order_no  general_sort  unicode_sort  
--------  ------------  --------------
       1  *             ⒂           
       2  +             ®            
       3  1             @             
       4  2             *             
       5  @             +             
       6  A             |             
       7  a             1             
       8  B             2             
       9  b             a             
      10  |             A             
      11  ®             B             
      12  α             b             
      13  β             α            
      14  µ             β            
      15  ⒂             µ            
      16  ㄲ             ㉮           
      17  ㅋ             ㄲ           
      18  ㅏ             ㅋ           
      19  ㉮             ㅏ           
      20  가             가           
      21  가             가           
      22  나             나           






반응형

댓글