본문 바로가기

programming/Gukbi

국비 교육 41일차 - 서브쿼리, html, 팀프로젝트 회의

728x90
반응형

오늘은 아침에 조금 일찍 나가서 처음으로 팀원들과 회의도 했다. 웹페이지를 만드는 프로젝트인데 아직 어떤 웹사이트를 만들지 확정되진 않았다.

 

다만 코시국이기에 코시국이 끝나면 수요가 많을 여행 쪽으로 할것 같긴한데 확실하진 않다

 

 

일단 오전에는 오라클을 마무리했다. 

--2021-02-23 (서브쿼리 정리, 시퀀스, 시노임) => PL/SQL, INDEX
/*
    화면 UI (NTML,CSS) : Web-Fromt
    서브쿼리 : 한개 이상의 SQL문장을 합해서 새로운 SQL문장 제작
            => 속도 (SQL문장 여러개 수행 (열고 닫고) => 속도가 저하 => SQL문장을 줄여서 처리
            => 오라클에서 SQL문장을 실행하는 것이 아니라 자바에서 SQL전송 값을 가지고 온다
        = 단일행 => 값이 한개일 경우 (컬럼1개)
            형식) 
                SELECT [DISTINCT|ALL] 컬럼,컬럼...
                FROM table_name | view_name ====> 메인 쿼리
                WHERE 컬럼명 연산자 (SELECT 문장 ====> 서브쿼리)
                                    =========== 결과값이 한개만 나와야함
                            ======
                             비교연산자 사용(=, != (<>), < ,> , <=, >=)
                    ALL(생략)
                    1. 서브쿼리가 먼저 실행
                    2. 서브쿼리의 결과값을 받아서 메인쿼리로 전송
                    3. 메인쿼리가 실행
        = 다중행 => 값이 여러개일 경우 (컬럼1개)
                SELECT [DISTINCT|ALL] 컬럼,컬럼...
                FROM table_name | view_name ====> 메인 쿼리
                WHERE 컬럼명 연산자 (SELECT 문장 ====> 서브쿼리)
                            =====   ========== 여러개 존재
                            IN , ANY , ALL , EXISTS
                            IN(결과값 전체 처리)
                            ANY(최대값, 최소값)       ===> MAX 나 MIN 을 쓰셈 그냥 
                                > ANY () : 최소값
                                > ANY () : 최대값
                            ANY(최대값, 최소값)        ===> MAX 나 MIN 을 쓰셈 그냥 
                                > ALL () : 최소값
                                > ALL () : 최대값
                                
                                 EXISTS(서브 쿼리) => 값이 존재하면 실행
                                                     값이 존재하지 않으면 실행X
        = 다중 컬럼 => 컬럼이 여러개
            SELECT 컬럼명 ....
            FROM table_name
            WHERE (컬럼명,컬럼명) 연산자 (SELECT 컬럼명,컬럼명 FROM table_name)
        = 스칼라 => 컬럼 대신 사용 => 페이지 나누기
            SELECT 컬럼명, (SELECT~),(SELECT~)
            FROM table_name
            
            SELECT 컬럼명, (SELECT~)
            FROM (SELECT~) ============> 테이블 대신 사용 : 인라인뷰(Top-N)
            
            ******** SUBQUERY : DML(SELECT,INSERT,UPDATE,DELETE,CREATE)에서도 사용이 가능
    시퀀스 : 자동 증가 번호
        1) 형식 => SELECT MAX(no)+1 FROM table_name
            CREATE SEQUENCE 시퀀스명
                START WITH  ======> 시작값 지정 (게시물 번호 = 1
                INCREMENT BY =====> 증가 1
                MAX_VALUE  =======> 100
                MIN_VALUE  =======> 1
                NOCACHE | CACHE ==> 미리 20개 정도를 생성후 값을 준다
                NOCYCLE | CYCLE ==> 1~100 증가 => 1부터 시작
            삭제)
                DROP SEQUENCE 시퀀스명
        2) 값 읽기
            = 현재값 : 시퀀스명.currVal
            = 다음값 : 시퀀스명.nextVal
            
    시노임 : 테이블 동의어(테이블 명 변경)   emp => e
            class A
            
            A a=new A();
            A b=a;      ===> a,b
            
            형식) CREATE SYNONYM 시노임명
                  FOR table_name
                  
            

SELECT deptno,sal FROM emp;
CREATE SYNONYM ee
FOR emp;

SELECT * FROM ee;
*/
/*
    단일행 서브쿼리
        = 검색 조건에서 주로 사용
        = 서브쿼리(SELECT 문장)는 결과값이 한개만 존재 (1:1) => 1:다
        = 서브쿼리는 반드시 ()안에 첨부
        = 서브쿼리가 실행 => 메인 쿼리가 실행
        = 연산자는 주로 비교연산자 사용
        
*/
-- JONES 보다 많은 급여를 받는 사원을 검색
SELECT sal FROM emp WHERE ename='JONES';
SELECT * FROM emp WHERE sal>2975;

