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
'ddit > Oracle' 카테고리의 다른 글
220516 SQL 함수 (0) | 2022.05.16 |
---|---|
220513 sql 기타연산자(IN,LIKE,BETWEEN), 함수 (0) | 2022.05.13 |
7일차 oracle, sql developer에서 테이블 생성 및 데이터 넣기, 수정, 삭제 (0) | 2022.05.11 |
Oracle 식별자와 key (0) | 2022.05.10 |
6일차 SQL,DDL, DML,DCL,TCL, 테이블 모델링 (0) | 2022.05.10 |