카테고리 없음

[Oracle DB 입문 08] SQL 예제 & 함수

코딩순이 2021. 3. 4. 20:47

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;