자바스크립트
객체생성, 배열 생성, 출력
HTML
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>도서 관리 프로그램 - 객체 만들기</title>
<link rel="stylesheet" href="css/book.css">
</head>
<body>
<script src="js/book-result.js"></script>
</body>
</html>
CSS
body { background:url('../images/bg.png') repeat-x top left; }
h1 { margin-top:180px; }
p { width:400px; margin-bottom:10px; padding:10px; border:1px solid #ccc;
color: #ccc; background-color: black;}
JS
// 생성자
function Book(title, author, volume, price){
this.title = title,
this.author = author,
this.volume = volume,
this.price = price;
}
// 객체 생성
let html = new Book('웹표준의 정석', 'ko', '608', '28,000');
let youtube = new Book('유튜브 영상 만들기', 'Kim', '368', '16,000');
let python = new Book('점프 투 파이썬', 'Park', '352', '18,800');
// 배열 생성, 출력
let booklist = [html, youtube, python];
for(let i = 0; i < booklist.length; i++){
document.write(`<p>${booklist[i].title}</p>`);
}
결과
객체 선언 / 프로퍼티와 메서드 정의 / 호출
HTML
CSS
JS
결과
Quiz 1 _ 변수 선언 후 객체 생성 / 출력
HTML + CSS
JS
결과
Quiz 2 _ 명언 배열 생성 후 2초마다 새로운 명언 출력
HTML + CSS
JS
결과
오라클
서브쿼리
SQL문을 실행하는 데 필요한 데이터를 추가로 조회하기 위해 SQL문 내부에서 사용하는 SELECT문 의미
조회 대상의 오른쪽에 놓이며 괄호 ( ) 로 묶어서 사용
예)
사원이름이 ALLEN인 사원의 추가 수당보다 많은 추가 수당을 받는 사원 정보를 출력
select *
from emp
where comm > (select comm
from emp
where ename = 'ALLEN'
)
실행 결과가 하나인 단일행 서브쿼리
서브쿼리에서 출력되는결과가 하나이므로 메인쿼리와 서브쿼리 결과는 단일행 연산자를 사용해서 비교
서브쿼리의 결과 값이 날짜형인 경우 ( 빨리 입사한 사원 목록 조회 )
select *
from emp
where hiredate < (select hiredate
from emp
where ename = 'SCOTT'
)
SCOTT보다 빨리 입사한 직원 목록
테이블 조인 후 SELECT문에 서브쿼리 적용 ( 서브쿼리 안에서 함수 사용 )
select e.empno, e.ename, e.job, e.sal, d.deptno, d.dname
from emp e, dept d
where e.deptno = d.deptno
and e.deptno = 20
and e.sal > (select avg(sal) from emp)
실행 결과가 여러 개인 다중행 서브쿼리
단일행 서브쿼리와 달리 서브쿼리 결과가 여러 개이므로 단일행 연산자는 사용할 수 없고 다중행 연산자를 사용해야
메인쿼리와 비교할 수 있다.
IN연산자
메인쿼리의 데이터가 서브쿼리의 결과 중 하나라도 일치한 데이터가 있다면 true
부서 번호가 20이거나 30인 사원의 정보만 출력
select *
from emp
where deptno in (20, 30);
각 부서별 최고 급여와 동일한 급여를 받는 사원 정보 출력
select *
from emp
where sal in (select max(sal)
from emp
group by deptno )
서브쿼리의 SELECT문 결과 값이 밑에 쿼리문 처럼 2850, 3000, 5000이 출력되는데 IN연산자를 사용해 메인쿼리에서는
세 값 중 일치하는 값을 가진 행만 출력한다.
select max(sal)
from emp
group by deptno
EXISTS 연산자
서브쿼리에 결과 값이 하나 이상 존재하면 조건식이 모두 true ( 전부 출력 ), 존재하지 않으면 모두 false
서브쿼리 결과 값이 존재하는 경우
모두 출력
select *
from emp
where EXISTS ( select dname
from dept
where deptno = 10);
서브쿼리 결과 값이 존재하지 않는 이유
아무것도 출력 안됨 50은 없기 때문에
select *
from emp
where EXISTS ( select dname
from dept
where deptno = 50);
비교할 열이 여러 개인 다중열 서브쿼리
서브쿼리의 SELECT절에 비교할 데이터를 여러 개 지정하는 방식
select *
from emp
where (deptno, sal) in ( select deptno, max(sal)
from emp
group by deptno);
오라클 퀴즈
Quiz-1
전체 사원 중 ALLEN과 같은 직책인 사원들의 사원 정보, 부서 정보를 출력
select e.job, e.empno, e.ename, e.sal, d.deptno, d.dname
from emp e, dept d
where e.deptno = d.deptno
and job = (select job from emp where ename = 'ALLEN')
Quiz-2
전체 사원의 평균 급여보다 높은 급여를 받는 사원들의 사원 정보, 부서 정보, 급여 등급 정보 출력
( 단 출력할 때 급여가 많은 순으로 정렬하되 급여가 같을 경우에는 사원 번호를 기준으로 오름차순 정렬 )
select e.empno, e.ename, d.dname, e.hiredate, d.loc, e.sal, s.grade
from emp e, dept d, salgrade s
where e.deptno = d.deptno
and e.sal between s.losal and s.hisal
and sal > (select avg(sal)
from emp )
order by e.sal desc, e.empno;
Quiz-3
10번 부서에 근무하는 사원 중 30번 부서에는 존재하지 않는 직책을 가진 사원들의 사원 정보, 부서 정보 출력
select e.empno, e.ename, e.job, d.deptno, d.dname, d.loc
from emp e, dept d
where e.deptno = d.deptno
and e.deptno = 10
and job not in (select distinct job from emp where deptno = 30);
결과가 해당처럼 나와야 됨
서브 쿼리 뺀 결과 값
select e.empno, e.ename, e.job, d.deptno, d.dname, d.loc
from emp e, dept d
where e.deptno = d.deptno
and e.deptno = 10
해당 문제 풀때는 서브쿼리 문 안에 내용을 확인 후 제외 시킬 인원 목록 확인
select distinct job from emp where deptno = 30
'프로젝트 기반 자바(JAVA) 응용 SW개발자 취업과정' 카테고리의 다른 글
2023-07-17 42일차 (0) | 2023.07.17 |
---|---|
2023-07-14 41일차 (0) | 2023.07.14 |
2023-07-11 38일차 (1) | 2023.07.11 |
2023-07-10 37일차 (0) | 2023.07.10 |
2023-07-07 36일차 (0) | 2023.07.07 |