SELECT * FROM emp WHERE sal>(SELECT sal FROM emp WHERE ename='JONES');

--SCOTT 와 동일한 급여를 받는 사원의 정보를 검색 (SCOTT는 제외)
SELECT sal FROM emp WHERE ename='SCOTT';
SELECT * FROM emp WHERE sal=3000 AND ename<>'SCOTT';

SELECT * FROM emp WHERE sal=(SELECT sal FROM emp WHERE ename='SCOTT')
AND ename<>'SCOTT';

-- SMITH와 부서가 다르고 동일한 업무를 수행하는 사원의 정보를 출력
SELECT * FROM emp WHERE deptno<>(SELECT deptno FROM emp WHERE ename='SMITH') 
AND job=(SELECT job FROM emp WHERE ename='SMITH');
--===> SQL문장이 여러개를 사용할 수 있다

-- 부서중에 가장 급여를 많이 받는 부서번호 출력 (부서별 급여의 합이 가장 큰 부서를 찾아라),(10,20,30)
SELECT deptno FROM emp WHERE sal=(SELECT MAX(sal) FROM emp); --===> 틀림, KING이 있는 5000을 제일 큰걸로 인식해서 dept=10을 가져옴
                                                                    --  (값이 가장 큰 1명의 값을 가져온다)
/*
    WHERE 전체 대상
    HAVING 그룹대상
*/
SELECT deptno,SUM(sal) 
FROM emp 
GROUP BY deptno 
HAVING SUM(sal)=(SELECT MAX(SUM(sal))FROM emp GROUP BY deptno);

-- DALLAS에서 근무하는 사원의 정보를 출력
SELECT * FROM emp WHERE deptno=(SELECT deptno FROM dept WHERE loc='DALLAS');

/*
    서브쿼리는 GROUP BY 사용이 가능, 다른 테이블에서 검색이 가능
*/
-- 인원수가 가장 많은 부서번호 출력
SELECT COUNT(*),deptno 
FROM emp 
GROUP BY deptno
HAVING COUNT(*)=(SELECT MAX(COUNT(*)) FROM emp GROUP BY deptno) ;



/*
    다중행 서브쿼리
    형식) 
        SELECT [DISTINCT|ALL] 컬럼,컬럼...
        FROM table_name
        WHERE 컬럼 연산자(다중행 연산자) (SELECT~)
                                      ========== 1:다
                  ==================== IN, ANY, ALL, EXISTS                             
*/
--20번 부서에서 동일한 관리자로부터 관리 받는 사원을 검색(20번 제외)
SELECT e1.ename "본인" , e1.deptno, e2.ename " 사수"
FROM emp e1, emp e2
WHERE e1.mgr=e2.empno
AND e1.deptno=20;

