ORACLE SQL 구문
Ⅰ.SQL 기본 명령어
1. DDL(Data Definition Language) 명령어
1-1. 테이블 생성
create table 테이블명(
칼럼명1 datatype default 형식,
칼럼명2 datatype default 형식,
칼럼명3 datatype default 형식,
);
1-2. 생성된 테이블 확인
select table_name from tabs;
1-3. 생성된 테이블 구조 확인
desc 테이블명;
1-4. 테이블 구조 변경
① column 추가
alter table 테이블명 add (추가할 칼럼명 데이터타입);
② column 삭제
alter table 테이블명 drop column 삭제할 칼럼명;
③ column 사용불가 상태로 표시(삭제는 아님)
alter table 테이블명 set unused column 칼럼명;
④ unused column 삭제
alter table 테이블명 drop unused columns;
⑤ modify : 칼럼의 데이터타입, 크기, 디폴트값, not null 제약조건등 변경
alter table 테이블명 modify (칼럼명 데이터타입 [default식] [not nul],
칼럼명 데이터타입...);
⑥ column명 변경
alter table 테이블명 rename column 변경할 컬럼명 to 새로운 컬럼명;
⑦ 제약조건 추가
alter table 테이블명 add constrain 제약조건명 제약조건 (칼럼명);
⑧ 제약조건 삭제
alter table 테이블명 drop constraint 제약조건명;
⑨ 테이블 삭제
drop table 테이블명 cascade constraint;
(해당 테이블과 관계가 있던 제약조건도 삭제)
⑩ table truncate (로그파일에 기록하지 않고 바로 삭제, 빠르다)
truncate table 테이블명;
⑪ table rename
rename 변경될테이블명 to 새로운테이블명;
2. DML (Data Manipulation Language) 명령어- 트랜잭션에 관련
2-1. INSERT
원하는 칼럼에 데이터입력 :
insert into 테이블명 (컬럼명, 컬럼명, ...) values (데이터, 데이터, ...);
모든 칼럼에 맞춰 데이터입력해야함 :
insert into 테이블명 values (데이터, 데이터, ...);
2-1-1. SELECT
select 보고싶은 칼럼명, 보고싶은 칼럼명, ... from 해당 칼럼들이 있는 테이블명
select * from 테이블명;
2-1-2. ALIAS(별명) 부여
select 칼럼명1 별명1, 칼럼명2 별명2, 칼럼명3 별명3 from 테이블명;
2-1-3 산술연산 (+, - , *, /, ( ) ) : number 와 date 자료형에 적용
select 조회할 컬럼명 “별명” from 테이블명;
ex) select height + weight "키와 몸무게의 합“ from player_t;
2-1-4 합성 연산자( || ): 칼럼과 문자 또는 다른 칼럼과 연결
문자 표현식의 결과에 의해 새로운 칼럼 생성.
select player_name || '선수‘ from 테이블명;
결과 player_name || '선수‘
우성용선수
이영표선수
2-2. UPDATE
update 테이블명 set 수정되어야 할 칼럼명 = 수정되기를 원하는 새로운 값;
ex) update player_t set weight = 100;
2-3. DELETE
delete from 삭제하기를 원하는 정보가 들어있는 테이블명; (모든 데이터 삭제)
ex) delete from player_t; 데이터 삭제
3. TCL (Transaction Control Language) 명령어
Transaction ? : 계좌이체 같은 하나의 논리적인 작업 단위를 구성하는
세부적인 연산들의 집합(All or Nothing의 개념)
3-1. Commit 명령어
: insert문, update문, delete문을 사용 후에 이런 변경작업이 완료되었음을
데이터베이스에 알려 주기 위해 사용.
ex) update player_t set height = 100;
10개의 행이 수정
commit;
커밋이 완료
3-1-1. Commit 이나 Rollback 이전의 데이터 상태
•데이터 이전상태 복구 가능(buffer에만 영향)
•현재 사용자는 select 문으로 결과 확인 가능
•다른 사용자는 현재 사용자가 수행한 명령의 결과 확인 불가
•변경된 행은 잠금이 설정(다른 사용자가 변경 불가)
3-1-2. Commit 후의 데이터 상태
•데이터 변경사항 데이터베이스에 반영
•이전 데이터는 복구 불가
•모든 사용자는 결과확인 가능
•관련된 행에 대한 잠금 풀리고 다른 사용자들이 행조작 가능
3-2. Rollback 명령어
: 데이터 변경사항이 취소되어 데이터의 이전 상태로 복귀되며, 관련된 행에 대한
잠금(Locking)이 풀리고 다른 사용자들이 데이터 변경을 할 수 있게 됩니다.
ex) delete from player_t;
10개의 행이 삭제되었습니다.
rollback;
롤백이 완료되었습니다.
3-2-1. Rollback 후의 데이터 상태
•데이터 변경사항 취소됨.
•이전 데이터는 다시 재저장 됨.
•모든 사용자는 결과확인 가능
3-3. Savepoint 명령어
: savepoint를 정의하면 rollback 할 때 트랜잭션에 포함된 전체 작업을 롤백하는 것이
아니라 현 시점에서 savepoint 까지 트랜잭션의 일부만 롤백할 수 있습니다.
ex) savepoint sp1;
저장점이 생성되었습니다.
update player_t set weight = 100;
10개의 행이 수정되었습니다.
rollback to sp1;
롤백이 완료되었습니다.
4. 조건절(Where) 사용하기
4-1. where 절에서 사용 가능한 연산자
4-1-1. 비교 연산자
4-1-2. SQL 비교 연산자
연산자 |
연산자의 의미 |
between a and b |
a와 b의 값 사이(a, b값 포함) |
in(list) |
list에 있는 값 중에서 어느 한 개라도 일치 하면 됨(or 의 의미) |
like '비교문자열‘ |
비교문자열과 형태가 일치( % or _ ) |
is null |
null값 |
ex) select player_name, position, back_no, height
from player_t
where team_id in ('K02', 'K07);
ex) select player_name, position, back_no, height
from player_t
where player_name like '고%‘;
ex) select player_name, position, back_no, height
from player_t
where height between 170 and 180;
ex) select player_name, position, back_no, height
from player_t
where height is null;
4-1-3. 논리 연산자
연산자 |
연산자의 의미 |
and |
앞, 뒤 조건 동시 만족해야함 |
or |
앞, 뒤 조건 중 하나만 만족해도 됨 |
not |
뒤에 오는 조건의 반대의 결과가 나타남 |
ex) select player_name, position, back_no, height
from player_t
where tema_id = 'K02'
and height >= 170;
ex) select player_name, position, back_no, height
from player_t
where (tema_id = 'K02' or team_id = 'K07')
and position = 'MF'
and height >= 170;
and height <= 180;
4-1-4. 조건의 부정
종류 |
연산자 |
연산자의 의미 |
부정 논리연산자 |
!= |
같지않다.(unix, pc) |
<> |
같지않다.(모든운영체제) | |
not 칼럼명 = |
~와 같지 않다. | |
not 칼럼명 > |
~보다 크지 않다. | |
부정 SQL연산자 |
not between a and b |
a와 b의 값 사이에 있지 않다. |
not in (list) |
list 값과 일치하지 않는다. | |
is not null |
null 값을 갖지 않는다. |
ex) select player_name, position, back_no, height
from player_t
where team_id = 'K02'
and not position = 'MF'
and not height between 175 and 185;
▷ 연산 우선순위 : 괄호() > not 연산자 > 비교연산자, SQL연산자 > and > or
▷ null 값이란 ?
• null 값은 존재하지 않는 것이라는 미확정 값을 표현할 때 사용.
• 어떤 값과 비교할 수도 없다.
• null 값과의 비교연산은 False를 리턴.
• null 값과의 수치연산은 null 값을 리턴.
5. GROUP BY절 사용하기
: group by절은 sql문에서 from절 뒤에 오며, 데이터들을 작은 그룹으로 분류하여 그룹에 대한
항목별로 통계 정보를 얻기 위해 사용됨.