1. INSERT

번에 건만 입력

  1. 테이터의 칼럼을 정의할 있음

INSERT INTO 테이블명 (COLUMN_LIST)VALUES (COLUMN_LIST에 넣을 VALUE_LIST);

  1. 모든칼럼에 데이터를 입력하는 경우는 순서대로 빠짐없이 데이터가 입력되어야

INSERT INTO 테이블명VALUES (전체 COLUMN에 넣을 VALUE_LIST);

Char, varchar2 경우에는 ' ' 붙이고 숫자일 경우는 상관없음, NULL 직접 입력할 있음

 

2. UPDATE

정보 수정하는 경우

UPDATE 테이블명 SET 수정되어야 할 칼럼명 = 수정되기를 원하는 새로운 값;

 

3. DELETE

데이터를 삭제하는 경우, where절을 사용하지 않을 경우 테이블 전체 데이터가 삭제됨

DELETE [FROM] 삭제를 원하는 정보가 들어있는 테이블명;

 

DDL(Create, Alter, Rename, Drop) 직접 테이블에 영향을 미치기 때문에 AUTO COMMIT 발생

하지만, DML(Insert, Update, Delete, Select) 테이블을 메모리 버퍼에 올리고 작업하기에 실시간 영향 미발생

반드시 DML 이후에는 TRANSACTION 명령어 수행 종료해야함

그러나, SQL server DML경우에도 AUTO CUMMIT 발생

 

데이터 전체를 삭제하고 싶을때는?

삭제된 데이터 로그를 저장하는 DELETE TABLE 보단 시스템 부하가 적은 TRUNCATE TABLE 권고 , ROLLBACK 불가

SQL server TRUNCATE TABLE 이후 ROLLBACK 하여 원상태 복구 가능

 

4. SELECT

데이터 조회

SELECT [ALL/DISTINCT] 조회할 컬럼명 FROM 칼럼이 있는 테이블명;

 ALL : Default 유형, 중복된 데이터가 있어도 모두 출력

DISTINCT : 중복된 데이터가 있는 경우 1건으로 처리해서 출력

 

  • WILDCARD

전체 칼럼을 한번에 보려고 할때, * 애스터 리스크를 사용

SELECT * FROM 테이블명;

 

문자 날짜는 좌측정렬, 숫자는 우측정렬, 기본적으로 대문자로 보임

 

  • ALIAS(별명) 부여하기

칼럼명 바로 뒤에, 또는 as 붙여서 사용함, 공백이나 특수문자, 대소문자를 구분할 경우  " " 표현

SQL server 경우 " " , ' ' , [ ] 방식으로 별명 부여

 

5. 산술연산자와 합성연산자

 

. 산술연산자

Number date 자료형에 대해 적용

우선순위는 괄호적용  순서 : ()    *, /  +, -

사용후에는 별명 붙여서 새로운 의미 부여

 

. 합성연산자

문자와 문자를 연결하는 연산자, 캄럼과 문자또는 다른 칼럼 연결 가능, 새로운 칼럼 생성 가능

ORACLE 경우는 || , SQLserver 경우는 +, 두가지 모두 CONCAT(string 1, string2) 함수 사용 가능

 

6. 추가정보

. Delete(/modify) Action

  1. Cascade : Master 삭제시 Child 삭제
  2. Set Null : Master 삭제시 Child 해당 필드 Null
  3. Set Default : Master 삭제시 Child 해당 필드 Default 값으로 설정
  4. Restrict  : Child 테이블에 PK 값이 없는 경우만 Master 삭제 허용
  5. No Action : 참조무결성을 위반하는 삭제/수정 액션을 취하지 않음

 

. Insert Action

  1. Automatic : Master 테이블에 PK 없는 경우 Master PK 생성한 Child 입력
  2. Set Null : Master 테이블에 PK 없는 경우 Child 외부키에 Null 값으로 처리
  3. Set Default : Master 테이블에 PK 없는 경우 Child 외부키를 지정된 기본값으로 입력
  4. Dependent : Master 테이블에 PK 존재 때만 Child 외부키를 지정된 기본값으로 입력
  5. No Action : 참조무결성을 위반하는 입력 액션을 취하지 않음

 

