2013년 2월 11일 월요일

[DB] SELECT


기본적인 SELECT 구문 (SQL문 마지막에는 세미콜론이 항상 붙여야 하지만 OracleXEUniv 버전에서는 안붙여도 된다. 하지만 꼭 세미콜론을 붙이는 습관을 가지자.)

- table 정보 출력
SELECT * FROM TAB;

- 해당 테이블의 구조(정보)를 알고자 할때
DESC (해당테이블);

- 사원테이블의 전체 컬럼내용에 대한 데이터 출력
SELECT * FROM employees;

- 사원테이블 중 원하는 컬럼내용(employee_id, last_name, salsry)에 대한 데이터 출력
SELECT employee_id, last_name, salary FROM employees;

- 컬럼명 대신 별칭으로 출력
SELECT employee_id "사원번호", last_name AS "사원명", salary 연봉 FROM employees;
AS는 일반적으로 생략되고 이중인용부호는 공백이 있는 경우에 사용한다. 따라서 공백이 없다면 단순히 컬럼명 뒤에 원하는 별칭을 붙이면 된다.


WHERE 조건 

- 사원테이블에 성이 King인 사람 찾기
SELECT * FROM employees WHERE last_name = 'King';(대소문자 구문하고 홀따옴표 중요)

- AND연산자를 이용해 봉급이 10000 이상 20000 이하인 사람의 사원번호와 성, 봉급 출력
SELECT employee_id, last_name, salary FROM employees
WHERE salary >= 10000 AND salary <= 20000;

- BETWEEN연산자를 이용하여 위에 예제와 같은 데이터 출력
SELECT employee_id, last_name, salary FROM employees
WHERE salary BETEWEEN 10000 AND 20000;

- OR연산자를 이용하여 직업 아이디가 FI_MGR 이거나 FL_ACCOUNT인 사람의 사원번호, 고용일, 봉급, 직업 아이디 출력
SELECT employee_id, hire_date, salary, job_id FROM  employees
WHERE job_id = 'FI_MGR' OR job_id = 'FL_ACCOUNT';

- IN연산자(해당하는 컬럼 모두 출력)를 이용하여 직업 아이디가 'FI_MGR', 'FL_ACCOUNT', 'SA_MGR' 인 사람의 사원번호, 고용일, 봉급, 직업 아이디를 출력
SELECT employee_id, hire_date, salary, job_id FROM employees
WHERE job IN('FI_MGR', 'FL_ACCOUNT', 'SA_MGR');

- DISTINCT (중복 제거)를 사용하여 직업 아이디를 출력
SELECT DISTINCT job_id FROM employees;

- 비교연산자를 사용하여 97년도에 입사한 사원의 모든 정보를 출력
SELECT * FROM employees WHERE hire_date >= '1997/01/01' AND hire_date <= '1997/12/01';

- 부서테이블에서 부서번호가 10인 데이터 모두 출력
SELECT * FROM departments WHERE department_id =10;

- NOT연산자를 이용하여 위의 예제가 10이 아닌 데이터 모두 출력
SELECT * FROM departments WHERE NOT department_id = 10;

- 위의 예제에서 또다른 not 사용해 출력
SELECT * FROM departments WHERE department_id <> 10;

- LIKE연산자(검색과 관련해 자주 쓰임)를 사용하여 97년에 입사한 사원의 아이디, 성, 고용일을 출력
SELECT employee_id, last_name, hire_date FROM employees
WHERE hire_date LIKE '97%';

- LIKE 또다른 예제-
1. last_name이 K로 시작하는 row를 출력
SELECT employee_id, last_name, hire_date FROM employees
WHERE last_name LIKE 'K%';
2. last_name이 o로 끝나는 row를 출력
SELECT employee_id, last_name, hire_date FROM employees
WHERE last_name LIKE '%o';
3. last_name 중간에 a를 포함하지 않는 사원의 모든 정보를 출력
SELECT * FROM employees WHERE last_name NOT LIKE '%a%';

-ORDER BY(정렬)을 이용하여 고용일을 오름차순으로 정렬하고 사원 아이디, 성, 고용일을 출력
SELECT employee_id, last_name, hire_date FROM employees
ORDER BY hire_date ASC;

댓글 없음:

댓글 쓰기