MySQL 활용 (기타)

(2018-05-13)
1. MySQL 활용 (기초)주석(comment) : #,  --,  /* */ 


2. 사례별 활용

  ㅇ 특정 값이 없으면 INSERT 하고, 있으면 UPDATE 하기
     -  INSERT ~ ON DUPLICATE UPDATE ~

     - 例) INSERT id=t_id,email=t_email ON DUPLICATE UPDATE id=t_id,email=t_email
        . 특정 t_id가 없으면, t_id 및 t_email을 함께 INSERT 하고, 
        . 특정 t_id가 있으면, t_email로 UPDATE 함

  ㅇ 중복값 찾기
     - SELECT t1, count(*) as num FROM test GROUP BY t1 HAVING num>1;

  ㅇ 비어있는 id 찾기
     - SELECT a.id + 1 as available FROM tblname a LEFT JOIN tblname b ON b.id = (a.id + 1)
              WHERE b.id IS NULL ORDER BY a.id LIMIT 0,1

  ㅇ 조건_1에 맞게 select한 후, 조건_2에 맞게 update 하기
     - UPDATE tbl1 a LEFT JOIN (SELECT col1,col2 FROM tbl2 WHERE 조건_!) b
              ON a.col1=b.col2 SET 대입절 WHERE 조건_2 

  ㅇ SELECT 결과 집합의 행 번호 매기기  : @rownum (세션 변수 활용)
     - SET @rownum:=0; SELECT (@rownum:=@rownum+1) AS num, ... FROM 테이블명 ... ;
     - SELECT (@row_number:=@row_number + 1) AS num, ... 
                        FROM (SELECT @row_number:=0) AS t, 테이블명 ...

  ㅇ 테이블 복사 (구조 및 데이터 모두)
     - CREATE TABLE new_table LIKE old_table;
     - INSERT INTO new_table SELECT * FROM old_table;

  ㅇ NULL 비교 조건
     - column IS NULL 또는 column IS NOT NULL 로써 가능
     - column = NULL 은 비교를 위한 올바른 문법이 아니고, 단지 대입문
3. MySQL에서, 트리 구조 구현

  ㅇ 조건
     - (자기자신 ID : id, 부모 ID : pid, 루트 ID : 0)

  ㅇ 특정 노드로부터 모든 부모 노드 찾기
     - SELECT문에 의한 방법
        . SELECT @r AS _id, (SELECT @r:=pid FROM temp_table WHERE id=_id LIMIT 1) AS _pid
          FROM (SELECT @r:=특정노드ID) vars, (SELECT * FROM temp_table) h 
          WHERE @r > 0

  ㅇ 직계 자식 노드 수
     - SELECT a.id, a.title, COUNT(b.id) as childCount FROM treetbl a LEFT OUTER JOIN
         treetbl b ON a.id=b.parent GROUP BY a.id


4. MySQL Fulltext 검색색인 걸기
     - CREATE FULLTEXT INDEX idx_name ON tblname (colname);
     - ALTER TABLE tblname ADD FULLTEXT(col1, col2);

  ㅇ 색인 재구성
     - REPAIR TABLE tblname QUICK;


[MySQL] 1. MySQL 2. MySQL 서버 3. 저장 프로그램 4. 문자 세트 5. MySQL 백업 6. MySQL 계정 7. MySQL 활용 (기타) 8. MySQL 함수

 
        최근수정     요약목록(시험중)     참고문헌