190 likes | 345 Views
Database 실습. 김기헌 khkim@ozzy.chonbuk.ac.kr http://csdblab.chonbuk.ac.kr/~khkim. 내용. 쇼핑몰 프로그램으로 배우는 SQL 카테고리 관리. 카테고리 관리. 카테고리 관리 카테고리 목록 , 추가 , 수정 , 삭제 카테고리 대분류 뒷부분의 네자리 값이 0000 인 항목 00010000 전자제품 00020000 의류 소분류 뒷자리가 0000 이 아닌 나머지 항목 00010001 TV 00010002 컴퓨터. 카테고리 관리.
E N D
Database 실습 김기헌 khkim@ozzy.chonbuk.ac.kr http://csdblab.chonbuk.ac.kr/~khkim
내용 • 쇼핑몰 프로그램으로 배우는 SQL • 카테고리 관리 Database Research Lab
카테고리 관리 • 카테고리 관리 • 카테고리 목록, 추가, 수정, 삭제 • 카테고리 • 대분류 • 뒷부분의 네자리 값이 0000인 항목 • 00010000 전자제품 • 00020000 의류 • 소분류 • 뒷자리가 0000이 아닌 나머지 항목 • 00010001 TV • 00010002 컴퓨터 Database Research Lab
카테고리 관리 전자제품 의류 도서 TV 컴퓨터도서 남방 컴퓨터 소설 속옷 MP3 바지 에어컨 Database Research Lab
자료 조회하기 • SUBSTR 함수를 이용한 대분류 확인 • SELECT CATEGORY_CODE, CATEGORY_NAMEFROM CATEGORYWHERE SUBSTR(CATEGORY_CODE,5,4)=‘0000’; Database Research Lab
자료 조회하기 • 소분류를 검색하기 위해 검색 결과가 대분류 코드 값만 추출하여 앞의 네자리만 보여준다. • SELECT SUBSTR(CATEGORY_CODE,1,4) AS LARGE_CODE, CATEGORY_NAMEFROM CATEGORYWHERE SUBSTR(CATEGORY_CODE,5,4)=‘0000’; Database Research Lab
자료 조회하기 • 카테고리 테이블에 등록된 모든 항목 가운데 대분류코드가 0001인 소분류를 구하는 예제 • SELECT CATEGORY_CODE, CATEGORY_NAMEFROM CATEGORYWHERE SUBSTR(CATEGORY_CODE,1,4)=‘0001’AND SUBSTR(CATEGORY_CODE,5,4)!=‘0000’; Database Research Lab
자료 입력하기 • SELECT와 INSERT가 분리된 대분류 만들기 • SELECT TRIM(TO_CHAR(MAX(SUBSTR(CATEGORY_CODE,1,4))+1,’0000’)) AS MAX_CODEFROM CATEGORY; • INSERT INTO CATEGORY(CNUM,CATEGORY_CODE,CATEGORY_NAME)VALUES(CATEGORY_SEQ.NEXTVAL,’00040000’,’일반잡화’); Database Research Lab
자료 입력하기 • TRIM(TO_CHAR(MAX(SUBSTR(CATEOGRY_CODE,1,4))+1,’0000’)) • SUBSTR(CATEOGRY_CODE,1,4) Database Research Lab
자료 입력하기 • TRIM(TO_CHAR(MAX(SUBSTR(CATEOGRY_CODE,1,4))+1,’0000’)) • MAX(SUBSTR(CATEOGRY_CODE,1,4)) • MAX(SUBSTR(CATEOGRY_CODE,1,4))+1 • TO_CHAR(MAX(SUBSTR(CATEOGRY_CODE,1,4))+1,’0000’) • TRIM(TO_CHAR(MAX(SUBSTR(CATEOGRY_CODE,1,4))+1,’0000’)) Database Research Lab
자료 입력하기 • INSERT 구분 내에 SELECT가 포함된 대분류 만들기 • INSERT INTO CATEGORY(CNUM,CATEGORY_CODE,CATEGORY_NAME)VALUES(CATEGORY_SEQ.NEXTVAL,(SELECT TRIM(CONCAT(TO_CHAR(MAX(SUBSTR(CATEGORY_CODE,1,4))+1,’0000’),’0000’)) AS MAX_CODEFROM CATEGORY ),’일반잡화’); Database Research Lab
자료 입력하기 • SELECT TRIM(CONCAT(TO_CHAR(MAX(SUBSTR(CATEGORY_CODE,1,4))+1,’0000’),’0000’)) AS MAX_CODEFROM CATEGORY Database Research Lab
자료 입력하기 • SELECT와 INSERT가 분리된 소분류 만들기 • SELECT TRIM(TO_CHAR(MAX(CATEGORY_CODE)+1,’00000000’))FROM CATEGORYWHERE SUBSTR(CATEGORY_CODE,1,4)=‘0001’; • INSERT INTO CATEGORY(CNUM,CATEGORY_CODE,CATEGORY_NAME)VALUES(CATEGORY_SEQ.NEXTVAL,’0001’0005’,’전화기’) Database Research Lab
자료 입력하기 • INSERT 구분 내에 SELECT가 포함된 소분류 만들기 • INSERT INTO CATEGORY(CNUM,CATEGORY_CODE, CATEGORY_NAME)VALUES(CATEGORY_SEQ.NEXTVAL,(SELECT TRIM(TO_CHAR(MAX(CATEGORY_CODE)+1,’00000000’))FROM CATEGORYWHERE SUBSTR(CATEGORY_CODE,1,4)=‘0001’),‘전화기’); Database Research Lab
자료 입력하기 • SUBSTR(CATEGORY_CODE,1,4)=‘0001’ • MAX(CATEGORY_CODE) • MAX(CATEGORY_CODE)+1 • TO_CHAR(MAX(CATEGORY_CODE)+1,’00000000’) Database Research Lab
자료 수정하기 • 키 값을 이용한 카테고리 이름 수정하기 • UPDATE CATEGORYSET CATEGORY_NAME =‘와이드 TV’WHERE CNUM=‘2’; • CATEGORY_CODE 값을 이용한 카테고리 이름 수정하기 • UPDATE CATEGORYSET CATEGORY_NAME = ‘노트북’WHERE CATEGORY_CODE=‘00010002’; Database Research Lab
자료 수정하기 • 카테고리 코드 수정하기 • UPDATE CATEGORYSET CATEGORY_CODE=‘00040001’WHERE CATEGORY_CODE=‘00020002’; • UPDATE PRODUCTSSET CATEGORY_FK=‘00040001’WHERE CATEGORY_FK=‘00020002’; • SELECT A.CATEGORY_CODE,B.CATEGORY_FK,A.CATEGORY_NAME,B.PRODUTS_NAMEFROM CATEOGRY A, PRODUCTS BWHERE A.CATEGORY_CODE=B.CATEGORY_FKAND A.CATEGORY_CODE=‘00040001’; Database Research Lab
자료 삭제하기 • DELETE 구문을 이용한 자료 삭제하기 • DELETE FROM CATEGORYWHERE CATEGORY_CODE=‘00010001’; • DELETE FROM PRODUCTSWHERE CATEGORY_FK=‘00010001’; • DELETE FROM CATEGORYWHERE SUBSTR(CATEGORY_CODE,1,4)=‘0002’; • DELETE FROM PRODUCTSWHERE SUBSTR(CATEGORY_FK,1,4)=‘0002’; Database Research Lab
자료 삭제하기 • UPDATE 구문을 이용한 자료 삭제하기 • DELETE_CHK 컬럼 이용 • UPDATE CATEGORY SET DELETE_CHK=‘Y’WHERE CATEGORY_CODE=‘00010003’; • UPDATE CATEGORY SET DELETE_CHK=‘Y’WHERE SUBSTR(CATEGORY_CODE,1,4)=‘0003’; • SELECT * FROM CATEGORYWHERE DELETE_CHK=‘N’; Database Research Lab