DataBase

Oracle(비쌈), MySQL(이제 더이상 update안됨), MariaDB(MySQL과 비슷하다), Postgre

SQL : Structured Query Language

기본 개념

데이터 : 어떤 필요에 의해 수집했지만 아직 특정 목적을 위해 평가하거나 정제하지 않은 값

정보 : 수집한 데이터를 어떠한 목적을 위해 분석하거나 가공하여 가치를 추가하거나 새로운 의미를 이끌어 낼 수 있는 결과

L자형 테이블 : Null 있는 사람들이 위에 있는 것. 근데 이렇게 하면, 불편해서

테이블 수평분할: 아예 자기에 맞춰서 표를 따로 만든다. 예를들어 차가 없는 사람은 따른 테이블에..

근데 일케되면, 차를 사고 팔고 하는 것들을 표현하는 것에 시간이 많이 든다.

테이블 수직분할: 고객에 대한 정보, 차에 대한 정보를 나누어서 표에 나타냄.

관계형성: primary key를 가지고 관계 형성. 부모 테이블이 주체적인 역할 담당. primary key는 유일한 값이어야한다.

primary key: 해당 테이블의 각각의 레코드를 유일하게 구분할 수 있는키(not duplicated, not null)

foreign key: 자식 테이블에서의 프라이머리 키를 foreign key 라고 한다. null 도 가능, 중복 가능

​ 다른 테이블(부모 테이블)의 PK 가 전이되어 현재 테이블의 컬럼으로 들어온 컬럼

​ foreign key 를 가진 것은 항상 부모다.

RDBMS : 부모 자식간에 관계를 가지는 테이블

NoSQL : Not only SQL (SQL 만 있는게 아니다. 빅데이터를 처리하기 위한 툴 ) , mongoDB

객체 :user, table, index, View, Synonym, sequence(일련 번호를 자동으로 발생시켜주는 객체)

RDBMS의 제약조건

관계를 맺게 되면 몇가지 제약 조건이 생기게 된다.

제약 조건 5개 : PK, FK, CHECK, NOT NULL, UNIQUE
  1. 무결성: 전체 테이블의 신뢰도

    • on delete cascade:

      부모 테이블에서 정보를 지울경우, 자식 테이블에서 문제가 생긴다. foreign key는 부모테이블을 참조하고 있기 때문이다. 그래서 못지우게 막거나, 자식 테이블에 있는 것도 함께 지워버린다 (자식테이블에 걸어두면 된다.)

    • on update casecade:

      프라이머리키가 바뀌면 자식테이블의 포레인키도 바꾼다. (on update cascade)

    • 자식테이블의 데이터를 입력 시, foreign key가 부모테이블에 있는지 확인

  2. NN(Not Null): 데이터가 꼭 입력되어야한다(Nullable = false)

  3. Check: 값의 범위를 한정시키는 것이다. 정해진 값만 or 특정 범위 이내만…

  4. Unique: primary key는 아니지만, 전체 데이터에서 unique 해야한다.

DDL(Database Definition Language)

object를 관리하기 위한 것들을 합쳐서 DDL(Data Definition Language)이라고 부른다.

  • create :

    객체 생성 (create table, create index, create user…)

    --table 만들기, tableName 가 테이블 이름.
    CREATE TABLE tableName(
    
        컬럼명1 데이터타입 [제약조건],
        컬럼명2 데이터타입 [제약조건]
    );
    
    • 제약 조건 5개 : PK, FK, CHECK, NOT NULL, UNIQUE
    • 데이터타입 vachar2[바이트], char[바이트], number(자리수),date…
    CREATE TABLE emp (
    	empid number(5),
    	ename varchar2(50),
    	hiredate date,
    	salary number(7)
    	);
    
  • alter :

    객체를 수정할 때 사용한다.

    cmd 창이 아니라 start db 창

    conn system/system
    
    alter user hr identified by hr account unlock;
    
    conn hr/hr
    
  • drop :

    삭제

    DROP TABLE emp;
    

DML(Data Manipulation Language)

  • insert

    데이터를 삽일할 때 사용한다.

    주의) 오라클에서는 문자열을 ‘ ‘(작은 따옴표)안에 넣는다.

    INSERT INTO emp
    (empid, ename, hiredate, salary)
    VALUES
    (12345,'박핀','20-12-23',380000);
    
    --컬럼전체 다 넣을때 위 두번째 줄 생략 가능
    INSERT INTO emp
    VALUES
    (12345,'박핀','20-12-23',380000);
    
  • update

    레코드 수정

    UPDATE 테이블명
    SET
    	컬럼명 = ,
    	컬럼명 = ,
    WHERE
    	조건절;
    ------------------------
    UPDATE emp
    SET
    	hiredate = '20-10-12'
    WHERE
    	empid = 12347;
    
    
  • delete

  • select

    기본 사용 방식

    select 컬럼명1,컬럼명2,컬럼명3 from 테이블명;
    select first_name, last_name from employees;
    select * from employees; -- 모든 컬럼을 다 보겠다.
    

    **옵션 : ** where, distinct , order by, and, desc

    select first_name, last_name from employees
    where department_id=80;
    
    select distinct department_id from employees; -- 중복없는 데이터만
    
    select first_name, last_name from employees
    where department_id=80
    order by first_name; --오름차순으로 정렬할 때
    
    select first_name, last_name from employees
    where department_id=80
    order by first_name desc; --내림차순으로 정렬할 때
    
    -- 급여가 오천불 이상 만불 미만인 직원의 부서번호, 이름, 급여 : and, or
    select first_name, last_name, salary from employees
    where salary >=5000 and salary<10000
    order by salary desc;
    
    
  • 기타

    • ROLLBAKC; – 되돌리기, DDL 전까지 모든 DML을 다 날려버린다.(하나의 트랜잭션을 날린다.)
    • COMMIT; –작업한 것 적용, SAVE와 비슷하다.

DCL

자료형

  • varchar2(길이) :

자바의 String 과 똑같다. 가변 문자열 (variable character) . 최대 varchar2(4000)이 최대

ex. varchar2(50)

  • char(50) :고정문자열

char(30)에 10 바이트가 들어가면 30바이트가 쓰여서 메모리가 낭비된다.
varchar2(30)에 10 바이트 짜리가 들어간다면, 20바이트가 다른데 쓰여서 메모리가 절약된다.

그래서 보통 varchar2를 쓴다.
  • date :

    ‘20-12-23’ 이런 식으로 사용한다.

  • BLOB:

Byte 단위로 처리되어야하는 데이터. java에서 stream으로 처리하는 것과 비슷하다.

  • CLOB:

Character 단위로 처리되어야하는 데이터.

  • bfile

number(p,s) : 정수 실수 다 합쳐서 넘버라고.


© 2018. All rights reserved.

Powered by Hydejack v8.5.2