본문 바로가기

Database/Oracle

DML 정리

Select 컬럼명, 컬럼명, … from 컬럼명을 가진 테이블명 where

 

select ename, job, hiredate from emp;

select ename “이름”, job “직책”, hiredate from emp;

이름       직책      HIREDATE

---------- --------- --------

SMITH      CLERK     80/12/17

ALLEN      SALESMAN  81/02/20

WARD       SALESMAN  81/02/22

JONES      MANAGER   81/04/02

 

select lower(ename) as "이 름", sal+100 from emp;

이 름         SAL+100

---------- ----------

smith             900

allen            1700

ward             1350

jones            3075

컬럼명이 조금만 조작되도 바뀌어서 보임

 

select는 컬럼만 제한을 둘 수 있음. . 데이터는 변하지 않음. 그래서 where 조건을 줌

where 절을 행 제한을 두는 조건절 -  분석을 제일 먼저 함

 

튜닝하는데 제일 중요, 인덱스를 잘 걸어야 성능이 좋아

Select 컬럼명, 컬럼명, … from table_name where 컬럼명 연산자 조건

Between이 좋을까? And가 좋을까?

Between and로 변환된 다음 실행

 

명령이 같아도, 대소문자를 바꿔서 쓰면 실무에서는 다시 분석하기 때문에 한 가지로 통일해서 쿼리 날려

 

--조건절:(데이터)제한 조건절

--where 컬럼명 조건(연산자)***

 

--연산자 종류

--1.산술 연산자: +,-,*,/,mod(10,3)//나머지 구하는 함수, 소스 딸려 나옴

--2.관계 연산자: <,>,>=,<=,=,!=(<>)

--3.논리 연산자: not(3개 중 최우선), and(or보다 우선), or

--4.문자열 연산자: like

 

--10번 부서 사원 정보

select * from emp

where deptno=10;

 

--급여가 2000~3000인 사원 정보

select * from emp

where (sal>=2000 and sal<=3000);

 

--job salesman, manager인 사원 정보=>결과 안나와.

--쿼리는 대소문자 구분을 안하지만

--데이타는 대소문자 구분을 해

select * from emp

where lower(job)='salesman' or lower(job)='manager';

 

--job salesman, manager인 사원 정보

select * from emp

where job='SALESMAN' or job='MANAGER';

 

--job salesman, manager인 사원 정보 - 비교를 위한 대소문자 통일

select * from emp

where lower(job)='salesman' or lower(job)='manager';

 

--함수 조작 등 하면 인덱스 적용 못함. 튜닝을 위해서라면 보통 때는 안쓰는 게 좋아

 

--in 연산자

select * from emp

where job in ('salesman', 'manager');

--or랑 같은 결과를 내지만, or보다는 in이 길어짐

반응형

'Database > Oracle' 카테고리의 다른 글

튜닝 시 성능에 미치는 sql..알아둘 것  (0) 2009.01.15
SQL 명령  (0) 2009.01.15
sqlplus 명령&팁 정리  (0) 2009.01.15
오라클 수행 팁  (0) 2009.01.15
오라클 설치, 삭제  (0) 2009.01.15