Database

SQL 예제 8문제, 이클립스EE+톰캣 연동- 2020-05-27

리차드 2020. 5. 27. 11:51

--[문제1] 사원들의 연봉을 구한 후 연봉 순으로 내림차순 정렬하시오
select first_name||' ' ||last_name as 이름, salary as 연봉 from employees order by salary desc;

 

 

 

--[문제2] 사원의 레코드를 검색하시오(concat, length)

1)이름,성 연결(concat) 2)이름의 길이(length) 3) 성이 n으로 끝나는(substr)
select employee_id as 사원번호,
         concat(first_name||' ', last_name) as 이름,
         length(concat(first_name||' ', last_name)) as 길이
               from employees
                where substr(last_name,length(last_name)) = 'n';
--마지막 글자를 비교하는 경우 length를 사용하는 것 보다 -1을 이용하는 게 더 직관적이고 쉽다

 

 

 

--[문제3] 오늘부터 이번 달 말까지 총 남은 날수를 구하시오
select to_char(last_day(sysdate), 'dd') - to_char(sysdate, 'dd') as "이번 달 남은 날" from dual;
select last_day(sysdate)-sysdate||'일' as "이번달 남은 일수" from dual;

 

 

 

--[문제4] 2005년 이전에 고용된 사원을 찾으시오
select first_name||' '||last_name as 이름,

        to_char(hire_date, 'yyyy"년"') as 입사연도

               from employees

               where to_char(hire_date, 'yy') < '05'

               order by hire_date;

 

 

 

--[문제5] 커미션(commission_pct)을 받지 않은 사원의 인원수를 구하시오
select DISTINCT count(employee_id) as "커미션 없는 사원 수" from employees where commission_pct is null;

 

 

 

--[문제6] 급여가 10000미만이면 초급, 20000미만이면 중급 그 외면 고급을 출력하시오 (case 사용)
-- 조건1) 컬럼명은 '구분'으로 하시오
-- 조건2) 제목은 사원번호, 사원명, 구 분으로 표시하시오
-- 조건3) 구분(오름차순)으로 정렬하고, 같으면 사원명(오름차순)으로 정렬하시오
select employee_id as 사원번호,

        first_name||' '||last_name as 사원명,
        case
              when salary > 0 and salary < 10000 then '초급'
              when salary >= 10000 and salary < 20000 then '중급'
              else '고급'
        end "구분"
               from employees

                order by 3,2 ;

 

20200528 order by 3,2 추가. 스샷은 반영하지 않음

 

 

 

--[문제7] 사원테이블에서 사원번호, 이름, 급여, 커미션, 연봉을 출력하시오
-- 조건1) 연봉은 $ 표시와 세자리마다 콤마를 사용하시오
-- 조건2) 연봉 = 급여 * 12 + (급여 * 12 * 커미션)
-- 조건3) 커미션을 받지 않는 사원도 포함해서 출력하시오
select employee_id as 사원번호, first_name||' '||last_name as 이름,
         to_char(salary, '$9,999,999') as 급여, commission_pct as 커미션, salary*12 as 연봉,
         case
              when commission_pct is null then salary*12
              when commission_pct is not null then salary*12+salary*12*commission_pct
        end "커미션 포함 연봉"
                 from employees;

 

 

더 나은 강사님의 sql문

select employee_id as 사원번호, first_name||' '||last_name as 이름, 
        to_char(salary, '$9,999,999') as 급여, nvl(commission_pct, 0) as 커미션, 
        to_char(salary*12+salary*12*nvl(commission_pct, 0), '$9,999,999') as 연봉
               from employees;

 

내 코드는 null 값엔 임의의 값을 넣고 처리하는 nvl을 모른 채로 진행했던 터라 더 길다

 

 

 

--[문제8] 매니저가 없는 사원의 매니저id를, 1000번으로 표시 1) 제목은 사원번호, 이름, 매니저ID 2) 모든 사원 표시
select employee_id as 사원번호, first_name||' '||last_name as 이름,
         case
              when manager_id is null then 1000
              when manager_id is not null then 100
         end "매니저ID"
                from employees;

 

 