. DROP/TRUNCATE/DELETE 차이점

DROP

TRUNCATE

DELETE

DDL

DDL (일부 DML성격 가짐)

DML

Rollback 불가능

Rollback 불가능

commit  이전 Rollback 가능

Auto commit

Auto commit

 사용자 commit

테이블이 사용했던 Storage 모두 Release

테이블이 사용했던 Storage 최초 테이블

생성시 할당된 Storage 남기고 Release

데이터를 모두 Delete 해도 사용했던

 Storage Release 되지 않음

테이블 정의 자체를 완전히 삭제함

테이블 최초 생성된 초기상태로 만듬

데이터만 삭제


'자격증 공방 > SQLD' 카테고리의 다른 글

제 3-5절 WHERE 절  (0) 2018.07.07
제 3-4절 TCL (TRANSACTION CONTROL LANGUAGE)  (0) 2018.07.07
제 3-2절 DDL  (0) 2018.07.07
제 3-1절 관계형 데이터베이스 개요  (0) 2018.07.07
제 2-6절 분산 데이터베이스와 성능  (0) 2018.07.07

 

1. 데이터 유형

테이블에 특정자료를 입력할 , 자료를 받아드릴 공간의 자료를 유형별로 나눈 기준

 

  1. CHARACTER(S)
    • 고정 길이 문자열 정보 CHAR 표현
    • 기본길이는 1바이트, 최대 길이는 오라클은 2,000바이트 SQL Server 8,000바이트
    • 고정길이를 가지고 있음으로 할당된 변수값의 길이가 작을 경우 차이 길이 만큼 공간으로 채움
  2. VARCHAR(S)
    • CHARACTER VARYING 약자로 가변길이 문자열 정보 오라클은 VARCHAR2, SQL server VARCHAR 표현
    • 최소 길이는 1바이트, 오라클은 4,000바이트 SQL Server 8,000바이트
    • 가변길이로 조정되기 때문에 할당된 변수값의 바이트만 적용
  3. NUMERIC
    • 정수, 실수 등의 숫자 정보 오라클은 NUMBER SQL Server 10가지 이상의 숫자 타입이 있음
    • 오라클은 처음에 전체 자리수는 지정하고 다음 소수 부분의 자리수 지정 ex) NUMBER(8.2)
  4. DATETIME
    • 날짜와 시각정보 오라클은 DATE SQL server DATETIME으로 표현
    • 오라클은 1 단위, SQL Server 3.33ms 단위 관리

 

CHAR VARCHAR 차이점

: 저장영역과 문자열의 비교방법 VARCHAR 실제 데이터 크기만으로 저장함

: CHAR 공백을 채워서 비교하고 VARCHAR 공백도 하나의 문자로 취급하여 공백이 다르면 다른 문자로 취급

 

2. CREATE TABLE

 

. 테이블과 칼럼의 정의

고유하게 식별할 있으며 값이 존재하는 단일 칼럼이나 칼럼의 조합들 하나를 선정하여 기본키 칼럼으로 지정

 

. 테이블 생성 규칙

 

CREATE TABLE 테이블이름

(칼럼명1 DATATYPE [DEFAULT 형식],

 칼럼명2 DATATYPE [DEFAULT 형식] NOT NULL,

 CONSTRAINT 제약조건별명 PRIMARY KEY (칼럼명),

 CONSTRAINT 제약조건별명 FOREIGN KEY (칼럼명) REFERENCES 테이블명(칼럼명)) ;

 

  • 테이블 명은 객체를 의미할 있는 이름, 단수형 권고
  • 테이블 명은 다른 이름과 중복 불가
  • 테이블 내에서 컬럼 중복 불가
  • 테이블의 이름을 지정하고 칼럼들을 ( ) 묶어서 지정
  • 칼럼들은 , 구분되고 테이블 생성문의 마지막은 ;
  • 칼럼은 다른 테이블 고려하려 일관 있게 사용 - 표준화의 관점
  • 테이터 유형은 지정되어야
  • 이름은 반드시 문자로 시작, 벤더별 길이 제한 있음
  • 사전에 정의한 예약어는 사용 금지
  • A-Z, a-z, 0-9, _, $, #문자만 허용
  • /소문자 구분하지 않으나 대부분 칼럼명은 대문자로 만들어짐
  • DATETIME 유형은 별도 크기 지정 안함
  • 문자 데이터는 최대 길이 표시 해야함
  • 제약조건이 있다면 CONSTRAINT 추가가능

 

