@markdown
# SQL 기초
____
#### XE : eXtenstion DB 이름
#### SID : 데이터베이스 인스턴스
<pre><code class="sql" style="font-size:14px">select * from emp;
</code></pre>
- `*`를 남발하면안된다. 메모리에 로드된 데이터를 출력해주는 것이기 때문에
- `99/10/05` 형식의 데이트를 `1999/10/05`로 출력하도록
<pre><code class="sql" style="font-size:14px">alter session set nls_date_format = 'YYYY/MM/DD'
</code></pre>
<pre><code class="sql" style="font-size:14px">특정 함수 한번만 실행시키고 싶을때 쓰는 테이블
select * from dual`
</code></pre>
<pre><code class="sql" style="font-size:14px">select '직원 정보', empno as "직원 번호", ename 이름, deptno 부서번호
from emp
</code></pre>

```
실행결과 ' '된 부분은 문자값이 출력된다.
```
- Oracle은 데이터 사전에 등록된 값들은 무조건 대문자이다.
- `" "`은 칼럼이름, 테이블에 사용한다. 이때 반드시 대문자로 작성
- 칼럼 이름이나 테이블 이름에 ""를 사용하면 대소문자 구분 안함
- 문자값은 `' '` 사용함
- 별명 `as`는 생략 가능
- 별명에 특수문자 삽입시 `" "`사용
## SQL 문장 실행 순서
____
```
1. from
2. where
3. group by
4. having
5. select
6. order by
```
- null도 데이터로 취급하기 때문에 연산 결과 또한 null이 된다.
- nvl(값1, 값2) : 값1이 null이면 값2로 변경하는 함수
<pre><code class="sql" style="font-size:14px">null 연산 처리하는 sql문
select ename, sal, comm, sal*12+nvl(comm, 0)
from emp
</code></pre>
- null이 포함된 칼럼을 정렬하면 Oracle DB에서는 null이 뒤로 간다.
- eclipse로 실행하면 NULL이 찍히고, Console에서는 NULL은 공백으로 출력된다.
<pre><code class="sql" style="font-size:14px">강제로 먼저 출력할지, 나중에 출력할지 정할 수 있다.
order by comm asc nulls first
order by comm asc nulls last
</code></pre>
### 문자 연결 연산 ||
____
<pre><code class="sql" style="font-size:14px">select ename || '의 직업은 ' || job || '입니다.' as 직원소개
from emp
</code></pre>

### between vs <= and >=vs to_char(text, 'yyyy')
- 칼럼을 어떤 함수에 의해서 조작하는 것은 인덱스를 깨트리는 것이므로 속도를 떨어뜨린다.
<pre><code class="sql" style="font-size:14px">1981년도에 입사한 직원
select *
from emp
where to_char(hiredate, 'yyyy') = '1981'
where hiredate between '1981/1/1' and '1981/12/31'
</code></pre>
<pre><code class="sql" style="font-size:14px">deptno != 10
deptno <> 10
NOT deptno = 10
deptno ^= 10
</code></pre>
### 연산자 순위 NOT -> and -> or 순서
____
<pre><code class="sql" style="font-size:14px">select *
from emp
where comm is not null
where comm is null
</code></pre>
### 와일드카드 연산자
____
<pre><code class="sql" style="font-size:14px">select *
from emp
where ename like 'A%' //A로 시작하는 값
where ename like '%A%' //A를 포함하는 값
where ename like '%A' //A로 끝나는 값
where ename like '$A' //A로 끝나는 값
where ename like '_____' //5문자 값만 가져오기
</code></pre>
'SQLP 자격증' 카테고리의 다른 글
SQLP - 옵티마이저와 실행계획 (0) | 2018.01.15 |
---|---|
SQL - 제약조건, 뷰, 인덱스, 권한 (0) | 2017.05.17 |
SQL - 서브쿼리 (0) | 2017.05.16 |
SQL - Group by, Having, Join (0) | 2017.05.15 |
SQL - Oracle DB 설치하기 (0) | 2017.05.11 |