ddit/Oracle

220512 Selct ,연산, Alias, 데이터의 정렬

ssong2ku 2022. 5. 12. 23:44
728x90

220512 오라클
[학습목표]
1. SELECT(조회,질의,Querty,검색)
2. 산술연산 : +, -, /,*,()
   비교연산 : >, < , >=,<=,=,!= < > 다르다

=>다르다의 연산 종류만 2종류인 이유? 오라클마음! 아무거나써도 된다!
   논리연산 : 휴..낮엔더워 () NOT AND OR ->우선순위높은순

- ALIAS(별칭)는 공백이 있으면 안된다.30바이트까지
- SELECT 세로방향 WHERE는 가로방향 검색

-DISTINCT 중복제거 

-ORDER BY row명이나 순서위치값, 별칭 : row정렬

=>여러 로우 순차적 정렬 가능

-where : 조건절을 붙일 수 있다, 조건 검색시 ' ' 붙이기!

 

데이터의정렬

Column명대신 Alias또는 Selet한 Column의 순서로 지정가능

디폴트순서는 오름차순 Ascending(ASC)로 생략가능

내림차순은 Descending(DESC)


알간모르간....드모르간정리

not (A or B)=(not A) and (not B)

not (A and B)=(not A) or (not B)

 

모르간....

--220512ORACLE

--상품테이블의 모든 row와 colum을 검색
SELECT * FROM PROD;

--회원 테이블로 부터 회원 ID와 성명을 검색하시오
SELECT MEM_ID
        ,MEM_NAME
    FROM MEMBER;


--상품테이블(PROD)로 부터 
--상품코드와 상품명을 검색하시오
SELECT PROD_ID
        ,PROD_NAME
        FROM PROD;
--  거래처 테이블로부터 거래처 코드와 거래처명을 검색하시오
SELECT BUYER_ID
        ,BUYER_NAME
        FROM BUYER;

--장바구니테이블로부터 주문번호, 상품코드, 회원ID,수량을 검색
SELECT CART_NO
    ,CART_PROD
    ,CART_MEMBER
    ,CART_QTY
    FROM CART;

--산술식을 사용한 검색
--산술연산자는 +,-,*,/,()로 구성

--회원 테이블의 마일리지를 12로 나눈 값을 검색하시오
--ROUND :반올림함수,(,2 : 소수점 2째자리까지 살리고 반올림)
SELECT MEM_MILEAGE
    ,MEM_MILEAGE/12
    ,ROUND(MEM_MILEAGE/12,2)
    ,MEM_MILEAGE+12
    ,MEM_MILEAGE-12
    ,MEM_MILEAGE*12 
FROM MEMBER;

--상품테이블의 상품코드. 상품명, 판매금액을 검색하시오
--판매금액은 = 판매단가 *55로 계산한다
SELECT PROD_ID
    ,PROD_NAME
    ,PROD_SALE *55 
FROM PROD;


SELECT PROD_ID AS "상품코드"
    ,PROD_NAME AS 상품명
    ,PROD_SALE*55 "판매금액"
    ,PROD_SALE*55 판매금액
FROM PROD;


--중복된 ROW(행)의 제거
--상품테이블의 상품분류를 중복되지 않게 검색
SELECT PROD_LGU 상품분류
FROM PROD;

--중복제거
DISTINCT

SELECT DISTINCT CART_MEMBER 회원아이디
    , CART_PROD 상품코드
    FROM  CART
 ORDER BY 1, 2; --정렬
    
SELECT DISTINCT MEM_JOB 회원직업
    , MEM_LIKE 회원취미
    FROM  MEMBER
  ORDER BY 1, 2;   
  
  
  --상품테이블의 거래처코드를 중복되지 않게 검색하시오
  --(ALIAS는 거래처)
  SELECT DISTINCT PROD_BUYER AS 거래처
    FROM  PROD;
    
    
--ROW를 SORT(정렬)하고자 하면 ORDER BY 절을 사용    
--ASC(ASCENDING) : 오름차순, ASC는 생략가능
--숫자형은 0~9, 영문자는 A~Z,한글은 가나다 순으로
--DESC(DESCENDING) : 내림차순
--숫자형은 9~0, 영문자는 Z~A,한글은 하파타 순으로
SELECT MEM_ID 회원ID
    , MEM_NAME 성명
    , MEM_BIR 생일
    , MEM_MILEAGE 마일리지
FROM MEMBER
ORDER BY 3 ASC;
-- 3대신 MEM_BIR나 별칭이 들어갈 수 있음

--ALIAS(별칭)
SELECT MEM_ID 회원ID
    , MEM_NAME 성명
    , MEM_BIR 생일
    , MEM_MILEAGE 마일리지
FROM MEMBER
ORDER BY 성명;

--ROW를 SORT(정렬)하고자 하면 ORDER BY 절을 사용


