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 |