오늘보다 더 나은 내일의 나에게_
비전공자의 IoT 국비 교육 수강일지 Day_07 본문
실행 순서
SELECT------------5
FROM-------------1
WHERE-----------2
GROUP-----------3
HAVING----------4
ORDER BY--------6
실습 예제
18. 회사 전체의 최대 급여, 최소 급여, 급여 총 합 및 평균 급여를 출력
19. 각 직업별, 최대 급여, 최소 급여, 급여 총 합 및 평균 급여를 출력
최대 급여는 MAX, 최소 급여는 MIN, 급여 총합은 SUM 및 평균 급여는 AVG로 출력, 직업을 오름차순 정렬
20. 동일한 직업을 가진 사원들의 총 수를 출력
21. 매니저로 근무하는 사원들의 총 수를 출력
**중복제거 DISTINCT**
22. 사내의 최대 급여 및 최소 급여의 차이를 출력
23. 매니저의 사번 및 그 매니저 밑 사원들 중 최소 급여를 받는 사원의 급여를 출력
-매니저가 없는 사람들은 제외
-최소 급여가 5000 미만인 경우는 제외
-급여 기준 역순으로 조회
24. 부서 명, 부서위치 ID, 각 부서 별 사원 총 수, 각 부서 별 평균 급여를 출력 / 부서위치를 오름차순으로 출력
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와 동일한 부서에 근무하는 다른 모든 사원들의 사번 및 고용 날짜를 출력
26. 회사 전체 평균 급여보다 더 급여를 많이 받는 사원들의 사번 및 이름을 출력
27. 이름에 u가 포함되는 사원들과 동일 부서에 근무하는 사원들의 사번 및 이름을 출력
28. 시애틀에 근무하는 사람 중 커미션을 받지 않는 모든 사람들의 이름, 부서 명, 지역 ID를 출력
변수 : 데이터를 담을 수 있는 공간(값 변경 가능)
//변수선언
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)
'비전공자의 코딩일지' 카테고리의 다른 글
비전공자의 IoT 국비 교육 수강일지 Day_09 (0) | 2021.12.30 |
---|---|
비전공자의 IoT 국비 교육 수강일지 Day_08 (0) | 2021.12.29 |
비전공자의 IoT 국비 교육 수강일지 Day_06 (0) | 2021.12.27 |
비전공자의 IoT 국비 교육 수강일지 Day_05 (0) | 2021.12.24 |
비전공자의 IoT 국비 교육 수강일지 Day_04 (0) | 2021.12.23 |