12일차 - 240111

김리오·2024년 1월 11일

학원공부 TIL

목록 보기
12/13

📌마지막에 실행한 명령어를 확장자가 sql인 파일에 저장

  1. 명령문 입력
SELECT ENAME, SAL*12
  2  FROM EMP;
  1. 마지막에 실행한 명령어를 A001.sql로 저장
  • 확장자로 아무것도 기록하지 않으면, default인 .SQL로 저장된다
SAVE A001
  1. HOST 명령어를 이용해 파일 목록을 살펴보면 A001.sql이 생성되어 있는 것을 확인할 수 있다.
HOST
D:\test2>DIR
2024-01-11  오후 04:36                56 a001.sql
  1. ED명령어는 파일명을 생략하고 쓰면 명령 버퍼인 afiedt.buf 파일을 열지만,
    ED A001 형태로 사용(확장자를 생략하면 디폴트로 확장자가 .sql인 파일을 찾는다)하면
    A001.sql 파일의 내용을 확인할 수 있다.
ED A001
  1. 파일 안의 내용을 변경한 후 저장하고(ANSI로 저장해야 한다. UTF-8로 인코딩 하면 오류 발생)
    @A001.sql 명령어로 해당 파일을 실행해보면 변경 내용이 적용되어 실행된다.

📌이미 존재하는 파일의 내용 대체 및 추가

  • REPLACE : 이미 존재하는 파일에 새로운 내용을 덮어쓰려면 REPLACE를 사용한다.
SACE TEMP REPlACE
  • APPEND : 이미 쿼리문이 저장되어 있는 sql 파일에
    SAVE 명령어 APPEND 옵션을 사용하여 현재 수행한 SQL문을 추가로 저장할 수 있다.
SAVE TEMP APPEND

📌이 외 다양한 SQL_PLUS 명령어

  • @ : 확장자가 .SQL인 파일에 저장되어 있는 쿼리문을 시행시키기 위해서 사용한다.
    확장자를 생략한 채 파일명만 기술하면 디폴트로 .SQL로 인식한다.
    SQL 파일에는 일반적으로 여러 개의 쿼리문을 저장해두기 때문에 기술된 쿼리문을 순차적으로 수행한다.
@ filename
  • SPOOL : 실행된 쿼리 결과를 파일로 기록하는 명령어. 내가 작업한 내역을 파일로 저장하거나 화면에 출력해준다.
    확장자는 디폴트로 .LST가 부여된다.
    SPOOL 명령어를 통해 갈뮈한 화면을 저장하기 위해서는 반드시 SPOOL OFF를해주어야 한다.
    (그냥 종료하면 저장되지 않고 날아간다 ㄷㄷ;)
SPOOL filename
SPOOL OFF
  • GET : SAVE 명령어를 사용하여 파일에 저장된 SQL 명령문을 SQL 버퍼로 가져오는 명령을 수행한다.
GET filename
  • SHOW 환경변수 : 현재 설정되어 있는 환경변수의 값을 확인할 수 있다.
    SET 환경변수 : 현재 설정되어 있는 환경변수 값을 변경할 수 있다.
SHOW USER : 현재 연결되어 있는 계정을 보여준다

SHOW/SET HEADING(HEA) on | off : SELECT 명령어를 수행한 후 실행결과가 출력될 때 컬럼의 제목을 출력할 것인지 여부를 제어한다.
								 디폴트 값은 on이고, 컬럼 제목이 출력되지 않도록 하려면 SET HEADING OFF 명령을 입력하면 된다.

SHOW/SET LINESIZE(LIN) n : SELECT 명령어를 수행한 후 결과를 출력할 때 라인에 출력할 최대 문자(Character) 수를 결정한다. 디폴트 80.

SHOW/SET PAGESIZE(PAGES) n : SELECT 명령어를 수행한 후 결과를 출력할 때 한 페이지에 출력할 최대 라인 수를 결정한다. 디폴트 14.

COLUMN 컬럼이름 FORMAT AN : 문자형식 컬럼의 출력 길이 조정. A다음에 컬럼의 길이를 지정한다.
COLUMN 컬럼이름 FORMAT 99,999..00,000.. : 숫자형식 컬럼의 출력 길이 조정. 숫자 개수는 자리수를 의미한다.
									     0은 출력할 자리수보다 작은 데이터를 출력할 경우에는 0으로 채운다.
                                         컴마가 들어가면 출력결과에 그대로 반영된다.

