[부스트코스] 웹 프로그래밍 강의를 수강한 학습 내용입니다.
– 출처 : 웹 프로그래밍 > 2.2) DML(select, insert, update, delete)
◇ 데이터 조회 (SELECT)
SELECT [DISTINCT] 컬럼명 [ALIAS]
FROM 테이블명;
- DISTINCT : 중복행을 제거하고 조회
- ALIAS : 컬럼의 명칭을 부여
1. 전체 데이터 검색
- SELECT 뒤에 * 을 입력하면 모든 데이터를 출력할 수 있다.
SELECT * FROM 테이블명;
- 예제
– DEPARTMENT 테이블의 모든 데이터를 출력한다.
SELECT * FROM DEPARTMENT;
2. 특정 컬럼 검색
- SELECT 뒤에 컬럼명을 콤마(,)로 구분하여 나열한다.
SELECT 컬럼1, 컬럼2, ... FROM 테이블명;
- 예제
– EMPLOYEE 테이블에서 사번(empno), 이름(name), 직업(job)을 출력한다.
SELECT empno, name, job FROM EMPLOYEE;
3. 컬럼 명칭 설정 (ALIAS)
SELECT 컬럼1 as 명칭1, 컬럼2 as 명칭2, ... FROM 테이블명;
- 예제
– EMPLOYEE 테이블에서 사번(empno), 이름(name), 직업(job)을 명칭으로 출력한다.
SELECT empno as 사번, name as 이름, job as 직업 FROM EMPLOYEE;
4. 컬럼 합성 (Concatenation)
-
문자열 결합함수 concat 을 사용하여 여러 컬럼을 하나의 컬럼으로 출력한다.
-
예제
– EMPLOYEE 테이블에서 사번과 부서번호를 하나의 컬럼으로 출력한다.
SELECT concat(empno, '-', deptno) as '사번-부서번호'
FROM EMPLOYEE;
5. 중복행 제거 (DISTINCT)
- 예제
– EMPLOYEE 테이블에서 모든 부서 번호를 출력한다.
(1) 기본 조회는 사원의 수 만큼 부서번호가 출력된다.
SELECT deptno FROM EMPLOYEE;
(2) DISTINCT 를 사용하면 중복되지 않게 출력된다.
SELECT DISTINCT deptno FROM EMPLOYEE;
6. 정렬 (ORDER BY)
- 예제 1 : 오름차순 정렬
– EMPLOYEE 테이블에서 사번(empno), 이름(name), 직업(job)을 이름의 순서대로 출력한다.
SELECT empno, name, job
FROM EMPLOYEE
ORDER BY name;
- 예제 2 : 내림차순 정렬
– EMPLOYEE 테이블에서 사번(empno), 이름(name), 직업(job)을 이름의 내림차순으로 출력한다.
SELECT empno, name, job
FROM EMPLOYEE
ORDER BY name desc;
7. 특정 행 검색 (WHERE)
- 조건식을 이용하여 해당 조건과 일치하는 행만 출력한다.
SELECT [DISTINCT] 컬럼명 [ALIAS]
FROM 테이블명
WHERE 조건식
ORDER BY 컬럼 또는 표현식 [ASC | DESC];
1) 산술 비교 연산자
- 예제
– EMPLOYEE 테이블에서 고용일(hiredate)이 1981년 이전의 사원이름과 고용일을 출력한다.
SELECT name, hiredate
FROM EMPLOYEE
WHERE hiredate < '1981-01-01';
2) 논리 연산자
- 예제
– EMPLOYEE 테이블에서 부서번호가 30인 사원이름과 부서번호를 출력한다.
SELECT name, deptno
FROM EMPLOYEE
WHERE deptno = 30;
3) IN 키워드
- 예제
– EMPLOYEE 테이블에서 부서번호가 10 또는 30인 사원이름과 부서번호를 출력한다.
SELECT name, deptno
FROM EMPLOYEE
WHERE deptno IN (10, 30);
4) LIKE 키워드
- 와일드카드를 사용하여 특정 문자를 포함한 값에 대한 조건을 처리
-
’%’ 는 여러 개의 문자열, ‘_’ 는 한 개의 문자를 나타내는 와일드카드
- 예제
– EMPLOYEE 테이블에서 이름에 ‘A’ 가 포함된 사원의 이름과 직업을 출력한다.
SELECT name, job
FROM EMPLOYEE
WHERE name LIKE '%A%';
8. 그룹함수 (GROUP BY)
-
조회 결과의 그룹을 나누어 출력한다.
-
예제
– EMPLOYEE 테이블에서 부서번호가 30인 직원의 급여 평균과 총 합계를 출력한다.
(1) 기본 조회는 모든 행을 기준으로 한 조회 결과가 출력된다.
SELECT AVG(salary) , SUM(salary)
FROM EMPLOYEE
WHERE deptno = 30;
(2) GROUP BY 를 사용하면 조회 결과에 그룹이 구분되어 출력된다.
SELECT AVG(salary) , SUM(salary)
FROM EMPLOYEE
GROUP BY deptno;
9. 함수
FLOOR(x) | x보다 크지 않은 가장 큰 정수를 반환합니다. BIGINT로 자동 변환 |
CEILING(x) | x보다 작지 않은 가장 작은 정수를 반환 |
ROUND(x) | x에 가장 근접한 정수를 반환 |
POW(x,y), POWER(x,y) | x의 y 제곱 승을 반환 |
GREATEST(x,y,…) | 가장 큰 값을 반환 |
LEAST(x,y,…) | 가장 작은 값을 반환 |
CURDATE() CURRENT_DATE |
오늘 날짜를 YYYY-MM-DD나 YYYYMMDD 형식으로 반환 |
CURTIME() CURRENT_TIME |
현재 시각을 HH:MM:SS나 HHMMSS 형식으로 반환 |
NOW(), SYSDATE() CURRENT_TIMESTAMP |
오늘 현시각을 YYYY-MM-DD HH:MM:SS나 YYYYMMDDHHMMSS 형식으로 반환 |
DATE_FORMAT(date,format) | 입력된 date를 format 형식으로 반환 |
PERIOD_DIFF(p1,p2) | YYMM이나 YYYYMM으로 표기되는 p1과 p2의 차이 개월을 반환 |