0. 칼럼 너비줄이기
COL 칼럼명 FROMAT 999
COL 칼럼명 FORMAT A10
0-1. 전체 테이블 길이 세팅
SET LIN 200
1, pseudo column 의사열 -query가 가능한 열
-rownum을 이용하여 검색된 로우의 수를 검색할 수 있다
-rownum은 각 검색된 행의 일련번호로써, order by에 의한 정렬 이전에 부여된다. <<중요
-rowid는 테이블내의 특정한 행을 유일하게 구별해주는 값으로 데이터타입은 rowid이다.
2. where
-검색결과에 대한 제한을 둘때
-where는 from 뒤에 옴
-문자열과 날짜는 싱글쿼터
-where절 생략가능. 생략시 모든 행이 검색
-where 조건식의 결과가 true인 행만 선택
-where 별칭사용 불가
-테이블 데이터를 추출하는 필터
-조인시 테이블들을 연결하는 조건으로 사용
-산술연산 비교연산, 컬럼, 숫자문자상수, like, in, between, is null
-함수, 논리연산자, any, all => 조건식의 표현식
select 컬럼 [as] 별칭
from 테이블명 별칭 ;
where condition(s)
#밸류는 꼭 대문자쓰기!! FORD
#잘려서 짜증난다. LIN 이용해서 길게 늘려주기
SHOW LIN(ESIZE)
=> 디폴트는 80
SET LIN 160
=> 중간에 잘리지 않고 길게 나온다.
2. 사원테이블에서 급여가 3000이상인 사원번호, 이름, 급여를 리턴
#컨디션 주는것 때문에 대문자로 사용하는것이 편하다.
3, between a and b (a<b)
not between a and b: a보다 작고, b보다 큰
4. in (여러값 중 하나와 일치하는 값)
in =any
not in !=all
in(값1, 값2, 값3) 형태- 비교값이 하나더라도 ()와 함께 사용, 다양한 데이터타입 가능
4-1. 사원테이블에서 사원번호가 7902, 7788,7566인 사원사번, 이름,급여, 입사일 출력
5. like (문자의 패턴이 일치하는 값)
% 임의의 길이 문자열(공백문자가능),
_ 한글자
escape: 검색할 문자에 % _ 문자를 포함시
6. 이름이 D로 끝나는 사원, 두번째 글자가 A인 사원
7. 테이블 생성
create table ab (name varchar2(10)); #ab라는 테이블 생성
drop table ab; #테이블 삭제
insert into ab values(' 1234 '); #1234라는 값 삽입
insert into ab values(' b%gildong'); #like로 못찾음. escape 이용
escape 쓰는법:
select * from ab where name like '%#%%' escape '#'; #% % 사이에서 #뒤에 있는거 찾겠다.
select * from ab where name like '%!%%' escape '!'; #얘도 동일 (value 에 없는걸로 escape 설정)
8 사원테이블에서 커미션이 null인 사원 출력 (is null / is not null) ==연산자 불가
select * from emp where comm is null;
9. 함수 : 단일행(문자함수, 숫자, 날짜 변환, 기타), 다중행
문자함수
UPPER, LOWER, INITCAP(첫문자만 대문자), CONCAT(일렬로 합치기),SUBSTR, INSTR(특정문자열의 위치 숫자로 리탄) ,LENGTH, CHAR, ASCII
10. 부서번호가 10인 사람들의 사원번호, 이름, 사원번호+이름 출력 : CONCAT
11. 사원테이블에서 이름첫글자가 K보다 크고 Y보다 작은 사원들을 이름순으로 정렬
SELECT * FROM EMP
WHERE SUBSTR(ENAME,1,1) > 'K' AND SUBSTR(ENAME,1,1) <'Y' #'K' < 'Y' 는 안됨. AND 조건으로 각각 다룰것
ORDER BY ENAME;
selecct substr('ABCDEFG', -5, 4 FROM DUAL; => CDEF
SELECT 'ABCDEF', INSTR('ABCDEF', 'Z') RES FROM DUAL; => 0
SELECT INSTR( 'CORPORATE FLOOR' ,' OR', 3, 2) => 14
(OR이 총 3SET가 있는데, 3번글자 뒤에서부터, 2번째 OR의 INDEX를 찾아라 _ 띄어쓰기 공백도 포함)
LTRIM은 되는데 TRIM으론 안돼