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 |
댓글
최근에 올라온 글
TAG
- 알고리즘
- SQLD
- Python
- Max()
- 경사하강법
- 기계학습
- 자료구조
- algorithm
- SQL
- 인공지능
- Min()
- 머신러닝
- 부스트코스
- 프로그래머스
- cnn
- Programmers
- VGGNet
- Ai
- numpy
- Project
- 주니온
- 딥러닝
- Scikit
- Pandas
- db
- 파이썬
- MongoDB
- slqd
- OpenCV
- sklearn
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
250x250