SELECT * 
FROM emp
WHERE mgr IN(SELECT mgr FROM emp WHERE deptno=20)
AND deptno<>20;
/*
    7839        ==> 값이 여러개 나온 서브쿼리문장 = 다중행
    7566
    7902
    7566
    7788
*/

--10번 부서원들중에 급여가 가장 낮은 사원 검색
SELECT sal FROM emp WHERE deptno=10;
SELECT * FROM emp WHERE sal<ALL(5000,2450,1300)
AND deptno<>10;
    -- < ALL (실행된 결과중에 최소값)  ALL(5000,2450,1300) => <1300
    /*
        컬럼 > ANY (서브 쿼리) : MIN
        컬럼 < ANY (서브 쿼리) : MAX
        
        컬럼 > ALL () : MAX
        컬럼 < ALL () : MIN
    */
SELECT * FROM emp WHERE sal<ALL(SELECT sal FROM emp WHERE deptno=10)
AND deptno<>10;

SELECT * FROM emp WHERE sal<(SELECT  MIN(sal) FROM emp WHERE deptno=10)
AND deptno<>10;


-- 다중 컬럼 서브 쿼리
/*
    형식) SELECT [DISTINCT | ALL] 컬럼, 컬럼...
          FROM table_name
          WHERE (컬럼1,컬럼2...) IN(SELECT 컬럼1,컬럼2 FROM table~)
*/
--각 부서별로 최소급여를 받는 사원의 부서번호, 이름,급여
SELECT deptno,ename,sal
FROM emp
WHERE (deptno,sal) IN(SELECT deptno,MIN(sal) FROM emp GROUP BY deptno) ;
--    <--> 최대값
SELECT deptno,ename,sal
FROM emp
WHERE (deptno,sal) IN(SELECT deptno,MAX(sal) FROM emp GROUP BY deptno) ;

