SQL Database

Seoina·2020년 1월 15일
0

2020camp

목록 보기
7/12
  1. SQL DATABASE
  • SQL CREATE DATABASE
    CREATE DATABASE문은 새 SQL 데이터베이스를 작성하는데 사용된다.

        CREATE DATABASE database_name;
        
  • SQL DROP DATABASE
    DROP DATABASE문은 기존 SQL 데이터베이스를 삭제하는데 사용된다.

    	DROP DATABASE database_name
        
  • SQL Server용 SQL 백업 데이터베이스
    BACKUP DATABASE문은 SQL Server에서 기존 SQL 데이터베이스의 전체 백업을 만드는데 사용된다.

    	BACKUP DATABASE database_name TO DISK = 'filepath';
       

    SQL BACKUP WITH DIFFERENTIAL : 차등 백업은 마지막 전체 데이터베이스 백업 이후 변경된 데이터베이스 부분만 백업한다.

    BACKUP DATABASE database_name TO DISK = 'filepath' WITH DIFFERENTIAL;

        
  1. SQL TABLE
  • SQL CREATE TABLE
    CREATE TABLE 문은 데이터베이스에서 새 테이블을 작성하는데 사용된다.

    	CREATE TABLE table_name{
        	column1 datatype,
            column2 datatype,
            column3 datatype,
            ....
        };
        
  • SQL DROP TABLE
    DROP TABLE 문은 데이터베이스에서 기존 테이블을 삭제하는데 사용된다.

    	DROP TABLE table_name;
        
  • SQL ALTER TABLE
    ALTER TABLE 문은 기존 테이블의 열을 추가, 삭제 또는 수정하는데 사용된다.

    * ALTER TABLE-ADD : 테이블에 열 추가
    	ALTER TABLE table_name ADD column_name datatype;
        
    * ALTER TABLE-DROP COLUMN : 테이블에서 열 삭제
    	ALTER TABLE Customers DROP COLUMN Email;
    	
    * ALTER TABLE-ALTER/MODIFY COLUMN : 테이블에서 열의 데이터 유형 변경
    	ALTER TABLE table_name ALTER COLUMN column_name datatype;
        ALTER TABLE table_name MODIFY COLUMN column_name datatype;
        ALTER TABLE table_name MODIFY column_name datatype;
        
  • CSS Constraints
    SQL 제한 조건은 테이블의 데이터에 대한 규칙을 지정하는데 사용된다.
    CREATE TABLE 문으로 테이블을 작성할 때 또는 ALTER TABLE 문으로 테이블을 작성한 후에 제한 조건을 지정할 수 있다.

    	CREATE TABLE table_name{
        	column1 datatype constraints,
            column2 datatype constraints,
            column3 datatype constraints,
            ....
        };
        
    • NOT NULL : 열이 NULL값을 가질 수 없음
      기본적으로 열은 NULL 값을 보유할 수 있지만 NOT NULL은 못하게 함. 이렇게 되면 필드는 항상 값이 포함되므로 필드에 값을 추가하지 않고 새 레코드를 삽입하거나 업데이트 할 수 없다. 때문에 NOT NULL이 포함된 열이 많으면 레코드를 삽입하거나 업데이트하기 힘듦.
    • UNIQUE : 열의 모든 값이 다른지 확인
      테이블 당 많은 UNIQUE 제한 조건을 가질 수 있음.
      UNIQUE 제약 조건의 이름을 지정하고 여러 열에 UNIQUE 제약 조건을 정의하려면 CONSTRAINT UC_Person UNIQUE (column_name1, column_name 2, ...) 사용
      UNIQUE 제약 삭제 : ALTER TABLE table_name DROP INDEX column_name
    • PRIMARY KEY : NOT NULL과 UNIQUE의 조합. 테이블의 각 행을 고유하게 식별
      테이블은 단 하나의 PRIMARY KEY를 가질 수 있다.
    • FOREIGN KEY : 다른 테이블에서 행 / 레코드를 고유하게 식별
      두 테이블을 서로 연결하는데 사용되는 키. FOREIGN KEY는 한 테이블에서 다른 테이블의 PRIMARY KEY를 참조하는 필드 ( FOREIGN KEY가 포함된 테이블을 자식 테이블, PRIMARY KEY가 포함된 테이블을 부모 테이블이라고 한다) ex) CREATE TABLE Orders(
      OrderID int NOT NULL,
      OrderNumber int NOT NULL,
      PersonID int,
      PRIMARY KEY (OrderID),
      FOREIGN KEY (PersonID) REFERENCES Persons (PersonID)
      )
    • CHECK : 열의 모든 값이 특정 조건을 충족하는지 확인
      CHECK 제약 조건은 열에 배치 할 수 있는 값 범위를 제한한다. 단일 열에 정의하면 이 열에 특정 값만 허용된다. 테이블에 정의하면 행의 다른 열 값을 기반으로 특정 열의 값을 제한 할 수 있다.
         	ex) CHECK 제약 조건은 18세 미만인 사람을 가질 수 없도록 함.
             CREATE TABLE Persons{
             	ID int NOT NULL,
                 LastName varchar(255) NOT NULL,
                 FirstName varchar(255),
                 Age int,
                 CHECK (Age >= 18)
            );
             
             
    • DEFAULT : 값이 지정되지 않은 경우 열의 기본값을 설정
      열의 기본값을 제공. 다른 값을 지정하지 않으면 기본값이 모든 새 레코드에 추가된다. DEFAULT 제약 조건을 삭제하려면 ALTER TABLE table_name ALTER column_name DROP DEFAULT; 사용.
    • INDEX : 데이터베이스에서 데이터를 매우 빠르게 작성하고 검색하는데 사용
      테이블에서 인덱스를 작성하는데 사용. 사용자는 index를 볼 수 없으며 검색/쿼리 속도를 높이는데 사용된다. Syntax:
      CREATE INDEX index_name ON table_name (column1, column2, ...);
             Unique Index Syntax:
             CREATE UNIQUE INDEX index_name ON table_name (column1, ,,,);
             
             Drop Index : 
             DROP INDEX index_name ON table_name;
      
      
      
             
  • SQL Auto Increment field
    Auto Increment Field는 새 레코드가 테이블에 삽입될 때 고유 번호가 자동으로 생성되도록 한다. 기본적으로 시작 값은 1이며 새 레코드가 삽입 될 때 마다 1씩 증가한다.
    다른 값으로 시작되게 하려면 -> ALTER TABLE table_name AUTO_INCREMENT=100;
    SQL Server는 IDENTITY(1,1) -> 1에서 시작하여 1씩 증가.

  1. SQL Working With Dates
    삽입하려는 날짜 형식이 데이터베이스의 날짜 열 형식과 일치하는지 확인해야 한다.
    * MYSQL
    	- DATE : YYYY-MM-DD
        - DATETIME : YYYY-MM-DD HH:MI:SS
        - TIMESTAMP : YYYY-MM-DD HH:MI:SS
        - Year : YYYY or YY
        
    * SQL Server
    	- DATE : YYYY-MM-DD
        - DATETIME : YYYY-MM-DD HH:MI:SS
        - SMALLDATETIME : YYYY-MM-DD HH:MI:SS
        - TIMESTAMP : a unique number
        
        
        
  2. SQL Views
    SQL에서 view는 SQL문의 결과 집함을 기반으로 하는 가상 테이블이다. view에는 실제 테이블과 마찬가지로 행과 열이 포함된다. 뷰의 필드는 데이터베이스에 있는 하나 이상의 실제 테이블의 필드이다.
    뷰는 사용자에게 접근이 허용된 자료만 제한적으로 보여주기 위해 하나 이상의 기본 테이블로 된, 이름을 가지는 가상테이블이다. 뷰는 저장장치 내에 물리적으로 존재하지는 않지만 사용자에게 있는 것처럼 간주된다. 뷰는 데이터 보정작업, 처리과정 시험 등 임시적인 작업을 위한 용도로 활용된다.

