- 오라클은 데이터베이스를 여러개를 만드는 것이아니라, 하나의 데이터베이스만 만들고
- 사용자마다 사용자 스키마가 따로 있음(그래서 그 사용자만 접근이 가능함)
- 사용자를 만들고 사용자계정을 만들어야함
현재 접속 사용자의 스키마에 존재하는 테이블 목록 확인 | SELECT TABLE_NAME FROM TABS; |
테이블의 구조를 확인 | DESC 테이블명; |
- VARCHAR같은 자료형은 가변형이기때문에 정해진 크기 이하만큼만 사용하면됨
[SELECT]
- 하나이상의 테이블에서 행을 검색하기 위한 행렬
SELECT 검색대상, 검색대상...FROM 테이블명,테이블명...
------------------------------------------------------
SELECT EMPNO,ENAME,SAL,DEPTNO FROM EMP;
- 테이블이 여러 검색대상을 갖고 있겠지만, 내가 명시한 검색대상만 검색하겠다.
- 즉, 모든행에서 원하는 값만 검색될 수 있도록 한다는 것!
- 검색대상이란? * (모든컬럼) -> 다른 검색대상과 같이 쓸 수 없다.(동시 사용 불가), 컬렴명, 연산식, 함수 등등
- 결합연산자로 ||를 사용함(OR아님)
- 문자열은 ' '를 사용함
SELECT ENAME, JOB FROM EMP;
SELECT ENAME || JOB FROM EMP; --결합연산자 : 값을 결합하기 위한 기호
SELECT ENAME || '님의 업무는 '||JOB || '입니다' FROM EMP; --문자열은 싱글
- 중복된 컬럼값을 제외하기 위해서는 DISTINCT 키워드를 사용
- DISTINCT 뒤에는 검색대상을 여러개 나열 할 수 있다.(ORACLE만 가능)
SELECT JOB FROM EMP; --중복되어 컬럼값 검색
SELECT DISTINCT JOB FROM EMP; --중복제외 컬럼값 검색
[WHERE]
SELECT 검색대상 FROM 테이블명 WHERE 조건식
- 조건식을 사용하여 조건이 참인 행을 검색하는 기능을 제공
- 값은 대소문자 구분을 하므로 값이 대문자로 저장되어 있다면 대문자로 검색해야한다.
SELECT EMPNO, ENAME, JOB, SAL FROM EMP;
----------------------------------------
SELECT JOB FROM EMP WHERE SAL >= 800;
SELECT EMPNO, ENAME FROM EMP WHERE JOB ='CLERK';
SELECT EMPNO,ENAME, JOB, SAL FROM EMP WHERE EMPNO = 7876;
- 날짜형 상수는 ' '를 사용
- ' ' 안에 RR/MM/DD형식의 패턴으로 표현🔽
- 날짜형 컬럼의 검색결과도 RR/MM/DD형식의 패턴으로 출력된다.(RR년도는 알아서 4자리 년도로 인식됨)
- YYYY-MM-DD 형식의 패턴도 사용 가능함 - 단 출력값은 RR/MM/DD로 나옴
SELECT EMPNO, ENAME, JOB, SAL , HIREDATE FROM EMP WHERE HIREDATE = '80/12/17';
- 같지 않다 : != 와 <> 사용한다.
- 문자형상수도 관계연산자를 이용해서 검색가능하다.
- 날짜형 데이터도 관계연산자를 이용하여 검색 가능하다.
SELECT EMPNO, ENAME, JOB, SAL FROM EMP WHERE ENAME < 'D';
-------------------------------------------------------------------
SELECT EMPNO, ENAME, JOB, SAL FROM EMP WHERE HIREDATE < '81/05/01';
- 검색조건이 두개 이상인경우 AND연산자나 OR연산자를 사용한다.
SELECT EMPNO, ENAME, JOB, SAL FROM EMP WHERE (JOB = 'SALESMAN' AND SAL >= 1500);
---------------------------------------------------------------------------------
SELECT EMPNO, ENAME, JOB, SAL FROM EMP WHERE EMPNO = 10 OR JOB = 'MANAGER';
- 범위연산자(BETWEEN - AND)를 이용하여 작은값부터 큰값범위에 포함되는 컬럼값을 구할 수 있다.
SELECT EMPNO, ENAME, JOB, SAL FROM EMP WHERE SAL BETWEEN 1500 AND 3000;
- 선택연산자(IN (컬럼, 컬럼....))를 이용하여 컬럼값이 여러개중 하나인 경우의 조건식을 만들 수 있다.
SELECT EMPNO, ENAME, JOB SAL FROM EMP WHERE JOB IN ('ANALYST', 'SALESMAN');
- 검색패턴기호 : 부정확한 값을 검색하기 위해 제공되는 기호
- % : 전체를 뜻함 (%A%면 A가포함된 값을 검색할때 사용함)
- _ : 문자 1개를 뜻함
- EQUAL(=)연산자를 사용하면 %와 _가 문자열로 인식되기 때문에,
- 위와같은 문자를 이용하여 검색을 하려면 LIKE연산자를 사용해야 함
--A로 시작하는 이름을 가진 사원
SELECT EMPNO, ENAME, JOB, SAL FROM EMP WHERE ENAME LIKE 'A%';
--두번째가 L이 들어가는 이름을 가진 사원
SELECT EMPNO, ENAME, JOB, SAL FROM EMP WHERE ENAME LIKE '_L%';
- LIKE연산자는 (=)대신 사용하기도 한다
- ESCAPE 키워드를 이용하여 표현 불가능한 문자를 ESCAPE문자로 표현
- _ 또는 %를 검색패턴기호가 아닌 이스케이프문자로 인색되도록 설정
SELECT EMPNO, ENAME, JOB, SAL FROM EMP WHERE ENAME LIKE '%\_%' ESCAPE '\';
- NOT연산자를 이용하여 조건식의 결과를 반대로 구현할 수 있음🔽
--같은표현임
SELECT EMPNO, ENAME, JOB, SAL FROM EMP WHERE JOB <> 'MANAGER';
--------------------------------------------------------------
SELECT EMPNO, ENAME, JOB, SAL FROM EMP WHERE NOT(JOB = 'MANAGER');
- NULL은 존재하는 값이 아니므로, 비교자체가 안된다. -> 검색오류!!!!
- 이럴땐, IS연산자를 이용하면된다.
SELECT EMPNO, ENAME, JOB, COMM FROM EMP WHERE COMM = NULL;
---------------------★★★★★★------------------------------
SELECT EMPNO, ENAME, JOB, COMM FROM EMP WHERE COMM IS NULL;
SELECT EMPNO, ENAME, JOB, COMM FROM EMP WHERE COMM IS NOT NULL;
[orderby]
- asc : 오름차순 정렬, desc : 내림차순정렬(오름차순 정렬은 생략가능)
- 정렬 기능을 나열하여 선언하면 첫번째 정렬값이 같은경우 두번째 정렬값으로 정렬
- 기본적으로는 테이블에 행이 저장된 순서대로 검색
SELECT EMPNO, ENAME, JOB, SAL, DEPTNO FROM EMP ORDER BY DEPTNO ASC;
- 이름도 오름차순, 내림차순 검색이 가능 A~Z순서대로임
- 컬럼인덱스(검색대상에대한 인덱스)가지고 정렬가능함
- 단, 오라클에서는 인덱스가 1부터 인덱싱된다!!!!!
--ANNUAL값으로 정렬된다.
SELECT EMPNO, ENAME, (SAL * 12) ANNUAL FROM EMP ORDER BY 3 DESC;
- SELECT ▶ FROM ▶ WHERE ▶ ORDERBY 순으로 사용해야한다.
--같은 부서번호인 경우 급여로 내림차순 정렬하여 검색
SELECT EMPNO, ENAME, SAL FROM EMP ORDER BY DEPTNO, SAL DESC;
----------------------------------------------------------------
SELECT EMPNO, ENAME, JOB, SAL, DEPTNO FROM EMP WHERE SAL >= 3000 ORDER BY DEPTNO;
[COLUM ALIAS]
- 검색대상에 별칭(임시 컬럼명)을 부여하는 기술
- 검색대상을 명확하게 구분하여 표현하기 위해 별칭 사용
- AS는 생략가능
- 공백 또는 특수문자를 사용하고자 할 경우 " " 기호를 사용하여 표현
SELECT 검색대상 [AS] 별칭, 검색대상 [AS] 별칭,.... FROM 테이블명...
-------------------------------------------------------------------
SELECT EMPNO AS NO, ENAME AS NAME, DEPTNO AS DNO FROM EMP;
'💻 수업정리 (2020) > 오라클' 카테고리의 다른 글
[6/19] 제약조건과 VIEW (0) | 2020.06.19 |
---|---|
[6/18] TCL과 TRANSATION (0) | 2020.06.18 |
[6/17] 오라클 서브쿼리 (0) | 2020.06.17 |
[6/16] 분석함수 (0) | 2020.06.16 |
[6/15] 오라클 함수사용 (0) | 2020.06.15 |