나의 수업일지

인천 일보 아카데미 30일차 / 문자 합치기(CONCAT)_자르기 (LEFT , RIGHT , SUBSTR), CASE_END 사용 , View / Index , commit / rollback

2023. 4. 4. 16:01
  • 만들어보기

 

 

  • 만들어보기 준비물 _TABLE

각 필요한 입력 정보를 INSERT 했습니다

 

 

  • 그냥 한번 만들어보기

-- 1.1 후보자 , 정당 테이블 조인
SELECT M.*,P.P_NAME,P.P_TEL1,P.P_TEL2,P.P_TEL3
		FROM TBL_MEMBER_202005 M , TBL_PARTY_202005 P 
			WHERE M.P_CODE = P.P_CODE;
            
-- 1.2 필요한 정보만 조회(컬럼이름 한글로)
SELECT M.M_NO AS '후보번호', M.M_NAME AS '성명',P.P_NAME as '소속정당'
		,M.P_SCHOOL AS '학력', M.M_JUMIN AS '주민번호'  
			,M.M_CITY AS'지역구',P.P_TEL1,P.P_TEL2 ,P.P_TEL3
				FROM TBL_MEMBER_202005 M , TBL_PARTY_202005 P 
					WHERE M.P_CODE = P.P_CODE;

 

 

  • 학력 표현해보기 (CASE , END 사용해보기)

SELECT P_SCHOOL,
	CASE
		WHEN P_SCHOOL ='1' THEN '고졸'
       	 	P_SCHOOL이 1이면 고졸
		WHEN P_SCHOOL ='2' THEN '학사'
        	P_SCHOOL이 2이면 학사
        	WHEN P_SCHOOL ='3' THEN '석사'
            	P_SCHOOL이 3이면 석사
        	WHEN P_SCHOOL ='4' THEN '박사'
            	P_SCHOOL이 4이면 박사
        ELSE '없음'
        아니면 없음
	END AS '학력'
    이름을 학력으로 변경
    FROM TBL_MEMBER_202005;

 

 

 

  • 주민번호 표현해보기(CONCAT , SUBSTR , LEFT , RIGHT 사용)

-- LEFT , RIGHT 사용
SELECT CONCAT(LEFT(M_JUMIN , 6),'-',RIGHT(M_JUMIN ,7))AS '주민번호' 	
		FROM TBL_MEMBER_202005;
        
-- 앞 6자리 (SUBSTR 사용)
SELECT substr(M_JUMIN, 1, 6) FROM TBL_MEMBER_202005;
-- 뒤 6자리 (SUBSTR 사용)
SELECT substr(M_JUMIN,7,7) FROM TBL_MEMBER_202005;

SELECT CONCAT(SUBSTR(M_JUMIN,1,6),'-',SUBSTR(M_JUMIN,7,7))AS '주민번호' 
		FROM TBL_MEMBER_202005;

LEFT , RIGHT 와 SUBSTR은 서로 장단점이 있는데

 

LEFT , RIGHT는 좀 더 사용하기 간단하다 하지만 왼쪽 , 오른쪽의 시작점이 정해져 있다는 단점이있다

 

SUBSTR은 조건을 2가지 설정해야하지만 자르기위한 시작점을 정할 수 있다는 장점이 있다

 

 

  • 대표전화 (CONCAT 합치기)

-- 1.5 대표전화
SELECT CONCAT(P_TEL1 ,'-', P_TEL2 ,'-', P_TEL3)AS'대표전화' 
		FROM TBL_PARTY_202005;
        
간단하게 컬럼 P_TEL1  , P_TEL2 , P_TEL3 의 사이에 
' - ' 넣어 하나로 합쳐 출력했다

 

 

  • 만들어보기 완성!

-- 1.6 완성
SELECT M.M_NO AS '후보번호', M.M_NAME AS '성명',P.P_NAME as '소속정당'
		,CASE
		WHEN P_SCHOOL ='1' THEN '고졸'
		WHEN P_SCHOOL ='2' THEN '학사'
        WHEN P_SCHOOL ='3' THEN '석사'
        WHEN P_SCHOOL ='4' THEN '박사'
        ELSE '없음'
	END AS '학력',CONCAT(LEFT(M_JUMIN , 6),'-',RIGHT(M_JUMIN ,7))AS '주민번호'  
			,M.M_CITY AS'지역구',CONCAT(P_TEL1 ,'-', P_TEL2 ,'-', P_TEL3)AS'대표전화'
				FROM TBL_MEMBER_202005 M , TBL_PARTY_202005 P 
					WHERE M.P_CODE = P.P_CODE;

 

 

  • 풀어보기_심화

해당 결과 값을 출력하는 출력문 만들기

SELECT V_NAME AS '성명',CASE 
-- 생년월일의 앞숫자를 붙여주는 CASE
	WHEN SUBSTR(V_JUMIN,7,1) IN ('1','2') 
    		THEN CONCAT('19',LEFT(V_JUMIN,2),'년',SUBSTR(V_JUMIN,3,2),'월',SUBSTR(V_JUMIN,5,2),'일')
	WHEN SUBSTR(V_JUMIN,7,1) IN ('3','4') 
    		THEN CONCAT('20',LEFT(V_JUMIN,2),'년',SUBSTR(V_JUMIN,3,2),'월',SUBSTR(V_JUMIN,5,2),'일')
    	ELSE '없음'
	END AS '생년월일'
