KH

230306 (DQL)

十月 2023. 3. 6. 16:50

DB는 암기가 중요!

순서대로 따라하면서 공부!


 

파일 - 새로 만들기를 통해 스크립트 만들기

 

 

 

+ 다운로드 받은 KH.sql 파일을 드래그 해서 넣음

 

 KH로 사용자를 변경해 줌

 

 전체 선택 후 실행했지만 오류가 남.

 SYSTEM에서 KH에게 권한을 줬지만,

 데이터 저장 용량도 지정해주어야 함

 

 만들어뒀던 0_SYSTEM에서 용량을 변경해 줌

 

전체 드래그 해서 실행해야 함

≫ 용량 변경 후 다시 실행했더니 오류가 나지 않고 커밋 완료됨

 

≫ 왼쪽을 보면 KH 테이블 아래에 여러 개가 생겼다

 

 

▽ 뜯어서 알아보기

빨강색 : 행

초록색 : 컬럼 (하나하나 체크는 컬럼명)

하늘색 : 컬럼값, 속성값, 데이터값 (데이터가 없다면 null)

 

 

[EMPLOYEE의 열 살펴보기]

≫ COLUMN_NAME : 테이블에 대한 구조 (컬럼명은 아님)

≫ DATA_TYPE :  어떤 데이터를 저장하고자 하는 타입, 크기 지정 가능

≫ NULLABLE : 해당 컬럼에 null을 허용할 것인가 안 할 것인가의 여부

 (필수적인 요소들은 null 허용 X, 그 외 필수 기입 요소가 아니면 O)

≫ DATA_DEFAULT : 데이터가 일관될 때는 지정된 디폴트 값이 들어가도록 함

≫ COMMENTS : 해당 컬럼에 대한 설명

 

 

다시 1_DQL로 가서 알아보기

 


[SELECT]

SELECT를 하면 항상 Result Set이 반환

Result Set은 뭔가를 조회하겠다 했을 때 나오는 결과

(예를 들어 전화번호 9로 끝나는 사람을 조회하겠다 하는..)

또한 그 안에는 0개 이상의 행이 포함되어 있다

SELECT의 기본 구조

더보기

≫ Ctrl + Enter로 실행을 하고 KH로 접속자를 바꾸어 주었다.

*실행 시 꼭 실행할 명령 문 위에 커서를 놓고 실행해야 함!

 

≫ 결과에 사번, 이름, 급여가 출력되었다

 

 

*모든 컬럼을 조회하고 싶을 때는?

≫ 전체를 다 적는 방법 보다는 *(아스트로)를 활용해서 조회하면 편하다

 

 

실습 문제

한 줄로 써도 됐다..!

 

[컬럼 값 산술 연산]

각 컬럼이 나와있는데 이름을 알아보기 쉽지 않다.

≫ 그렇다면 알아보기 쉽게 별칭을 집어넣어 보자.

 


[컬럼에 별칭 집어넣기]

≫ 화이트 스페이스가 없는 "연봉"은 " " 을 사용하지 않고 적어줘도 됨

 

 

[리터럴]

≫ 뒤에 10이라는 값을 추가해주었다

오라클에서는 문자를 담을 때 무조건 ' ' 을 사용한다. (몇 글자든 관계 없이)

 그리고 " "는 별칭 쓸 때만 사용한다

 

 

[DISTINCT]

중복된 값을 한 번씩만 표시

// SELECT 절에서 딱 한 번만 사용 가능

중복 상관 없이 전부 표시됨
DISTINCT로 중복된 값 한 번씩만 표시

 

만약

SELECT DISTINCT JOB_CODE, DEPT_CODE FROM EMPLOYEE; 일 경우

JOB_CODE와 DEPT_CODE 사이의 중복을 비교하게 되는 것임

 

 

SELECT구문의 전체 구조

더보기

 

[비교 연산자]

1)

≫ D9는 컬럼명이 아니기 때문에 문자 'D9'로 입력해줌

 

2)

≫ 급여 400000 이하의 사람들이 조회됨

 

3)

≫ 아니다 라는 표현은 != 혹은 ^= 혹은 <> 로 표현할 수 있다

 

4)

 

실습 문제 

실수령액은 길어서 별칭을 넣어줌 (AS 실수령액)

 

*SELECT 구문을 읽어가는 순서

FROM 절을 본 후 (판을 깐다고 표현)

WHERE 조건을 보고 분류 한다

SELECT 분류한 후 조회

 

≫ 데이터를 조회하려면 판을 먼저 깔아놓고(①FROM),

 거기에서 해당 조건에 맞는 것들을 고른 다음(②WHERE)

 그리고 그 행에서 원하는 컬럼만 쏙 볼 수 있도록 함(③SELECT) 

 

[논리연산자 AND OR]

 

1) AND

 

2) OR

 

3)

 

 

[(NOT) BETWEEN AND]

* ~ 이상 ~  이하를 쓸 수 있는 BETWEEN AND

≫350만 이상 600만 이하

 SALARY >= 3500000 AND SALARY <= 6000000; 를

 SALARY BETWEEN 3500000 AND 6000000; 로 표현 가능

 

* 반대로 만약 350만 미만, 600만 초과로 받는 경우는? NOT

≫ NOT은 BETWEEN 앞, SALARY 앞 둘 다 쓸 수 있음

 

실습 문제

1)

 

2)

AND OR 중에 우선순위는 AND이기 때문에

그러므로 먼저 앞의 DEPT_CODE를 ()로 감싸주었다

 

3)

≫ 날짜도 마찬가지로 BETWEEN AND를 쓸 수 있다!

 

 

[LIKE]

 

1)

 

2)

 

*반대로 포함하지 않는 경우를 찾을 때는? NOT

마찬가지로 EMP_NAME 앞에 NOT을 붙여줄 수도 있다

 

3)

≫ '___9%' 는

 네 번째 자리가 9로 시작하면서

 뒤에 뭐가 나올지 모르니까 %

 

4) ESCAPE OPTION

+ 뒤에 있는 건 패턴에서 제외시키기
+ 가 아니어도 원하는 문자 아무거나 가능 (한글 빼고)

 

실습 문제

 

1)

2)

 

3)

 

 

[IS NULL]

NULL인 값을 비교하고 싶을 때는 =을 쓰지 않고 IS NULL을 쓴다

≫ 보너스가 NULL인 사원들

 

≫ 보너스가 NULL이 아닌 사원들 (보너스 받는 사원들)

 

1)

 

2)

 

3)

 

4)

≫ 위의 3과 4에서 쓴 OR들은 IN으로 묶어줄 수 있다

 

[IN]

≫ 위에 줄줄이 적었던 OR을 IN() 으로 묶어줬더니 깔끔해졌다

 

[연결 연산자 || ]