1. SELECT, FROM
2. WHERE
1. SELECT, FROM
[ SELECT 정의 ]
- 데이터베이스로부터 원하는 데이터를 가져오는 명령어(읽기)
- SELECT를 구성하는 모든 절들은 실행 순서가 있다.
<원하는 컬럼 1개>
SELECT 컬럼리스트 -- 데이터를 가져올 컬럼을 정한다.
FROM 테이블명; -- 데이터를 가져올 테이블을 지정한다.
<원하는 컬럼 N개> --콤마로 구분한다.
SELECT 컬럼리스트1, 컬럼리스트2, ...
FROM 테이블명;
<원하는 컬럼 전부>
SELECT *
FROM 테이블명;
[ 연산자(Operator) ]
1. 산술 연산자
- +, -, *, /
- %(없음) -> 함수로 제공(mod())
2. 문자열 연산자
- concat
- '문자열' + '문자열' (X)
- '문자열' || '문자열' (O)
3. 비교 연산자
- >, >=, <, <=
- =(같다), <>(다르다) --> ==(X), !=(X)
- 논리값을 반환 > boolean 반환 > ANSI SQL은 논리형이 없다. > 표현 X > 결과셋에 담을 수 없다.
- 조건에만 사용
2. WHERE
[ 정의 ]
- 가져올 레코드를 지정할 조건을 명시한다.
- 조건에 만족하는 행은 결과셋에 포함되고, 만족하지 못하는 행은 결과셋에 포함되지 않는다.
- 행 단위로 걸러낸다.
- 주로 조건을 비교연산자 / 논리연산자를 사용해서 구성한다.
- 논리연산자는 오라클에서는 알파벳으로 작성한다. (AND, OR, NOT)
1. test 테이블에 속한 name컬럼 리스트에서 홍길동을 꺼내온다.
SELECT * FROM test WHERE name = '홍길동';
2. test 테이블에 속한 age컬럼 리스트에서 20 이상만 찾는다.
SELECT * FROM test WHERE age > 20;
3. name은 홍길동, gender는 남자 찾기
SELECT * FROM test WHERE name = '홍길동' OR gender = '남자';
4. weight가 60이상이고, height가 170미만 찾기
SELECT * FROM test WHERE weight >= 60 AND height < 170;
[ BETWEEN ]
- WHERE절에 조건으로 사용
- 범위 조건으로 사용
- 컬럼명 BETWEEN 최솟값 AND 최댓값 (최솟값, 최댓값 자신 포함)
- 연산자 사용보다 가독성이 좋다.
<숫자 비교>
방법1. 연산자 이용
SELECT * FROM test WHERE weight >= 60 AND weight <= 70;
방법2. BETWEEN 이용
SELECT * FROM test WHERE weight BETWEEN 60 AND 70;
<문자 비교> -- 오라클에서는 문자열 비교가 가능하다.
방법1. 연산자 이용
SELECT * FROM test WHERE name >= 'K' AND name <= 'Z';
방법2. BETWEEN 이용
SELECT * FROM test WHERE name BETWEEN 'K' AND 'Z';
<날짜/시간 비교> --오라클은 따로 형식을 지원한다. YYYY-MM-DD
방법1. 연산자 이용
SELECT * FROM test WHERE date >= '2015-01-01' AND date <= '2021-05-13';
방법2. BETWEEN 이용
SELECT * FROM test WHERE date BETWEEN '2015-01-01' AND '2021-05-13';
[ IN ]
- WHERE절에 조건으로 사용
- 열거형 조건 > 제시된 값중 하나라도 일치하면 만족
- 컬럼명 IN (값, 값, 값, .... 값)
개발팀 + 홍보팀 + 인사팀 예제
방법1
SELECT * FROM test WHERE team = '개발팀' OR team = '홍보팀' OR team = '인사팀';
방법2
SELECT * FROM test WHERE team IN('개발팀', '홍보팀', '인사팀');
[ LIKE ]
- WHERE절에 조건으로 사용
- 패턴 비교(정규 표현식과 유사)
- 문자형을 대상으로 동작(숫자형, 날짜형은 적용 불가)
- 칼럼명 LIKE '패턴 문자열'
- 패턴 문자열 구성 요소
1) _ : 임의의 문자 1개 -> "."
2) % : 임의의 문자 N개
예제1
SELECT NAME FROM test WHERE NAME LIKE '홍길동';
SELECT NAME FROM test WHERE NAME = '홍길동';
SELECT NAME FROM test WHERE NAME LIKE '홍__'; --홍OO
SELECT NAME FROM test WHERE NAME LIKE '__신'; --OO신
SELECT NAME FROM test WHERE NAME LIKE '_길_'; --O길O
SELECT NAME FROM test WHERE NAME LIKE '김___'; --김OOO
SELECT NAME FROM test WHERE NAME LIKE '김_'; --김O
예제2
SELECT name FROM test;
SELECT name FROM test WHERE name LIKE 'E____'; --Eooo
SELECT name FROM test WHERE name LIKE 'E%'; --E로 시작되는
SELECT name FROM test WHERE name LIKE '%e'; --e로 끝나는
SELECT name FROM test WHERE name LIKE '%e%'; --e가 들어간
SELECT name FROM test WHERE name LIKE '%ea%'; --ea가 들어간
SELECT name FROM test WHERE name LIKE '%e%a%'; --e랑a가 들어간
[ RDBMS에서의 NULL ]
- 자바의 NULL 개념과 유사
- 컬럼값이 비어있는 상태(셀)
- 대다수의 언어는 NULL을 피연산자로 사용할 수 없다.
- NULL 조건
1) WHERE절에 조건으로 사용
2) 컬럼명 IS NULL
3) 컬럼명 IS NOT NULL
도서 대여 테이블 반납(대여 날짜, 반납 날짜) 예제
1. 아직 반납이 안된 대여 기록?
SELECT * FROM 도서대여 WHERE 반납날짜 IS NULL;
2.반납 완료된 대여 기록?
SELECT * FROM 도서대여 WHERE 반납날짜 IS NOT NULL;
[ DISITINCT ]
- 컬럼 리스트에 사용됨
- 중복값을 제거한다.
- DISITINCT 컬럼명
< 중복된 이름 제거하여 하나만 가져오기>
SELECT DISTINCT name FROM test;
< 중복된 이름 제거하여, 나이까지 가져오기 >
SELECT DISTINCT name, age FROM test;
--> 여기서 주의할점이 중복된 이름(DISTINCT name) 제거와 동시에 나이를 가져올때
--> DISITINCT는 name만 보는것이 아닌 (name, age) 이렇게 묶어서 보는것을 주의하자.
--> 결론, DISTINCT 사용시 캘럼2개 이상일 때 중복값을 생각하고 작성하기.
MEMO >
# 오라클에서 작성법은 SELECT - FROM 절 다음 엔터를 치고 이용해도 되고, 한줄로 작성해도 된다. 자기한테 편하고 맞는걸 찾아서 쓰자
# 오라클에서 코드작성이 다 된 파일을 테이블 생성, 추가 할때 커서를 맨앞에 두고 F5키 누르면 순차로 자동 실행된다.
# 오라클도 오류노트 만들어서 작성하자.
'인천일보아카데미 > - 학습일지' 카테고리의 다른 글
[학습일지]JAVA교육일지 47일차 (0) | 2022.06.20 |
---|---|
[학습일지]JAVA교육일지 46일차 (0) | 2022.06.19 |
[학습일지]JAVA교육일지 44일차 (0) | 2022.06.16 |
[학습일지]JAVA교육일지 43일차 (0) | 2022.06.16 |
[학습일지]JAVA교육일지 41일차 (0) | 2022.06.15 |