-- 만 나이를 구하는 CASE
	,concat(cast(date_format(sysdate(), '%Y') as unsigned) - concat(case 
	when substr(v_jumin, 7, 1) in('1', '2') then '19'
	when substr(v_jumin, 7, 1) in('3', '4') then '20'
	end,
	substr(v_jumin, 1, 2)),'세') as '나이'
-- 성별을 구하는 CASE
	,CASE
	WHEN SUBSTR(V_JUMIN,7,1) IN ('1','3') THEN '남'
	WHEN SUBSTR(V_JUMIN,7,1) IN ('2','4') THEN '여'
	ELSE '없음'
	END AS '성별'
    	,M_NO AS '후보번호' , CONCAT(LEFT(V_TIME,2),':',RIGHT(V_TIME,2)) AS '투표시간'
-- 유권자 확인을 구하는 CASE
	,CASE
	WHEN V_COMFIRM = 'Y' THEN '확인'
	WHEN V_COMFIRM = 'N' THEN '미확인'
	ELSE '없음'
	END AS '유권자확인'
FROM TBL_VOTE_202005;

설명 불가 읽어보자

 

 

  • View / Index

View : 데이터베이스에 존재하는 일종의 가상 테이블로, 실제 행과 열을 가지고 있지만 데이터를 저장하고 있지는 않다.

              뷰에서는 다른 테이블이나 다른 뷰에 저장되어 있는 데이터를 보여주는 역할만을 수행한다.

              (쿼리가 많아졌는데 찾기힘들다면 View로 저장되어 있는 쿼리는 쉽게 조회가 가능하다)

문법

뷰는 원본 테이블과 같은 이름을 가질 수 없다.
테이블과 비슷한 이름의 뷰를 생성하는 것이 좋다.
create VIEW VOTE_RESULT AS



가상으로 만들고 싶은 쿼리문




SELECT * FROM VOTE_RESULT;

Index : 핵심 키워드 : 검색속도가 빠르다 , 데이터의 위치를 빠르게 찾아주는 역활을 한다

Index 주의 사항 : 저장된 데이터가 자주 변경되는 데이터는 사용하기 힘들다

문법

Index는 정확한 사용법을 배우지 못했다!

 

  • Commit / Rollback - Transaction / 트랜잭션 제어어

일부 회사에서는 commit / rollback 을 TCL로 따로 분류하기도 한다

Commit : 메모리에 작성한 내용을 DB에 완전하게 저장함

                단, DCL / DDL 명령어들은 자동 COMMIT을 한다

 

Rollback : 마지막 commit 시점으로 되돌아간다

 

 

'나의 수업일지' 카테고리의 다른 글

인천 일보 아카데미 31일차 -2- 사용해보며 알아보기 (요소 - 블록,인라인/ link 사용 / font 변경 / 선택자(selector))  (0) 2023.04.06
인천 일보 아카데미 31일차 -1- / frontend_간단한 구성요소 / html - 문법 /html - 파일 구조 / 요소 - 블록 , 인라인 / 상대경로,절대경로 / 선택자(selector)  (0) 2023.04.05
인천 일보 아카데미 29일차 / 페이징(limit) / 게시판의 구성 / DB의 행동 구조  (0) 2023.04.03
인천 일보 아카데미 28일차 - table 구조 변경 alter / ERD보는법  (0) 2023.03.31
인천 일보 아카데미 27일차-1- 참조관계 / 참조관계-특징 / 참조관계 - 제약조건 / pk-fk  (0) 2023.03.31
'나의 수업일지' 카테고리의 다른 글
  • 인천 일보 아카데미 31일차 -2- 사용해보며 알아보기 (요소 - 블록,인라인/ link 사용 / font 변경 / 선택자(selector))
  • 인천 일보 아카데미 31일차 -1- / frontend_간단한 구성요소 / html - 문법 /html - 파일 구조 / 요소 - 블록 , 인라인 / 상대경로,절대경로 / 선택자(selector)
  • 인천 일보 아카데미 29일차 / 페이징(limit) / 게시판의 구성 / DB의 행동 구조
  • 인천 일보 아카데미 28일차 - table 구조 변경 alter / ERD보는법
GUPING
GUPING
안녕하세요 개발자를 꿈꾸는 GUPING 입니다
GUPING
개발자를 꿈꾸는 GUPING
GUPING
전체
오늘
어제
  • 분류 전체보기 (89)
    • 나의 수업일지 (88)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 수정
  • Paging
  • 버튼 이벤트 함수 변경
  • 삭제
  • 클래스 이름 변경
  • 로그인게시판
  • 검색
  • 파일이름가져오기
  • 다중프리뷰
  • 파일 이름 가져오기
  • realative
  • 네이버
  • Ajax
  • 틀만들기
  • 검색결과페이징
  • 업로드파일이름출력
  • 페이징Controller
  • 지식인
  • 버튼2가지이벤트
  • PAGE
  • 파일이름(다중)
  • 로그인 경고문
  • 버튼 이벤트 변경
  • 개힘드렁
  • 로그인form
  • naver
  • 답변 채택
  • 페이징
  • 여러사진프리뷰
  • pagingAjax

최근 댓글

최근 글

hELLO · Designed By 정상우.
GUPING
인천 일보 아카데미 30일차 / 문자 합치기(CONCAT)_자르기 (LEFT , RIGHT , SUBSTR), CASE_END 사용 , View / Index , commit / rollback
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.