-- 스칼라 서브쿼리 (다른 테이블 연결이 가능)
/*
    형식) 
        SELECT 컬럼명,(SELECT~), (SELECT~)
        FROM table_name
*/
-- 각 사원의 정보를 출력 => 사번,이름,직위,입사일,급여, 부서명,근무지,급여등급
-- JOIN 
SELECT empno,ename,job,hiredate,sal,dname,loc,grade
FROM emp,dept,salgrade
WHERE emp.deptno=dept.deptno
AND sal BETWEEN losal AND hisal;
    -- 유지보수(부가적으로 컬럼값을 추가할경우 => 다른테이블에서 가지고 올 때
SELECT empno,ename,job,hiredate,sal,(SELECT dname FROM dept d WHERE d.deptno=e.deptno) "dname",
                                    (SELECT loc FROM dept d WHERE d.deptno=e.deptno) "loc",
                                    (SELECT grade FROM salgrade WHERE sal BETWEEN losal AND hisal) "grade"
FROM emp e;                                
    -- 오라클에서만 사용이 가능 (WITH를 이용한 서브쿼리)  => WITH 가상테이블 (연습용)

    WITH table_nams AS(
        SELECT '홍길동' as name,'남자' as sex, 89 as kor, 90 as eng, 67 as math FROM DUAL 
        UNION ALL
        SELECT '심청이' as name,'여자' as sex, 87 as kor, 88 as eng, 70 as math FROM DUAL 
         UNION ALL
         SELECT '박문수' as name,'남자' as sex, 85 as kor,78 as eng, 76 as math FROM DUAL 
         UNION ALL
         SELECT '춘향이' as name,'여자' as sex, 90 as kor, 90 as eng, 80 as math FROM DUAL 
         UNION ALL
         SELECT '이순신' as name,'남자' as sex, 78 as kor, 93 as eng, 90 as math FROM DUAL 
              
    )
    SELECT name,sex,kor,eng,math,(kor+eng+math) "total", ROUND((kor+eng+math)/3,2) "avg",
    RANK() OVER(ORDER BY (kor+eng+math) DESC) "rank"
    FROM std;
    

어제 했던 서브 쿼리를 연습했다. 새로안 사실 중에 하나는 서브쿼리를 사용해도 그룹으로 묶어서 값을 가져올 경우에는 GROUP BY를 사용해야 한다는 점과 서브쿼리를 여러개 사용해도 된다는거다. 

 

어제 계속 연습했던거라 그렇게 어려운 부분은 아니었다. 

 

그리고 HTML을 새로 배웠다. 근데... 너무 다 아는 내용이었어서 집중하기가 참 힘들었다

 

<!-- 
	HTML(브라우저에서 실행하는 언어), XML(문서 저장)
	1. 특징 : 정적 (고정된 태그를 사용)
	2. HTML은 사용자 정의가 없다
	== 태그와 속성
		1) 태그 형식
			= 여는 태그 <table>
			= 닫는 태그 </table>
			= EMPTY 태그 <img />
		2) 태그의 종류
			= 정렬 : <center>
			= 화면 출력 : <body>
			= CSS, JavaScript 선언 : <head> 
		== HTML의 구조 => 단점 (오류가 없다) => 한줄씩 번역 (인터프리터)
		<!DOCTYPE html> : html 문서가 저장 (HTML 버전) => 5버전 
		5버전의 특징
		=> 시멘텍 태그 사용
		   ========
		   알아보기 쉬운 태그 (HTML4버전 => 태그명이 추상적이다)
		   <object> => <video>
		   태그 '<' 와 '>'
		   === HTML 자체가 대소문자 구분하지 않는다 
		   	   가급적이면 태그는 소문자를 기본으로 한다 
		   	   여는 태그와 닫는 태그 정확히 입력한다 
		   	   들여쓰기 
		   	   <a>
		   	   	<b></b>
		   	   	<c></c>
		   	   	<d></d>
		   	   </a>
		   	   
		   	   태그 => 옵션 (속성) 예) width="" height=""
		   	   <img src="화면에 출력할 이미지" width="넓이" height="높이">
		   	   태그는 사용자 정의가 없다 (고정 태그), 속성은 사용자 정의(지정된 속성)가 있다
		   	   태그의 포함관계 설정
		   	   ==============
		   	   <u><i>aaaaa</u></i> (X)
		<html> ==> 생략 바로 <body> 인식
		 <head>
		 	JavaScript, CSS, 한글<meta> 브라우저제목 <title> 
		 	<script type="text/javascript">함수(사용자 요청시 처리)</script>
		 	<style>HTML 태그의 디자인 </style>
		 	<link> : 외부 CSS를 불러올때 사용
		 </head>
		 <body>
		 	: 화면 출력하는 부분
		 		1) 텍스트 관련
		 			= 텍스트
		 				<font> : 색상지정, 크기, 글꼴 ..... => CSS이용
		 				<u> : underline
		 				<i> : italic
		 				<em> : 강조체
		 				<strong> : 강조체
		 				<b> : 굵은 글씨체
		 				<h1>~<h6> : 제목 출력시 
		 			  = 목록을 출력 
		 			  	<ul> unorder list => 메뉴 제작 
		 			  	<ol> order list
		 			  	<dl> data list => 상세보기
		 			  	<table> : 표를 만들어서 처리 => 게시판 목록, 사원 정보
		 		2) 이미지와 링크(하이퍼링크)
		 			= <img> : 이미지 출력
		 			= <a> : 화면 변경 (링크)
		 		3) 폼 관련 (입혁창) 
		 			= <input> : 입력창 
		 				type
		 				1. text : 한줄 입력 => 이름, ID, 주소
		 				2. password : 비밀번호 입력창
		 				3. radio : radio button
		 				4. checkbox 
		 				5. button
		 					= 일반버튼 : button
		 					= 전송버튼 : submit
		 					= 리셋버튼 : reset
		 				6. image : submit버튼과 동일
		 				7. date : 날짜 선택
		 				8. number : 숫자만 사용이 가능
		 			= <textarea> : 여러줄 입력 
		 			= <select> : 콤보박스 
		 		4) 기타 
		 			= <div> : 화면 나누기 (레이아웃)
		 			= <span> : 특정부분에 CSS만 적용
		 			= <form> : 입력태그 전체를 모아주는 태그 (한번에 전송)
		 			= <video> <audio>
		 			= <header> <section> <footer> <aside> <nav>
		 			= <br> : 다음줄에 출력 \n (다음줄)
		 			= <p> : 단락 나누기 
		 			= <hr> : 수평선
		 </body>
		</html>
		
		= 요구사항 확인
		= UI 디자인 (HTML, CSS)
		= UI 구현 (main 페이지 구성)
	WML, VXML
	  == 태그와 속성
	  
		 -->
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
</head>
<body>
<!--  
	block : System.out.println()
	inline : System.out.print()
 -->
	<h1>안녕</h1> <!-- block -->
	<h2>안녕</h2>
	<h3>안녕</h3>
	<h4>안녕</h4>
	<h5>안녕</h5>
	<h6>안녕</h6>
	<hr>
	<!-- font : 글자와 관련 
		 웹사이트 => 반드시 글꼴을 통일 (google font)
	-->
	<!-- 색상 변경 -->
	<font color="red" >Hello</font>
	<!-- 속성 : 이미 지정된 속성을 사용한다 (속성=값) 여러개를 동시에 사용할 수 있다
		 속성="값"
		 속성='값'
		 속성=값 (값에 공백이 있는 경우에는 반드시 "" 사용한다)
	 -->
	<!-- 글꼴 변경 -->
	<font face="궁서체" style="display:block">궁서체</font> <!-- inline 속성 -->
	<!-- 크기 변경 -->
	<font size="1pt">HTML</font>
	<hr>
	안녕하세요 <strong>웹프로그램</strong>
	<br>
	<i> 재미없다</i>
	<br>
	<blockquote>안녕하하세오요용오ㅗㅗ오오</blockquote>
	<marquee>움직인다아아앙</marquee>
	<br>
	<!-- pre : 원래 상태 그대로 출력 = 게시판 : 내용, 댓글 출력 -->
	<pre>
		모든 생각이 실시간으로 노출되는 ‘노이즈’에 감염된 세상 뉴 월드. 
		토드(톰 홀랜드)는 이 곳에 불시착한 의문의 유입자 바이올라(데이지 리들리)와 마주하게 된다. 
		혼돈의 세상 속 숨겨진 비밀에 의문을 품은 두 사람은 뉴 월드를 탈출할 계획을 세우고, 
		뉴 월드의 통치자 데이비드(매즈 미켈슨)는 위험을 직감하고 이들을 추격하기 위해 모든 수단을 동원하는데…</pre>
		<q>인용 인용 대사 대사</q>
		
		<address>서울시 마포구 서교동</address>
		<sub></sub><!-- 아래첨자 -->
		<sup></sup><!-- 위첨자 -->
		<b>오늘은 HTML 기본 태그를 작성합니다</b><sup style="color:red">new</sup>
		<!-- 
			<>'기기괴괴 성형수' 보스턴 사이언스픽션 영화제 최고 애니메이션상 수상<>
			[엑스포츠뉴스 김유진 기자] 영화 <>'기기괴괴 성형수'(감독 조경훈)<>가 한국 애니메이션 영화 최초 
			제46회 보스턴 사이언스픽션 영화제 <>최고 애니메이션상<> 수상의 영예를 안았다. 
			'기기괴괴 성형수'는 바르면 완벽한 미인이 되는 위험한 기적의 물 성형수를 알게 된 예지가 
			미인으로 다시 태어나면서 겪게 되는 호러성형괴담. '기기괴괴 성형수'는 지난해 애니메이션계의...
			2021.02.23 엑스포츠뉴스
						======= 빨간색 출력
		 -->
		 <h1>'기기괴괴 성형수' 보스턴 사이언스픽션 영화제 최고 애니메이션상 수상</h1>
		 <pre>
		 	[엑스포츠뉴스 김유진 기자] 영화 <strong>'기기괴괴 성형수'(감독 조경훈)</strong>가 한국 애니메이션 영화 최초 
			제46회 보스턴 사이언스픽션 영화제 <span style="background-color:yellow">최고 애니메이션상</span> 수상의 영예를 안았다. 
			'기기괴괴 성형수'는 바르면 완벽한 미인이 되는 위험한 기적의 물 성형수를 알게 된 예지가 
			미인으로 다시 태어나면서 겪게 되는 호러성형괴담. '기기괴괴 성형수'는 지난해 애니메이션계의...
			2021.02.23 <font color=red>엑스포츠뉴스</font>
		 
		 </pre>
