⬛워크시트 설명문 처리
⚫워크시트에서 작성된 SQL 명령을 접속된 오라클 서버에 전달하여 실행하는 방법
🔘[CTRL]+[ENTER] : 커서 위치의 SQL 명령을 전달하여 실행
🔘[F5] : 워크시트에 작성된 모든 SQL 명령을 전달하여 실행
🔘마우스 또는 키보드로 범위를 지정하여 [CTRL]+[ENTER] 또는 [F5]를 사용하면 설정된 범위의 SQL 명령을 전달하여 실행
🔘워크시트에서 작성된 전달 SQL 명령의 결과는 [스크립트 출력] 또는 [질의결과] 탭에 출력
⚫SQL 명령은 대소문자를 구분하지 않으며 워크시트에 하나의 명령로 인식되어 처리하기 위해 ; 기호 사용
⚫현재 오라클 서버에 접속된 사용자의 이름을 확인하기 위한 오라클 시스템 명령
SHOW USER;
⚫테이블(TABLE) : 테이타베이스에서 데이타(행)를 저장하기 위한 가장 기본적인 객체(ENTITY)
- 데이타베이스의 기본 저장단위
⚫현재 접속 사용자가 접근 가능한 내부 스키마(사용자 스키마)에 존재하는 테이블 목록 확인
SELECT TABLE_NAME FROM USER_TABLES;
SELECT * FROM TAB;
⚫테이블의 구조 확인 : 테이블 속성(ATTRIBUTE) - 컬럼명과 자료형
형식) DESC 테이블명
🔘EMP 테이블 : 사원정보를 저장하기 위한 테이블
DESC EMP;
🔘DEPT 테이블 : 부서정보를 저장하기 위한 테이블
DESC DEPT;
⚫DQL(DATA QUERY LANGUAGE) : 데이타 질의어 - 테이블에 저장된 행을 검색하기 위한 SQL 명령
🔘SELECT : 하나 이상의 테이블에서 행을 검색하기 위한 SQL 명령
--형식) SELECT 검색대상,검색대상,... FROM 테이블명
--검색대상 : *(모든 컬럼) - 다른 검색대상과 동시에 사용 불가능, 컬럼명, 연산식, 함수 등
SELECT * FROM EMP;
SELECT EMPNO,ENAME,SAL FROM EMP;
SELECT EMPNO,ENAME,SAL*12 FROM EMP;
🔘COLUMN ALIAS : 검색대상에 별칭(임시로 사용하는 컬럼명)을 부여하는 기능
--검색대상을 명확하게 구분하기 위해 COLUMN ALIAS 기능 사용
--형식) SELECT 검색대상 AS 별칭,검색대상 AS 별칭,... FROM 테이블명
SELECT EMPNO,ENAME,SAL FROM EMP;
SELECT EMPNO AS NO,ENAME AS NAME,DEPTNO AS DNO FROM EMP;
--COLUMN ALIAS 기능에서 AS 키워드 생략 가능
SELECT EMPNO NO,ENAME NAME,DEPTNO DNO FROM EMP;
SELECT EMPNO 사원번호,ENAME 사원이름,DEPTNO 부서번호 FROM EMP;
--검색대상에 연산식 대신 COLUMN ALIAS 기능을 사용하여 검색
SELECT EMPNO,ENAME,SAL*12 FROM EMP;
SELECT EMPNO,ENAME,SAL*12 ANNUAL FROM EMP;
--SQL 명령은 예약어(키워드)와 사용자 정의 명칭(식별자)의 단어로 구성
--식별자(테이블명, 컬럼명, 별칭 등)은 스네이크 표기법(단어와 단어를 [_]로 구분하여 표현)을 사용하여 작성
SELECT EMPNO,ENAME,SAL*12 ANNUAL_SALARY FROM EMP;
--식별자로 사용 불가능한 단어를 사용하여 에러 발생
SELECT EMPNO 사원 번호,ENAME USER,SAL*12 ^연봉^ FROM EMP;
--식별자 작성규칙에 맞지 않은 단어(키워드 포함)를 식별자로 사용하고자 할 경우 " " 기호를 사용하여 표현 가능
SELECT EMPNO "사원 번호",ENAME "USER",SAL*12 "^연봉^" FROM EMP;
--검색대상은 , 기호를 사용하여 구분 검색
SELECT ENAME, JOB FROM EMP;
--검색대상에 || 기호를 사용하면 문자값이 결합된 결과를 제공
--SQL 명령에서 문자값은 ' ' 기호 사용햐여 표현
SELECT ENAME||JOB FROM EMP;
SELECT ENAME||'님의 업무는 '||JOB||'입니다.' FROM EMP;
--질의 결과 예시: SMITH님의 업무는 CLERK입니다.
-- EMP 테이블에 저장된 모든 사원들의 업무 검색 - 중복 컬럼값 검색
SELECT JOB FROM EMP;
--EMP 테이블에 저장된 모든 사원의 업무 검색 - 중복 컬럼값을 제외한 유일한 하나의 컬럼값만 검색
🔘 DISTINCT : 검색대상의 중복값을 제외한 유일한 하나의 컬럼값만 검색하는 기능을 제공하는 키워드
--형식) SELECT DISTINCT 검색대상,검색대상,... FROM 테이블명
SELECT DISTINCT JOB FROM EMP;
--오라클에서는 DISTINCT 키워드를 사용하여 검색대상을 여러개 나열하여 작성 가능 - 나열된 검색대상이 모두 중복되지 않는 행 검색
SELECT DISTINCT JOB,DEPTNO FROM EMP;
🔘WHERE : 조건식을 사용하여 조건식의 결과가 참(TRUE)인 행만 검색하는 기능을 제공하는 키워드
--형식) SELECT 검색대상,검색대상,... FROM 테이블명 WHERE 조건식
--조건식은 컬럼값을 비교연산자로 비교값과 비교하는 연산식을 작성하여 사용
--EMP 테이블에 저장된 모든 사원의 사원번호,사원이름,업무,급여 검색
SELECT EMPNO,ENAME,JOB,SAL FROM EMP;
--EMP 테이블에서 사원번호가 7698인 사원의 사원번호,사원이름,업무,급여 검색
SELECT EMPNO,ENAME,JOB,SAL FROM EMP WHERE EMPNO=7698;
--EMP 테이블에서 사원이름가 KING인 사원의 사원번호,사원이름,업무,급여 검색
SELECT EMPNO,ENAME,JOB,SAL FROM EMP WHERE ENAME='KING';
--SQL 명령은 대소문자를 구분하지 않지만 문자값은 대소문자를 구분하여 처리
SELECT EMPNO,ENAME,JOB,SAL FROM EMP WHERE ENAME='king';
--EMP 테이블에서 입사일이 1981년 6월 9일인 사원의 사원번호,사원이름,업무,급여,입사일 검색
--날짜값은 기본적으로 ' ' 안에 [RR/MM/DD] 형식의 패턴으로 표현하여 사용
SELECT EMPNO,ENAME,JOB,SAL,HIREDATE FROM EMP WHERE HIREDATE='81/06/09';
--날짜값은 ' ' 안에 [YYYY-MM-DD] 형식의 패턴으로 표현하여 사용 가능
SELECT EMPNO,ENAME,JOB,SAL,HIREDATE FROM EMP WHERE HIREDATE='1981-06-09';
--EMP 테이블에서 업무가 SALESMAN이 아닌 사원의 사원번호,사원이름,업무,급여 검색
SELECT EMPNO,ENAME,JOB,SAL FROM EMP WHERE JOB<>'SALESMAN';
SELECT EMPNO,ENAME,JOB,SAL FROM EMP WHERE JOB!='SALESMAN';
--EMP 테이블에서 급여가 2000이상인 사원의 사원번호,사원이름,업무,급여 검색
SELECT EMPNO,ENAME,JOB,SAL FROM EMP WHERE SAL>=2000;
--EMP 테이블에서 사원이름이 A,B,C로 시작되는 사원의 사원번호,사원이름,업무,급여 검색
SELECT EMPNO,ENAME,JOB,SAL FROM EMP WHERE ENAME<'D';
--EMP 테이블에서 입사일이 1981년 5월 1일 이전에 입사한 사원의 사원번호,사원이름,업무,급여,입사일 검색
SELECT EMPNO,ENAME,JOB,SAL,HIREDATE FROM EMP WHERE HIREDATE<'81/05/01';
--EMP 테이블에서 업무가 SALESMAN인 사원 중 급여가 1500 이상인 사원의 사원번호,사원이름,업무,급여 검색
SELECT EMPNO,ENAME,JOB,SAL FROM EMP WHERE JOB='SALESMAN' AND SAL>=1500;
--EMP 테이블에서 부서번호가 10 이거나 업무가 MANAGER인 사원의 사원번호,사원이름,업무,급여,부서번호 검색
SELECT EMPNO,ENAME,JOB,SAL,DEPTNO FROM EMP WHERE DEPTNO=10 OR JOB='MANAGER';
--EMP 테이블에서 급여가 1000~3000 범위의 포함되는 사원의 사원번호,사원이름,업무,급여 검색
SELECT EMPNO,ENAME,JOB,SAL FROM EMP WHERE SAL>=1000 AND SAL<=3000;
--SQL에서는 BETWEEN 키워드를 사용하여 컬럼값이 작은값부터 큰값 범위에 포함될 경우 검색하는 조건식 작성
--형식) 컬럼명 BETWEEN 작은값 AND 큰값
SELECT EMPNO,ENAME,JOB,SAL FROM EMP WHERE SAL BETWEEN 1000 AND 3000;
--EMP 테이블에서 사원의 업무가 ANALYST 이거나 SALESMAN인 사원의 사원번호,사원이름,업무,급여 검색
SELECT EMPNO,ENAME,JOB,SAL FROM EMP WHERE JOB='ANALYST' OR JOB='SALESMAN';
--SQL에서는 IN 키워드를 사용하여 컬럼값이 나열된 값들 중 하나인 경우 검색하는 조건식 작성
--형식) 컬럼명 IN (값,값,...)
SELECT EMPNO,ENAME,JOB,SAL FROM EMP WHERE JOB IN ('ANALYST','SALESMAN');
--EMP 테이블에서 사원이름이 BLAKE인 사원의 사원번호,사원이름,업무,급여 검색
SELECT EMPNO,ENAME,JOB,SAL FROM EMP WHERE ENAME='BLAKE';
--EMP 테이블에서 사원이름이 B로 시작되는 사원의 사원번호,사원이름,업무,급여 검색
SELECT EMPNO,ENAME,JOB,SAL FROM EMP WHERE ENAME>='B' AND ENAME<'C';
--조건식에는 검색패턴문자를 이용해 컬럼값을 비교하여 검색 가능
--검색패턴문자 : [%] - 전체, [_] - 임의의 문자 하나
--조건식에서 [=] 연산자를 사용하여 컬럼값을 비교할 경우 [%] 또는 [_]를 검색패턴문자가 아닌 일반문자로 처리하여 비교
SELECT EMPNO,ENAME,JOB,SAL FROM EMP WHERE ENAME='B%';--실행오류 : 잘못된 결과를 제공하는 SQL 명령
--SQL에서는 LIKE 키워드를 사용하여 조건식에서 검색패턴문자를 이용해 컬럼값을 비교하여 검색하는 조건식 작성
--형식) 컬럼명 LIKE '검색패턴문자가 포함된 비교값'
SELECT EMPNO,ENAME,JOB,SAL FROM EMP WHERE ENAME LIKE 'B%';
--검색패턴문자를 사용하지 않아도 [=] 연산자 대신 LIKE 키워드 사용
SELECT EMPNO,ENAME,JOB,SAL FROM EMP WHERE ENAME='BLAKE';
SELECT EMPNO,ENAME,JOB,SAL FROM EMP WHERE ENAME LIKE 'BLAKE';
--EMP 테이블에서 사원이름에 [A] 문자가 포함되어 있는 사원의 사원번호,사원이름,업무,급여 검색
SELECT EMPNO,ENAME,JOB,SAL FROM EMP WHERE ENAME LIKE '%A%';
--EMP 테이블에서 사원이름에 두번째 문자가 [L]인 사원의 사원번호,사원이름,업무,급여 검색
SELECT EMPNO,ENAME,JOB,SAL FROM EMP WHERE ENAME LIKE '_L%';
🔘EMP 테이블 새로운 사원정보 삽입 처리 - 테이블에 행 저장
--EMP 테이블에 저장된 모든 사원정보 검색
SELECT * FROM EMP;
--EMP 테이블 새로운 사원정보 삽입 처리 - 테이블에 행 저장
INSERT INTO EMP VALUES(9000,'M_BEER','CLERK',7788,'81/12/12',1300,NULL,10);
SELECT EMPNO,ENAME,JOB,SAL FROM EMP WHERE ENAME LIKE '%\_%' ESCAPE '\';
--EMP 테이블에서 사원이름에 [_] 문자가 포함된 사원의 사원번호,사원이름,업무,급여 검색
--문제점)LIKE 키워드로 검색하면 [_] 문자를 일반문자가 아닌 검색패턴문자로 처리하여 검색 - 실행오류
SELECT EMPNO,ENAME,JOB,SAL FROM EMP WHERE ENAME LIKE '%_%';
--해결법)LIKE 키워드로 검색할 때 [_] 문자를 검색패턴문자가 아닌 일반문자로 처리되도록 회피문자(ESCAPE CHARACTER)로 표현하여 검색
--ESCAPE 키워드를 사용하여 회피문자를 표현하기 위한 문자를 설정해야만 비교값에서 회피문자 사용 가능
SELECT EMPNO,ENAME,JOB,SAL FROM EMP WHERE ENAME LIKE '%\_%' ESCAPE '\';
🔘 EMP 테이블 사원번호가 9000인 사원정보 삭제 처리
DELETE FROM EMP WHERE EMPNO=9000;
SELECT * FROM EMP;
COMMIT;
🔘SQL 명령에서는 NOT 키워드를 사용하여 조건식의 결과가 참(TRUE)가 아닌 거짓(FALSE)인 행을 검색하는 조건식 작성
--형식) NOT(조건식)
--EMP 테이블에서 업무가 MANAGER이 아닌 사원의 사원번호,사원이름,업무,급여 검색
SELECT EMPNO,ENAME,JOB,SAL FROM EMP WHERE JOB<>'MANAGER';
--SQL 명령에서는 NOT 키워드를 사용하여 조건식의 결과가 참(TRUE)가 아닌 거짓(FALSE)인 행을 검색하는 조건식 작성
--형식) NOT(조건식)
SELECT EMPNO,ENAME,JOB,SAL FROM EMP WHERE NOT(JOB='MANAGER');
--EMP 테이블에 저장된 모든 사원의 사원번호,사원이름,업무,급여,성과급 검색
--NULL : 값이 존재하지 않는 것을 표현하기 위한 키워드
SELECT EMPNO,ENAME,JOB,SAL,COMM FROM EMP;
--EMP 테이블에서 성과급이 존재하지 않는 사원의 사원번호,사원이름,업무,급여,성과급 검색
--NULL은 값이 아니므로 비교 불가능하므로 실행오류 발생
SELECT EMPNO,ENAME,JOB,SAL,COMM FROM EMP WHERE COMM=NULL;
--SQL에서는 IS 키워드를 사용하여 NULL를 구분하여 조건식 작성
--형식) 컬럼명 IS NULL 또는 컬럼명 IS NOT NULL
SELECT EMPNO,ENAME,JOB,SAL,COMM FROM EMP WHERE COMM IS NULL;
--EMP 테이블에서 성과급이 존재하는 사원의 사원번호,사원이름,업무,급여,성과급 검색
SELECT EMPNO,ENAME,JOB,SAL,COMM FROM EMP WHERE COMM IS NOT NULL;
🔘 ORDER BY : 컬럼값을 비교하여 행이 정렬되도록 검색하는 기능 제공
--형식) SELECT 검색대상,검색대상,... FROM 테이블명 [WHERE 조건식]
-- ORDER BY {컬럼명|연산식|별칭|INDEX} {ASC|DESC}, {컬럼명|연산식|함수|별칭|INDEX} {ASC|DESC}, ...
--ASC : 오름차순 정렬, DESC : 내림차순 정렬
--정렬 처리되는 컬럼값이 같은 경우 다른 컬럼값을 비교하여 정렬되도록 ORDER BY 작성 가능
--EMP 테이블에 저장된 모든 사원의 사원번호,사원이름,업무,급여,부서번호 검색 - 해이 삽입된 순서대로 검색
SELECT EMPNO,ENAME,JOB,SAL,DEPTNO FROM EMP;
--EMP 테이블에 저장된 모든 사원의 사원번호,사원이름,업무,급여,부서번호를 부서번호로 오름차순 정렬하여 검색
SELECT EMPNO,ENAME,JOB,SAL,DEPTNO FROM EMP ORDER BY DEPTNO ASC;
--오름차순 정렬할 때 ASC 키워드 생략 가능
SELECT EMPNO,ENAME,JOB,SAL,DEPTNO FROM EMP ORDER BY DEPTNO;
--EMP 테이블에 저장된 모든 사원의 사원번호,사원이름,업무,급여,부서번호를 급여로 내림차순 정렬하여 검색
SELECT EMPNO,ENAME,JOB,SAL,DEPTNO FROM EMP ORDER BY SAL DESC;
--EMP 테이블에 저장된 모든 사원의 사원번호,사원이름,업무,급여,부서번호를 사원이름으로 오름차순 정렬하여 검색
SELECT EMPNO,ENAME,JOB,SAL,DEPTNO FROM EMP ORDER BY ENAME;
--EMP 테이블에 저장된 모든 사원의 사원번호,사원이름,업무,급여,부서번호를 입사일로 내림차순 정렬하여 검색
SELECT EMPNO,ENAME,JOB,SAL,DEPTNO,HIREDATE FROM EMP ORDER BY HIREDATE DESC;
--EMP 테이블에 저장된 모든 사원의 사원번호,사원이름,연봉(급여*12)을 연봉으로 내림차순 정렬하여 검색
SELECT EMPNO,ENAME,SAL*12 ANNUAL FROM EMP ORDER BY SAL*12 DESC; --연산식의 결과값을 비교하여 정렬 처리
SELECT EMPNO,ENAME,SAL*12 ANNUAL FROM EMP ORDER BY ANNUAL DESC; --컬럼의 별칭으로 표현된 컬럼값을 비교하여 정렬 처리
--SELECT 명령의 검색대상에는 순차적으로 첨자(INDEX : 위치를 표현하는 숫자값)가 자동 부여 - COLUMN INDEX
--오라클에서는 첨자가 1부터 1씩 증가되는 숫자값으로 표현하여 사용
SELECT EMPNO,ENAME,SAL*12 ANNUAL FROM EMP ORDER BY 3 DESC; --검색대상의 첨자로 표현되는 컬럼값을 비교하여 정렬 처리
--EMP 테이블에 저장된 모든 사원의 사원번호,사원이름,업무,급여,부서번호를 부서번호로 오름차순 정렬하고 부서번호가 같은 경우
--급여로 내림차순 정렬하여 검색
SELECT EMPNO,ENAME,JOB,SAL,DEPTNO FROM EMP ORDER BY DEPTNO ASC,SAL DESC;
SELECT EMPNO,ENAME,JOB,SAL,DEPTNO FROM EMP ORDER BY DEPTNO,SAL DESC;
--EMP 테이블에서 급여가 3000 이상인 사원의 사원번호,사원이름,업무,급여,부서번호를 업무로 오름차순 정렬하여 검색
SELECT EMPNO,ENAME,JOB,SAL,DEPTNO FROM EMP WHERE SAL>=3000 ORDER BY JOB;
'Database > Oracle' 카테고리의 다른 글
[SQL-Oracle]함수(Function) - 날짜함수 (0) | 2023.11.29 |
---|---|
[SQL-Oracle]함수(Function) - 숫자함수 (1) | 2023.11.28 |
[SQL-Oracle]함수(Function) - 문자함수 (0) | 2023.11.28 |
[SQL 입문] DQL 실습 예제👩💻 (0) | 2023.11.28 |
[Oracle] Oracle XE 설치(11g / 21c) 및 SQL Developer 설정 (1) | 2023.11.27 |