티스토리 뷰

2월 중순 넘어서 프로젝트 할때 쓸예정!!

밑줄은 주식별자

 

 

https://www.youtube.com/watch?v=rdfHFnqVoRw&list=PLbflMVhwy2jOoDIm7kVgt1_sYDJm_oBaD&ab_channel=%ED%99%8D%EC%8C%A4%EC%9D%98%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%9E%A9

 

DAY1일차에 젤 중요한거 많아-> 세분화해서 공부

C## 전버전꺼
CREATE USER 계정 IDENTFIED BY 비번

GRANT CONNECT  TO 계정;
GRANT  RESOURCE TO 계정;

CHECK의 문법순서:CHACK(USER_GENDER IN('남','여');
DEFAULT 값맞춰야-SYSDATE,O

ALTER로 조합해서 원하는 형태대로 제약조건 수정 OR
DROP으로 무식하게 처음부터 다시 만들어야 함

DQL실습 반드시 알아야!!!!!!!!!!!!
IS NOT NULL
LIKE


오라클함수

--SQL 쿼리 실행순서
--1.FROM 2.WHERE 3.GROUP BY 4.HAVING 5.SELECT 6.ORDER BY


-집계함수 중요!!!!!!!!!!!!!! 통계.랭킹 매길 때 
GROUP BY
HAVING COUNT
(WHERE쓰는게 아니라 HAVING)

 

-- 실습문제3
-- 매니저가 관리하는 사원이 2명 이상인 매니저 아이디와 관리하는 사원수를 출력하세요!
SELECT MANAGER_ID, COUNT(*)
FROM EMPLOYEE
GROUP BY MANAGER_ID
HAVING COUNT(*)>=2 AND MANAGER_ID IS NOT NULL;

--HAVING 절
--SELECT*FROM~WHERE~(조건)
--그룹함수로 값을 구해온 그룹에 대해 조건을 설정할 때 사용함
--WHERE절과 구분해서 사용할 줄 알아야 함
--SQL 쿼리 실행순서
--1.FROM 2.WHERE 3.GROUP BY 4.HAVING 5.SELECT 6.ORDER BY

    
-- 실습예제7
-- 부서내 성별 인원수를 구하시오
SELECT 
    DEPT_CODE
    ,COUNT(*) 
    ,DECODE(SUBSTR(EMP_NO, 8, 1), '1', '남', '2', '여', '3', '남', '4', '여')"성별"  --문자열 자르기
    FROM EMPLOYEE
    GROUP BY DEPT_CODE, DECODE(SUBSTR(EMP_NO, 8, 1), '1', '남', '2', '여', '3', '남', '4', '여')
    ORDER BY 1;

 

-- 최종 실습 문제
-- 문제1. 
-- 입사일이 5년 이상, 10년 이하인 직원의 이름,주민번호,급여,입사일을 검색하여라
SELECT EMP_NAME, EMP_NO, SALARY, HIRE_DATE
FROM EMPLOYEE;
WHERE CEIL(MONTHS_BETWEEN(SYSDATE, HIRE_DATE)/12) BETWEEN 5 AND 10;
--WHERE(EXTRACT(YEAR FROM(SYSDATE)-EXTRACT(YEAR FROM(HIRE_DATE))) BETWEN 5 AND 10;

SELECT 
    EMP_NAME
    , HIRE_DATE
    , CEIL(MONTHS_BETWEEN(SYSDATE, HIRE_DATE)/12)
    , (SYSDATE-HIRE_DATE)/365 
FROM EMPLOYEE;

 

--3. 60년대에 태어난 직원명과 년생, 보너스 값을 출력하시오. 그때 보너스 값이 null인 경우에는 0 이라고 출력 되게 만드시오
--     직원명    년생      보너스
-- ex) 선동일     1962     0.3
-- ex) 송은희     1963       0
SELECT EMP_NAME "이름"
1900+SUBSTR(EMP_NO, 1, 2), '년생1'
, TO CHAR(TO_DATE(SUBSTR(EMP_NO, 1, 2), 'RR'), 'YYYY') "년생2"
, NVL(BONUS, 0) "보너스" 
FROM EMPLOYEE;

 

 


서브쿼리

조인 중요!!!!!!!!!!!!!!!!!(어렵게 내면..- 종합실습 문제 정도까지)
INNER/OUTER조인의 차이


-0----------------------
    SOLD_OUT CHAR(1) DEFAULT 'N' CHECK(SOLD_OUT IN('Y', 'N'));
);

COMMENT ON COLUMN BRANDS.BRAND_ID IS "브랜드번호" 

