20_Simple Coding - Mysql - Oracle 차이점 - 기본 요약

강태경·2023년 12월 13일

SQL_기본

목록 보기
3/10

📃 요약

SQL 명령어는 표준이 제정되며 각 관계형 DB 회사는 표준을 90% 따름
10% 정도에 대해 일부 사용법이 틀려질 수 있으며 각각의 차이점을 아래에 정리함
강의는 오라클을 기본으로 진행되며 Mysql 은 오라클기준으로 달라진 차이점만 체크하기로 함

요소 기술 :

- Basic : SQL

📃 기술 구현

스펙 :

- Mysql Workbench
- Mysql SQL
- Oracle SQL

📃 DB / DBMS 정의

1. 컬럼 자료형 비교

구분oraclemysql
정수numberint
실수numberdouble
문자varchar2, charvarchar, char
날짜datedatetime, date, time
2진데이터blobmediumblob, longblob

2. 메타데이터 비교

  • oracle : 딕셔너리 뷰 조회
-- 테이블 정보 보기
select * from user_tables;

-- 인덱스 정보 보기
select * from user_indexes;
  • mysql : mysql db, information_schema
)
-- 테이블 정보 보기
select * from information_schema.tables;

-- 유저 정보 보기
use mysql;
select * from user;

3. 함수 비교

1) nvl -> ifnull

  • oracle
select nvl(null,0) from dual;
  • mysql
select ifnull(null,0) from dual;

2) sysdate -> sysdate(), now()

  • oracle
select sysdate from dual;
  • mysql
select sysdate() from dual;

select now() from dual;

3) decode 문 -> case 문

  • oracle
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
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 문을 이용한 재귀쿼리 사용

profile
IT FullStack 강사

0개의 댓글