테이블에서 데이터 정보를 꺼낼 때,
명령어의 처리순서
-------------------------------------------------- select 컬럼명1, 컬럼명2 -> 5 번 from 테이블명 (또는 뷰명) -> 1 번 where 조건절 -> 2 번 // where 조건절 : 조건에 만족하는 테이블의 행(row)를 // 메모리(RAM)에 로딩해주는 것 group by 절 -> 3 번 having 그룹함수조건절 -> 4 번 order by 절 -> 6 번 --------------------------------------------------
order by 컬럼명 asc;
-- 또는
order by 컬럼명; -- 'asc' 는 생략 가능
order by 컬럼명 desc;
select 컬럼명1, 컬럼명2, 컬럼명3
from 테이블명(또는 뷰명)
order by 1,2,3 desc;
-- 이 경우, 컬럼명1 은 1에 해당, 오름차순 정렬, 1차 정렬
-- 컬럼명2 는 2에 해당, 오름차순 정렬, 2차 정렬
-- 컬럼명3 은 3에 해당, 내림차순 정렬, 3차 정렬
-- 1차 정렬 후 2차 정렬 진행, 2차 정렬 후 3차 정렬 진행된다.
-> 주의.
select 의 순서를 명령어 처리순서가 이전단계에서 사용불가!-- >>>>> 오류 <<<<< select 컬럼명1 as "1", 컬럼명2 "2" -- 첫글자 숫자 "" 표시, as 생략 from 테이블명(또는 뷰명) where 1(select순서) > 1000 || "2" < 500; -- 명령어의 처리순서가 select 가 where 보다 뒤에 있으므로 -- 오류가 발생한다.
select 컬럼명~~~~~~~~~~~~~~~~~~~~~1 as "1컬럼명"
-- 첫글자가 숫자이므로 "" 을 반드시 붙여야 한다.
from 테이블명(또는 뷰명)
order by "1컬럼명" asc; -- 1컬럼명에 해당하는 컬럼 오름차순 정렬
-- 별칭이 공백, 특수문자, 첫글자가 숫자가 아닌 경우
-- ""을 지워도 무방하다.
null 인 경우 => 컬럼명 is null
null 이 아닌 경우 => 컬럼명is not null 또는 not 컬럼명 is null
where nvl(department_id, -9999) != -9999;
-- deparment_id 가 null 이면 -9999 를 띈다.
-- 조건은 != -9999 이므로 null 이 아닌 사람을 메모리(RAM)에 로딩
where 조건1 and 조건2
-- 예시)
where nvl(department_id,-9999) = 80 and salary >= 10000;
-- department_id 의 null 은 -9999 로 표시
--> department_id 가 80인 사람 중 salary 가 10000 이상인 사람
where 조건1 or 조건2
-- 예시)
where department_id is null or salary >= 10000;
-- null 은 ' = ' 사용 X
-- null 은 is null 로 사용 O
--> department_id 가 null 인 사람들과
-- salary 가 10000 이상인 사람들 모두
where 컬럼명 IN(조건1, 조건2)
-- 예시)
where nvl(department_id,-9999) in (80,-9999)
-- department_id 의 null 은 -9999 로 표시
--> department_id 가 '80 과 -9999' 인 사람들 모두
-- IN( ) 은 비교연산자 '='와 동일하기 때문에
-- null 값이 있을 경우 nvl함수를 반드시 사용해야 한다.
where 컬럼명 NOT IN(조건1, 조건2)
-- 또는
where NOT 컬럼명 IN(조건1, 조건2)
--> 컬럼에 NULL 이 있는 경우
where NVL(컬럼명,-9999) NOT IN(조건1, 조건2)
-- 또는
where NOT NVL(컬럼명,-9999) IN(조건1, 조건2)
-> 주의.
AND 와 OR이 혼용되어 사용될 경우, 연산의 우선순위에 따라 AND 가 먼저 실행된다.
Ex) 사칙연산에서 + 와 × 가 있으면 × 먼저 진행
=> OR을 먼저 실행하게 하고 싶을 경우 ( ) 을 사용!!
-> 비교연산자 : > , < , >= , <=
-> between A and B : A 이상 B 이하
-> 특징 : 숫자, 문자, 날짜 까지 모두 범위연산자 사용 가능 O
where first_name >= 'J' and first_name <= 'S'
where first name between 'J' and 'S'
RR
-> 50 미만은 2000 년대로 간주
-> 50 이상은 1900 년대로 간주
YY
-> 2000 년대로 간주
select sysdate -- RR/MM/DD
, to_char(sysdate, 'yyyy-mm-dd')
, to_char(sysdate, 'hh24:mi:ss')
, to_char(sysdate, 'yyyy-mm-dd hh24:mi:ss')
, to_char(sysdate, 'yyyy/mm/dd hh24:mi:ss')
, to_char(sysdate, 'yyyy/mm/dd am hh:mi:ss')
, to_char(sysdate, 'yyyy/mm/dd pm hh:mi:ss')
-- hh24 => 24시 기준
-- hh => 12시 기준
-- am, pm => 오전 오후 표시 (무엇을 쓰든 표시된다.)
to_date('2024-02-18 09:00:00', 'yyyy-mm-dd hh24:mi:ss')
where '24/02/01' <= date and date <= '24-03-01'
-- '24-02-29' 가 아닌 그 다음날을 입력해주어야 한다!
-- Because, '24-02-29' 입력시, 24-02-29 00:00:00 으로 인식하여
-- 그 이후는 포함시키지 않기 때문이다.
Ascii | A | a | 0 | ' ' (공백) Char | 65 | 97 | 48 | 32
select ascii('A'), chr(65)
from dual;
-- 출력 : 65 A
update 테이블명 set 컬럼명 = 데이터
where 조건;
commit;
-- 예시)
update employees set first_name ='혜정', last_name = '양'
-- 메모리(RAM) 상에서 변경, 디스크(DISK) 변경 X
commit;
-- 메모리(RAM) 상에 저장한 것을 디스크(DISK) 에 저장하기 위해 커밋
-- 커밋이 완료되면, 다른사람들이 읽을 때 내가 수정한 모습이 보인다.
rollback 은 'update 취소' 와 같지만, update 된 것을 commit 한 상태라면 rollback을 진행하여도 변경이 안된다.
like 연산자와 함께 % 와 _ 사용 이때, % 와 _ 는 'wild character' 라고 부른다. % : 글자수와 관계 X => 글자가 있든지 없든지 관계 x _ : 반드시 글자 1개(문자, 숫자 등 관계 X)
where 컬럼명 like 'F_e%';
-- 첫번째 글자 F, 두번째 글자 상관없음, 세번째 글자 e
-- 이후 글자가 있든 없든 상관없음
where 컬럼명 like '%99.99\%%' escape '\';
--> escape 문자로 \ 를 주고 있다(가정)
-- 탈출시키고 싶은 % 나 _ 앞에 escape 문자를 둔다.
-- 이 경우 99.99% 가 컬럼명에 들어있으면 이 조건이다.
-- escape 문자는 아무거나 상관없지만 숫자나 문자대신 특수문자 권장
-- 숫자나 문자는 혼돈을 야기할 수 있기 때문
create table 테이블명
(컬럼명1 유형, 컬럼명 유형);
-- 유형은 varchar2(숫자) 보다 Nvarchar2(숫자) 사용
-- 영어는 1byte 이지만 한글사용 시 혼동될 수 있기 때문이다.
alter table 테이블명
add 컬럼명2 유형;
-- 유형을 모를 시, '참고' 주소를 통해 확인
insert into 테이블명(컬럼명1, 컬럼명2)
values ('컬럼명1에 들어갈 내용', '컬럼명2에 들어갈 내용');
delete from 테이블명
where 컬럼명 = '컬럼명에 들어간 내용'
delete from 테이블명
명령어의 처리순서, 유형 : https://velog.io/@jjoung-2j/%EB%AA%85%EB%A0%B9%EC%96%B4-%EC%B2%98%EB%A6%AC-From-Where-Select
-> local_hr에서작업한것