스크린샷 2020-01-15 오후 3.47.32.png

	Syntax: 
    CREATES VIEW view_name AS SELECT column1, column2,... FROM table_name WHERE condition;
    
    view UPDATE:
    CREATES OR REPLACE VIEW view_name AS SELECT column1, column2,... FROM table_name WHERE condition;
    
    view 삭제:
    DROP VIEW view_name;
    
    
    
  1. SQL Injection
    SQL Injection은 데이터베이스를 파괴할 수 있는 코드 주입 기술이다. 일반적인 웹 해킹 기술 중 하나로 웹 페이지 입력을 통해 SQL 문에 악성 코드를 배치한다.
    - 인증 우회 (AB: Auth Bypass)
    보통 아이디와 패스워드를 입력하는데 로그인 페이지를 타깃으로, SQL Query의 true/fals의 논리적 연산 오류를 이용하여 로그인 인증 쿼리문이 무조건 true가 나오게 하여 인증을 무력화 시킨다. 
    - 데이터 노출 (DD: Data Disclosure)
    타겟 시스템의 주요 데이터 절취를 목적으로 하는 방식. Error based, Union baed, blind based, Time based 방식이 있다. 시스템의 에러는 개발자에게 버그를 수정하게 하지만 악의적인 구문을 삽입하여 에러를 유발시킬 수 있다. 해커는 GET방식으로 동작하는 url에 추가적인 query string을 추가하여 에러를 발생시킬 수 있다. 이에 해당 오류가 발생하면 그것을 통해 데이터 베이스의 구조를 유추할 수 있다. 때문에 오류 페이지 또는 오류 메세지가 노출 되면 안된다.
    - 원격명령 실행 (RCE: Remote Command Execute)
  2. SQL hosting
    웹사이트가 데이터베이스에서 데이터를 저장하고 검색할 수 있게 하기 위해 웹 서버가 SQL 언어를 사용하는 데이터베이스 시스템에 엑세스할 수 있어야한다.
    가장 일반적인 SQL hosting database에는 MS SQL SERVER, Oracle, MySQL 및 MS ACCESS이다.

0개의 댓글