SELECT MEM_ID
    ,MEM_NAME
    ,MEM_BIR
    ,MEM_MILEAGE
    FROM MEMBER
ORDER BY MEM_ID;


SELECT MEM_ID 회원ID
    ,MEM_NAME 성명
    ,MEM_BIR 생일
    ,MEM_MILEAGE 마일리지
    FROM MEMBER
ORDER BY 성명;

SELECT MEM_ID
    ,MEM_NAME
    ,MEM_BIR
    ,MEM_MILEAGE
    FROM MEMBER
ORDER BY 3;

--다중정렬
SELECT MEM_ID
    ,MEM_NAME
    ,MEM_BIR
    ,MEM_MILEAGE
    FROM MEMBER
ORDER BY MEM_MILEAGE, 1;
-- 1차정렬을 마일리지, 2차정렬은 MEM ID에서!
SELECT MEM_ID 회원ID
    ,MEM_JOB  직업
    ,MEM_LIKE 취미
    FROM MEMBER
ORDER BY 직업 ASC, 3 DESC, 1  ;

--직업이 회사원인 회원의 MEMORIAL 컬럼의 데이터를 NULL로 수정하기
--**MEM_MEMORIAL=NULL
--**조건검색시 ''를 사용함

UPDATE MEMBER
SET MEM_MEMORIAL=NULL
WHERE MEM_JOB='회사원'

--WHERE MEM_MEMORIAL = NULL;은 오류 IS NULL, IS NOT NULL로 비교해주기!!
SELECT *
FROM MEMBER
WHERE MEM_MEMORIAL IS NULL;

--오름차순 NULL이 마지막에 위치
SELECT MEM_MEMORIAL,MEM_ID FROM MEMBER
ORDER BY MEM_MEMORIAL ASC;

--내림차순 NULL이 처음에 위치
SELECT MEM_MEMORIAL,MEM_ID FROM MEMBER
ORDER BY MEM_MEMORIAL DESC;

SELECT *
FROM PROD
ORDER BY PROD_SALE DESC, PROD_LGU, PROD_NAME;

--상품중 17만원인것
SELECT PROD_NAME AS 상품
    , PROD_SALE AS 판매가
    FROM PROD 
    WHERE PROD_SALE =170000;
    
 --17만원이 아닌것   
 SELECT PROD_NAME AS 상품
    , PROD_SALE AS 판매가
    FROM PROD 
    WHERE PROD_SALE <>170000;
    
SELECT PROD_NAME AS 상품
    , PROD_SALE AS 판매가
    FROM PROD 
    WHERE PROD_SALE !=170000;  
    
    
--17만원 이하인 것

SELECT PROD_NAME AS 상품
    , PROD_SALE AS 판매가
    FROM PROD 
    WHERE PROD_SALE <=170000;

--17만원 이상인 것

SELECT PROD_NAME AS 상품
    , PROD_SALE AS 판매가
    FROM PROD 
    WHERE PROD_SALE >=170000
ORDER BY PROD_SALE;
--상품 중 매입가 20만원이하상품
SELECT PROD_ID 상품코드
    , PROD_NAME 상품명
    , PROD_COST 매입가
    FROM PROD
    WHERE PROD_COST<=20000;
    
--회원중 76년도 1/1이후에 탄생, 주민번호 앞자리비교
SELECT MEM_ID AS 회원ID
    ,MEM_NAME AS 회원명
    ,MEM_REGNO1 AS 주민번호앞자리
    FROM MEMBER
    WHERE MEM_REGNO1>='760101'
    ORDER BY 3 DESC;
    
--논리연산자
--휴()낮엔더워 NOT AND OR ->우선순위 순!
SELECT * 

FROM PROD
WHERE PROD_LGU='P201'
AND   PROD_SALE = 170000;

SELECT PROD_NAME AS 상품
    , PROD_LGU AS 상품분류
    ,PROD_SALE AS 판매가
FROM PROD
WHERE PROD_LGU ='P201'
AND PROD_SALE = 170000;

--상품 중 상품분류가 P201(여성캐주얼)이거나
--판매가가 170,000원인 상품조회

SELECT PROD_NAME  상품
    , PROD_LGU  상품분류
    ,PROD_SALE  판매가
FROM PROD
WHERE PROD_LGU ='P201'
OR PROD_SALE = 170000;


--드모르간 정리
SELECT POD_NAME  상품
    , PROD_LGU  상품분류
    ,PROD_SALE  판매가
FROM PRODR
WHERE (PROD_LGU<>'P201' AND PROD_SALE !=170000);

SELECT POD_NAME  상품
    , PROD_LGU  상품분류
    ,PROD_SALE  판매가
FROM PRODR
WHERE NOT(PROD_LGU='P201' OR PROD_SALE !=170000);
728x90