IT기술/Oracle

1 SELECT 문장을 이용하여 원하는 데이터 가져오기

dobbby 2013. 11. 6. 16:41
반응형

1. DESC 명령어

특정 테이블에 어떤 컬럼이 있는 지 조회하기

DESC emp;


2. SELECT - 데이터 조회하기

(1) 모든 컬럼 조회하기

SELECT * FROM emp;


* 컬럼길이 조정하기

데이터가 숫자일 경우

COL empno FOR 9999

   컬럼명         숫자 네자리


데이터가 문자일 경우

COL ename FOR a8

   컬럼명        문자 8바이트


SET LINE 200;


한 화면에 50줄까지 나오게 설정

SET PAGESIZE 50;


(2) 원하는 컬럼만 조회하기

SELECT    empno, ename

FROM       emp


(3) 표현식(Expression)을 사용하여 출력하기

리터럴(literal) 상수(문자)

SELECT     name, '아무거나'

FROM        professor ;


(4) 컬럼 별칭 사용하여 출력하기

SELECT    studno "학번", name AS "이름", profno 지도교수번호

FROM     student;

다양한 방법이 있지만 공백과 대소문자는 " "를 꼭 써주어야 한다.


(5) DISTINCT - 중복된 값 제거하고 출력하기

SELECT DISTINCT deptno

FROM    student;

DISTINCT는 반드시 SELECT 뒤에 써주어야 한다.

1개의 컬럼에만 적어도 모든 컬럼에 적용되어 성능이 저하된다.

9i 까지는 정렬을 해서 심각한 속도저하가 발생했으나 

10g부터는 HASH알고리즘을 사용해서 성능이 향상되었다.


(6) 연결연산자 사용 ||

SCOTT> SELECT name||position

2    FROM    professor;

두개의 컬럼을 마치 하나의 컬럼인 것처럼 출력


(7) 산술연산자 사용 +, -, *, /

SCOTT> SELECT ename, sal, sal+100, (sal+100)/2

2    FROM    emp;

우선순위는 ()사용


(8) WHERE 절을 활용하여 원하는 조건만 조회하기

SEELCT ename, sal 

FROM    emp

WHERE    ename = 'SCOTT'

AND        hiredate = '23-MAY-01'

AND        deptno = 10;

문자나 날짜를 조회할 경우 ' ' 홑따옴표 사용

문자는 대소문자를 구분한다.


(9) 다양한 연산자를 활용하는 방법

=                                     같은 조건 검색

!=, <>                              같지 않은 조건 검색

>                                    큰 조건을 검색

>=                                   크거나 같은 조건 검색 (순서 주의)

<                                    작은 조건 검색

<=                                   작거나 같은 조건 검색 (순서 주의)

BETWEEN a AND b            a와 b 사이에 있는 범위 값을 모두 검색

         (문자로 인식하기 때문에 숫자일 경우 비교연산자가 성능이 더 좋다.)

IN(a,b,c)                          a이거나 b이거나 c인 조건 검색

LIKE                                특정 패턴을 가지고 있는 조건 검색

   ( WHERE name LIKE '김%' 글자 수 제한 없음

   '김_'  한글자만 올수 있다.

    '%김%' 이렇게 짜면 성능저하를 가져온다.)

IS NULL / IS NOT NULL     Null 값을 검색 / Null이 아닌 값을 검색

a AND b                          a 조건과 b 조건을 모두 만족하는 값만 검색

a OR b                            a 조건이나 b 조건 중 한가지라도 만족하는 값을 검색

NOT a                             a가 아닌 모든 조건을 검색


(10) ORDER BY 절을 사용하여 출력 결과 정렬하기

한글: 가, 나, 다, 라...

영어: A, B, C, D...

숫자: 1, 2, 3, 4...

날짜: 예전날짜부터 최근날짜로 정렬

ORDER BY height ;

ASC 는 오름차순 ( 안써주면 자동 ASC )

DESC 는 내림차순 정렬

ORDER BY 2;

SELECT 절에서 2번째 컬럼 순으로 정렬하라는 의미


(11) 집합 연산자

UNION              두 집합을 더해서 결과를 출력, 중복 값 제거하고 정렬함

UNION ALL      두 집합을 더해서 결과를 출력, 중복 값 제거안하고 정렬 안함 (당연히 속도가 UNION에 비해 빠름)

INTERSECT     두 집합의 교집합 결과를 출력, (9i까지는 정렬했으나 10g부터는 안함)

MINUS             두 집합의 차집합 결과를 출력, 정렬함, 쿼리의 순서가 중요함.





[출처] 다양한 예제로 쉽게 배우는 오라클 SQL과 PL/SQL 서진수 저



반응형