SQL/SQLD

[SQLD] 2-1. SQL 기본

유달잇 2021. 5. 23. 23:37
728x90

 

1. 관계형 데이터베이스 개요


 

1-1. 데이터베이스(Database) 란?


필요에 의해 데이터를 일정한 형식으로 저장해둔 것

DBMS(DataBase Management System) : 데이터베이스 관리 소프트웨어

 

 

1-2. 관계형(Relational) 데이터베이스의 장점


  • 정규화 작업을 통해 이상 현상 제거와 데이터 중복을 피함
  • 동시성 관리와 병행 제어를 통해 데이터 동시 조작(공유) 가능
  • 데이터 표준화, 품질 확보
  • 데이터 무결성 보장
  • 데이터 회복/복구 기능

 

 

1-3. SQL(Structured Query Language) 이란?


관계형 데이터베이스에서 사용하는 언어로 데이터 조회, 입력, 수정, 삭제 기능을 제공한다.

 

 

1-4. SQL의 종류


  • DML (Data Mainpulation Language) : 데이터 조작어
    • SELECT
    • INSERT
    • UPDATE
    • DELETE
  • DDL (Data Definition Language) : 데이터 정의어
    • CREATE
    • ALTER
    • DROP
    • RENAME
  • DCL (Data Control Language) : 데이터 제어어
    • GRANT
    • REVOKE
  • TCL (Transaction Control Language) : 트랜잭션 제어어
    • COMMIT
    • ROLLBACK

 

 

1-5. 테이블 이란?


관계형 데이터베이스의 기본 단위로 데이터를 저장하는 객체를 말한다.

 

 

2. DDL


 

2-1. 데이터 유형


  • CHAR( )
    • 고정 길이 문자열
    • 빈 공간은 공백으로 채워짐
    • Oracle은 최대 2,000바이트, SQL Server는 8,000바이트
  • VARCHAR2 (Oracle), VARCHAR (SQL Server))
    • 가변 길이 문자열
    • 할당되는 변수값의 길이에 따라 가변적으로 조정됨
    • Oracle은 최대 4,000바이트, SQL Server는 8,000바이트
  • NUMBER( )
    • 정수, 실수 등 숫자 정보
    • NUMERIC, DECIMAL, FLOAT, REAL 등이 있음
  • DATE (Oracle), DATETIME (SQL Server)
    • 날짜와 시간 정보
    • 별도의 크기 지정이 필요하지 않음
    • Oracle은 1초 단위, SQL Server는 3.33ms 단위

 

 

2-2. CREATE


  
  CREATE TABLE 테이블명 ( 칼럼명1 DataType [Default 형식] ,, );
    

-> 테이블 생성 시 사용하는 명령어

 

 

2-3. 제약조건 이란?


데이터의 무결성을 유지하기 위한 데이터베이스의 보편적인 방법을 말한다.

 

 

2-4. 제약조건의 종류


  • PRIMARY KEY : 기본키
    • 하나의 테이블에 한 개만 지정 가능
    • NULL값 입력 불가
  • FOREIGN KEY : 외래키
    • 참조 무결성 제약조건
    • 다른 테이블의 기본키를 외래키로 지정
  • UNIQUE KEY 
    • NULL 가능
    • 행을 고유하게 식별하기 위한 고유키
  • DEFAULT
    • 기본값 설정
  • NOT NULL
    • NULL값 입력 금지
  • CHECK
    • 입력값의 종류 및 범위 제한
    • True or False 논리식 지정

 

 

2-5. DESCRIBE


  • 테이블의 구조를 확인하는 명령어
  
  [Oracle]
  DESCRIBE 테이블명;
  
  [SQL Server]
  exec sp_help 'dbo.테이블명' go
    

 

 

2-6. ALTER


  • 칼럼 추가
  
  ALTER TABLE 테이블명 ADD 추가칼럼명 데이터유형;
    
  • 칼럼 삭제
  
  ALTER TABLE 테이블명 DROP COLUMN 삭제칼럼명;
    
  • 칼럼 설정 변경
  [Oracle]
  ALTER TABLE 테이블명 MODIFY COLUMN (칼럼명 데이터유형 DEFAULT NOT NULL);
  
  [SQL Server]
  ALTER TABLE 테이블명 ALTER COLUMN 칼럼명 데이터유형 DEFAULT NOT NULL;
    

 

 

2-7. ALTER 고려사항


  • 칼럼의 크기는 늘릴 수 있지만 줄이지 못한다.
  • 칼럼이 NULL값만 가지고 있거나 아무 행도 없으면 칼럼의 폭을 줄일 수 있다.
  • 칼럼 값이 NULL만 있을 경우 데이터 유형을 변경할 수 있다.
  • DEFAULT 값을 바꾼 경우에는 변경 작업 이후 발생하는 작업에만 영향을 미친다.
  • 칼럼에 NULL이 없을 경우에만 NOT NULL 제약조건을 추가할 수 있다.

 

 

2-8. RENAME


  • 테이블과 칼럼의 이름을 변경
  [Oracle]
  1. ALTER TABLE 테이블명 RENAME COLUMN (구)칼럼명 TO (신)칼럼명
  2. RENAME (구)테이블명 TO (신)테이블명;
    
  [SQL Server]
  sp_rename 'dbo.테이블명.칼럼명(구)', '테이블명.칼럼명(신)', 'COLUMN';
  sp_rename 'dbo.테이블명(구)', '테이블명(신)';
    

 

 

