오늘보다 더 나은 내일의 나에게_

비전공자의 IoT 국비 교육 수강일지 Day_07 본문

비전공자의 코딩일지

비전공자의 IoT 국비 교육 수강일지 Day_07

chan_96 2021. 12. 28. 19:45
728x90

실행 순서

SELECT------------5
FROM-------------1
WHERE-----------2
GROUP-----------3
HAVING----------4
ORDER BY--------6

 

 

실습 예제

더보기
더보기
18. 회사 전체의 최대 급여, 최소 급여, 급여 총 합 및 평균 급여를 출력
18번 예제
19. 각 직업별, 최대 급여, 최소 급여, 급여 총 합 및 평균 급여를 출력
최대 급여는 MAX, 최소 급여는 MIN, 급여 총합은 SUM  및 평균 급여는 AVG로 출력, 직업을 오름차순 정렬
19번 예제
20. 동일한 직업을 가진 사원들의 총 수를 출력
20번 예제
21. 매니저로 근무하는 사원들의 총 수를 출력
**중복제거 DISTINCT**
21번 예제
22. 사내의 최대 급여 및 최소 급여의 차이를 출력
22번 예제
23. 매니저의 사번 및 그 매니저 밑 사원들 중 최소 급여를 받는 사원의 급여를 출력
-매니저가 없는 사람들은 제외
-최소 급여가 5000 미만인 경우는 제외
-급여 기준 역순으로 조회
더보기
더보기

**매니저가 없는 사람은 제외 => IS NOT NULL** 
(일반조건은 WHERE절)

23번 예제
24. 부서 명, 부서위치 ID, 각 부서 별 사원 총 수, 각 부서 별 평균 급여를 출력 / 부서위치를 오름차순으로 출력
더보기
더보기
24번 예제

 

EX) Abel이라는 사원이 받는 급여보다 더 많은 급여를 받는 사원의 이름과 급여를 출력
=> 1. Abel 급여 검색
=> 2. 결과 후 다시 검색

**서브 쿼리 사용 시 한 번에 조회 가능**
서브쿼리 사용 예제

 

서브 쿼리

=> 특정 값을 모르고 있을 때 사용

 

-서브 쿼리가 먼저 실행되고 메인 쿼리가 실행된다

-SELECT, FROM, WHERE, HAVING, ORDER BY절에 사용 가능(GROUP BY 사용 불가)

-WHERE과 HAVING 절에서는 값의 역할을 대체한다

-서브 쿼리 개수제한은 없다

 

 

서브 쿼리 작성 시

1. 뭐를 모르는지 찾는다! (Abel의 급여)

2. 모르는 걸 서브 쿼리를 통해 찾는다!

(모르는 값을 서브 쿼리의 SELECT LIST절에 어떤 컬럼으로 찾을 것 인지 결정) (abel급여 -> 서브 쿼리에서 SALARY)

3. 누가 받을 것인지 결정 => 서브 쿼리가 넘겨준 값을 메인 쿼리의 어떤 컬럼이 받을 것인지 결정 (서브 쿼리에서 SALARY -> 메인 SALARY)

4. 서브 쿼리의 결과를 넘겨주는 연산자를 결정 (SALARY > SALARY)

 

*서브 쿼리의 결과와 메인 쿼리의 받는 컬럼의데이터 타입은 반드시 동일해야 함

*단, 컬럼 이름은 틀려도 상관없음

 

 

서브 쿼리 사용 지침

- 서브 쿼리를 괄호로 묶음

- 비교 조건의 오른쪽에 서브 쿼리를 넣음

-WHERE절과 HAVING절 서브 쿼리에서는 ORDER BY 절은 사용하지 않는 것이 좋다!

-단일 행 서브 쿼리에는 단일 행 연산자를 사용하고 다중 행 서브 쿼리에는 다중 행 연산자(IN과 같은 복수 연산자 사용)를 사용

서브 쿼리 예제

 

다중 행 서브 쿼리

연산자 의미
IN 목록에 있는 동일한 값
ANY 값을 서브 쿼리에 의해 반환된 각 값과 비교
> ANY (최소값 보다 큰값)
< ANY (최대값 보다 작은값)
ALL 값을 서브쿼리에 의해 반환된 모든 값과 비교
> ALL (모두중 최대값 보다 큰값)
< ALL (모두중 최솟값 보다 작은값)

 

실습 예제

25. Zlotkey와 동일한 부서에 근무하는 다른 모든 사원들의 사번 및 고용 날짜를 출력
더보기
더보기
25번 예제
26. 회사 전체 평균 급여보다 더 급여를 많이 받는 사원들의 사번 및 이름을 출력
더보기
더보기
26번 예제
27. 이름에 u가 포함되는 사원들과 동일 부서에 근무하는 사원들의 사번 및 이름을 출력
28. 시애틀에 근무하는 사람 중 커미션을 받지 않는 모든 사람들의 이름, 부서 명, 지역 ID를 출력

더보기
더보기

**테이블 조인은 적게 쓰는 게 좋다**

28번 예제

변수 : 데이터를 담을 수 있는 공간(값 변경 가능)

