22.01.18 DB - 서브쿼리 / JAVA - 입출력, 연산자

최고고·2022년 1월 18일
0
post-custom-banner

서브쿼리

where sal > (서브쿼리가 들어가는 절)
having avg(sal) > (서브쿼리)
조건식에 명시되어야 할 값을 모를 때, 서브쿼리를 통해 찾을 수 있다.

-특정 값을 모를 때 사용하면 용이
-조인의 일부가 서브쿼리로 대체 가능하기도 함, 셀프조인은 전부 가능
-서브쿼리 먼저 실행 후 메인 쿼리가 실행됨
-그룹바이 절 제외 모든 절에 서브쿼리 사용 가능
-웨어절, 해빙절의 서브쿼리 : 조건식의 으로 사용됨.
-개수 제한이 없다.
-연산자 우측에 괄호로 묶어준다.
-값이 대체되므로 정렬은 안해준다.
-단일연산자일 때는 단일행 서브쿼리, in 과같이 복수연산자는 다중행 서브쿼리
✔✔ 주의 서브쿼리의 결과가 하나냐 여러개냐에 따라 사용되는 연산자가 달라짐
-서브쿼리 결과가 no rows selected 일때 널값을 메인에 넘김
-조인을 대체할 수도 있다.

select last_name, salary
from employees
where department_id = (select department_id from departments where department_name='IT')


위는 부서이름이 IT인 부서의 사원과 급여 출력(조인대체)

select last_name, salary
from employees
where salary > (select salary from employees where last_name='Abel')

아벨이란 이름을 가진 사원의 급여보다 큰 급여를 받는 사원들의 이름, 급여

  • 서브쿼리를 구하는 방법 팁))

1. 내가 무슨값을 모르는가? -> ex) Abel의 급여
2. 값을 무엇으로 찾나? -> 서브쿼리를 통해
3. 서브쿼리 셀렉문의 어떤 컬럼을 통해 모르는 값을 찾나? -> ex) abel의 급여를 salary를 통해찾기
4. 서브쿼리의 결과를 누가 받을지? -> 메인쿼리의 웨어,해빙절에 어떤 컬럼을 명시할건지 결정
5. 메인쿼리의 조건식의 연산자를 결정 -> 서브쿼리의 결과가 하나일때 단일연산자, 결과가 복수일 때 in 과같은 복수연산자를 사용하자. 여기선 단일
6. 대부분의 서브쿼리의 컬럼과 메인쿼리의 컬럼의 이름은 동일

서브쿼리의 컬럼과 메인쿼리의 컬럼의 데이터 타입 이 무조건 같아야함 데이터의 의미가 같아야함!!!

  • 다중행 서브쿼리
    -서브쿼리 값이 여러개일 때
    -메인쿼리 10,20,30,40,50,60 값 중 서브쿼리를 통해 추출
    in (30,40 ) 목록값 전부 출력
    _> all 결과 전부 or 최대값보다 큰 값
    < all 결과 전부 or 최소값보다 작은 값
    _> any 최소값보다 큰 값 40,50, 60
    < any 최대값 보다 작은 값 10, 20, 30 _

all 은 서브쿼리 값 포함 안함
any 는 서브쿼리 값 포함

연산자 주의 :
-서브쿼리의 조건절에서 pk(기본키)처럼 고유 단일 값이 아니면 값은 중복이 있을 수 있다.
-pk는 중복이 없으므로 = equi 연산자 쓸 수 있지만 그 외는 주의를 해야한다.
-중복값이 나왔을 때 in 연산자를 쓰지만 계속 검사하기때문에 성능상 안좋기 땜에 pk가있다면 eq연산자를 권장.


JAVA

  • 변수명 규칙
    -논리형 boolean : false, true만 가능
    -문자형 char : 작은따옴표' '로 표현해줌 문자 하나를 의미, 큰따옴표" "는 여러개의 문자(문자열) 표현
    -String 참조형 데이터 자료형 / 레퍼런스형 : 기본 자료형이 아닌 참조해서 쓸 수 있는 자료형!

  • 연산자
    -정해진 규칙에 따라 데이터를 처리하여 결과를 산출
    -식 : 항 연산자 항
    -이항 : 산술, 논리, 대입, 비교연산자
    -단항 : 증감연산자 ++변수, 변수++
    -삼항 : 항이 세개 조건?참:거짓;
    -정수형, 정수형 연산시 결과값은 정수형
    -변수에 실수형이 있다면 실수형으로 나옴
    ex)정수형+정수형=정수형, 정수형+실수형=실수형
    -덧셈에서 숫자+문자 = 문자 / 여기서 +는 연결고리임 숫자와 문자가 이어서 나옴
    -대입연산자 a=b
    -복합대입연산자 a = a+b 오른쪽 항에 더해서 왼쪽 항에 적용하겠다. a += b 누적 ex) +=, -=


public class ex03 {

	public static void main(String[] args) {

		String a = 10+7+"";
		String b = 8+ "" +2;
		String c = "" + 5+2; // 왼쪽에서 오른쪽으로 연산하면서 ""+5에서 ""5로 자체가 문자가 됨
		System.out.println(a);
		System.out.println(b);
		System.out.println(c);
		
		
	}

}
  • 사용자가 입력할 데이터값
    -입력 가능한 키보드 기능 불러오기 ---> 입력받을 스캐너를 불러오는 명령
    -Scanner sc (Scanner를 간단하게 부를 별칭) = new Scanner(System.in); 임포트 작업해야됨! 경고가 뜨면 import 자동완성 ctrl shift o
    -ln - >개행작업 -> 엔터됨, 아래로 내려가라는 명령
    -정수형 입력받기 sc.nextInt();
    -문자형 입력받기 sc.next();
import java.util.Scanner;

public class ex06 {

	public static void main(String[] args) {

		Scanner sc = new Scanner(System.in);
		
		System.out.print("숫자 입력 : ");
		
		int num = sc.nextInt(); //입력받을 정수형을 변수에 담아줌
		
		int rslt= num%100;
		int rslt2=num-rslt;
		
		System.out.println("result : " + rslt2);
		
		System.out.print("이름 입력 : ");
		String name = sc.next();
		System.out.println("입력된 이름: " + name);
		
		
	}

}

ctrl shift o scanner import 자동불러오기
syso ctrl 스페이스바 <- System.out.prinln 출력 명령 자동완성...
ctrl alt ↑ ↓ 간편하게 복사 붙여넣기 할 수 있다.

post-custom-banner

0개의 댓글