MySQL vs Oracle SQL

메타플랫폼대표
|2024. 8. 14. 14:20
반응형

 

자료형의 차이에 대해서

 

실행하는 단축키

 

실행

1. 현재 커서의 명령 실행 : Ctrl + Enter
2. 지정블럭 실행 : Ctrl + Shift + Enter

 

Oracle vs MySql

1.  문자자료형
	# Oravle				# MySQL
	char()					char()
    varchar2()				varchar()
    clob					text or longtext
    
2. 숫자
	number(p,s)				tinyint
    number(p)				int
    int						longint
							
3. 날짜
	date					datetime
    sysdate					now(),sysdate()

4. 일련번호
	sequence				auto_increment <= 자동증가 속성

 

 

 

위의 자료형을 참고해서 MySQL을 사용하여, table을 만들어보자

 

create table tb1
(
	idx int primary key auto_increment,
    name varchar(100) not null,
    age int default 0,
    gender varchar(100) ,
    birthday datetime
)

 

 

참고로, table을 추가할 때는 Schemas에서 내가 저장할 DB공간을 더블클릭하거나 Set as Default Schema 해주어서, table이 저장될 DB를 지정한다.

 

 

 

주석 남길때의 주의점 : 무조건 한 칸 띄우고 주석을 남긴다.

 

 

 

 

[ 제약 조건과 insert로 데이터 넣기 ]

-- 성별에 대한 제약조건
alter table tb1
	add constraint check_tb1_gender check(gender in ('남자','여자'));

-- sample data
insert into tb1(name,age,gender,birthday) values('일길동',20,'남자','1999-12-31');

-- sample data2
insert into tb1 values(null,'이미자',30,'여자','1995-1-1');

 

 

 

[ MySQL에서의 전체컬럼에서 추가 컬럼 사용 ]

전체 컬럼에서 추가적인 컬럼을 넣으려고 했을때, Oracle SQL문에서는 s로 전체를 지정해놓고, 추가적인 컬럼을 작성해주어야 했다. 허나 MySQL문에서는 s로 전체지정을 해주지 않아도, 추가 연산 컬럼을 넣을 수 있다.

-- 기존 Oracle SQL (MySQL에서도 사용가능)
select 
	s.*, sapay*0.1 as bonus
from 
	(select * from sawon)s

-- MySQL
select *, sapay*0.1 as bonus from sawon

 

 

 

 

[ MySQL에서의 rank() 함수 사용 ]

Oracle SQL에서는 as rank가 예약어로 인식되지 않아서 가능했지만, MySQL에서는 as rank를 사용할 시에, 예약어로 판단되어서 오류가 발생한다.

 

- MySQL heading 포함 예약어는 사용할 수 없다(rank,avg,....)

 

 

정상 실행 완료 (rank1)로 수정

 

 

select 
	s.*, sapay*0.1 as bonus,
    rank() over(order by sapay desc) as rank1
from 
	(select * from sawon)s

 

 

MySQL문도 SQL문의 순서는 항상 따른다.

 

 

Inline View의 table alias명은 반드시 넣어야한다.

반응형