본문 바로가기

Data/MariaDB

DB] DML 2 - SELECT

DML (Data Manipulation Language) 데이터 조작어

: 데이터베이스의 테이블에 들어있는 데이터를 삽입 / 수정 / 삭제 / 조회 하는 명령어

 

INSERT : 데이터 삽입

UPDATE : 데이터 수정

DELETE : 데이터 삭제

UPSERT : INSERT or UPDATE

SELECT : 데이터 조회

 

SELECT 

: 데이터 조회

1. 특정 컬럼 조회

기본적인 조회 쿼리문. 나중에 조건들을 추가하여 조회할 수 있다.

SELECT * FROM [테이블 명];  -- 특정 테이블의 모든 컬럼을 조회한다.

 

1) 산술표현, 별칭(ALIAS)

  • salary * 12 또는 salary / 10000 등과 같이 산술표현 가능
  • 복잡한 컬럼명의 경우 별칭을 줄 수 있다.  [복잡한 컬럼명] AS [별칭]

 

2) 문자열 합치기 (CONCAT)

  • CONCAT(합칠, 컬럼, 문자열, 콤마로, 구분)

select emp_no,family_name, first_name fromemployees;     합치지 않고 조회
concat으로 family_name과 first_name을 합쳐서 조회

 

 

2. 특정 조건으로 데이터 조회 (WHERE)

WHERE 절을 통해 조건을 명시해준다.

1) AND 조건

and 조건을 사용하면 범위가 좁아진다.

2) OR 조건

or 조건을 사용하면 범위가 넓어진다.

3) BETWEEN AND

and 조건과 같이 100만원 이상 300만원 이하 를 between and 로 표현할 수 있다.

 

 

3. 중복 제거 (DISTINCT) 

: 해당 컬럼에 어떤 종류들이 있는지 확인하고 싶을 경우 사용

쿼리문 실행 화면

 

 

4. IN 

: OR를 내포하고 있다.

: 쿼리가 간결해지고, 속도면에서 우월하다.

 

 

5. IS NULL / IS NOT NULL

말그대로 컬럼의 값이 NULL 인 경우, NULL이 아닌 경우를 나타낸다.

 

 

6. LIKE

  • 일부가 비슷한 내용을 검색할 때 사용 ( 속도가 느림 )
  • 따라서 많은 데이터를 검색할 경우엔 LIKE를 사용하기보단 검색엔진을 사용한다.
  • WHERE [컬럼명] LIKE '검색어';
  • %를 꼭 붙여줘야 한다. %가 없으면 WHERE [컬럼명] = '검색어' 와 다를 것이 없다.

 

 

7. ORDER BY

  • 특정 컬럼을 기준으로 오름차순(ASC), 내림차순(DESC)
  • ORDER BY [컬럼] [ASC|DESC]
  • 오름차순

가나다순 , 낮은 숫자부터 = 오름차순 = ASC

 

  • 내림차순

높은 것부터 = 내림차순 = DESC
내림차순 실행 결과

  • ORDER BY는 조건에 따라 데이터를 추출 후 하는 것이 좋다.

 

 

8. GROUP BY

  • 특정한 기준으로 데이터를 묶어서 가져온다.
  • SELECT [컬럼, ...] FROM [테이블명] GROUP BY [묶을 컬럼];

쿼리문 실행 결과

 

부서별 급여 평균 avg(salary) : salary 평균을 내는 함수
쿼리문 실행 결과

 

  • SELECT에는 GROUP BY한 컬럼 외에, 연산된 내용만 나와야 한다. ****
  • 원래 연산된 컬럼(SUM,AVG 등) 외에 연산되지 않은 컬럼이 오면 에러가 난다.
  • 하지만 에러 상황을 발생하지 않기 위해 해당 컬럼의 첫 값을 보여주는데 불필요한 내용이므로 쿼리문 작성시 유의한다!

 

 

9. HAVING

  • GROUP BY로 가져온 결과로부터 특정 조건을 추출한다.
  • 부서별 급여 합계 <- GROUP BY
  • 그 중에서 합계가 1500만원 이상인 부서 <- HAVING

 

부서별 급여 합계 <- GROUP BY 까지만
그 중에서 합계가 1500만원 이상인 부서 <- HAVING 까지.

  • HAVING 에는 가급적 별칭을 활용하지 말자( 몇몇 DB 에서는 having 에서 별칭 사용시 에러가 난다.)
  • ORDER BY 에는 별칭 사용 가능