</body>
</html>

 다 아는 내용이긴 했지만 새로 배운 것들과 또 내 엑스형 프로젝트에 적용할만한 새로운 태그도 배웠다

<pre>
		 	[엑스포츠뉴스 김유진 기자] 영화 <strong>'기기괴괴 성형수'(감독 조경훈)</strong>가 한국 애니메이션 영화 최초 
			제46회 보스턴 사이언스픽션 영화제 <span style="background-color:yellow">최고 애니메이션상</span> 수상의 영예를 안았다. 
			'기기괴괴 성형수'는 바르면 완벽한 미인이 되는 위험한 기적의 물 성형수를 알게 된 예지가 
			미인으로 다시 태어나면서 겪게 되는 호러성형괴담. '기기괴괴 성형수'는 지난해 애니메이션계의...
			2021.02.23 <font color=red>엑스포츠뉴스</font>
		 
		 </pre>

 <pre> 태그로 감싸주면 따로 <p>태그나 <br>태그를 사용할 필요 없이 쓴대로 출력이 된다. 

엑스형 명대사 출력할때 유난히 긴 대사가 있어서 하나하나 <br>태그를 써서 위치를 맞춰줬는데 그럴 필요가 없었다. 

 

-> 수정해놓아야 겠다

 

그리고 또 이미 잘 아는 리스트 태그도 연습해봤다

 

