Daily Coding Summary

2023. 11. 14. 23:16Daily Codig Reminder

데이터베이스

 

데이터베이스 개요

  • 데이터베이스 : 대용량의 데이터 모임
    DBMS: 데이터베이스 관리시스템(프로그램)
    EX) ORACLE, MYSQL, MARLADB...

 

  • 데이터베이스 정리
    데이터베이스 관리시스템(DBMS) -> 오라클
    데이터베이스 -> DEPT EMP SALGRADE BONUS
    관계형 데이터베이스(DBMS) => RDBMS
    관계형 데이터 베이스 시스템

    테이블과 테이블 간의 관계가 연결 relation
    관계형 데이터모델은 2차원 테이블 형태
    column (컬럼) = 열 (성명, 주소, 전화번호 등)
    row(로우) = 행 = 레코드 (성명 - 주소- 전화번호)
    테이블: 전체  (로우와 컬럼으로 구성)

  • SQL 언어
    기능별로 구분 -> 외울 필요X
    기본적으로 테이블이나 컬럼이름은 대문자로
    SQL문은 여러줄에 걸쳐 작성가능하고 반드시 세미콜론으로 끝남
    SQL 문은 자바언어와 마찬가지로 키워드가 있으며 대문자로 사용권장

  • SQL 특징
DQL select
DML insert, update, delete
DDL create, alter, drop, rename, truncate
TCL commit, rolback, savepoint
DCL grant, revoke

 

SELECT 문

  • select deptno from dept; -> dept 에서 deptno 만 추출
    select dname from dept; -> DEPT 에서 DNAME 만 추출
    select dname, loc, deptno from dept; -> dept에서 dname, loc, deptno 추출

    => 테이블 내의 특정 컬럼 데이터 보기
    SELECT 뒤에 해당컬럼을 차례대로 기술, 쉼표로 구분해서 여러개 지정가능


  • select *from dept; -> dept 전체 테이블 추출
    select*from emp; -> emp 전체 테이블 추출
    select * from emp; -> 대문자여도 상관 X
    select DNAME, loc ,deptno from dept; -> 대문자여도 상관 X


  • SELECT [DISTINCT]{8, COLUMN [ALIAS],..} FROM TABLE;
    NOT NULL 은 비우면 안되는 칸
    비어있는 칸은 비어있어도 됨.


  • SQL 문장 내의 숫자 및 날짜 타입에는 +,-,*,/,() 사용가능.

    select sal +100 from emp;
    select sal -100 from emp;
    select sal *100 from emp;
    select sal /100 from emp;


  • 연산식을 컬럼명으로 표시
    -> select empno, ename, sal*1.1 from emp;
    컬럼의 내용이 추가되는 것이 아니라 가상의 컬럼이 있어 계산 결과가 나옴(원본데이터유지).
    -> select empno, ename, sal , sal*12 from emp;
    sal*12는 연봉 


  • 컬럼에 별칭 (ailas) 사용
    -> select EMPNO AS 사번, ENAME AS 성명, sal AS 급여, sal*12 AS 연봉 from emp;
    as 붙이지 않아도 쓸 수 있음
  • select 10/3 from dual; -> 3.33333..
    select mod(10,3) from dual; ->1

  • 별칭에 공백문자 사용시 쌍따옴표 "" 필요
    select ename " 사원 이름" from emp;
    에러 -> select ename 사원 이름 from emp;

NULL 값

  • 오라클은 기본적으로 null 값을 허용하며 제약조건을 이용하려 null 값을 허용하지 않을 수도 있다.

  • select * from emp where empno = 7369;
    사원번호가 7369번 인 사람을 찾기 위한

  • select * from emp where job ='SALASMAN';
    원하는 문자를 작은 따옴표로 묶어야 ''
    select * from emp where job ='salesman';-> error
    테이블에 써있는 대소문자를 구분하여 적어야 작동
  • = 같다 ,,, 자바, 자바스크립트 == 사용

  • select ename, comm from emp where comm is null;
    IS NULL, IS NOT NULL 만 사용가능.
    select ename, comm from emp where comm = null;
    null 에는 = 사용 불가능


  • select empno, ename, comm, comm+100 from emp;
    NULL 값에 100을 더해도 NULL

  • null 값을 가진 컬럼을 연산하기 위해서는 NVL 또는 NVL2 함수를 사용할 수 있다.

    NVL(컬럼명, 기본값)  NVL2(컬럼명, A,B)
    select empno, ename, comm. NVL(comm,0) + NVL2(컬럼명,A,B) from emp;
    null 값을 0으로 변경하여 100 을 더함
    -> null 일 경우 값이 100으로 나오고 , 기본값이 100이면 200이 나옴

  • 여러개의 문자열을 연결하여 하나의 문자열로 생성
      select ename || job as "이름 직업" from emp;
    -> SMITHCLERK


  • 리터럴 : 
    select 문장에 포함된 컬럼명 또는 별칭 이외의 문자값
    반드시 문자값, 날짜 값에는 '' 을 붙인다.
    select ename|| '의 직급은' ||JOB '이다' AS "사원별 직급" from emp;
    -> SMITH 의 직급은 CLERK이다
    큰 따옴표는 별칭에서만!!!!
    나머지는 작은 따옴표


  • select empno 사변, ename 이름, sal 월급, sal*12+NVL(comm,0) 연봉 from emp;
    -> 7369 SMITH 800 9600


  • SELECT empno 사번, ename|| '사원' 이름 from emp;
    ->7369 SMITH사원


  • 중복행제거
    SELECT distinct job from emp;

  • WHERE
!= 같지 않다
>= 크거나 같다
<= 작거나 같다

 

  • select empno 사번, ename 이름, hiredate 입사일 from emp WHERE ename = 'KING';
    KING 그대로 대문자에 작은 따옴표 사용 필수!!
    -> 7839 KING 81/11/17


  • SELECT ename 이름, hiredate 입사날짜 from emp WHERE hiredate >='81/01/01';
    -> 81년도부터 입사 가급적으로 01/01 로 작성
    ALLEN 81/02/20


  • select * from emp where sal > 1000 and sal <2000;
    월급이 1000 에서 2000 사이인 것을 추출.


  • >= ,<= 임
    = select * from emp where sal between '81/02/01' and '81/02/28';
    꼭 작은 따옴표를!!!


  • select ename, deptno from emp where deptno = 10 or deptno = 20;
    10번 부서나 20번 부서에 해당하는


  • select ename, deptno from emp where deptno in(10); 10번 부서에 해당..

  • select ename, deptno from emp where ename in('SMITH', 'KING');
    이름이 스미스나 킹 인 사람

  • select ename 이름, hiredate 입사날짜 from emp where hiredate in('81/12/03', '81/01/23');
    이 두 날짜에 입사한 사람

  • select ename 이름, sal 월급 from emp where comm is null and sal>2000;
    JONES 2975 커미션이 없고 월급이 2000안되는 사람


  • 다중 리스트
    select ename 이름, job 직업, deptno 부서번호 from emp where (job,deptno) in(('MANAGER',20),('CLERK',30));
    사원리스트에서 JOB이 MANAGER 이면서 20번 부서에 속하거나 JOB이 CLERK 이면서 30번 부서에 속하는 사원의 정보 주의해야할점: 직업을 꼭 그 소대문자로 써야 추출가능

'Daily Codig Reminder' 카테고리의 다른 글

DDL , 뷰  (0) 2023.11.22
DML DDL summary  (1) 2023.11.20
Coding Summary  (1) 2023.11.20
Database Summary  (1) 2023.11.19
Daily Reminder  (0) 2023.11.16