2017. 12. 1. 09:52

[IN]

-조건의 범위를 지정, 값은 콤마로 구분하야 묶으며, 이 값 중 하나 이상과 일치하면 조건에 맞는것으로 판단


ex)

Select prod_name, prod_price

from Products

Where vend_id IN ('d111', 'b111')

order by prod_name;


=>  Products 테이블에 vend_id가 'd111' 또는 'b111'인 Row의 prod_name과 prod_price를 prod_name으로 정렬하여 Return




SELECT COUNT(*) AS NUM_ITEMS,

       MIN(PROD_PRICE) AS PRICE_MIN,

       MAX(PROD_PRICE) AS PRICE_MAX,

       AVG(PROD_PRICE) AS PRICE_AVG,

FROM PRODUCTS;



[GROUP BY]


SELECT VEND_ID, COUNT(*) AS NUM_PRODS

FROM PRODUCTS

GROUP BY VEND_ID;



[HAVING]

- GROUP BY 의 조건절. GROUP BY용 WHERE 이라고 생각하면 됨.

SELECT VEND_ID, COUNT(*) AS NUM_PRODS

FROM PRODUCTS

GROUP BY VEND_ID

HAVING COUNT(*) > 2;


WHERE은 그룹화 전에 필터링, HAVING은 그룹화 후 필터링



[2중쿼리]


SELECT CUST_ID

FROM ORDERS

WHERE ORDER_NUM

IN (SELECT ORDER_NUM 

    FROM ORDERITEMS

    WHERE PROD_ID = 'AA1');


[조인]

SELECT VEND_NAME, PROD_NAME, PROD_PRICE

FROM VENDERS, PRODUCTS

WHERE VENDORS.VEND_ID = PRODUCTS.VEND_ID;


-내부조인

SELECT VEND_NAME, PROD_NAME, PROD_PRICE

FROM VENDORS INNER JOIN PRODUCTS

ON VENDORS.VEND_ID = PRODUCTS.VEND_ID


ON 은 JOIN 사용시 WHERE 이라고 생각하면 됨.


INNER JOIN 은 조건이 맞는 COLUMN만 표기를 한다면, OUTER JOIN은 LEFT OUTER JOIN 이나 RIGHT OUTER JOIN 이냐에 따라서

LEFT인 경우 왼쪽 테이블의 모든 정보 + 조건 정보, RIGHT인 경우 조건정보 + 오른쪽 테이블의 모든 정보 식으로 표현된다.


LEFT : *= 

RIGHT : =*


SELECT CUSTOERS.CUST_ID, ORDERS.ORDER_NUM

FROM CUSTOMERS, ORDERS

WHERE CUSTOMERS.CUST_ID *= ORDER.CUST_ID;


[UNION]

SQL 쿼리를 결합하는데 사용


SELECT CUST_NAME, CUST_CONTACT, CUST_EMAIL

FROM CUSTOMERS

WHERE CUST_STATE IN ('IL','IN','MI');


SELECT CUST_NAME, CUST_CONTACT, CUST_EMAIL

FROM CUSTOMERS

WHERE CUST_NAME = 'FUN4ALL';


==>

SELECT CUST_NAME, CUST_CONTACT, CUST_EMAIL

FROM CUSTOMERS

WHERE CUST_STATE IN ('IL','IN','MI')

UNION 

SELECT CUST_NAME, CUST_CONTACT, CUST_EMAIL

FROM CUSTOMERS

WHERE CUST_NAME = 'FUN4ALL';


UNION 사용시 중복결과도 모두 표현하고 싶을 경우 UNION 대신 UNION ALL 을 사용하면 된다.



[insert]


insert into Customers (cust_id,

cust_name,

cust_address,

cust_city,

cust_state,

cust_zip)

values('100006',

'Toy land',

'123 andy',

'new york',

'ny',

'11111');













'DB > MSSQL' 카테고리의 다른 글

[MSSQL] For 문으로 데이터 넣기  (0) 2017.10.24
외부 접속 허용  (0) 2017.10.23
Try Catch 예제  (0) 2017.09.05
오전오후 -> datetime 변환  (0) 2017.03.28
index 방법  (0) 2017.02.23
Posted by 까망후니