<!-- 
	목록 출력
	ul
	  사용법) <ul>
	  		 <li>aaa</li>
	  		 <li>aaa</li>
	  		 <li>aaa</li>
	  		 <li>aaa</li>
	  		 <li>aaa</li>
	  		</ul>
	ol
	  사용법) <ol>
	  		 <li>aaa</li>
	  		 <li>aaa</li>
	  		 <li>aaa</li>
	  		 <li>aaa</li>
	  		 <li>aaa</li>
	  		</ol>
	dl
	table	
 -->
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
</head>
<body>
	<h3>과목</h3>
	<ul>
		<li>Java</li>
		<li>Oracle</li>
		<li>HTML</li>
		<li>CSS</li>
		<li>JavaScript</li>
		<li>JSP</li>
		<li>SPRING</li>
		<li>PYTHON</li>
	</ul>
	<hr>
	<h3>과목</h3>
	<ol style="list-style-type:lower-alpha;">
		<li>Java</li>
		<li>Oracle</li>
		<li>HTML</li>
		<li>CSS</li>
		<li>JavaScript</li>
		<li>JSP</li>
		<li>SPRING</li>
		<li>PYTHON</li>
	</ol>
	<hr>
	<dl>
		<dt> 감독 </dt>
		<dd>박찬욱</dd>
		<dt> 배우 </dt>
		<dd>홍길동</dd>
	
	</dl>
	<br>
	다음중 동물이 아닌 것은?
	<ul>	
		<li>사자</li>
		<li>호랑이</li>
		<li>코끼리</li>
		<li>메뚜기</li>
		<li>원숭이</li>
	</ul>
</body>
</html>

 재미가 없다... 

이미 다 아는거란 말이에요

그냥 여기서 몰랐던거 배워서 엑스형 프로젝트 업그레이드나 해야겠다

728x90
반응형