KDT/DB

240103 DB - 조건문과 정렬

001cloudid 2024. 1. 3. 12:51
728x90

※lsnrctl start

※alias는 큰 따옴표 그 외(2가지 경우 외)에는 작은 따옴표사용

※컬럼 크기 조정 : col 컬럼명 format a크기

조건문 where

select 컬럼명 from table where 조건문;
select column, where row
where 컬럼명 = 값(숫자, '문자', 날짜');

 

그림 1. where절 문자

즉, Oracle에서는 대,소문자를 구분한다는 특징이 있다. 입력되어 있는 자료의 대,소문자를 정확히 입력해야 원하는 정보를 찾을 수 있다.(MySQL과 차이가 있다. 단, 해결해줄 수 있는 방법이 있다. 함수를 이용하면 된다.)

 

그림 2. where절 날짜

위의 오류는hire_date는 date, '2005-08-13'은 문자로 인식한다.

하지만 '2005-08-13'이는 날짜 형식이 맞다. 왜 그런것일까?

입력된 날짜가 다르기 때문이다. '년-월-일','월-일-년','일-월-년' 등 다양한 방법으로 날짜를 작성할 수 있다.

날짜를 작성할 때 마음대로 작성하면 안된다.

날짜 형식으로 약속되어 있는 것은 'dd-mon(월 영문3)-rr(년도 2자리)'이다.(오라클이 영문으로 설치되어있다면)

그림 3. where절 날짜 수정

 

where조건절에 =이외에 >,>=,<,<=,<>,!= (단일행비교연산자) 등을 사용할 수 있다.

그림 4. 비교 연산자

 

추가적인 비교연산자 종류로는 between A and B, in, like, is null가 있다.

 

between A and B : A(작은값)이상 B(큰값)이하, 범위 검색할 수 있는 비교 연산. 모든 데이터 타입에서 사용 가능

그림 5. between A and B 비교연산자 (숫자)

 

그림 6. Between A and B 비교연산자(날짜)

B자리에 최근 날짜, A날짜에 B날짜보다 과거 날짜가 와야함.

 

그림 7. between A and B 비교연산자(문자)

가나다, ABC 순서

 

in : 다중행연산자. =과 or의 성격을 가진다. 우변이 여러 개 일때 사용.

그림 8. in 다중행비교연산자(숫자)

select employee_id, last_name, salary, manager_id from employees

where manager_id = 100 or manager_id = 101 or manager_id = 201; 같다.

그렇다면 무엇을 사용해야할까? 성능적인 측면에서 접근, 방문하는 수가 작을 수록 좋다.

즉, in을 사용했을 때는 컬럼을 1번만 접근하면 된다. 하지만 =,or을 사용했을 경우 3번 접근해야하므로 in을 사용하는 것이 좋다. 또한 가독성 in이 우수하다.

그림 9. in 다중행비교연산자(문자)

 

like : 패턴일치여부를 알 수 있는 연산자

% : 0개 이상의 문자가 올 수 있다.

ex1) a로 시작되는 문자열 : 'a%' → a(가능), abc(가능), aa(가능)

ex2) a가 포함된 문자열 : '%a%' → a(가능), aaa(가능), baa(가능), bay(가능), ab(가능), bba(가능)

ex3) a로 끝나는 문자열 : '%a' → a(가능), ba(가능)

_ : 반드시 _개수만큼 문자가 와야한다.

ex1) 두번째 문자가 a인 문자열 : '_a' 또는 '_a%'

ex2) 끝에서 세번째 문자가 a인 문자열 : '%a__'

그림 10. like 비교연산자1

두 번째 문자가 o인 사원이름 출력

그림 11. like 비교연산자 2

 

is null : 값이 null인지 비교. null이면 출력

그림 12. is null 비교연산자

 

and, or : 여러 조건문 작성할 수 있는 논리 연산자. 우선순위(and>or)

그림 13. and, or 비연산자

 

between A and B ↔ not between A and B(A미만 B초과)

in ↔ not in(!=, and)

like ↔ not like

is null ↔ is not null

그림 14. not between A and B 예시
그림 15. not in 예시
그림 16. not like 예시
그림 17. is not null 예제

정렬

order by(정렬) 항상 쿼리구문의 마지막에 위치한다.

select 컬럼명 from table [where 조건문] order by 컬럼명/표현식/alias asc/desc;
asc 오름차순(小→大), desc 내림차순(大→小)

 

그림 18. order by 예시1.&nbsp; 내림차순(최근 입사일순)

 

그림 19. order by 예시. alias 사용

 

그림 20. order by 예시. 위치표기법 사용

select 나열된 순서대로 1,2,3,...이다.

그림 21. order by 예시. 다중 컬럼을 기준으로 정렬

다중 컬럼을 기준으로 정렬할 때, 왼쪽부터 순차적으로 정렬되기 때문에 반드시 순서를 고려해야한다.

즉, 우선순위가 높은 순서대로 나열


퀴즈2

1
2
3
4
5
6
7
8
9
10
11


퀴즈 1

1
2
3
4


연습문제

1
2

 

728x90