'Oracle SQL'에 해당되는 글 2건

  1. 2008.09.02 sql

sql

|

DDL  CREATE, ALTER, DROP
DQL  SELECT 
DML  INSERT, DELETE, UPDATE
DCL  GRANT, REVOKE


-- 주석 [SQL 공통]
/*
  SELECT 컬럼명1, 컬럼명2, 모든컬럼(*) FROM 테이블 WHERE 조건
  INSERT INTO 테이블(컬럼명1, 컬럼명2, ...) VALUES (컬럼값1, 컬럼값2, ...)
  UPDATE 테이블 SET 컬럼1=변경값, 컬럼2=변경값, ....., WHERE 조건
  DELETE FROM 테이블 WHERE 조건
*/



SELECT


SELECT * FROM employees;


-- Database에서 한글 사용방법 : 그냥 사용, " "

-- 별칭 사용 : 컬럼명 별칭

-- " " 은 별칭할때 사용
SELECT employee_id "사번", first_name "이름" FROM employees;


-- 컬럼 합치기
-- Oracle 전용 : ||
SELECT last_name || ' ' || first_name as "Name" FROM employees;


-- 컬럼 생성
SELECT 'No Column', last_name, first_name FROM employees;


-- 컬럼 연산(숫자)
SELECT salary+100 FROM employees;


-- 컬럼 연산(날짜)
SELECT hire_date "입사일", hire_date+1 "수정" FROM employees;


-- NULL 값
-- nvl : NULL값을 다른 값으로 대체
SELECT nvl(commission_pct, 0) FROM employees;


-- 행조건 AND, OR
SELECT * FROM employees WHERE salary > 10000 AND (department_id = 90 OR department_id = 100);


--예제 : 입사일자가 92년 1월 1일 이후, 연봉이 100,000이상으로 검색되는 사람의 [이름, 연봉]
SELECT first_name || ' ' || last_name as "Name", salary*12 "연봉" FROM employees
  WHERE hire_date >= '92/01/01' AND salary*12 >= 100000;


-- 행조건으로 NULL 값 찾기
SELECT * FROM employees WHERE commission_pct IS NULL;
SELECT * FROM employees WHERE commission_pct IS NOT NULL;


-- 문제1. 1999년도에 입사한 사람을 찾으시오
SELECT * FROM employees WHERE '99/01/01' <= hire_date AND hire_date <= '99/12/31';


--LIKE
--1. n을 포함하는 last_name
SELECT * FROM employees WHERE last_name LIKE '%n%';


--2. 첫번째 글자는 아무것, 두번째는 l, 그 뒤로 n을 포함하는 last_name;
SELECT * FROM employees WHERE last_name LIKE '_l%n%';



--정렬
--ASC(오름차순, A-Z, 기본), DESC(내림차순, Z-A)
SELECT * FROM employees ORDER BY first_name DESC;


--예제 1. 월급이 10000 이상, phone_number가 011로 시작, hire_date가 97로 시작
SELECT * FROM employees
  WHERE salary > 10000
    AND phone_number LIKE '011%'
    AND hire_date LIKE '97%'
  ORDER BY first_name DESC;
 
--예제 2. 급여가 가장 큰 순서부터 정렬
SELECT * FROM employees
  ORDER BY salary DESC;
 
 
--SQL 함수(숫자, 문자, 날짜) → 형변환 가능
--1. 숫자
SELECT commission_pct,
    round(commission_pct, 1),         -- 소수점 2번째자리, 반올림
    ceil(commission_pct),                -- 무조건 올림
    trunc(commission_pct),              -- 무조건 버림
    to_number('10'),                         -- 숫자로 형변환
    '10'                                               -- 문자 10
  FROM employees
  WHERE commission_pct IS NOT NULL;


--2. 문자
SELECT last_name, salary,
  last_name || ' ' || first_name AS Name,      -- 문자열 합치기
  substr(last_name, 1, 3),                       -- 문자열 자르기(문자열, 시작위치, 자를 갯수)
  replace(last_name, 'n', 'N'),               -- 문자열 찾아서 바꾸기(문자열, 바꾸기 전, 바꾼 후)
  instr(last_name, 'n'),                           -- 문자열의 위치 찾기(문자열, 찾을 문자)
  length(last_name),                               -- 문자열 길이
  -- DECODE(VALUE, IF1, THEN1, IF2, THEN2..., DEFAULT)
  decode(salary, 24000, salary*0.1, 20000, salary*0.2, 15000, salary*0.3, salary*0.5)
  FROM employees;
 
--예제 1. substr을 써서 97년도 입사자
SELECT * FROM employees
  WHERE substr(hire_date, 1, 2) = '97';


--예제 2. employees 테이블 hire_date를 표기방식을 년/월/일 → 97년 10월 30일
SELECT hire_date,
  substr(hire_date, 1, 2) || '년 ' || substr(hire_date, 4, 2) || '월 ' || substr(hire_date, 7, 2)  || '일' AS "가공후"
  FROM employees
  WHERE substr(hire_date, 1, 2) = '97';
 
--예제 3.
SELECT job_id, decode(job_id, 'AC_ACCOUNT', '회계', 'AC_MGR', '관리자', '직업없음')
  FROM jobs;



--날짜
SELECT sysdate,                                                                -- 오늘 날짜 출력
       hire_date,
       add_months(hire_date, 1),                                         -- 달 증가
       sysdate - hire_date,                                                       -- 근무 일수
       to_char(ceil((sysdate - hire_date)/365)) || '년',      -- 날짜 - 날짜 = 날수
       sysdate - 6,                                                               -- 날짜 - 숫자 = 날짜
       months_between(sysdate, hire_date)/12,                -- 달수차
       to_date('2008/09/01')                                                -- 날짜 형변환
  FROM employees;


'DATABASE > ORACLE' 카테고리의 다른 글

엑셀(.xls) 데이터 가져오기  (0) 2009.02.16
Oracle 9i 이상에서 관리자 계정을 잊어먹었을 때...  (0) 2008.12.11
[PL/SQL]  (0) 2008.09.24
rollup cube  (0) 2008.09.19
오라클 함수  (0) 2008.09.01
And
prev | 1 | 2 | next