SELECT 문
테이블이나 뷰에 있는 데이터를 조회할 때 사용하는 문장이다.
문장 구문
SELECT * (또는 컬럼) -> 결과창에 나올 컬럼 입력( *는 테이블의 모든 컬럼)
FROM 테이블 명 -> 어느 테이블에서 검색할지 입력
WHERE 조건 -> 해당 조건이 맞는 것을 추출
GROUP BY 컬럼 or 표현식 -> 그룹으로 묶을 컬럼명이나 표현식을 입력해서 사용 대신 GROUP BY 절에 사용한 컬럼
중에서만 결과창에 나올 컬럼으로 사용 할 수 있다.
ROLLUP(expr1, expr2, …) : expr로 명시한 표현식을 기준으로 집계한 결과를 보여준다.
표현식 개수가 n개면 n+1레벨까지 하위 레벨에서 상위 레벨 순으로 데이터가 집계된다.
N개의 표현식 -> N+1개 결과 나옴
일반 컬럼과 같이 쓸 경우 일반 컬럼으로 그루핑후 ROLLUP을 수행한다.
CUBE(expr1, expr2, …) : expr로 명시한 표현식 개수에 따라 가능한 모든 조합별로 집계한 결과를 반환한다.
Expr수가 n이면 집계 결과의 유형은 총 2^n개로 표현
HAVING BY 조건식 -> 그룹으로 묶인 결과를 다시한번 걸러내는 역활을 한다.
ORDER BY 컬럼; -> 정렬 방식 asc(Default) 오름차순 dsc 내림차순
기본적으로 SELECT ~ FROM 까지만 쓰면 사용 할 수 있고 나머지는 선택적으로 사용할 수 있다.
(HAVING BY는 GROUP BY절을 사용 할 때만 사용 할 수 있다.)
FROM 절에는 테이블이 하나만 올 수 있지만 그 이상도 올 수 있다. (당연히 추가한 테이블은 조건이나 결과창에
나올 컬럼란에도 쓸수있다.)
WHERE 절은 AND, OR 연산자를 넣어 조건을 추가할 수 있다.
AND : 조건이 둘다 성립하는 경우
OR : 조건 중 하나만 성립하는 경우
(후에 자세히 다룰 예정)
INSERT 문
테이블에 데이터를 입력할 때 사용하는 문장.
문장 구문
INSERT INTO 테이블명(컬럼1, 컬럼2, …) VALUES (값1, 값2, …);
컬럼을 입력 안하면 SELECT문을 통해 보이는 컬럼 순서대로 VALUES 괄호 안에 넣으면 됟다.
위 문장을 쓸경우 한번에 한개의 데이터를 보낼 수 있다.
INSERT INTO 테이블명(컬럼1, 컬럼2,…) SELECT 문
위 문장을 쓸경우 여러개의 데이터가 들어갈 수 있다. 하지만 테이블에 기본키, 유니크키가 겹치면 오류가 뜨면서 데이터 전체가 들어가지 않는다. SELECT 문은 당연히 입력되는 컬럼 순서에 맞게 데이터 타입을 맞춰야 한다.
UPDATE 문
테이블에 있는 기존 데이터를 수정할 때 사용하는 문장
문장 구문
UPDATE 테이블명 -> 데이터를 변경할 테이블의 이름
SET 컬럼1 = 변경값1, 컬럼2 = 변경값2, … -> 조건 만족시 변경할 컬럼과 변경될 값 입력
WHERE 조건; -> 변경할 때의 조건을 입력
MERGE 문
조건을 비교해서 테이블에 해당 조건이 있으면 UPDATE문, 없으면 INSERT 문을 수행하는 문장이다.
문장 구문
MERGE INTO 테이블 명
USING (비교할 데이터 객체)
ON (비교할 조건)
WHEN MATCHED THEN
조건이 맞을 경우 수행할 문장
WHEN NOT MATCHED THEN
조건이 안 맞을 경우 수행할 문장
DELETE 문
테이블에 있는 데이터를 삭제할 때 사용하는 문장.
문장 구문
DELETE 테이블 명
WHERE delete조건;
조건을 안적을 경우 테이블에 있는 모든 데이터를 지운다.
데이터 저장 및 복구
COMMIT; 데이터베이스에 마지막으로 반영하는 역활
ROLLBACK; 변경한 데이터를 변경하기 이전 상태로 되돌리는 역활
TRUNCATE TABLE 테이블 명 : ROLLBACK을 실행해도 돌아오지 않음
'프로그래밍 > 오라클' 카테고리의 다른 글
(오라클) 조인, 안시 조인 (0) | 2016.07.10 |
---|---|
(오라클) SQL 함수 (0) | 2016.07.10 |
(오라클) 의사퀄럼, 표현식, 조건식 (0) | 2016.07.10 |
(오라클) 뷰, 인덱스, 시노님, 시퀀스, 파티션 테이블 (0) | 2016.07.10 |
(오라클) 테이블 (0) | 2016.07.10 |