📌WHERE 조건절

  • WHERE SAL >= 3000; (WHERE절에는 1.컬럼 2.연산자 3.비교대상값 세부분으로 구성 된다)
  • 다르다 비교연산자 : <>, !=, ^=
  • 절마다 끊어서 명령문을 작성하면 좋다.
SELECT EMPNO, ENAME, SAL
  2  FROM EMP
  3  WHERE SAL=3000;
  • 문자열이나 날짜는 반드시 단일 따옴표(Single qutation) 안에 표시해야 한다.
  • 비밀번호, 문자열은 대소문자를 구분해서 인식한다.

📌BETWEEN AND / IN 연산자

📁 BETWEEN ~ AND ~

  • 특정 범위의 값을 조회할 때 활용한다.
  • 숫자형/문자형/날짜형에도 사용할 수 있다.
SELECT *
FROM EMP
WHERE SAL<2000 OR SAL>3000;

SELECT *
FROM EMP
WHERE SAL NOT BETWEEN 2000 AND 3000;

📁IN

  • 비교 연산자와 논리 연산자 OR로 구성된 쿼리문을 IN 연산자를 활용해 간단하게 표현할 수 있다.
  • 특정 필드 값이 A이거나 B이거나 C 중에 어느 하나만 만족하더라도 출력하도록 하는 명령이다.
COLUMN_name IN(A, B ,C)

SELECT *
FROM EMP
WHERE COMM IN(300, 500, 1400);

📌LIKE 연산자 / 와일드카드

  • LIKE 연산자는 검색하고자 하는 값을 정확히 모르는 경우에 활용한다. 보통 와일드카드와 함께 사용하여 원하는 내용을 찾는다.
  • % : 문자가 없거나, 하나 이상의 문자가 어떤 값이 와도 상관없다.
  • _ : 하나의 문자가 어떤 값이 와도 상관없다.

📁 'F'로 시작하는 이름 찾기

SELECT *
FROM EMP
WHERE ENAME LIKE 'F%';

📁이름의 두 번째 글자가 A인 사람 찾기

SELECT *
FROM EMP
WHERE ENAME LIKE '_A%';

📁이름에 A가 포함되지 않는 사람 찾기

SELECT *
FROM EMP
WHERE ENAME NOT LIKE '%A%';

📌IS (NOT) NULL

  • NULL 값을 가진 데이터는 비교 연산자를 활용할 수 없다. 대신, IS (NOT) NULL 연산자를 활용해서 비교할 수 있다.
SELECT *
FROM EMP
WHERE COMM IS NULL;

SELECT *
FROM EMP
WHERE COMM IS NOT NULL;

📌정렬을 위한 ORDER BY 절

  • ASC(오름차순)DESC(내림차순)
    숫자작은 값부터 정렬큰 값부터 정렬
    문자사전 순으로 정렬사전 반대 순서로 정렬
    날짜오래 된 -> 최근최근 -> 오래 된
    NULL가장 마지막에 나온다.가장 먼저 나온다.
  • ORDER BY만 입력하고 형식을 정해주지 않으면 디폴트로 ASC 적용한다.

  • 정렬을 병렬로 할 수도 있다. SAL 기준으로 내림차순으로 정리하고, 그 값에서 중복되는 값들을 ENAME을 기준으로 오름차순으로 정렬하도록 작동한다. 아래 코드를 보면 SAL 컬럼을 기준으로 내림차순 정렬이 되어 있는데, 중복되는 3,000 / 1,250 에서는 ENAME컬럼을 기준으로 정렬된 결과가 출력된다.

SELECT *
FROM EMP
ORDER BY SAL DESC. ENAME ASC;

[출력결과]
EMPNO ENAME    JOB                 MGR HIREDATE        SAL   COMM DEPTNO
----- -------- ------------ ---------- -------- ---------- ------ ------
 7839 KING     PRESIDENT               81/11/17      5,000            10
 7902 FORD     ANALYST            7566 81/12/03      3,000            20
 7788 SCOTT    ANALYST            7566 87/07/13      3,000            20
 7566 JONES    MANAGER            7839 81/04/02      2,975            20
 7698 BLAKE    MANAGER            7839 81/05/01      2,850            30
 7782 CLARK    MANAGER            7839 81/06/09      2,450            10
 7499 ALLEN    SALESMAN           7698 81/02/20      1,600  0,300     30
 7844 TURNER   SALESMAN           7698 81/09/08      1,500  0,000     30
 7934 MILLER   CLERK              7782 82/01/23      1,300            10
 7654 MARTIN   SALESMAN           7698 81/09/28      1,250  1,400     30
 7521 WARD     SALESMAN           7698 81/02/22      1,250  0,500     30
 7876 ADAMS    CLERK              7788 87/07/13      1,100            20
 7900 JAMES    CLERK              7698 81/12/03        950            30
 7369 SMITH    CLERK              7902 80/12/17        800            20

