- SELECT
SELECTFROM employees a, departments b WHERE a.department_id = b.department_id;
기본적으로 개발하다 보면 별칭(alias)라고 말하는데 가끔 "아 뭐였더라???"라고 생각하게 된다...
(내 머리는 메모리카드라 휘발성이 강하다...쩝)
여기서 a,b로 명시한 부분을 별칭(alias)라고 한다.
(칼럼에서 AS문을 붙이는 부분도 별칭이라고 한다.)
a.employee_id, a.emp_name, a.department_id, b.department_name AS dep_name - INSERT
아래와 같이 insert하게 되면 에러가 안난다. 여기서 col3에 있는 타입이 date인데 2번째에는 '2024-01-01'로 insert하였는데 정상적으로 들어갔다..그리고 col1칼럼에서 두번째 부분에 숫자형식인 10을 입력하였는데 정상적으로 등록되었다.
이 부분은 사용자가 직접 데이터 타입을 변환을 한 것으로 '명시적 형변환' 이라고 한다.
이 부분이 '묵시적 형변환' 으로 자동으로 데잍터 타입이 변환되는 것을 의미한다.
- INSERT INTO test_1 (col1, col2, col3)VALUES ('TEST','10', SYSDATE);
- INSERT INTO test_1 (col1, col2, col3)VALUES (10,'10','2024-01-01');
- UPDATE
upddate test_1 set col2=50;을 쓰면 test_1에 있는 col2칼럼을 50으로 전체적으로 update한다..
(이런식으로 쓰면 데이터 원복하기 어려우니 조건문을 달아서 쓰는걸 추천한다.)
그리고 null부분에 대한 체크는 is null로 체크해야 한다.(where col3=''같은 형식으로 조회하면 망한다..)
upddate test_1 set col2=50 where col3 is null; - MERGE
간단히 말해서 테이블에 해당 조건이 있으면 UPDATE,없으면 INSERT하는 문장이다.
MERGE INTO [스키마].[테이블명]
USING (UPDATE나 INSERT될 데이터 원천) ON (UPDATE될 조건)
WHEN MATCHED THEN
SET 칼럼1=값1,컬럼2=값2..........
WHERE [UPDATE조건]
DELETE WHERE update_delete조건
WHEN NOT MATCHED THEN
INSERT(칼럼1,칼럼2.....)values(값1,값2....)
where insert 조건;
예)
MERGE INTO merge_test d
USING (SELECT merge_id, salary, manager_id
FROM merges
WHERE manager_id = 146) b
ON (d.merge_id = b.merge_id)
WHEN MATCHED THEN
UPDATE SET d.bonus_amt = d.bonus_amt + b.salary * 0.01
WHEN NOT MATCHED THEN
INSERT (d.merge_id, d.bonus_amt) VALUES (b.merge_id, b.salary *.001)
WHERE (b.salary < 8000); - DELETE
데이터 삭제 : DELETE FROM [스키마].[테이블명] PARTITION (파티션명) WHERE DELETE 조건;
테이블 삭제 : DELETE TEST_TABLE; - COMMIT
변경된 데이터를 반영할때 쓴다.(툴에서 AUTO COMMIT이 설정 되어있으면 자동 반영됨) - ROLLBACK
COMMIT 되기 전 이전상태로 되돌린다.(AUTO COMMIT으로 COMMIT되면 되돌릴수 없음) - TRUNCAT
한번 실행하면 데이터가 바로 삭제 되고 ROLLBACK을 실행하더라도 삭제 전 상태로 복귀 못함.
(테이블에 있는 데이터를 비우기 위해 사용된다.) - 의사컬럼
테이블의 컬럼처럼 동작 하지만 실제로는 테이블에 저장되지 않는 컬럼
계층형 사용 의사컬럼 : CONNECT_BY_ISCYCLE,CONNECT_BY_ISLEAF,LEVEL
시퀀스 사용 의사컬럼 : NEXTVAL,CURRVAL
순서시 사용 의사컬럼 : ROWNUM,ROWID - 수식연산자 : -,+,*,/,||
- 논리연산자 : >,<,>=,<=,=,<>,!=,^=
- 집합연산자 : UNION,UNION ALL,INTERSECT,MINUS
- 계층형 쿼리 연산자 : PRIOR ,CONNECT_BY_ROOT
- 표현식
CASE WHEN 조건1 THEN 값1
WHEN 조건2 THEN 값2
......
ELSE 기타 값
END; - 조건식
※비교 조건식 : ANY,SOME,ALL
ANY : 아무것,하나라는 뜻으로 조건중 조건에 하나라도 일치하면 추출을 한다.(OR조건과 같다)
예) WHERE salary = ANY (2000, 3000, 4000)
- 하나라도 일치하면 나온다.
ALL : 모든 조건이 일치할 경우에만 추출한다.
예)WHERE salary = ALL (2000, 3000, 4000)
- 3가지조건이 일치해야 나온다.
※논리 조건식 : AND,OR,NOT
AND : 그리고의 조건
OR : 또는 조건
NOT : 아닌 조건
※NULL 조건식 : IS NULL , IS NOT NULL
IS NULL : NULL인것
IS NOT NULL : NULL이 아닌것
(빈값일 경우에는 WHERE TEST = ''형식으로 찾아야 한다. 빈값도 값이다. NULL이 아니다.)
※BETWEEN AND 조건식 : 범위 비교
※IN조건식 : 명시한 값에 포함되어있는 부분을 반환 ANY와 같음
※EXISTS조건식 : IN과 비슷하지만 후행조건 절로 값의 리스트가 아닌 서브 쿼리만 올 수 있다.
※LIKE조건식 : 문자열의 패턴을 검색할때 사용한다.
예) WHERE TEST_NAME LIKE '나의이%' <-나의이~~~로 전체가 조회
WHERE TEST_NAME LIKE '나의이_'<-나의 이~로 갯수에 맞게 조회
'DB > ORACLE' 카테고리의 다른 글
14.[오라클]집계함수 정리 (0) | 2024.02.05 |
---|---|
13.[오라클]SQL함수 정리 (0) | 2024.01.28 |
11.[오라클]파티션테이블 정리 (1) | 2024.01.21 |
10.[오라클 공부]시퀀스 정리 (0) | 2024.01.21 |
9.[오라클]시노님(Synonym) 정리 (0) | 2024.01.17 |