NEXTVAL!!!!!!!!CURRVAL!!!!!!!!!

LEFT OUTER JOIN

INSERT INTO BRANDS VALUES(SEQ_BRAND_ID.NEXTVAL, '삼성');

SELECT * FROM BRANDS;

INSERT INTO PRODUCTS VALUES(SEQ_PRODUCT_NO.NEXTVAL, '갤럭시S8', 800000, 100, SM-SS8', Y);
SELECT * FROM PRODUCTS;


시퀀스
SEQ_BRAND_ID: 100부터 시작, 100씩 증가, 최대값 1000, 반복없음
CREATE SEQUNECE SEQ_BRAND_ID --이게 디폴트값
INCREMENT BY 100
MAXVALUES 1000
NOCYCLE
NOCACHE;

결과조회에서 아이폰 왜 안나옴?
SELECT PRODUCT_NAME, PRODUCT_PRICE, BRAND_NAME, SOLD_OUT
FROM PRODUCT_NAME
LEFT OUTER JOIN BRANDS ON BRAND_CODE=BRAND_ID;

 

------------------------------------------------------

-- 테이블 생성 및 코멘트 달기
CREATE TABLE BRANDS(
BRAND_ID NUMBER PRIMARY KEY,
BRAND_NAME VARCHAR2(100) NOT NULL
);

CREATE TABLE PRODUCTS (
PRODUCT_NO NUMBER PRIMARY KEY,
PRODUCT_NAME VARCHAR2(20) NOT NULL,
PRODUCT_PRICE NUMBER NOT NULL,
BRAND_CODE NUMBER REFERENCES BRANDS,
SERIAL_NO VARCHAR2(100) UNIQUE,
SOLD_OUT CHAR(1) DEFAULT 'N' CHECK(SOLD_OUT IN ('Y','N'))
);

COMMENT ON COLUMN BRANDS.BRAND_ID IS '브랜드번호';
COMMENT ON COLUMN BRANDS.BRAND_NAME  IS '브랜드명';

COMMENT ON COLUMN PRODUCTS.PRODUCT_NO  IS '상품번호';
COMMENT ON COLUMN PRODUCTS.PRODUCT_NAME  IS '상품명';
COMMENT ON COLUMN PRODUCTS.PRODUCT_PRICE  IS '상품가격';
COMMENT ON COLUMN PRODUCTS.BRAND_CODE  IS '브랜드번호';
COMMENT ON COLUMN PRODUCTS.SERIAL_NO  IS '고유번호';
COMMENT ON COLUMN PRODUCTS.SOLD_OUT  IS '품절여부';

-- 시퀀스 생성
CREATE SEQUENCE SEQ_BRAND_ID
START WITH 100
INCREMENT BY 100
MAXVALUE 1000
NOCYCLE
NOCACHE;

CREATE SEQUENCE SEQ_PRODUCT_NO
MAXVALUE 10000
NOCYCLE
NOCACHE;

SELECT * FROM USER_SEQUENCES;

SELECT * FROM BRANDS;
SELECT * FROM PRODUCTS;

-- 데이터 삽입
INSERT INTO BRANDS VALUES(SEQ_BRAND_ID.NEXTVAL, '삼성');
INSERT INTO BRANDS VALUES(SEQ_BRAND_ID.NEXTVAL, '애플');

SELECT * FROM BRANDS;
COMMIT;
INSERT INTO PRODUCTS VALUES(SEQ_PRODUCT_NO.NEXTVAL, '갤럭시S8', 800000, 100, 'SM-S8S', 'Y');
INSERT INTO PRODUCTS VALUES(SEQ_PRODUCT_NO.NEXTVAL, '갤럭시S9', 900000, 100, 'SM-S9S', 'N');
INSERT INTO PRODUCTS VALUES(SEQ_PRODUCT_NO.NEXTVAL, '갤럭시S10', 1000000, 100, 'SM-S10S', 'N');

INSERT INTO PRODUCTS VALUES(SEQ_PRODUCT_NO.NEXTVAL, '아이폰9S', 900000, 200, 'IP-S9S', 'N');
INSERT INTO PRODUCTS VALUES(SEQ_PRODUCT_NO.NEXTVAL, '아이폰10S', 1000000, 200, 'IP-S10S', 'N');
SELECT * FROM PRODUCTS;

-- 결과 조회
SELECT PRODUCT_NAME, PRODUCT_PRICE, BRAND_NAME, SOLD_OUT 
FROM PRODUCTS
LEFT OUTER JOIN BRANDS ON BRAND_CODE = BRAND_ID;

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
글 보관함