
📃 요약
SQL 명령어는 표준이 제정되며 각 관계형 DB 회사는 표준을 90% 따름
10% 정도에 대해 일부 사용법이 틀려질 수 있으며 각각의 차이점을 아래에 정리함
강의는 오라클을 기본으로 진행되며 Mysql 은 오라클기준으로 달라진 차이점만 체크하기로 함
요소 기술 :
– Basic : SQL
📃 기술 구현
스펙 :
- Mysql Workbench - Mysql SQL - Oracle SQL
📃 DB / DBMS 정의
1. 컬럼 자료형 비교
| 구분 | oracle | mysql |
|---|---|---|
| 정수 | number | int |
| 실수 | number | double |
| 문자 | varchar2, char | varchar, char |
| 날짜 | date | datetime, date, time |
| 2진데이터 | blob | mediumblob, longblob |
2. 메타데이터 비교
- oracle : 딕셔너리 뷰 조회
-- 테이블 정보 보기
select * from user_tables;
— 인덱스 정보 보기
select * from user_indexes;
- mysql : mysql db, information_schema
```sql
예)
-- 테이블 정보 보기
select * from information_schema.tables;
-- 유저 정보 보기
use mysql;
select * from user;</code></pre>
<h3>3. 함수 비교</h3>
<h4>1) nvl -> ifnull</h4>
<ul>
<li>
<p>oracle</p>
<pre><code class="language-sql">select nvl(null,0) from dual;</code></pre>
</li>
<li>
<p>mysql</p>
<pre><code class="language-sql">select ifnull(null,0) from dual;</code></pre>
</li>
</ul>
<h4>2) sysdate -> sysdate(), now()</h4>
<ul>
<li>
<p>oracle</p>
<pre><code class="language-sql">select sysdate from dual;</code></pre>
</li>
<li>
<p>mysql</p>
<pre><code class="language-sql">
select sysdate() from dual;</code></pre>
</li>
</ul>
<p>select now() from dual;</p>
<pre><code>
#### 3) decode 문 -> case 문
- oracle
```sql
select decode('a', 'a','A', 'B') from dual;
- mysql
select case when 'a'=='a' then 'A'
else 'B'
end
from dual;
4) to_number -> cast
oracle
select to_number('1') from dual;mysql
select cast('1' as char) from dual;
5) 시퀀스 -> 컬럼에 예약어 부여 : auto_increment
oracle
create sequence sq_sample
increment by 1
start with 1
minvalue 1
maxvalue 99999999;mysql
create table sample (
id int auto_increment, // 1씩 자동증가
name varchar(1000)
);
— auto_increment 값 확인
show table status where name = ‘sample’;
— auto_increment 초기화
— truncate table 시에 자동 초기화 됨 : 1
alter table sample auto_increment = 1;
#### 6) 서브쿼리 -> 서브쿼리에 반드시 별칭을 붙여야함 #### 7) delete 테이블명 -> delete from 테이블명 사용 #### 8) outer join (+) -> left(right) outer join .. on 조인조건 사용(ansi 조인 사용) - oracle ```sql 1) left outer join select a.*, b.* from a, b where a.id = b.id(+); 2) right outer join select a.*, b.* from a, b where a.id(+) = b.id;
- mysql
1) left outer join
select a.*, b.*
from a left outer join on a.id = b.id;
2) right outer join
select a., b.
from a right outer join on a.id = b.id;
#### 9) connect by -> with 문을 이용한 재귀쿼리 사용



