SQL문을 공부하면서 제 기준에 몰랐던 부분을 정리한 것입니다.
5.
6.
7.
1.
select '친애하는 '||ename||'씨! '||chr(10)||'당신의 급여가 '||sal||'에서 ...'as message
from emp;
--cha(10)
: 엔터의 의미
2.
select ename|| q'!'s house is bigger than Tom's!' from emp;
select ename|| q'['s house is bigger than Tom's]' from emp;
select ename|| q'X's house is bigger than Tom'sX' from emp;
select ename|| q'1이 안에 쓰는 건 아무거나 다 오는건가?1' from emp;
select ename|| q'1/*-!@~#%^%$^&%&$%#&$@#`';?>,./.,1' from emp;
--q'1.....1'
...안에 쓰는건 아무거나 다 나온다.
10g부터 사용가능
9i까지는 '를 사용하기 위해 '를 한번 더 써서 ''게 썼음
3.
Where절의 기능
: T, F, N을 리턴한다. T를 리턴할 경우에만 "Candidate row(후보행)"이 리턴된다.
해당row의 논리연산 후 값이 T면 출력, F면 아니어서 비출력, N이면 몰라서 비출력
4.
asc : ascending 상승desc : descending 하강
5.
select employee_id, last_name, job_id, department_id
from employees
where department_id = 90;
--이부분을 predicate이라고 부른다.
6.
select * from emp where ename like 'S%';
--대문자 S로 시작하는 놈
select * from emp where ename like '%A%';
-- 대문자 A가 들어가는 놈
7.
select * from emp where ename like '1234';
--4개의 문자로 이루어진 놈
select * from emp where ename not like '1234';
--4개의 문자로 이루어지지 않은 놈
8.
DROP SEQUENCE
DROP SYNONYM
DROP TABLE
DROP TABLESPACE
DROP TRIGGER
DROP TYPE
DROP TYPE BODY
DROP USER
DROP VIEW
..등은 해당 객체를 없에는 것이다. table, type등을 데이터베이스 객체(object)라고 한다.일단은 데이터베이스 객체라고 한다라고까지만 알자.
10.
13.
9.
drop table t1 purge;
create table t1 (col1 varchar2(10));
insert into t1 values ('AAA');
insert into t1 values ('ABA');
insert into t1 values ('ACA');
insert into t1 values ('A_A');
commit;
위의 테이블에서 A_A를 찾아라.select * from t1
where col1 like '%A_A%';
--언더바가 문자개수하나를 의미하므로 4개의 row가 모두 select된다.
select * from t1
where col1 like '%A!_A%' escape '!';
--escape라는 옵션을 사용하여 !를 일종의 키워드로 만들고, !뒤의 하나의 문자를 문자개수하나를 의미하는 언더바가 아닌 문자그대로 인식하도록 한다.
10.
select * from emp
where hiredate >= '01-jan-82';
--입사일이 82년 1월 1일보다 큰 놈
select * from emp
where hiredate between '01-jan-82' and '31-dec-9999';
--82년 1월 1일에서 9999년 12월 31일 안에 입사한 놈
select * from emp
where hiredate between '01-jan-82' and sysdate;
--82년 1월 1일에서 시스템날짜(오늘)까지 입사한 놈
--sysdate는 시스템의 현재날짜를 리턴
select * from emp
where to_date('01-jan-82') - hiredate <= 0;
--82년 1월 1일에서 입사일을 뺀 수가 0보다 작은 놈, 즉, 입사일이 82년 1월 1일 보다 미래인 놈
11.
select empno, ename, sal as salary
from emp
where salary > 2000;
--실행안됨, where절의 salary를 sal로 바꿔야함
12.
select empno, ename, sal as salary
from emp
where sal > 2000
order by salary;
--실행됨, where절에는 alias를 사용할 수 없고, order by절은 alias를 사용할 수 있다.
13.
select * from emp
order by substr(ename, 2,1);
--ename의 두번째글자를 기준으로 정렬
14.
select empno,
ename,
hiredate as hd1,
to_char(hiredate, 'month') as hd2,
to_char(hiredate, 'mm') as hd3
from
emp
order by to_char(hiredate, 'mm');
--hd1은 'dd-mm-yy'의 형태로 출력, hd2는 월만 단어 전체가 출력(january처럼), hd3은 01, 10, 12 의 형태로 출력
--그것을 mm의 형태를 기준으로 정렬--hd3의 숫자의 오름차순으로 정렬됨
select empno,
ename,
hiredate as hd1,
to_char(hiredate, 'month') as hd2,
to_char(hiredate, 'mm') as hd3
from
emp
order by to_char(hiredate, 'month');
--hd2의 january형태로 출력된 것을 기준으로 정렬
--april, december, february 순으로 출력됨
15.
select user, sysdate, ename, lower(ename), instr(ename, 'L'), substr(ename, 2,3)
from emp;
--instr(ename,'L') 의 의미
--ename컬럼의 데이터들에서 l(엘)이 첫번째로 위치한 곳의 위치를 반환
--예를 들어 allen이라면 2가 반환됨.
16.
select ltrim('SOS', 'S') from dual; --SOS에서 왼쪽에서부터 S를 찾아 지운다. OS가 결과로 남는다.
select ltrim('SSOS', 'S') from dual; -- SSOS에서 왼쪽에서부터 S를 찾아 지운다. 또 S가 나오면 또 지운다. OS가 결과로 남는다.
select rtrim('SOS', 'S') from dual; -- SOS에서 오른쪽에서부터 S를 찾아 지운다. OS가 결과로 남는다.
select rtrim('SOSS', 'S') from dual; --SSOS에서 오른쪽에서부터 S를 찾아 지운다. 또 S가 나오면 또 지운다. OS가 결과로 남는다.
select ltrim('SOS', 'SO') from dual; --SOS에서 왼쪽부터 S와 O를 찾아 지운다. S만 남는다.
select ltrim('xyxYxyxY', 'xy') from dual;
--왼쪽에서부터 x와 y를 찾아서 지운다. xyxYxyxY에서 왼쪽부터 x와 y가 다 없어지고 대문자 Y부터 맨 끝까지 남는다.
--즉, xy를 지운다는 것이. xy를 지우는 것이 아니라, x와 y를 지우는 것이다.
17.
select ename, substr(lower(ename), 1,3)
from emp;
--ename을 소문자로 바꾸고 첫번째글자 부터 세번째 글자까지 출력
댓글 없음:
댓글 쓰기