[Oracle DB 입문 08] SQL 예제 & 함수
1. 상품 중 판매가가 100,000부터 300,000원 사이의 상품을 검색하시오.
SELECT *
FROM PROD
WHERE PROD_SALE BETWEEN 100000 AND 300000;
-- PROD_SALE >= 100000 AND PROD_SALE >= 300000;
2. 회원 중 생일이 회원 중 생일이 1975-01-01에서 1976-12-31 사이에 태어난 회원을 검색하시오.
- ALIAS는 회원ID, 회원명, 생일
SELECT MEM_ID AS 회원ID
, MEM_NAME AS 회원명
, MEM_BIR AS 생일
FROM MEMBER
WHERE MEM_BIR BETWEEN '1975-01-01' AND '1976-12-31'
ORDER BY MEM_BIR;
-- WHERE MEM_BIR BETWEEN '1975.01.01' AND '19761231'
-- WHERE MEM_BIR BETWEEN '75/01/01' AND '76/12/31'
-- NOT
-- WHERE NOT(MEM_BIR BETWEEN '1975-01-01' AND '1976-12-31')
-- WHERE MEM_BIR NOT BETWEEN '1975-01-01' AND '1976-12-31'
3. 상품 중 매입가가 300,000 ~ 1,500,000이고, 판매가가 800,000 ~ 2,000,000 인 상품을 검색하시오.
- ALIAS는 상품명, 매입가, 판매가
SELECT PROD_NAME AS 상품명
, PROD_COST AS 매입가
, PROD_SALE AS 판매가
FROM PROD
WHERE(PROD_COST BETWEEN 300000 AND 1500000) AND (PROD_SALE BETWEEN 800000 AND 2000000);
▶ LIKE
- 컬럼값을 지정된 패턴과 비교하여 문자형태가 같은 ROW를 검색한다.
- LIKE와 함께 쓰이는 '&' or '_' : 와일드 카드
- '%' : 여러 글자 / '_' : 한 글자
4. '치'자로 끝나는 상품 정보를 검색하시오.
- ALIAS : 상품코드 , 상품명
SELECT PROD_ID AS 상품코드
, PROD_NAME AS 상품명
FROM PROD
WHERE PROD_NAME LIKE '%치';
5. 회원테이블에서 김씨 성을 가진 회원을 검색하시오.
- ALIAS는 회원ID(MEM_ID) , 성명(MEM_NAME)
SELECT MEM_ID AS 회원 ID
, MEM_NAME AS 성명
FROM MEMBER
WHERE MEM_NAME LIKE '김%';
6. 회원테이블의 주민등록번호 앞자리를 검색하여 1975년생을 제외한 회원을 검색하시오
- ALIAS는 회원ID, 성명, 주민등록번호
SELECT MEM_ID AS 회원ID
, MEM_NAME AS 성명
, MEM_REGNO1 AS 주민등록번호앞자리
FROM MEMBER
WHERE NOT(MEM_REGNO1 LIKE '75%);
-- WHERE MEM_REGNO1 NOT LIKE '75%';
7. 개똥이는 취업기념으로 삼성에서 만든 제품을 구입하고자 한다.
가격은 100만원 미만이며, 가격이 내림차순으로 정렬된 리스트를 보고자한다.
(ALIAS는 상품ID(PROD_ID), 상품명(PROD_NAME), 판매가(PROD_SALE), 제품설명글(PROD_DETAIL))
SELECT PROD_ID AS 상품ID
, PROD_NAME AS 상품명
, PROD_SALE AS 판매가
, PROD_DETAIL AS 제품설명글
FROM PROD
WHERE (PROD_NAME LIKE '%삼성%') AND (PROD_SALE < 1000000)
ORDER BY PROD_SALE DESC;
▶ 함수
(1) 결합
SELECT 'a' || 'bcde' FROM SYS.DUAL; -- DUAL : 가상의 테이블 (테이블없이 연산을 확인하고 싶을때 사용함)
SELECT mem_id || ' name is ' || MEM_NAME FROM MEMBER;
(1) 아스키코드 변환
SELECT CHR(65) AS CHR -- CHR(65) = A
, ASCII('ABC') AS ASCII -- ASCII('ABC') = 65 : 'ABC' 문자열 중 맨 앞 글자인 'A'의 아스키 코드 번호
FROM DUAL;
SELECT CHR(75) "CHR" -- CHR(75) = 'K'
, ASCII('K') "ASCII" -- ASCII('K') = 75
FROM DUAL;
8. 회원테이블의 회원ID Column의 ASCII값을 검색하시오.
SELECT MEM_ID AS 회원
, ASCII(MEM_ID) AS 회원ASCII
, CHR(ASCII(MEM_ID)) AS 회원CHR
FROM MEMBER;
(3) 소문자/대문자 변환
SELECT LOWER('DATA manipualation Language') AS "Lower" -- 모든 글자를 소문자로 변환
, UPPER('DATA manipualation Language') AS "UPPER" -- 모든 글자를 대문자로 변환
, INITCAP('DATA manipualation Language') AS "INITCAP" -- 문자열의 첫 글자만 대문자로 변환
FROM DUAL;
(4) LPAD, RPAD
SELECT LPAD('JAVA', 10, '*') "LPAD" -- LEFT PADDING(여백)
, RPAD('JAVA', 10, '*') "RPAD" -- RIGHT PADDING(여백)
FROM DUAL;
SELECT LPAD('JAVA', 10, '*') "LPAD" -- LEFT PADDING(여백)
, RPAD('FLEX', 12, '^') "RPAD" -- RIGHT PADDING(여백)
FROM DUAL;
(4) TRIM
SELECT '<' || TRIM(' AAA ') || '>' TRIM1
, '<' || TRIM(LEADING 'A' FROM TRIM(' AaaAaBaAaa')) || '>' TRIM2
, '<' || TRIM('a' FROM 'aaAaBaAaa') || '>' TRIM3
, '<' || TRIM(BOTH 'a' FROM 'aaAaBaAaa') || '>' TRIM4
, '<' || TRIM(TRAILING 'a' FROM 'aaAaBaAaa') || '>' TRIM5
FROM DUAL;
(5★) SUBSTR
SELECT SUBSTR('SQL PROJECT',1,3) AS RESULT1
, SUBSTR('SQL PROJECT',1,5) AS RESULT2
, SUBSTR('SQL PROJECT',-7,3) AS RESULT2
FROM DUAL;
9. 상품테이블의 상품명(PROD_NAME)의 4째자리부터 2글자가 '칼라'인 상품의
상품코드(PROD_ID), 상품명(PROD_NAME)을 검색하시오.
SELECT PROD_ID AS 상품코드
, PROD_NAME AS 상품명
FROM PROD
WHERE SUBSTR(PROD_NAME, 4 , 2) = '칼라';
-- WHERE PROD_NAME LIKE '___칼라%';
10. 상품테이블의 상품코드에서 왼쪽 4자리, 오른쪽 6자리를 검색하시오.
SELECT PROD_ID AS 상품코드
, PROD_LGU AS 대분류
, SUBSTR(PROD_ID, 1, 4) AS 왼쪽4자리
, SUBSTR(PROD_ID, -6, 6) AS 오른쪽6자리
FROM PROD;