7일차(2)/DB Oracle(2) : SELECT문
- 표 생성, 시퀀스 생성, 내용 작성 실습
DATE : 날짜,시간 데이터 타입
SYSDATE 함수 : 현재 날짜와 시간을 리턴해준다.
[ORACLE SELECT문의 실행 순서]
위 순서대로 적용된다.
1) FROM문 참조 → 2) WHERE문 참조 → 3) GROUP BY 참조 → 4) HAVING문 참조
→ 5)SELECT 일어남 → 6) ORDER BY로 정렬
일단 세 개만 놓고 비교해보면,
SELECT (궁금한 내용 나열)
FROM (궁금한 내용이 있는 대상 나열)
WHERE (FROM절에 있는 ROW에서 원하는 ROW만 추릴 조건)
- 읽어지는 순서 FROM→WHERE→SELECT이다
- SELECT 문 사용법 익히기 / scott 계정
직원 이름, 급여를 불러오면서 급여를 높은순으로 정렬하고, 이름이 KING인 직원의 job 찾기
SELECT job, sal FROM emp
ORDER BY job ASC, sal DESC;
- 같은 직업끼리 정렬하고 그 안에서 급여를 내림차순한것. 2번 정렬되면 보기 편하다.
- 정렬을 여러번 한다면 , 로 구분해서 쓰기!
<<실행되는 순서!>>
1(초록) FROM 절 row: 12개 // 테이블의 전체 행 참조
2(분홍) WHERE 절 row: 4개 (조건에 맞춰 추려내는 역할) // 조건에 맞는 행 참조
3(주황) SELECT가 일어난다. // 가져올 열 참조
4 ORDER BY로 정렬!
- SELECT문은 어떤 대상으로부터 조건에 맞는 row를 추려내는 것.
- 대상을 조작해서 원하는 '결과 table'을 골라내는 것.
SELECT empno, ename, hiredate FROM emp
WHERE hiredate = '81/02/20';
날짜도 문자열 타입처럼 ' '을 넣어 검색한다! (" " 사용불가!)
SELECT empno AS "사원번호", ename AS "사원이름" FROM emp;
SELECT empno 사원번호, ename 사원이름 FROM emp;
- column에 새로운 이름 부여하기(ALIAS/ AS 사용), AS는 생략 가능!
- 바꾸는 이름은 공백(띄어쓰기)이 들어가면 안된다.
[연산자를 사용하는 SELECT문]
- oracle에서는 그냥 산술계산을 하면 값이 나오지 않는다. 출력하려면 select문을 사용해야 한다.
+ - * / 사용 가능. %는 사용불가능!
- javascript에서는 동등비교연산자 == 를 사용했지만, oracle에서는 = 을 사용
- 직원이름, 급여, 10% 상승된 급여 추출하기
- 칼럼 이름바꾸기도 ED에서 수정 가능!
- 부서번호가 30이 아닌 직원들의 이름과 부서번호 추출
- && : AND / || : OR / ! : NOT
위 연산자들은 ORACLE에서는 영어 단어로 사용한다.
[ SQL 연산자 ]
- IN , ANY , ALL , BETWEEN , LIKE , IS NULL , IS NOT NULL
- IN(a,b) : a이거나 b인
- ANY(a,b) : a, b중 어느 하나라도
- ALL(a,b) : a, b 모두 다
- BETWEEN a AND b :
- IN문은 or 연산자와 비슷하다.
- IN문 안에 들어간 서브쿼리. 또다른 SELECT문
WHERE 1000 <= sal <= 2000; <- 실행되지 않는다!
WHERE 1000 <= sal AND sal <= 2000; 또는
WHERE sal BETWEEN 1000 AND 2000; 와 같이 써주어야 한다.
SELECT ename, deptno FROM emp
WHERE ename LIKE 'J%';
emp에 이름이 J로 시작하는 직원이 있으면 직원이름,부서번호 추출
- %는 아무 문자나 다 포함한다는 의미이다!
(검색 할 때 %J% 로 사용가능. J가 들어가는 글자는 전부 다 찾는다는 의미.)
SELECT ename, sal, hiredate FROM emp
WHERE ename LIKE '_A%'
- 이름의 두번째 글자가 A로 시작하는 직원이 있으면 직원이름,급여,입사일자 추출
- 문자열이 아니어도 가능하다. '81%' 로 81년도에 입사한 직원 추출 가능.
- 오라클에서 NULL은 비교 불가, 알 수 없음, 비어 있음의 의미를 갖고 있다.
- 따라서 = NULL 로는 쓸 수 없고, IS NULL 이라고 적어야 한다.
IS NOT NULL도 마찬가지!
- 결합 연산자 || 를 사용해서 원하는 데이터를 리턴해낼 수 있다.
javascript의 "a" + "bcd"와 같이 단순히 문자열을 연결하는 역할.
- 위의 데이터는 1개 칼럼에 12개 행이 있는 표 구조!
[참고] ORACLE 테이블의 시각적인 부분 개선하는 방법
(폭 넓히기, 칼럼 폭 줄이기, 페이지 행 수 늘리기)
COLUMN (칼럼이름) FORMAT A10
SET LINESIZE 100
SET PAGESIZE 20
- 단, 창을 끄면 리셋되므로 메모장에 넣어서 저장해두고 @로 열어서 쓰면 좋다.
'국비교육(22-23)' 카테고리의 다른 글
8일차(2)/DB_Oracle(4) : JOIN (0) | 2022.10.18 |
---|---|
8일차(1)/DB_Oracle(3) : 함수 (1) | 2022.10.17 |
7일차(1)/DB_Oracle(1) : 설치 및 기본정보 (0) | 2022.10.14 |
6일차(2)/javascript 기초 : 실습예제 (1) | 2022.10.13 |
6일차(1)/javascript 기초 : 동적 요소 만들기(2) (0) | 2022.10.13 |