더 나은 강사님의 sql문 : 역시나 nvl을 활용해 더 간단하다

select employee_id as 사원번호, 
        first_name||' '||last_name as 이름, 
        nvl(manager_id, 1000) as 매니저ID
               from employees; 

 

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

SQL length 와 lengthb 의 차이 : length는 글자수 세기 lengthb는 바이트를 센다
char(20)과 varchar2(20) 의 차이 : char 는 남은 메모리를 반환하지 않고 varchar2는 반환한다

char20 varchar2(20)
angel angel
사천사 사천사

1.1 length 하면 20
1.2 length 하면 5
2.1 length 하면 14 (한글 한 글자당 3바이트 를 20에서 뺀 다음 한글 글자수 + 남은 바이트 수 : 3 + (20-3*3) )
2.2 length 하면 3

1.1 lengthb 하면 20
1.2 lengthb 하면 5
2.1 lengthb 하면 20
2.2 lengthb 하면 9

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

자바스크립트

<script>안에 넣어둔다

public void와 같은 접근제한자와 리턴타입 없이 그냥 function 쓴다

자료형이 없어서 a = 25 이후 a = 사과 해도 된다

문장 구분인 ;을 생략 가능하다

그러나 한 줄에 여러 문장을 쓸 경우엔 생략 불가하다

 

var, let, const

var는 변수 재선언, 변수 재할당 모두 가능 - 재선언이 가능한 점이 자바와 다르다

let은 변수 재선언 불가, 변수 재할당 가능 - 일반 자바랑 같넹?

const는 변수 재선언 불가, 변수 재할당 불가 - 그럼 얘는 파이널이네?

 

자바 : this = cmd : . = javascript : document

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

 

이클립스 EE

 

Windows - Preferences - Server - Runtime Environment - Add - Tomcat 9.0 - 경로설정 - Finish

Windows - Show View - Server - Tomcat 9.0 더블클릭 - 우측 Ports 에 Tomcat admin port 8005 입력

Ctrl + Alt + R 누르면 서버 실행. 실행중이면 재실행

 

Windows - Preferences - Workspace - UTF-8

Windows - Preferences - Web - CSS Files, HTML Files, JSP FIles 셋 모두 UTF-8로 설정 변경

 

1. new Project - Web - Dynamic Web Project

2. 이클립스에서는 프로젝트, 톰캣에선 컨텍스트의 컨셉이다

3. Target runtime : Apache Tomcat v9.0

4. Dynamic web module version 4.0

5. Next - Next - Generate web.xml 체크하고 Finish

 

프로젝트에서 Java Resources 는 자바가 보관되고

                 WebContent 에는 Web 관련 내용이 보관된다.  html과 WEB-INF가 있다

 

Tomcat 우클릭 - Add and remove - Available에 있는 프로젝트를 클릭하고 우측으로 추가하고 Finish

Tomcat 폴더에서 server.xml 더블클릭 - 하단에 Source 클릭 후 맨아래로 내려오면 Context에 추가한 프로젝트가 보임

WebContent 폴더 안에 member라는 폴더 생성

member 폴더 우클릭 new html writeForm.html

Ctrl + F11 로 실행 가능 Windows - Web browser 에서 브라우저 선택 가능

 

 

회원가입 html 페이지.

-placeholder 로 필드에 입력전 안내문구 설정

-readonly 로 읽기만 가능하게. disabled 하면 데이터를 불러올 수도 없음

-카카오 주소 찾기 api 탑재

https://codepen.io/hj-rich/pen/Baoewya

 

writeForm.html

...

codepen.io

 

톰캣과 이클립스를 연동하고,

일반 프로젝트가 아닌 Dynamic Web Project로 생성하여

xml 설정, html 작성, javascript 작성을 처리했다.

api를 처음 배운 날이다.

진행한 내용이 많아서 집에가서 같은 작업을 다시 해 보면서 영상을 찍었다.