ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 240820
    SQL 2020. 8. 25. 11:39
    SELECT DISTINCT EMPNO NO, ENAME NAME
    FROM EMP
    ;

    SQL의 기본형식으로, 

    select - 뽑아낼 자료(Column 이름) 별칭, ~

    from 뽑아낼 자료의 위치 (Table 이름)

    ;

    으로 구성된다.

     

    SELECT * FROM EMP;
    --부서 번호(DEPTNO)가 30인 사원을 모두 표기해주세요. . 이름, 업무, 관리자, 입사일 순서대로  표시만
    SELECT ENAME NAME, JOB, MGR, HIREDATE 
    FROM EMP
    --이제 조건이 나와야해
    WHERE DEPTNO = 30
    --아무것도 안쓰면 ASC, 내림차순 = DESC
    ORDER BY HIREDATE 
    ;

    *은 all의 의미

    where은 조건식을 입력하기 위한다.

    order by는 asc (오름차순) , desc (내림차순)으로 아무 것도 적지 않을 경우 오름차순 자동

    --부서번호에 따른 위치정보를 나타내 주세요. -- 이 두 가지 정보가 다 들어있는건, DEPT테이블
    SELECT DEPTNO, LOC
    FROM DEPT
    ;
    --SMITH가 근무하는 부서의 번호와 위치를 나타내주세요.
    SELECT E.ENAME, D.DEPTNO, D.LOC 
    FROM EMP E JOIN DEPT D
    ON e.deptno = d.deptno
    WHERE E.ENAME = 'SMITH'
    ;

     

    두 개의 테이블을 병합하는 것 - 교집합이 있어야해

    from ~ join ~

    on 교집합을 명시

     

     

    SHOW USER;
    SELECT * FROM TAB; --TAB도 다른데 없음, TABLE의 약자. 현재 존재하는 TABLE명을 볼 수 있따.
    DESC EMP; -- TABLE의 정보 ; 오라클에서만 지원하는 명령어. 내림차순과는 다름. 여기서 DESC = DESCRIPTION.
    SELECT DEPTNO, JOB
    FROM EMP
    ;

    기타 표현들.

     

    --연봉 = SAL * 12 + COMM (보너스)
    -- EMPNO, ENAME, JOB, HIREDATE, SAL 월급, ... 연봉
    SELECT EMPNO, ENAME, JOB, HIREDATE, SAL 월급, SAL*12+COMM 연봉
    FROM EMP
    ;

    출력할 부분에 대한 사칙연산이 가능하다.

     

    --WHERE 구문 - 조건에 맞는 데이터만 조회하고싶을 때
    SELECT * FROM EMP
    WHERE DEPTNO = 10
    ;
    SELECT * FROM EMP
    WHERE ENAME = 'WARD'
    ;

    조건문

    SELECT * FROM EMP
    WHERE DEPTNO ^= 30
    ;
    
    SELECT * FROM EMP
    WHERE DEPTNO != 30
    ;
    
    SELECT * FROM EMP
    WHERE SAL >= 3000 AND DEPTNO =20
    ;

    ^=, !=, <>, NOT + = 으로 일치하지 않는 정보 조회가 가능하다.

     

    --WHERE 조건문은 앞에서부터 순차적으로 진행하기에 오류가 생길 수 있다.
    SELECT * FROM EMP
    WHERE DEPTNO = 20 AND SAL >= 2000 OR HIREDATE < '82/01/01'
    ; --이랬을 때, DEPTNO가 20이 아닌 애들도 출력이 되버렸다. > 82 1 1 전에 입사했거나, DEPTNO 20, SAL >= 2000인 애들이 출력된 것이다.
    --그래서
    SELECT * FROM EMP
    WHERE DEPTNO = 20 AND (SAL >= 2000 OR HIREDATE < '82/01/01')
    ;

    순서의 중요성, 아 다르고 어 다르니 주의하자.

     

    SELECT ENAME ||'''S JOB IS '||JOB EMPLOYEE FROM EMP
    ; --연결 연산자 : 컬럼명 || '원하는 문자' || 컬럼명 별칭 ; 중요한건 ' ' 사이에 특수문자를 넣고싶으면 '를 앞에 하나 넣어야해
    
    SELECT ENAME ||'SAT S_ JOB  IS '||JOB EMPLOYEE FROM EMP --근데 '를 넣을때만 해당되는 거 같아
    ;

    combine 2 columns

    2개의  columns 정보를 병합해서 표현하기 위함

    특수 문자 ' 의 사용을 주의하자!

     

    SELECT *
    FROM EMP E JOIN DEPT D
    ON E.DEPTNO = D.DEPTNO
    ORDER BY D.LOC DESC, JOB DESC, ENAME DESC 
    ;
    --COMM에 MULL이 들어가 있는 경우 숫자 + NULL  > NULL로 계산되므로 NULL이라는 값 대신에 0이 들어가도록 계산해야 한다.
    --그때 사용하는 함수 NVL (컬럼명, NULL을 대체할 값)
    -- 추가 함수 NVL2 (컬럼명, NULL일때 대체할 값, NULL이 아닐때 대체할 값)
    
    
    -- EMP 테이블 값에서 관리자 (mgr) 가 따로 있는 사람은 'Y'로 표시하고, 없는 사람은 'N'으로 표현
    -- 상여금도 마찬가지로
    
    SELECT E.*, NVL(COMM, 'N', 'Y')
    FROM EMP E
    ; --이거 안돼 NYL2가 뭔지 모른다는데? > 응 NYL이 아니라 NVL야
    

     

    사용되는 기타 함수!

    select  부분에 함수를 넣을 수 있다. ( 산출되는 결과에 반영해야 하니까 당연한 거겠지?)

     

    SELECT DISTINCT E.JOB, E.DEPTNO, D.DNAME
    FROM EMP E JOIN DEPT D
    ON E.DEPTNO = D.DEPTNO
    ORDER BY E.DEPTNO --와 D.DEPTNO하면 안되넼ㅋㅋㅋㅋㅋ
    ;

     

    일치해야하는 부분.

     물론 e.deptno = d.deptno은 같은 것이지만, 정렬을 위해서 select 된 것과 정확히 일치시켜야 해.

     

    • 20200824

      관계형 데이터 베이스의 특징

      정보 저장을 위해 테이블 이용 (행과 열로 구성)
      CRUD가 다른 DBMS에 비해 쉽다


      용어 정리 필수
      relation : 테이블을 의미한다. (자바의 클래스라고 볼 수 있어)
      relation instance : 저장되어 있는 테이블의 데이터 전체를 의미한다. 
      schema :  속성들의 집합 (이름, 나이, 성별, 학년 등)
      tuple : 속성들의 모임으로 구성 (나이의 튜플은 19, 20, 22, 25; 성별의 튜플은 남, 여; 학년의 튜플은 1, 2, 3; 등)
      cardinality = cardinal number = 대응수
      domain : 


      대괄호는 생략 가능한 부분으로 표시된다.

      세미콜론으로 하나의 명령을 한정짓는다.

      WHERE에는 COLUMN명으로 구분을 하게 된다.

       SELECT (화면에 나타나게끔 하고자 하는 인스턴스들)
       FROM 가져올 테이블 이름
       WHERE 조건 (COLUMN명으로) 비교연산자( = ) 비교값
       ORDER BY 정렬할 컬럼명;

      오름차순일 경우: ASC
      내림차순일 경우: DESC

      COLUMN에 대한 설명은 어딜가나 필수!

      데이터베이스에선 데이터의 메모리 관리가 가장 중요하다.

      두개의 테이블을 연결하려면 FROM 다음에 테이블 명이 2개
      1. 테이블명1 별칭1, 테이블명2, 별칭2 : FROM EMP E, DEPT D
      2. 테이블명1 JOIN 테이블명2 : FROM EMP E JOIN DEPT D

      연결고리 = 연결조건
      1.수행 - COMLUMN 찾기
      2.수행 - 조건문 작성
      방법1. WHERE (조건식 작성) WHERE E.DEPTNO = D.DEPTNO,
      방법2. ON (조건식 작성, OR COLUMN명 작성) ON E.DEPTNO = D.DEPTNO



      sql (structured query language)

       1. 구조적인 질의 언어라는 뜻이며, 데이터베이스를 제어, 관리
      2. 데이터베이스에서 자료를 검색 / 수정 / 삭제하는 데이터베이스 언어
      3. 독자적인 문법을 갖는 db 표준 언어

      명령문의 종류
      1. 데이터베이스 조작어: DML (Data Manipulation Language)
      Insert, update, delete문
      2. 데이터 조회어 : DQL (Data Query Language)
      Select문
      3. 데이터베이스 정의어: DDL (Data Definition Language)
      Schema, domain, table, view, index를 정의, 변경, 삭제
      4. 데이터 제어어: DCL (Data Control Language)
      commint, rollback, grant, revoke
      5. 트랜잭션 처리어: TCL (Transaction Control Language)
      DCL에서 트랜잭션을 제어하는 명령어 commit, rollback


      TABTYPE = VIEW TABLE SYNONYM 

      ' ' 이 문자를 나타내는 기본, " " 은 띄워쓰기 특수문자등을 그대로 나타내고 싶을 때 사용

      띄워쓰기 항상 생각해둬야해, 자바랑 달라

      WHERE 절에 사용 가능한 기타 연산자
      1. BETWEEN 조건 A AND 조건 B
      2. IN (LIST) LIST의 값 중 어느 하나와 일치하는 데이터를 출력
      3. LIKE 문자 형태로 일치하는 데이터를 출력 (%, _ 사용)
      4. IS NULL NULL 값을 가진 데이터 출력
      5. NOT BETWEEN A AND B A와 B 사이에 있지 않은 데이터를 출력 (A, B 포함 안해)
      6. NOT IN
      7. NOT LIKE
      8. IS NOT NULL


      ORDER BY는 뒤에 컬럼명, 컬럼별칭, 숫자 이렇게 총 3가지로 표현할 수 있따. 여기서 숫자는 COLUMN 번호
      ' ' 안의 문자열에 특수문자를 넣으려면 '를 하나 더 넣어야해서 쿼리문에 '를 넣기 위해 '''를 썼다.

      정렬은 결과물을 나타냄에 있어서 E나 D가 처음 결과물을 가져오는 건 좋ㄹ은데, 나타낼때는 가져온 걸 써야지!!

      이름, 날짜, 문자도 크기를 비교할 수 있따. (알파벳 순으로)
      <
      >
      =
      <> 제외하고 다

    'SQL' 카테고리의 다른 글

    280820  (2) 2020.08.28
    270820  (2) 2020.08.27
    270820 - 쪽지 시험  (0) 2020.08.27
    260820  (3) 2020.08.26
    250820  (4) 2020.08.25

    댓글

Designed by Tistory.