본문 바로가기

NULL

[SQL] 그룹 함수(Group Functions) 에 대해서 알아보자! Group Functions 개요 그룹 함수-집계 함수-는 무엇일까요? 간단히 정의 하자면, 여러 로우(ROW)들이 한데 모여있는 집합에 대해 하나의 결과를 가져다 주는 것이라 말할 수 있습니다. 이를 테면, 전체값의 평균이라던지, 전체값의 합이라던지, 전체의 수(갯수)라던지. 이런게 그룹 전체에 대해서 조회하는 것입니다. 그럼, 어떤 그룹 함수들이 있는지 살펴보도록 할까요? 다음과 같이 7개의 함수가 존재합니다. 1. AVG - 평균을 반환합니다. 2. COUNT - Row의 갯수를 반환합니다. 3. MAX l - 최상위 값을 반환합니다. 4. MIN l - 최하위 값을 반환합니다. 5. STDDEV - 표준편차를 반환합니다. 6. SUM - 총 합을 반환합니다. 7. VARIANCE - 분산을 반환합.. 더보기
[SQL] 제약조건, Constraint(NOT NULL, UNIQUE, PRIMARY KEY(기본키), FOREIGN KEY(외래키))! 테이블 작성시에 Constraint를 사용해서 입력하는 자료에 대해서 제약, 즉 규칙을 정해줄 수 있는데요. 이때 정해진 제약에 따라서 데이터가 입력이 됩니다. 제약에 배반된다면 자료 입력이 거부되면서 오류가 납니다. 즉, 데이터 무결성(Data Integrity)을 지키기 위한 데이터 무결성 제약조건(Integrity Constraint)에 대해서 알아볼까 합니다. 참고로, 네이버 지식백과에서는 데이터 무결성에 대해서 다음과 같이 밝히고 있는데요. "데이터를 인가되지 않은 방법으로 변경할 수 없도록 보호하는 성질" 쉽게 말하면, 권한이 부여된 계정이나 사람만이 접근 가능하고, 정확하고 완전한 데이터들이 저장되어 있는 상태라고 생각하시면 되겠습니다. 여기서 제약조건은 이러한 데이터 무결성을 보장함으로써 .. 더보기
[SQL] WHERE 절을 활용하자, NULL! NULL 은 의미하는 바 대로 존재하지 않는다 입니다. 오라클에서는 NULL을 값이 아닌 상태로 표시하기 때문에 우리가 알고 있는 연산자를 쓸 수 없습니다. department_id=null 과 같이 말이죠. 못 쓰는 것은 아니지만 우리가 의도한 값이 나오지 않게 됩니다. 이때 쓸수 있는 것이 IS NULL 인데요. 다른 SQL에서는 위와 같이 사용 가능합니다. 즉 오라클에서는 부서아이디가 NULL인 사원을 조회하고 싶을때 WHERE department_id IS NULL; 로 하게 되면 우리가 의도 한 것을 얻을 수 있습니다. 해봅시다. SELECT department_id, first_name, salary FROM hr.employees WHERE department_id IS NULL; 이렇게 쓰.. 더보기
[SQL] 색다른 쓰임, NVL2! 이전글에서 NVL함수에 대해서 살펴봤는데요. NVL함수에 이은 두번째 버전이 있습니다. 그것은 NVL2죠! 다를건 없습니다. 넣는 파라미터 값이 하나더 추가 되었는데요. 문법은 다음과 같습니다. NVL2(컬럼명, 데이터1, 데이터2) 어떻게 쓰냐면요 해당 컬럼에 데이터가 있으면 데이터1을 사용하구요, 반면에 데이터가 없으면 데이터2를 사용합니다. 조금의 차이가 있나요? 있습니다. NVL2는 NVL과는 달리 데이터가 있는 경우에도 명시된 데이터로 바꾸어 버리죠. 만일 이렇게 쓴다면 NVL과 똑같습니다. salary 가 NULL이고 그 컬럼에 대해서 NVL(salary, 0) - 해당 salary 값이 null이면 0으로 아니면 명시된 salary로 NVL2(salary, salary, 0) - 해당 sal.. 더보기
[SQL] NULL 상태도 처리하자, NVL 함수! 우리가 일반 연산자나 그룹 함수(sum, avg 등)를 쓰다보면 각 컬럼의 값이 null인 행이 존재하는데요, 이때 그룹 함수들은 이 null인 행을 연산처리를 안하거나 무시를 합니다. 가령 예를 들면 null은 값이 아닌 상태이기 때문에 아무리 +,-,/,* 등을 해줘도 결과같은 null로 테이블을 조회 했을때 아무것도 표시되지 않습니다. 한번 보실까요? 다음은 월급과 성과급(커미션)을 곱해서 연봉을 계산해볼건데요. 여기서 유의하셔야 할건 커미션을 받는 사람과 그렇지 않는 사람이 있다는 겁니다. SQL> SELECT department_id, first_name, salary, commission_pct AS "CM", salary*12+salary*commission_pct*12 AS "AN_SAL".. 더보기
[SQL 연습] 사장님 연봉 조회(NULL, Concatenation Operater, ALIAS) Concatenation Operater, ALIAS 을 이용해 한문장으로 출력하였습니다. 식 : SELECT first_name || ' ' || last_name || ' earns ' || salary*12 || ' dollars a year' AS " " FROM hr.employees WHERE manager_id is null; 결과 : 더보기
[SQL] SELECT문의 산술연산자 데이터 타입에 따라서 연산자를 쓸 수 있습니다. 기본연산자로서 덧셈(+) 뺄셈(-) 곱셈(*) 나눗셈(/)을 활용할수 있는데요. 숫자 데이터는 모두 활용이 가능하나 날짜데이터는 + - 밖에 사용을 할 수 없습니다. 간단한 예제를 볼게요. 부서 ID 100D에 있는 사원들의 연봉을 보고 싶은데요. 다음과 같이 쓸수 있습니다. SELECT department_id, last_name, first_name, salary AS "월급", salary*12 AS "연봉" FROM hr.employees WHERE department_id=100; 결과는 다음과 같습니다. 제가 여기서 AS " " 를 이용해서 결과의 컬럼명을 바꾸어 주었는데요. 위의 테이블에서 보여지는 젤 위의 컬럼명을 heading이라고 하고, .. 더보기