. 제약조건

사용자가 원하는 조건의 데이터 무결성을 유지하기 위한 특정 칼럼에 설정하는 제약

입력 이후에는 수정이 어려움으로 설계에서 검토 필요

  1. Primary Key 기본키

: 고유하게 식별하기 위한 기본키

: 하나의 테이블엔 하나의 기본키 제약만 정의

: 자동으로 Unique Not Null 제약이 걸림

  1. Unique Key 고유키

: 고유하게 식별하기 위해서 , Null 제약대상이 아님으로 Null값을 가진 여러개가 있어도 제약 위반 아님

  1. Not Null

: Null 입력 금지, 입력 필수

  1. Check

: 입력할 있는 값의 범위 제한, Ture or False 평가할 있는 논리식 지정

  1. Forgein Key

: 테이블 간의 관계를 정의하기 위해 다른 테이블의 외래키로 복사할 있음

: 참조 무결성 제약 옵션 선택 가능

 

  • Null : 숫자 0이랑은 전혀 다른 값이며 공집합도 아닌 아직 정의되지 않은 미지의 , 데이터를 입력하지 못하 경우를 의미
  • Default : 기본값, 명시되지 않은 경우는 Null 입력

 

. 생성된 테이블 구조확인

오라클 "DESCRIBE 테이블명", "DESC 테이블명"

SQL Server "sp_help 'dbo.테이블명'"

 

. SELECT 문장을 통한 테이블 생성 사례

CTAS : Create Table As Select ~

컬럼별로 데이터 유형을 다시 재정의 하지 않아도

, 기존 제약 조건 Not NUll 적용되고 기본키, 고유키, 외래키, check 등의 다른 제약 조건은 없어짐 Alter Table 기능 추가해야함

SQL server에서는 select into 활용가능, 칼럼 속성 전부 적용

 

[Oracle] CREATE TABLE TEAM_TEMP AS SELECT * FROM TEAM; 테이블이 생성되었다.

[SQL Server] SELECT * INTO TEAM_TEMP FROM TEAM; (1개 행이 영향을 받음)

 

3. Alter Table

 

. ADD COLUMN

ALTER TABLE 테이블명 ADD 추가할 칼럼명 데이터 유형;

새롭게 추가된 칼럼은 테이블의 마지막 칼럼이 되며 칼럼의 위치를 지정할 수는 없다.

 

. DROP COLUMN

필요없는 칼럼삭제, 모두 삭제가능, 복구불가능

한번에 하나의 칼럼만 삭제 가능, 삭제 후에는 최소 하나의 칼럼이 테이블에 존재해야한다.

ALTER TABLE 테이블명 DROP COLUMN 삭제할 칼럼명;

 

. MODIFY COLUMN

칼럼의 데이터 유형, DEFUALT, NOTNULL 제약조건에 대한 변경 포함

[Oracle] ALTER TABLE 테이블명

              MODIFY (칼럼명1 데이터 유형 [DEFAULT 식] [NOT NULL], 칼럼명2 데이터 유형 …);

[SQL Server] ALTER TABLE 테이블명

                     ALTER (칼럼명1 데이터 유형 [DEFAULT 식] [NOT NULL], 칼럼명2 데이터 유형 …);

 

주의사항

  1. 크기는 늘릴 있지만 줄일수는 없다
  2. NULL값만 가지고 있거나 테이블에 아무행도 없으면 컬럼 폭을 줄일 있다.
  3. NULL값만 가지고 있으면 데이터 유형을 변경할 있다.
  4. DEFAULT 바꾸면 변경작업 이후 발생하는 삽입에만 영향을 미친다.
  5. NULL값이 없을 경우에만 NOTNULL조건을 추가할수 있다.

 

  • RENAME COLUMN

 부득이하게 컬럼명을 바꿔야 할때만 사용, 제약조건에 대해서도 자동변경되지만 오라클에서만 지원하는 것이다.