2-9. DROP


  • 테이블의 구조와 데이터 삭제
  
  DROP TABLE 테이블명 CASCADE CONSTRAINT;
    
  • CASCADE 는 해당 테이블과 관계가 있던 참조 제약조건도 삭제한다는 뜻이다.

 

 

2-10. TRUNCATE


  • 테이블의 데이터 삭제, 구조는 삭제되지 않는다.
  
  TRUNCATE TABLE 테이블명;
    
  • Auto commit 특성으로 DDL로 분류된다. 
  • 로그를 기록하지 않아 ROLLBACK을 할 수 없다.

 

 

3. DML


 

3-1. INSERT


  • 데이터 입력
  
  1. INSERT INTO 테이블명 (칼럼명,,) VALUES (값1,값2,,) 
  2. INSERT INTO 테이블명 VALUES (값1,값2,,,)
    

 

 

3-2. UPDATE


  • 데이터 수정
  
  UPDATE 테이블명 SET 칼럼명=값;
    

 

 

3-3. DELETE


  • 데이터 삭제 (FROM 생략 가능)
  
  DELETE FROM 테이블명;
    

 

 

3-4. SELECT


  • 데이터 조회
  
  1. SELECT [ALL|DISTINCT] 칼럼1, 칼럼2,, FROM 테이블명;
  2. SELECT * FROM 테이블명;
    

-> ALL은 기본값(DEFAULT)으로 중복 데이터도 조회하여 출력한다.

   DISTINCT는 중복 값을 제거하여 데이터를 출력한다.

   * 은 해당 테이블의 모든 칼럼을 출력한다.

  • 별명(Alias) 사용
  
  SELECT 칼럼명 AS 별명 FROM 테이블명
    

-> 칼럼명 사이에 AS를 사용하거나 공백을 주어 별명을 설정할 수 있다.

   별명에 공백이나 특수문자를 포함할 경우 " "(Double quotation)으로 묶어 사용해야 한다.

 

 

3-5. 산술 연산자


  • NUMBER와 DATE 자료형에 적용한다.
  • 우선순위 : ( )  ->  *  ->  /  ->  +  ->  -

 

 

3-6. 합성 연산자


  • 문자와 문자를 연결하는 경우에 사용한다.
  • Oracle : || 
  • SQL Server : + 
  • CONCAT(문자열1, 문자2, 문자 ,,,,) 함수를 이용하여 사용할 수도 있다.

 

 

4. TCL


 

4-1. 트랜잭션(Transaction) 이란?


데이터베이스의 논리적 연산 단위를 말하며 하나의 트랜잭션에는 하나 이상의 SQL문이 포함된다.

 

 

4-2. 트랜잭션의 특징


  • 원자성 (Atomicity)
    • 트랜잭션의 연산은 모두 적용되거나 아니면 모두 취소되어야 한다. (ALL OR NOTHING)
  • 일관성 (Consistency)
    • 트랜잭션의 실행 전 DB에 이상이 없다면 실행 후에도 같아야 한다.
  • 고립성 (Isolation)
    • 트랜잭션이 실행 중일 때, 다른 트랜잭션의 영향을 받아서는 안된다.
  • 지속성 (Durability)
    • 트랜잭션이 성공적으로 수행되면 영구적으로 반영된다.

 

 

4-3. COMMIT


  • 입력, 수정, 삭제한 자료에 대하여 변경 사항을 적용하는 명령어
  • COMMIT 이후의 상태는 영구적으로 반영되며 이전 데이터는 사라진다.
  • SQL Server는 기본적으로 DML 구문도 Auto commit 모드이다.

 

 

4-4. ROLLBACK


  • 트랜잭션의 시작 이전의 상태로 되돌리는 명령어로 COMMIT 이전 상태로 돌려준다.

 

 

4-5. SAVEPOINT


  • 트랜잭션의 일부만 돌아갈 수 있도록 중간 상태를 저장하는 명령어
  
  [Oracle]
  SAVEPOINT 포인트이름;
  ROLLBACK TO 포인트이름;
  
  [SQL Server]
  SAVE TRANSACTION 포인트이름;
  ROLLBACK TRANSAVTION 포인트이름;
    
  • 복수의 저장점을 정의할 수 있음
  • 동일 이름 저장 시 나중에 정의한 저장점이 유효
  • 저장점으로 되돌리고 나서 미래로 다시 되돌릴 수 없음
  • 저장점이 없을 경우 모든 변경사항을 취소

 

 

728x90

'SQL > SQLD' 카테고리의 다른 글

[SQLD] 2-2. SQL 활용 (2)  (3) 2021.05.26
[SQLD] 2-2. SQL 활용  (2) 2021.05.25
[SQLD] 2-1. SQL 기본 (2)  (0) 2021.05.24
[SQLD] 1-2. 데이터 모델과 성능  (3) 2021.05.19
[SQLD] 1-1. 데이터 모델링의 이해  (1) 2021.05.18
댓글
250x250
최근에 올라온 글
«   2024/10   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
Total
Today
Yesterday