📃 요약
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 문을 이용한 재귀쿼리 사용