※ 이 글은 오지영 강사님의 <업무에 바로 쓰는 SQL 활용실습>의 강의내용을 바탕으로 작성하였습니다.
SQL 작성규칙
-
SQL문은 특별히 표시하지 않는 한 대소문자를 구분하지 않는다.
- SQL문은 여러 라인에 걸쳐서 작성이 가능하고 가독성을 위해 들여쓰기를 하는 것이 좋다.
- 키워드는 여르 행에 나누어 쓰거나 약어로 쓸 수 없다.
- 여러 컬럼을 검색할 때 쉼표로 컬럼을 구분한다.
- SELECT절에서 출력 결과에 표시할 순서대로 컬럼을 지정한다.
- SELECT결과 열 머리글(Heading)은 기본적으로 대문자로 표시된다.
01 기본 SELECT문
1. 형식
SELECT 컬럼1, 컬럼2, 컬럼3, …
FROM 테이블명;
SELECT ename, sal
FROM emp;
SELECT *
FROM emp;
※별표(*)는 모든 컬럼을 조회하겠다는 뜻이다.
컬럼은 대소문자 구분를 구분하지 않는다.
SELECT ENAME, sal
FROM emp;
컬럼의 중복도 상관 없다.
SELECT ename, sal, ENAME
FROM emp;
컬럼을 이용한 연산이 가능하다(기존 테이블에는 영향이 없다. 단순히 값을 꺼내온 후 연산하여 보여줄 뿐이다)
SELECT ENAME, 2*sal
FROM emp;
2. 별칭(Alias)
컬럼명을 원래의 이름이 아닌 별도의 이름으로 지정할 수 있다.
SELECT ename Ename, sal Sal
FROM emp;
주로 연산이 수행된 컬럼에 사용된다.
컬럼명 다음에 AS를 쓴 뒤 그 뒤에 별칭으로 사용할 단어를 제시한다(AS는 생략 가능).
대소문자를 구분하지 않는다. 단, 큰 따옴표(” ”)로 묶어주면 대소문자 구분이 가능하다.
SELECT ename "Ename", sal "Sal"
FROM emp;
특수 문자나 공백을 컬럼의 별칭으로 사용하고자 하면 별칭에 큰 따옴표(" ")를 사용한다.(Sal7은 큰 따옴표가 필요 없으나 7Sal은 필요하다)
SELECT ename "Ename", sal*7 "7Sal"
FROM emp;
주의!
Where절에서는 별칭을 사용할 수 없다!!!! 왜냐하면 DB는 from절 다음에 select절이 아닌 where절을 바라보기 때문이다.
SELECT ename name, sal*12 newsal
FROM emp
WHERE newsal > 100;
SELECT ename name, sal*12 newsal
FROM emp
WHERE sal*12 > 100;
※ 별칭은 조회값들은 전부 가져온 후 붙여지는 것이지 하나하나씩 값이 가져온 후에 붙여지는 것이 아니다. 때문에 아래와 같은 쿼리는 정상적으로 작동하지 않는다.
SELECT ename name, sal*12 newsal, newsal+200
FROM emp
WHERE sal*12 > 100;
3. 리터럴
특정 문자, 숫자, Date 타입 등의 상수를 출력하고 싶을 때 사용한다.
Date 타입이나 문자열은 작은 따옴표('')로 둘러싸야 한다.
SELECT 'ename', 'sal'
FROM emp;
각 문자열은 각 행(Row)가 반환될 때마다 한 번씩 출력된다.
SELECT 77, sal+77, 'sal*2+100'
FROM emp;
4. 연결 연산자
컬럼 또는 문자를 다른 컬럼과 연결해서 표현할 때 사용한다.
SELECT ename||' : '||job FROM emp;
SELECT ename||' : '||job 결과 FROM emp;
SELECT ename||'('||empno||')' FROM emp;
SELECT ename, job FROM emp;
SELECT CONCAT(ename,job) FROM emp;
SELECT CONCAT(ename||':',job) FROM emp;
※ CONCAT함수는 무조건 인자를 두 개만 사용할 수 있다.
SELECT ename+job FROM emp; --> 에러
5. DISTINCT 중복 행 제거
같은 컬럼에 있는 동일한 값을 한번만 출력한다. SELECT 바로 뒤에 사용한다.
SELECT DISTINCT deptno
FROM emp;
DISTINCT 다음에 여러 열을 지정할 수 있다(선택한 모든 열에 영향을 주어 결과로 고유한 열 조합이 표시된다)
SELECT DISTINCT deptno, job
FROM emp;
'프로그래밍 > Database & SQL' 카테고리의 다른 글
[Oracle | 오라클] 단일행 함수 - 2. 숫자함수 (0) | 2015.08.13 |
---|---|
[Oracle | 오라클] 단일행 함수 - 1. 문자함수 (0) | 2015.08.13 |
[Oracle | 오라클] SELECT문 - WHERE을 이용한 행의 제한 (0) | 2015.08.12 |
[Oracle | 오라클] 오라클 서버의 구조(메모리 영역 - 프로세스 영역 - 파일 영역) (0) | 2015.08.10 |
[Oracle | 오라클] DB 덤프/임포트 하기 (31) | 2015.05.26 |