본문 바로가기

SQLP 자격증

SQL - 기초

@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>


![](https://cloud.githubusercontent.com/assets/12658717/25935253/292e54d2-365d-11e7-9e82-c6b07f1345c4.png)

```

실행결과 ' '된 부분은 문자값이 출력된다.

```

- 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>


![](https://cloud.githubusercontent.com/assets/12658717/25936096/15368f5e-3661-11e7-8728-7e4bb9eb06f9.png)


### 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