22.01.17 DB - GROUP BY / JAVA - 변수 규칙

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

자체 참조

-여러개의 테이블에 같은 데이터가 많을 때 => 무결성이 깨지는 경우 중 하나. 데이터불일치로 인한 무결성 오류
-자체참조의 첫행은 null
-셀프조인 내 등가, 비등가, 아우터 조인

그룹 함수

-한개 또는 다수의 값을 받아들이고 그룹별로 소분류를 해서 결과값 하나를 도출가능함
-avg, sum : 숫자 데이터에서만 사용 가능 연산식!
-min, max : 모든 데이터 가능 >> 아스키코드로 비교하기 때문, 문자값은 큰 의미는 없다,,
-count : 결과를 숫자값으로 출력해줌, 열과 행단위 둘다 사용 가능함! ( * ), (컬럼) 출력이된행의 개수 count

-그룹함수 all(default 값), distinct
-그룹함수내 : 먼저 중복을 제거하고 함수가 값을 받아들이기 전에 실행전 중복 제거 해서 값 받아들임
-셀렉 문 바로 뒤 distinct : 셀렉 문장에 의해 출력이 된 값에서 중복이 있다면, 중복을 제거해서 값을 출력
-그룹함수는 널값을 무시함-> nvl 함수 중첩해서 사용하면 널값도 포함됨 예외로 count(*)는 널값 인정
⨀ NVL : 값이 NULL인 경우 지정값을 출력하고, NULL이 아니면 원래 값을 그대로 출력
-> NVL(컬럼, "지정값")
⨀ NVL2 : NULL이 아닌 경우 지정값1을 출력하고, NULL인 경우 지정값2를 출력
-> NVL2(컬럼, "지정값1", "지정값2")
⨀ COALESCE : NVL 함수와 동일하게 사용할 수도 있지만, 여러 개의 칼럼의 NULL 값을 판별해야 할 경우! NULL이 아닌 첫 번째 칼럼의 값을 반환할 때
COALESCE(컬럼명, 컬럼명, 컬럼명, ...) - 함수의 인자의 개수는 동적으로 입력 NVL처럼 COALESCE(컬럼, "지정값")

-테이블에 alias 쓸 때 소유주인 컬럼에 접두어 붙여야함! ex) avg(e.salary)

  • group by :
    -그룹 함수 사용시 그룹당 한 개의 결과를 출력하는데, 그룹화 되지 않은 컬럼의 데이터를 그룹화시켜주는 절
    -함수가 그룹화된 컬럼을 인수로 받아들임.
    -웨어절, 오더바이 절 사이에 위치함.
    -셀렉문에 그룹 함수가 안된 컬럼 이름은 그룹바이 절에 명시되어야함.
    -기본키-->중복 값이 없어서 하나의 데이터가 하나의 그룹이 되어버림
    -셀렉문에 그룹바이절의 컬럼을 포함하지 않아도 되지만, 명시된 컬럼은 셀렉문에 표기해줘야 데이터의 결과를 제대로 인지할수 있다.
    ✔주의✔ where절 : 컬럼 연산자 값으로 이뤄져있고, 그룹화된 테이블의 행을 필터링한다. 행에 대한 조건 우선 실행, 그룹 조건 x

  • having 절 :
    -그룹에 대한 조건
    -그룹 함수 조건식
    -그룹 바이, 그룹 함수(=그룹 생성)가 실행된 이후 실행
    -그룹화된 행들을 필터링
    -일반 조건식도 쓸 수는 있지만 쓰면 안좋음
    -그룹 바이와 해빙절 순서 바뀌어도 되지만 실행순서에 의해 그룹 바이가 먼저 나오는게 낫다!

select count(e.employee_id), avg(e.salary), d.department_name, d.location_id
from employees e, departments d
where e.department_id=d.department_id
group by d.department_name, d.location_id // 셀렉문에 그룹함수 외에 일반 컬럼은 여기에 무조건~!
order by d.location_id;

select distinct * column alias -->결과 출력
from 데이터 가져옴 (테이블)
where 데이터 제한
group by 그룹을 만들고자 할때 // 1개 그룹일때 x, n개그룹은 group by에 명시
having 만들어진 그룹을 제한
order by 출력 결과 정렬


JAVA

-제임스 고슬링이 개발한 객체 지향 언어 ->각각의 기능이 객체로 만들어져 있어 유지보수에 용이
-프로그래밍 언어란? 사람의 언어를 기계어간의 중간다리역할
-이식성이 높음 -> 여러 운영체제에서 동일하게 실행됨(JVM사용)
-오픈소스 라이브러리 -> 개발된 코드를 서로 공유해 쓸 수 있음
-JDK : 자바를 만들 환경을 구축해줌.
-JRE : 실제로 실행 될 수 있도록 환경이 만들어져 있음
-JVM : 자바가상머신 이식성 용이한 특징(운영체제)
-명령을 시작하라는 부분 public static void main(String[] args) {} : 명령자체 줄 수 없고 실행도 안됨
-컴파일 : 클래스 파일을 실행시키는 작업

변수

데이터를 담을 수 있는 메모리 공간
변할 수 있는 수를 담을 수 있는 공간
값 수정 가능

  • 변수 선언하기
    -데이터의 종류를 먼저 명시해야됨
    -데이터 종류를 선언할때 최초 한번만 해야 됨
    -같은 타입, 같은 이름으로는 지정할 수 없다.
public class ex02 {

	public static void main(String[] args) {
		
		int a=0;
		System.out.println(a);
		
		a = 5;   //오류 ! 최초 선언했기땜에 여기선 또 지정x
		System.out.println(a);
		
	}

}
  • 변수명 규칙
    -키워드는 변수 이름으로 설정이 안됨
    -대소문자 구분되고 길이제한 없음
    -숫자로 시작 안됨
    -특수문자는 _, $만 됨
    -변수이름의 첫글자는 소문자로 시작
    -변수이름이 여러 단어로 이루어진 경우 : 첫단어 이후 다음 단어의 첫글자는 대문자 ex int lastIndexOf;

  • 자료형 변수
    논리 boolean 1byte
    문자 char 2byte
    정수 byte 1byte, short 2byte, int 4byte, long 8byte
    실수 float 4byte, double 8byte
    더블에 들어가면 무조건 실수형으로 만듦. 오류로 뜨지않고.. double 3._

상수

변하지 않는 수 데이터를 담을 수 있는 공간
한번 넣으면 변하지 않는 수를 넣는데 사용
다시 값을 담을 수 없다.
값을 수정할 수 없다.

  • 상수 선언
    ex) final int b = 5;
    final은 변하지 않는 데이터를 담는 키워드

빠르게 한줄삭제 : ctrl + d
class 실행시키는 : ctrl + f11

post-custom-banner

0개의 댓글