Home Mysql 기본 함수
Post
Cancel

Mysql 기본 함수

COOKBOOK

책 내용중 몰랐던 부분만 따로 정리


1장: 레코드 검색

테이블에서 n개의 무작위 레코드 반환하기

1
2
3
4
SELECT ENAME, JOB
FROM EMP
ORDER BY RAND()
LIMIT 5;

null을 실젯값으로 변환하기

1
2
SELECT COALESCE(COMM, 0)
FROM EMP;

패턴 검색하기

이름에 I가 있거나 끝에 ER로 끝나는 이름만 반환

1
2
3
4
SELECT ENUM, JOB
FROM EMP
WHERE ENAME LIKE '%i%'
   OR JOB LIKE '%ER';

2장: 쿼리 결과 정렬

지정한 순서대로 쿼리 결과 반환하기

ORDER BY [숫자] : 숫자는 컬럼순서 번호를 뜻하고 그 컬럼으로 정렬을 한다.

1
2
3
SELECT *
FROM EMP
ORDER BY 3;

다중 필드로 정렬하기

ORDER BY 특징

  • 우선순위는 왼쪽에서 오른쪽이다.
  • GROUP BY, DISTNCT 를 사용할 때는 SELECT 목록에 없는 열 기준으로 정렬이 불가능하다.
1
2
3
SELECT *
FROM EMP
ORDER BY DEPTNO, SAL;

정렬할 때 NULL 처리하기

1
2
3
4
SELECT TITLE, GENRE, STAR
FROM (SELECT TITLE, GENRE, STAR, IF(STAR IS NULL, 0, 1) AS IS_NULL
      FROM VIDEOTBL) X
ORDER BY IS_NULL DESC;

행 집합을 다른 행 위에 추가하기 (UNION ALL)

1
2
3
4
5
6
7
SELECT DEPTNO, DEPTNAME
FROM EMP
UNION ALL
SELECT '---------', NULL
UNION ALL
SELECT DEPTNO, DNAME
FROM DEPT;

3장: 다중 테이블 작업


4장: 삽입, 갱신, 삭제

중복 레코드 삭제하기

TEST라는 테이블에 VALUE가 겹칠경우 하나 빼고 모두 삭제

1
2
3
DELETE
FROM TEST
WHERE ID NOT IN (SELECT MIN(ID) FROM (SELECT ID, VALUE FROM TEST) AS T GROUP BY VALUE);

5장: 메타 데이터 쿼리

스키마의 테이블 목록 보기

1
2
3
SELECT TABLE_NAME
FROM information_schema.TABLES
WHERE TABLE_SCHEMA = 'SMEAGOL';

테이블의 열 나열하기

1
2
3
4
SELECT COLUMN_NAME, DATA_TYPE, ORDINAL_POSITION
FROM information_schema.COLUMNS
WHERE TABLE_SCHEMA = 'MYDB'
  AND TABLE_NAME = 'EMP';

테이블의 제약조건 나열하기

테이블에 어떤 제약조건이 있는지 확인할 수 있다.

1
2
3
4
5
6
7
8
SELECT *
FROM information_schema.TABLE_CONSTRAINTS A,
     information_schema.KEY_COLUMN_USAGE B
WHERE A.TABLE_NAME = 'EMP'
  AND A.TABLE_SCHEMA = 'MYDB'
  AND A.TABLE_SCHEMA = B.TABLE_SCHEMA
  AND A.TABLE_NAME = B.TABLE_NAME
  AND A.CONSTRAINT_NAME = B.COLUMN_NAME;

6장: 문자열 작업

문자열에 따옴표 포함하기

따옴표를 표현할려면 ‘‘라고 작성하면 된다.

  • 기본적으로 ‘‘(공백)을 입력하면 null로 처리하는 ORACLE과 달리 MySQL은 null은 null대로, ‘‘(공백)은 공백대로 따로 처리한다.
1
SELECT 'APPLES CORE', 'APPLE''S CORE', CASE WHEN '' IS NULL THEN 0 ELSE 1 END;

문자열에서 특정 문자의 발생 횟수 계산하기

1
SELECT (LENGTH('A,B,C') - LENGTH(REPLACE('A,B,C', ',', ''))) / LENGTH(',') AS CNT;

문자열에서 원하지 않는 문자 제거하기

1
2
SELECT last_name, REPLACE(last_name, 'A', '')
FROM employees;

테이블 행으로 구분된 목록 만들기

1
2
3
SELECT department_id, GROUP_CONCAT(last_name ORDER BY department_id SEPARATOR ',')
FROM employees
GROUP BY department_id;

구분된 데이터를 다중값 IN 목록으로 변환하기

1

###

This post is licensed under CC BY 4.0 by the author.