//변수선언
int num;
//자료형 변수이름;

//변수에 값을 할당
num = 3;
//변수이름 = 값;

//선언과 동시에 값 할당
int num2 = 4;

자료형 : 변수가 담을 자료(데이터)의 형태(정수형, 실수형, 문자형, 논리형...)
변수 이름 : 원하는 대로 작성 가능(but 예약어는 사용 불가능, 규칙 지켜줘야 함)

 

변수명은 대소문자 구분
같은 클래스 내에서 같은 변수명 선언 불가

 

상수 : 데이터를 담을 수 있는 공간(값 변경 불가능), final 키워드 사용

final int num3 = 10;
//num3 =20; ----------ERROR
//상수 값 변경 불가능

 

단축키

-주석처리 단축키 : ctrl + /  
-여러 줄 : ctrl + shift + /
-코드 복사 : ctrl + alt + 방향키
-코드 정리 : ctrl + shift + f
-변수 이름 일괄변경 단축키 : alt + shift + r
-코드 옮기기 단축키 : alt + 방향키
-자동완성 단축키 : ctrl+space 

 

 

여러 가지 자료형

아스키코드 - 한글 표현 X
유니코드 - 모든 언어 표현 가능

8bit = 1byte

  1byte 2byte 4byte 8byte
논리 boolean      
문자   char    
정수 byte short int long
실수     float double

1. primitive type(기본 타입) : 자바언에 내장된 기본 유형
1-1. 논리형(boolean) - yes/no, true/false, on/off, 1/0 (switch)
1-2. 문자형(문자 하나를 표현) - 문자, 유니코드, 아스키코드 표현 가능
char c = '나'; // 문자
System.out.println(c);
char c1 = 97; // 아스키코드
System.out.println(c1);
char c2 = '\uAC00'; // 유니코드
System.out.println(c2);​

1-3. 정수형 (byte, short, int(기본), long)
1-4. 실수형 (float, double(기본))
float n5 = 10.123f;
float n6 = (float)10.123;
double n7 = 10.123;

 

2. reference type : 기본 타입 외에 모든 타입
   ex_) String : 문자열(기본 제공 x)
String s = "Hello World!";
		
System.out.println(s.substring(0, 5));
// Hello 출력

System.out.println(s+123);
// Hello World123 출력

 

기본 타입으로는 "Hello World"같은 하나의 문자열을 표현할 수 없음
> 문자열을 나타낼 수 있는 자료형 String으로 표현

*문자열과 +연산이 실행되면 기본 타입의 값이 문자열로 바뀌고 두 문자열이 연결된 새로운 문자열이 생성

 

타입 변환(형 변환) : 변수나 상수 타입을 다른 타입으로 바꾸는 것

1) 자동 타입 변환(자동형 변환) - 타입이 일치하지 않을 때 크기가 작은 타입을 큰 타입으로 자동 변환

 

2) 강제 타입 변환(강제 형 변환) - 개발자가 강제로 타입 변환을 지시하는 경우

=> 큰 자료형에서 작은 자료형으로 바꿀 경우 Overflow현상

 

 

출력 : 디스플레이에 문자나 숫자 등을 나타내는 것

-\n : 개행 문자

System.out.print(출력하고 싶은 구문)
//> 출력하고 싶은 구문 출력
System.out.println(출력하고 싶은 구문)
//> 출력하고 싶은 구문 출력 후 개행
System.out.printf("출력 서식", 출력내용)
//> 출력하고 싶은 서식대로 출력

 

입력 :

Scanner sc = new Scanner(System.in)

읽은 바이트를 문자, 정수, 실수, 불린, 문자열 등 다양한 타입으로 변환하여 리턴하는 클래스

*입력 값을 공백 문자('', '\t', '\n')를 기준으로 토큰 분리

 

System.in : 키보드로 입력할 수 있도록 해주는 도구
Scanner : 입력받은 값을 사용할 수 있도록 해주는 도구

 

sc.next() > 다음 토큰을 문자열로 리턴

sc.nextInt() > 다음 토큰을 int 타입으로 리턴

sc.nextLine() > 공백이 낀 문자열을 리턴

 

 

예제

예제 1 이름과 나이를 입력받고 출력

 

연산

=> 정해진 규칙에 따라 데이터를 처리하여 결과를 산출하는 것

: 연산의 과정을 기술한 것

연산자 : 연산에 사용되는 기호

피연산자(항) : 연산이 이루어지는 데이터

 

  종류
단항 연산자 증감연산자 ex)a++
이항 연산자 대입연산자, 산술연산자, 비교연산자, 논리연산자, 비트연산자, 시프트연산자 ex)a+b
삼항 연산자 삼항연산자 ex)a?b:c

 

산술 연산자 : 숫자를 연산하는 연산자 (+, -, *, / ,%)

= 정수 정수 -> 정수

= 정수 실수 -> 실수

 

예제

예제 5. num1, num2의 더하기, 빼기, 곱하기, 나누기 결과 값을 출력(단, 나누기 결과 값은 실수로 표현)
(num1=7, num2=3)
728x90
Comments