사전지식
SQL이란?
SQL은 Structured Query Language의 약어로, 관계형 데이터베이스에서 데이터를 조작하고 쿼리하는 데 사용되는 표준화된 언어입니다. SQL을 사용하면 데이터베이스에서 데이터를 삽입, 업데이트, 삭제, 검색할 수 있습니다. SQL은 대부분의 현대적인 데이터베이스 관리 시스템에서 사용되며, 업계 표준으로 여겨집니다. SQL은 다양한 유형의 데이터베이스 관련 작업을 수행하는 데 유용합니다.
DDL 이란?
DDL(Data Definition Language)은 데이터베이스 객체(테이블, 인덱스, 뷰 등)를 정의하고 조작하는 SQL 문의 집합입니다. 즉, DDL은 데이터베이스 스키마를 정의하고 조작하는 명령어를 포함하고 있습니다.
DDL은 데이터베이스 객체의 생성, 수정, 삭제 등의 작업을 수행할 수 있습니다. 데이터베이스를 구축하고 유지보수하는 데 있어서 DDL은 매우 중요한 역할을 합니다. DDL을 사용하여 데이터베이스의 스키마를 정의하고 객체를 생성, 수정, 삭제하는 작업을 수행할 수 있습니다.
대표적인 DDL 명령어로는 CREATE, ALTER, DROP 등이 있습니다.
이 명령어들을 Table, View, Index가 다를 수 있습니다.
뒤에 나오는 DML과 설명이 유사한 경우가 있으니, 꼭 생성할 때 쓰는 명령어임을 잊지 마세요! 😁
tip : 테이블이란?
데이터베이스에서 가장 기본이 되는 데이터 저장 단위이며, 키(Key)는 데이터베이스에서 데이터를 구분하거나 연결할 때 사용되는 속성입니다. 다음은 테이블과 관련된 키들에 대한 설명입니다.
자주 사용하는 용어
테이블 = 릴레이션 = 엔티티
튜플/행 : 테이블 내의 행 - record라고도함 (행=튜플=레코드), 릴레이션에서 같은 값을 가질 수 없음
이 총 행 수를 세는 것을 카디널리티(cardinallity)라고 함
애트리뷰트/열 : 테이블 내의 열 - 엑셀에서 맨 위에는 각 데이터 속성을 넣는다. 이름, 성별과 같이.
이 총 열 갯수를 세는 것을 Degree라고 함
도메인(Domain) : 하나의 애트리뷰트가 취할 수 있는 같은 타입의 원자값들의 집합
DDL 대상
DDL 대상에서 정처기 시험으로 많이 나오는 개념은 스키마입니다.
대상 | 설명 |
도메인(Domain) | 데이터베이스에서 사용하는 데이터 타입을 사용자 정의 데이터 타입으로 정의하는데 사용되는 DDL 객체입니다. 도메인을 정의함으로써 데이터 타입의 정의와 제약 조건을 한 번에 관리할 수 있습니다. |
스키마(Schema) | 데이터베이스에서 데이터베이스 객체들을 묶어서 관리하는 논리적인 단위입니다. 스키마는 여러 테이블, 뷰, 함수, 프로시저 등을 포함할 수 있으며, 이를 이용하여 데이터베이스 객체의 이름 충돌을 방지하고, 데이터베이스 객체를 구분하여 관리할 수 있습니다. |
테이블(Table) | 데이터베이스에서 가장 기본이 되는 데이터 저장 단위입니다. 테이블은 열(Column)과 행(Row)으로 구성되며, 열은 테이블 내의 데이터를 구성하는 필드(속성), 행은 테이블 내의 데이터를 식별하는 레코드입니다. |
뷰(View) | 하나 이상의 테이블에서 선택된 데이터들을 새로운 가상 테이블로 만들어서 저장하는 객체입니다. 뷰를 사용하면 데이터의 가공, 보안성 강화, 복잡한 쿼리 간략화 등 다양한 이점을 얻을 수 있습니다. |
인덱스(Index) | 데이터베이스의 검색 속도를 높이기 위해 사용하는 객체입니다. 인덱스는 테이블의 특정 열(속성)에 대한 검색에 사용되며, 인덱스를 사용하면 데이터베이스 검색 시간을 줄이고 데이터 액세스 성능을 향상시킬 수 있습니다. |
외부 스키마 (External Schema)
데이터베이스를 사용하는 개별 사용자나 응용 프로그램이 볼 수 있는 데이터베이스의 일부분입니다. 즉, 사용자가 접근 가능한 데이터베이스의 논리적 구조를 정의합니다. 외부 스키마는 각 사용자 또는 응용 프로그램마다 별도로 정의될 수 있습니다. 예를 들어, 한 기업에서 영업팀과 인사팀이 같은 데이터베이스를 사용할 때, 영업팀은 주문 정보와 고객 정보만 볼 수 있도록, 인사팀은 인사 정보만 볼 수 있도록 외부 스키마를 정의할 수 있습니다.
내부 스키마 (Internal Schema)
데이터베이스가 물리적으로 저장되는 방식을 정의합니다. 즉, 디스크에 저장되는 데이터베이스의 물리적인 구조를 의미합니다. 내부 스키마는 데이터베이스 시스템 자체에 의해 사용되는 논리적인 구조를 정의합니다. 예를 들어, 데이터베이스에서 인덱스를 생성하거나 데이터를 압축하는 방식을 정의할 때 내부 스키마를 사용합니다.
개념 스키마 (Conceptual Schema)
데이터베이스 전체의 논리적 구조를 정의합니다. 즉, 데이터베이스의 모든 사용자가 볼 수 있는 전체적인 논리적 구조를 의미합니다. 개념 스키마는 데이터베이스 전체의 논리적 구조를 정의하기 때문에, 모든 사용자와 응용 프로그램이 동일한 개념 스키마를 공유합니다.
테이블, 뷰, 인덱스 적용 방법
TABLE, INDEX, CIEW 차이
테이블 (Table): 데이터를 저장하는 데 사용되는 가장 기본적인 개체입니다. 행과 열로 구성되며, 각 행은 레코드(Record)를 나타내고, 각 열은 필드(Field)를 나타냅니다. 테이블은 데이터를 구조화하여 저장하며, 데이터베이스에서 가장 중요한 구성 요소 중 하나입니다.
인덱스 (Index): 데이터베이스에서 레코드에 대한 검색 속도를 높이기 위해 사용되는 데이터 구조입니다. 테이블의 열 또는 열의 조합을 기반으로 하며, 각 레코드의 위치를 참조하는 포인터로 이루어져 있습니다. 인덱스는 검색 속도를 높이기 위해 사용되지만, 인덱스가 많을 경우 쓰기(Insert) 작업에는 부정적인 영향을 미칠 수 있습니다.
뷰 (View): 테이블과 인덱스와는 달리 데이터를 저장하지 않으며, 테이블에서 데이터를 가져와 사용자에게 보여주기 위한 가상의 테이블입니다. 뷰는 테이블의 일부 열만을 보여주거나, 여러 개의 테이블을 조합하여 보여줄 수 있습니다. 뷰를 사용하면 복잡한 쿼리를 간단하게 작성할 수 있으며, 데이터의 보안성을 높이는 데에도 사용됩니다.
테이블은 DDL의 모든 명령어를 사용
뷰는 CREAT, CREATE OR REPLACE, DROP
인덱스는 CREAT, ALTER, DROP / 테이블명 뒤에 ON을 붙임
- CREATE : 새로운 객체를 생성
- Table : create table
- 테이블을 만들땐, Colimn(열)을 기준으로 만든다. 엑셀로 생각하면, 첫 행의 열부터 항목들을 작성하는 과정이다. 이때, 각 열들의 성격을 함께 정의해주어야 한다.
- 각 열을 정의하는 방법은 컬럼명은 자유, 데이터타입은 다음과 같음.
- INT: 정수를 저장하는 데이터 타입입니다. 대표적인 예시로는 INT, BIGINT, SMALLINT 등이 있습니다.
- FLOAT/DOUBLE: 부동 소수점 수를 저장하는 데이터 타입입니다. FLOAT은 4바이트를 사용하며, DOUBLE은 8바이트를 사용합니다.
- CHAR/VARCHAR: 문자열을 저장하는 데이터 타입
- CHAR은 고정 길이 문자열을 저장
- VARCHAR는 가변 길이 문자열을 저장
- DATE/TIME: 날짜와 시간을 저장하는 데이터 타입
- BOOLEAN: 논리값을 저장하는 데이터 타입 / 일반적으로 0과 1, 혹은 TRUE와 FALSE 값
- BLOB: 이진 데이터를 저장하는 데이터 타입입니다. 이미지나 동영상 등과 같은 이진 데이터를 저장할 때 사용됩니다.
- ENUM: 정해진 값 중 하나를 저장하는 데이터 타입 / 성별을 나타내는 '남성', '여성' 값 중 하나를 저장
- SET: 여러 개의 값을 저장할 수 있는 데이터 타입 / 핸드폰 제조사를 나타내는 '삼성', 'LG', '애플' 값 중 여러 개를 저장
- 제약조건
- 컬럼명 데이터 타입 PRIMARY KEY, : 기본키 설정 - 기준이 되는 항목(열)을 설정
- 컬럼명 데이터 타입 FORIEIGN KEY REFFERENES, : 참조키(외래키) 설정
- 컬럼명 데이터 타입 UNIQUE : 열에 중복되는 값을 입력할 수 없도록 강제
- 컬럼명 데이터 타입 NOT NULL : NOT NULL 제약 조건은 해당 열에 NULL 값이 입력되지 않도록 강제
- 컬럼명 데이터 타입 CHECK (조건식) : 해당 열에 저장되는 데이터의 유효성을 검사 (특정 값은 입력 불가)
- 컬럼명 데이터 타입 DEFAULT 값 : 특정 열의 기본 값을 설정
- View : CREATE VIEW 뷰이름 AS(AS는 조건문과 분리하기 위한 수단) 조건문;
- CREATE OR REPLACE VIEW 뷰이름 AS 조회쿼리;
- 뷰를 교체하는 명령어
- SELECT 문에 UNION이나 ORDER BY 절을 쓸 수 없음
- CREATE OR REPLACE VIEW 뷰이름 AS 조회쿼리;
- INDEX
- CREATE [UNIQE] INDEXT 인덱스명 ON 테이블명 (컬럼1, 컬럼2);
- Table : create table
기본키, 후보키 등 키에 대한 설명
- 기본키(Primary Key)
- 테이블에서 각 레코드를 고유하게 식별할 수 있는 열(속성) 또는 열의 조합으로 이루어진 키입니다.
테이블에서 기본키는 중복된 값을 허용하지 않으며, NULL 값을 가질 수 없습니다.
한 테이블에는 하나의 기본키만 존재할 수 있습니다.
- 테이블에서 각 레코드를 고유하게 식별할 수 있는 열(속성) 또는 열의 조합으로 이루어진 키입니다.
- 후보키(Candidate Key)
- 기본키로 사용될 수 있는 열(속성) 또는 열의 조합으로 이루어진 키입니다.
후보키는 유일성과 최소성을 만족해야 하며, 중복된 값을 가질 수 없습니다.
- 기본키로 사용될 수 있는 열(속성) 또는 열의 조합으로 이루어진 키입니다.
- 대체키(Alternate Key)
- 후보키 중에서 기본키가 되지 않은 나머지 키를 의미합니다.
- 기본키가 정해지면 모든 후보키는 대체키가 되는 것
- 외래키(Foreign Key)
- 다른 테이블의 기본키를 참조하는 열(속성)입니다.
- 외래키는 참조 무결성(Referential Integrity)을 유지하기 위해 사용됩니다.
- 참조된 기본키의 값이 변경되거나 삭제되는 경우, 외래키를 참조하는 테이블의 데이터도 변경되거나 삭제되어야 합니다.
- 복합키(Composite Key)
- 두 개 이상의 열(속성)로 이루어진 키를 의미합니다.
- 복합키는 하나의 열(속성)만으로는 유일한 레코드를 식별할 수 없는 경우에 사용됩니다.
- 복합키는 기본키나 후보키로 사용될 수 있습니다.
추가설명
유일성, 최소성, 일관성
유일성 (Uniqueness)
키는 각 레코드(행)를 고유하게 식별할 수 있어야 합니다.
즉, 하나의 키 값으로는 두 개 이상의 레코드를 구분할 수 없습니다.
최소성 (Minimality)
키는 가능한 한 적은 수의 열(속성)로 구성되어야 합니다.
즉, 필요한 최소한의 열(속성)로 구성되어야 하며, 불필요한 열(속성)을 포함해서는 안 됩니다.
이를 통해 데이터의 저장 공간을 절약하고 검색 속도를 향상시킬 수 있습니다.
일관성 (Consistency)
키는 레코드(행)의 추가, 수정, 삭제 등의 작업을 통해 유지되어야 합니다.
즉, 한번 설정한 키의 값은 변경되어서는 안 되며, 키 값을 변경하는 경우 해당 레코드를 참조하는 다른 레코드들도 일관성을 유지해야 합니다.
- ALTER : 기존 객체를 추가하거나 변경할 수 있는 명령어
- Table
- 컬럼 추가시, ALTER TABLE 테이블명 ADD 컬럼명 데이터 타입
- 컬럼 변경시, ALTER TABLE 테이블명 MODIFY 컬럼명 데이터 타입
- 컬럼 삭제시, ALTER TABLE 테이블 명 DROP 컬럼명 데이터 타입
- INDEX
- 인덱스를 수정할 때 사용
- ALTER [UNOQUE] INDEX 인덱스명 ON 테이블명(컬럼1.컬럼2)
- Table
- DROP : 객체를 삭제
- Table
- DROP TABLE 테이블명 [CASCADE | RESTRICT] 컬럼명
- View
- DROP VIEW 뷰이름 ;
- INDEX
- DROP INDEX 인덱스명;
- Table
- TRUNCATE : 테이블 내의 데이터 삭제 (다른 테이블에서 가져온 데이터를 삭제할지 말지를 결정하는 것이 중요)
- TRUNCATE TABLE 테이블명;
- 옵션 CASCADE : 참조한 테이블까지 제거
- 옵션 RESTRICT : 참조 중이면 제거 안함
- TRUNCATE TABLE 테이블명;
- DCL
- GRANT : 권한 부여 (줄때는 TO)
- 그온투
- GRANT 권한 ON 테이블 TO 사용자
- REVOKE : 권한 제거 (뺏을 때는 FROM)
- 리온프
- REVOKE 권한 ON 테이블명 FROM 사용자
- GRANT : 권한 부여 (줄때는 TO)
'정보처리기사' 카테고리의 다른 글
[2023 정처기 실기]4+1 아키텍쳐 뷰 -소프트웨어 아키텍처 (0) | 2023.04.20 |
---|---|
[정처기 실기] 문제 풀이 - 데이터 베이스 기본 (0) | 2023.04.10 |
[정처기 실기] 암호 알고리즘 (0) | 2023.04.06 |
[정처기 실기] 서버 접근 통제의 유형 -비개발자 도전기 (0) | 2023.04.06 |
[정처기 실기] 애플리케이션 공격 기법 - 이해와 암기 (0) | 2023.04.04 |
댓글