ALTER TABLE 테이블명 RENAME COLUMN 변경해야 할 칼럼명 TO 새로운 칼럼명; 

SQL server에서는 다른 방식 사용함

sp_rename 변경해야 할 칼럼명, 새로운 칼럼명, 'COLUMN';

 

. DROP CONSTRAINT

제약조건을 삭제하는 명령

ALTER TABLE 테이블명 DROP CONSTRAINT 제약조건명;

 

. ADD CONSTRAINT

제약조건을 추가하는 경우

ALTER TABLE 테이블명 ADD CONSTRAINT 제약조건명 제약조건 (칼럼명);

 

외부키를 설정함으로써 실수에 의한 테이블 삭제나 필요한 데이터를 의도하지 않은 삭제과 같은 불상사를 방지하는 효과 발휘

 

4. RENAME TABLE

 

[ORACLE] RENAME 변경전 테이블명 TO 변경후 테이블명;

[SQL server] sp_rename 변경전 테이블명, 변경후 테이블명;

 

5. DROP TABLE

 

DROP TABLE 테이블명 [CASCADE CONSTRAINT];

테이블의 모든 데이터 구조를 삭제한다.

Cascade 옵션은 제약조건에 대해서도 삭제한다는 것을 의미 SQL server에서는 존재하지 않으며, 미리 제약조건을 참조하는 테이블을 삭제해야함

 

6. TRUNCATE TABLE

테이블 자체가 삭제되는 것도 아니고 해당 테이블에 들어있던 모든 행들이 제거되고 저장공간을 재사용 가능하도록 해제

TRUNCATE TABLE 테이블명;

 

DROP : 테이블 자체가 없어짐, 구조 확인 불가

TRUNCATE : 테이블 구조는 그대로 유지, 데이터만 삭제, AUTO COMMIT 특성으로 DDL 분류, 부하가 delete보다 적으나 정상적인 복구가 불가능


 

1. 데이터베이

특정 기업이나 조직 또는 개인이 필요에 의해 데이터를 일정한 형태로 저장해 놓은

데이터 손상을 피하고 복구하기 위한 소프트웨어 시스템 : DBMS(Database Management System)

 

관계형 데이터베이스

  • 1970 고트박사의 논문에 처음으로 소개
  • 정규 통한 합리적인 테이블 모델링 이상증상/중복 제거, 동시성관리, 병행 제어
  • 메타 데이터를 총괄 관리할 있음 데이터의 성격, 속성 또는 표현 방법 등을 체계화 있음
  • 데이터 표준화를 통한 데이터 품질을 확보
  • 인증된 사용자만 참조할 있는 보안기능 : 데이터무결성을 보장
  • 데이터 회복/복구 기능제공

 

2. SQL(Structured Query Language)

 

관계형 데이터베이스에서 데이터 정의, 조적, 제어를 위해 사용하는 언어

  1. 데이터 조작어 (DML : Data Manipulation Language) : SELECT, INSERT, UPDATE, DELETE
  2. 데이터 정의어 (DDL : Data Definition Language) : CREATE, ALTER, DROP, RENAME
  3. 데이터 제어어 (DCL : Date Control Language) : GRANT, REVOKE
  4. 트랜잭션 제어어 (TCL : Transaction Control Language) : COMMIT, ROLLBACK

 

3. 테이블

데이터는 관계형 데이터베이스의 기본 단위인 테이블 형태로 저장

모든 자료는 테이블에 등록되고 원하는 자료를 꺼내 있음

데이터를 저장하는 객체, 칼럼과 행의 2차원 구조

정규화 : 테이블을 분할하여 데이터의 불필요한 중복을 줄이는

기본키 : 테이블에 존재하는 행을 한가지 의미로 특정할 있는 이상의 칼럼 (Primary Key)

외부키 : 다른테이블의 기본키로 사용되고 있는 관계를 연결하는 칼럼 (Foregin Key)

 

4. ERD(Entity Relationship Diagram)

구성요소 : 엔티티, 관계, 속성

+ Recent posts