14 rows selected.

📌DUAL 테이블과 여러 함수

📁단일 행 함수(single-row Functions)

  • 함수가 행마다 적용된다. 어떤 테이블에 14개의 행이 있고 쿼리문에 조건이 없다면 14개의 행 모두에 단일 행 함수가 적용되어 변환된 값을 반환한다.

📁DUAL 테이블

  • DESC DUAL 명령어로 DUAL 테이블을 살펴보면, 하나의 행을 갖고 있는 테이블이다. 어떤 연산이나 작업을 하고 하나의 행에 출력하고 싶을 때 활용한다.
SELECT 20*40
from EMP;

     20*40
----------
       800
       800
       800
       800
       800
       800
       800
       800
       800
       800
       800
       800
       800
       800
       
       
SELECT 20*40
from DUAL;

     20*40
----------
       800

📁ABS 함수

  • 절대값을 구할 때 활용한다.

📁FLOOR 함수

  • n이하의 가장 큰 정수를 반환한다. 입력값이 음수일 때는 수직선으로 그려서 생각해보면 이해하기 쉽다.
SELECT -34.5678, FLOOR(-34.5678)
FROM DUAL;

  -34.5678 FLOOR(-34.5678)
---------- ---------------
  -34.5678             -35

📁ROUND 함수

  • 특정 자릿수에서 반올림한다.
  • 자릿수에 음수를 지정할 수 있는데, 소수점 이하가 아니라 일, 십, 백단위 ... 거슬러 올라가면서 반올림을 한다.
ROUND(대상, 자릿수)

SELECT 34.5678, ROUND(34.5678, 2)
FROM DUAL;

   34.5678 ROUND(34.5678,2)
---------- ----------------
   34.5678            34.57
   
 SELECT 34.5678, ROUND(34.5678, -1)
 from DUAL;
 
   34.5678 ROUND(34.5678,-1)
---------- -----------------
   34.5678                30
 

📁TRUNC 함수

  • 지정한 자리 수 이하를 버린 결과를 출력하는 함수이다.
  • 두 번째 인자 값이 양수면 그 값에 해당하는 소수점 이하 양수자리까지 표시하고 그 이하는 버린다.
  • 두 번째 인자 값이 0이면 소수점을 모두 버린다.
  • 두 번째 인자 값이 음수면 그 값에 해당하는 1, 10, 100...의 자리로 가서 그 자리를 포함하여 버린다.
SELECT TRUNC(34.5678, 2), TRUNC(34.5678, -1), TRUNC(34.5678)
from DUAL;

TRUNC(34.5678,2) TRUNC(34.5678,-1) TRUNC(34.5678)
---------------- ----------------- --------------
           34.56                30             34

📁MOD 함수

  • 나누기 연산을 한 후 나머지를 결과로 출력하는 함수이다.
SELECT MOD(27,2), MOD(27,5), MOD(27,7)
from DUAL;

 MOD(27,2)  MOD(27,5)  MOD(27,7)
---------- ---------- ----------
         1          2          6

📁여러 문자 처리 함수

  • 구분설명
    LOWER소문자로 변환
    UPPER대문자로 변환
    INITCAP첫 글자만 대문자로, 나머지 글자는 소문자로 변환한다.
    CONCAT문자의 값을 연결한다.
    SUBSTR문자를 잘라 추출한다.
    LENGTH문자의 길이를 반환한다.
SELECT SUBSTR(HIREDATE, 1, 2) 년도, SUBSTR(HIREDATE, 4, 2) 달
from EMP;

년도             달
---------------- ----------------
80               12
81               02
81               02
81               04
81               09
81               05
81               06
87               07
81               11
81               09
87               07
81               12
81               12
82               01
profile
생각하는 사람이 되고 싶다

0개의 댓글