본문 바로가기

(Before)BitSchool

2014/5/15 데이터베이스 - 오라클

반응형

select * from  --> * : 전체모든컬럼  , from : ~로 부터  

from절에는 테이블 혹은 테이터집합

모든 SQL 문장은 세미콜론(;)으로 끝낸다.

SQL문장은 한 줄로 입력하거나 여러 줄로 보기 좋게 나누어 입력한다.

SQL문장은 대소문자를 가리지않는다. 단, 데이터는 구별한다.


select 10+10 from dual;

일반 수식을 구하기 위해서는 dual이라는 가상테이블을 이용해서 계산하면 값이 출력된다. 


Null Value

0이 아닌 참조하는 값이 없는 경우가 Null이라고 한다.

산술연산 수식에서 null과 함께 계산하면 Null이 나온다.


nvl함수

select nvl(comm,0) from emp;

comm이 null값인 경우 0으로 교체해주는 함수.


column Alias

select sal*12+nvl(comm,0) as 연봉 from emp;    -  as는 생략가능

select ename "연 봉", sal*12+nvl(comm,0) 연봉 from emp;

"" 쌍따옴표를 사용하면 공백이나 특수문자를 포함할수 있다.



Concatenation 

붙여서 쓸수 있다.

select ename||'님의 연봉은||sal from emp;

select ename||hiredate from emp;



Literals

상수값을 의미한다.

Character literal은 작은 따옴표, Integer literal은 그냥 써준다.



select sysdate, user from dual;    -  sysdate는 현재 시간을 나타낸다.

select distinct deptno from emp;    -    distinct는 중복 제거

select distinct deptno, job from emp; - 두개이상의 속성을 써서 쓸수도 있다.


case - when - then

Java의 else - then -  if문과 비슷하다.

select ename, case deptno when 10 then sal*1.1 when 20 then sal*1.2 end from emp;

    

where절

특정 row만 선택해서 사용할때 사용.

select * from emp where sal>2000;                                      

select * from emp where ename='SMITH';


between

~사이에 값을 구할수 있다.

범위값을 정해서 구할수 있다.


81년도에 입사한 사람을 출력하시오.

select * from emp where hiredate between '81/01/01' and '81/12/31';


substr(속성,검색시작인덱스,검색글자수)

select * from emp where substr(hiredate,0,2) = '81';    -   문자열안에서 검색을 한다.




비교연산자중에서 같지 않음을 나타내는<>연산자는 모든 운영체제에서 사용가능하며, 운영체제에 따라 !=나 ^=도 사용가능하다.


select * from emp where deptno in(10,20);

select * from emp where deptno =any(10,20);

in과 =any는 동일한 결과를 같는다.

any는 각각의 값을 비교

select * from emp where deptno =any(10,20);

두가지를 다 만족시키는 결과값이 나온다.

select * from emp where deptno >=all(10,20);

all은 두가지 값이 공통된 값을 출력한다.


문제

BOSTON이나 DALLAS에 위치한 부서를 출력하시오.

- select deptno from dept where loc in('BOSTON','DALLAS');

30,40번 부서에 속하지 않는 사원들을 출력하시오.

- select ename from emp where deptno <>all(30,40);

DALLS의 20번부서, 또는  CHICAGO의 30번 부서를 출력하시오.

- select dname from dept where loc =any('DALLAS','CHICAGO') or deptno =any(20,30);


like 검색

select * from emp where ename like 'S%';  - S로 시작하는 값을 모두 출력한다.

select * from emp where ename like '%S';  - S로 시작하는 값을 모두 출력한다.

select * from emp where ename like '%S%'; - S 가 들어가는 값을 모두 출력한다.


부서명에 X_Y가 포함되어 있는 부서를 출력하시오.

select dname from dept where dname like '%X/_Y%' escape '/';


'%'는 0개 이상의 문자를 대표하고 '_'는 1개의 문자를 대표한다.


isNull

null값을 가진 속성을 출력한다.

select * from emp where comm is null;

select * from emp where comm is not null; - null이 아닌애들


AND

select * from emp where deptno =10 and sal >3000;


ORDER BY 절

정렬 

asc는 오름차순, desc는 내림차순이다.

select * from emp where sal>2000 order by 1;

1을 입력하면 첫번째 속성을 정렬한다.


select * from emp order by sal, ename desc;   - sal을 먼저 정리하고 중복이 있으면 ename을 내림차순으로 정렬하라.

null 값은 오름차순의 경우 맨 마지막에, 내림차순의 경우 맨 처음에 출력된다.

select ename, sal from emp order by 2 desc, 1;  2번째인 sal을 먼저 내림차순하고



SQL Functions

ABS() - 절대값

select abs(-4) from dual;

CEIL() - 

MOD() - 나머지


CONCAT(s1,s2) - 문자열을 붙임.

select 'ABC'||'DEF' from dual; 과 같다.

LOWER() - 소문자변환

UPPER() - 대문자변환 

LPAD(s1,n,s2) - 왼쪽에 빈공간 n개 찍어주고 s1의 값이 나오고 s2는 나머지 공간이다.

RPAD(s1,n,s2) - 오른쪽에 빈공간 n개 찍어주고 s1의 값이 나오고 s2는 나머지 공간이다.

LTRIM(s,c) - 왼쪽에 있는 공백문자 빼기

RTRIM(s,c) - 오른쪽에 있는 공백문자 빼기












반응형