✨ SELECT문 구조 ✨
SELECT
FROM
[WHERE 조건식] 👉 WHERE 바로가기
[GROUP BY 단순 컬럼] 👉 GROUP BY 바로가기
[HAVING 조건식] 👉 HAVING 바로가기
[ORDER BY 표현식]; 👉 ORDER BY 바로가기
SELECT문은 데이터베이스에 저장된 데이터를 검색할 때 사용되는 SQL문장으로 DQL (Data Query Lanuage) 라고 한다. SELECT
와 FROM
키워드를 기본으로 사용하며 SELECT
키워드는 원하는 컬럼을 지정할 때 사용되고 FROM
은 데이터가 저장된 테이블명을 기술할 때 사용된다.
모든 데이터 조회
-- * 은 모든(all) 컬럼을 의미하기 때문에 모든 데이터가 검색
SELECT * FROM 테이블명;
특정 데이터 조회
SELECT 컬럼명,컬럼명2,...,컬럼명n
FROM 테이블명;
-- 사원번호(employee_id)와 이름(last_name),입사일(hire_date),월급(salary)조회
SELECT employee_id, last_name, hire_date, salary
FROM employees;
💡 문자 데이터와 날짜 데이터는 왼쪽 정렬 기본, 수치 데이터는 오른쪽 정렬 기본
산술 연산자 사용
+
-
*
/
사용. SQL문에는 MOD() 함수를 사용하여 나머지를 구하기 때문에 %
는 사용X
-- 이름(last_name),월급(salary)과 연봉(salary*12) 조회
SELECT last_name, salary, salary * 12
FROM employees;
별칭 사용
위의 연산식을 실행하였을 때 해당 컬럼 헤딩에 연산식이 그대로 출력된다. 이 헤딩이 사용자가 이해하기 어려운 경우도 있기 때문에 별칭을 사용하여 표현하면 훨씬 정확한 의미 전달이 가능하다. as
키워드를 사용하여 별칭을 기술하면 된다. 이때 as
는 생략 가능하다.
-- 이름(last_name),월급(salary)과 연봉(salary*12)을 별칭을 사용하여 조회
SELECT last_name as 이름, salary 월급, salary * 12 as 연봉
FROM employees;
-- 별칭에 공백문자 또는 특수문자를 사용하기 위해서는 반드시 " " 로 감싸줘야 된다.
SELECT last_name as "사원 이름", salary "사원 월급", salary * 12 as "연 봉"
FROM employees;
널 (null)
널(null)은 0이나 공백과는 다르다. null 은 값 자체가 없는 것이다. null 값에 연산자를 사용한 경우 결과는 항상 null값이 반환된다. null값의 존재 여부와 상관없이 정확한 연산식이 필요한 경우에는 NVL()
을 사용한다.
NVL(컬럼명, 값)
NVL 함수는 null값을 어떤 특정 값으로 변환하는데 사용된다. 변환 가능한 데이터 타입은 문자, 날짜, 수치 데이터이다.
-- 수수료(commission_pct)가 null인 사원의 연봉은 수수료 값을 0으로 바꾸어 연산
SELECT last_name 이름, salary 월급, commission_pct 수수료,
salary * 12+NVL(commission_pct,0) as 연봉
FROM employees;
연결 연산자
연결 연산자 ||
를 사용하면 여러 개의 문자열을 연결하여 하나의 문자열로 생성할 수 있다. 즉, 기존의 컬럼에 다른 컬럼값을 연결하거나 새로운 값을 추가할 때 사용된다.
-- employees 테이블의 이름(last_name)과 월급(salary)를 연결 연산자(||)를 사용하여 하나의 컬럼으로 만든 후 출력
SELECT last_name || salary as "이름 월급"
FROM employees;
-- 컬럼과 컬럼이 아닌 새로운 값도 연결 가능
SELECT last_name || ' 사원'
FROM employees;
SELECT last_name || '의 직업은 ' || job_id || ' 입니다' as "사원별 직급"
FROM employees;
중복 데이터 제거
SELECT문은 기본적으로 중복되는 행을 제거하지 않고 모두 출력한다. 실행 결과에서 중복되는 행을 제거하기 위해서는 DISTINCT
키워드를 사용하고 기본적으로 오름차순으로 정렬되어 출력된다.
-- employees 테이블의 모든 직업(job_id)을 중복없이 출력
SELECT DISTINCT job_id
FROM employees;
🧐 키워드
- NVL
- DISTINCT
'Database > SQL' 카테고리의 다른 글
[SQL] SELECT문 - ORDER BY 절 (0) | 2023.07.26 |
---|---|
[SQL] SELECT문 - WHERE 절 (0) | 2023.07.26 |
[SQL] Java를 사용한 데이터베이스 응용프로그램의 개발 - JDBC (0) | 2021.12.06 |
[SQL] 트리거 (0) | 2021.12.06 |
[SQL] 함수 (0) | 2021.12.06 |