Data scientist/SQL

SQL_기본

맨사설 2021. 8. 4. 20:58
728x90

SQL_SELECT

# CUSTOMERS 테이블에서 3개의 변수 뽑아내기
SELECT
	CUSTOMER_ID
	, NAME
	, CREDIT_LIMIT
FROM CUSTOMERS
;

# CUSTOMERS 테이블에서 전체 내용 보기
SELECT
*
FROM CUSTOMERS
;

# DUMMP TABLE 생성
SELECT
	(10 + 5) / 2 AS VAL
    FROM DUAL
    ;

 

DCC실제 실행해본 결과물

 

 

 SQL_ORDER BY

# ORDER BY문은 정렬 구문으로 기본값은 ASC (생략 가능)
# ASC : 오름차순, DESC : 내림차순 
SELECT
NAME
, ADDRESS
, CREDIT_LIMIT
FROM CUSTOMERS
ORDER BY NAME DESC # NAME변수를 내림차순 정리
;

# 두개의 변수가 ORDER BY일때
SELECT
FIRST_NAME
, LAST_NAME
FROM CONTACTS
ORDER BY FIRST_NAME, LAST_NAME DESC # FIRST는 오름차순, LAST는 내림차순 정리
;

C

FIRST는 오름, LAST는 내림을 확인할 수 있다.

 

 

 SQL_DISTINCT

# DISTINCT문은 중복값 제거를 해준다.
SELECT
DISTINCT PRODUCT_ID # PRODUCT_ID, QUANTITY 두개의 변수에 존재하는 중복값 제거
, QUANTITY
FROM ORDER_ITEMS
ORDER BY PRODUCT_ID
;

 

 

 SQL_WHERE

# WHERE은 원하는 값을 추출하기 위해 사용
SELECT
PRODUCT_NAME
, DESCRIPTION
, LIST_PRICE
, CATEGORY_ID
FROM PRODUCTS
WHERE PRODUCT_NAME = 'Kingston' # Kingston인것 추출
;

SELECT
PRODUCT_NAME
, LIST_PRICE
, CATEGORY_ID
FROM PRODUCTS
WHERE LIST_PRICE > 500 
AND CATEGORY_ID = 4;

SELECT
PRODUCT_NAME
, CATEGORY_ID
FROM PRODUCTS
WHERE CATEGORY_ID IN (1, 4) # 1 또는 4 포함 추출
ORDER BY PRODUCT_NAME
;

SELECT
PRODUCT_NAME
, LIST_PRICE
FROM PRODUCTS
WHERE PRODUCT_NAME LIKE 'Asus%' # Asus로 시작하는 값 모두 추출
ORDER BY LIST_PRICE
;

 

Asus로 시작하는 값 추출하는 것을 확인할 수 있다.

 

 

 SQL_INSERT

# 1. 테이블 생성
CREATE TABLE DISCOUNTS 
( 
DISCOUNT_ID NUMBER GENERATED BY DEFAULT AS IDENTITY # 변수명과 조건들을 설정한 것을 확인할 수 있다.
, DISCOUNT_NAME VARCHAR2(255) NOT NULL
, AMOUNT NUMBER(3, 1) NOT NULL
, START_DATE DATE NOT NULL
, EXPIRED_DATE DATE NOT NULL
);

# 2. 데이터 삽입(INSERT)
INSERT INTO
DISCOUNTS (
DISCOUNT_NAME
, AMOUNT
, START_DATE
, EXPIRED_DATE
)
VALUES ( 'Summer Promotion'
, 9.5
, DATE '2017-05-01'
, DATE '2017-08-31'
);
COMMIT;

 

DISCOUNT 테이블 생성과 값 삽입이 된 것을 확인할 수 있다.

 

 

 SQL_UPDATE

# UPDATE는 테이블 값 수정이라고 생각하면 된다.
# PART_ID가 1인 값에 대해 COST를 130으로 UPDATE
UPDATE PARTS
SET COST = 130
WHERE PART_ID = 1
;
COMMIT;

# SET으로 조건을 지정하지 않았기에 전체 행에 대한 업데이트
UPDATE PARTS
SET COST = COST * 1.05
;
COMMIT;

 

 

 SQL_DELETE

# 원하는 ROW를 삭제하고 싶을때 DELETE문 사용
# ORDER_ID가 1인 값을 가지는 ROW 삭제
DELETE
FROM SALES
WHERE ORDER_ID = 1
;
COMMIT;

# 전체 ROW 삭제
DELETE
FROM SALES
;
COMMIT;

 

 

 SQL_서브쿼리

# 서브 쿼리
SELECT
PRODUCT_ID
, PRODUCT_NAME
, LIST_PRICE
FROM PRODUCTS
WHERE LIST_PRICE = (
			SELECT	# WHERE절 안에 있는 SELECT문으로 서브쿼리라 한다.
			MAX(LIST_PRICE) # 서브 쿼리를 이용하여 단 한 개의 SQL문으로 출력 완료
			FROM PRODUCTS 
						);

# 스칼라 서브 쿼리 (SELECT절 안에 있는 서브 쿼리)
SELECT
A.PRODUCT_NAME
, A.LIST_PRICE
, ROUND( (SELECT AVG(K.LIST_PRICE) 
	FROM PRODUCTS K 
	WHERE K.CATEGORY_ID = A.CATEGORY_ID 
	), 2
	) AVG_LIST_PRICE
FROM PRODUCTS A
ORDER BY A.PRODUCT_NAME

# 인라인 뷰 서브 쿼리 (FROM절 안에 있는 서브 쿼리)
SELECT ORDER_ID
, ORDER_VALUE
FROM
(
SELECT ORDER_ID
, SUM( QUANTITY * UNIT_PRICE ) ORDER_VALUE
FROM ORDER_ITEMS
GROUP BY ORDER_ID
ORDER BY ORDER_VALUE DESC
)
WHERE ROWNUM <= 10;

 

스칼라 서브 쿼리 실행 결과

728x90

'Data scientist > SQL' 카테고리의 다른 글

SQL_함수(2)  (0) 2021.08.09
SQL_Practice_기온 데이터 분석  (0) 2021.08.08
SQL_함수  (0) 2021.08.06
SQL_TABLE  (0) 2021.08.05
SQL_데이터베이스  (0) 2021.08.04