5장 : 테이블과 뷰
5-1. 테이블 만들기
데이터베이스와 테이블 설계하기
데이터베이스(Database)는 체계화된 데이터의 모임이며, 효율적인 데이터 관리를 위해 구성된 시스템입니다. 이러한 데이터베이스 안에는 여러 개의 테이블(Table)이 존재하며, 각 테이블은 특정한 데이터 유형에 따라 구성되어 있습니다. 테이블은 행(Row)과 열(Column)로 이루어져 있으며, 행은 레코드(Record)로도 불리며, 열은 속성(Attribute)로 불리기도 합니다.
GUI 환경에서 테이블 만들기
일반적으로 데이터베이스를 다루기 위해 사용되는 GUI 도구는 MySQL Workbench, Microsoft SQL Server Management Studio, Oracle SQL Developer 등이 있습니다.
이러한 도구들을 사용하면 시각적인 인터페이스를 통해 데이터베이스 및 테이블을 만들고 관리할 수 있습니다.
예를 들어, MySQL Workbench를 사용하여 테이블을 만드는 과정은 다음과 같습니다
1. 데이터베이스 연결 : MySQL Workbench를 실행하고, 데이터베이스 서버에 접속합니다. 서버에 접속하기 위해 호스트명, 포트 번호, 사용자 이름, 비밀번호 등의 정보를 입력해야 합니다.
2. 데이터베이스 생성 : 접속이 완료되면, 데이터베이스를 생성합니다. "CREATE DATABASE 데이터베이스_이름;" 명령문을 실행하여 새로운 데이터베이스를 생성할 수 있습니다.
3. 새로운 쿼리 창 열기 : 데이터베이스를 생성한 후, "File" 메뉴에서 "New Query Tab"을 선택하여 새로운 쿼리 창을 엽니다.
4. 테이블 생성 : 새로운 쿼리 창에서 테이블을 생성합니다. 예를 들어, "CREATE TABLE 테이블_이름 (속성1 데이터_유형, 속성2 데이터_유형, ...);"과 같은 형식으로 테이블을 정의합니다.
5. 속성 및 데이터 유형 정의 : 각 속성에는 데이터 유형을 지정해야 합니다. 예를 들어, 이름 속성에는 문자열 데이터 유형을, 나이 속성에는 정수 데이터 유형을 지정할 수 있습니다.
6. 기본키(Primary Key) 설정 : 테이블에서 고유한 레코드를 식별하기 위해 기본키를 설정합니다. 일반적으로 기본키는 AUTO_INCREMENT와 같이 자동으로 증가하는 정수 형태로 지정합니다.
7. 제약조건(Constraints) 설정 : 필요에 따라 테이블에 제약조건을 설정하여 데이터 무결성을 보장할 수 있습니다. 예를 들어, 외래키(Foreign Key) 제약조건을 사용하여 다른 테이블과의 관계를 정의할 수 있습니다.
8. 테이블 저장 : 테이블 정의가 완료되면, 쿼리 창에서 해당 쿼리를 실행하여 테이블을 생성합니다.
SQL로 테이블 만들기
SQL(Structured Query Language)을 사용하여 테이블을 만들 수도 있습니다. 대부분의 데이터베이스 시스템에서 공통적으로 사용되는 SQL 명령문을 통해 테이블을 생성할 수 있습니다.
예를 들어, MySQL 데이터베이스에서 테이블을 생성하는 SQL 명령문은 다음과 같습니다.
CREATE TABLE 테이블_이름 (
속성1 데이터_유형,
속성2 데이터_유형,
...
PRIMARY KEY (기본키_속성)
);
여기서, 테이블_이름은 생성하려는 테이블의 이름을 나타내며, 속성1, 속성2 등은 테이블의 각 열(Column)을 나타냅니다. 데이터_유형은 각 속성의 데이터 유형을 지정합니다. PRIMARY KEY 키워드를 사용하여 기본키를 설정할 수 있습니다.
테이블 생성 후에는 GUI 도구를 사용하든 SQL 명령문을 사용하든 데이터베이스에 데이터를 삽입하거나 조회하는 등의 작업을 수행할 수 있습니다.
5-2. 제약 조건으로 테이블을 견고하게
제약 조건의 기본 개념
제약 조건은 데이터베이스 테이블에 적용되는 규칙으로, 데이터의 무결성을 유지하고 데이터베이스의 일관성을 보장하는 데 도움을 줍니다. 이 제약 조건들은 데이터의 특정 규칙에 따라 삽입, 수정, 삭제 작업을 제한하거나 조정하는 역할을 합니다. 데이터베이스 시스템은 제약 조건을 사용하여 잘못된 데이터의 삽입을 방지하고, 데이터 일관성을 유지하며, 데이터 무결성을 확보합니다.
기본 키 제약 조건
기본 키 제약 조건은 테이블 내에서 각 레코드(행)를 고유하게 식별하는 데 사용됩니다.
테이블에는 하나의 기본 키만 가질 수 있으며, 기본 키로 지정된 열은 중복 값이 없어야 합니다.
기본 키는 NULL 값을 허용하지 않으며, 기본 키를 이용하여 다른 테이블과의 관계를 맺을 수 있습니다.
예를 들어, 사용자 테이블에서 사용자의 ID를 기본 키로 설정할 수 있습니다. 이렇게 하면 각 사용자를 고유하게 식별할 수 있습니다.
외래 키 제약조건
외래 키 제약 조건은 다른 테이블의 기본 키와 관계를 맺는 데 사용됩니다.
외래 키는 다른 테이블의 기본 키와 일치하는 값이어야 하며, 이를 통해 테이블 간의 관계를 정의합니다.
외래 키는 참조 무결성을 유지하기 위해 사용됩니다.
예를 들어, 주문 테이블에서 사용자의 ID를 외래 키로 설정할 수 있습니다. 이 경우 주문 테이블의 사용자 ID는 사용자 테이블의 기본 키와 일치해야 하므로, 잘못된 사용자 ID로 인한 주문 데이터의 불일치를 방지할 수 있습니다.
기타 제약조건
기타 제약 조건에는 다음과 같은 것들이 있습니다
- NOT NULL 제약 조건 : 특정 열에는 NULL 값을 허용하지 않도록 설정합니다. 이를 통해 해당 열에 항상 값이 존재하도록 보장할 수 있습니다.
- UNIQUE 제약 조건 : 특정 열에 중복된 값을 허용하지 않도록 설정합니다. 기본 키 제약 조건과 유사하지만, NULL 값은 여러 개 허용됩니다.
- CHECK 제약 조건 : 특정 열에 저장될 수 있는 값의 범위를 지정합니다. 예를 들어, 나이 열에는 0보다 크고 150보다 작은 값만 허용하도록 설정할 수 있습니다.
- DEFAULT 제약 조건 : 특정 열에 기본 값을 지정합니다. 이렇게 하면 새 레코드를 삽입할 때 해당 열에 값을 지정하지 않아도 자동으로 기본 값이 할당됩니다.
- 제약 조건 조합 : 위의 제약 조건들을 조합하여 복합적인 제약 조건을 정의할 수도 있습니다. 예를 들어, 한 열이 NULL이 아니고 고유해야 한다거나, 외래 키인 동시에 NULL 값을 허용하는 경우 등을 설정할 수 있습니다.
이렇게 다양한 제약 조건을 활용하여 데이터베이스의 데이터 무결성을 강화하고, 잘못된 데이터의 삽입 또는 수정을 방지하여 안정성을 확보할 수 있습니다.
5-3. 가상의 테이블 : 뷰
뷰의 개념
뷰는 데이터베이스에서 가상의 테이블로, 하나 이상의 테이블로부터 유도된 결과를 보여주는 쿼리의 형태를 가진 객체입니다. 뷰는 실제 데이터를 포함하지 않고, 데이터에 대한 접근을 더 편리하게 만들거나, 보안을 강화하기 위해 사용됩니다. 뷰는 데이터의 일부분만 선택하여 보여줄 수도 있으며, 여러 개의 테이블로부터 조인된 결과를 제공할 수도 있습니다.
뷰는 사용자가 특정 데이터를 쉽게 조회하거나 조작할 수 있도록 데이터베이스에 대한 인터페이스 역할을 수행합니다. 사용자는 뷰를 통해 자신이 필요로 하는 데이터에 접근하고, 뷰에 쿼리를 실행하여 데이터를 검색하거나 수정할 수 있습니다.
뷰의 실제 작동
- 뷰 정의 : 뷰는 CREATE VIEW 문을 사용하여 정의됩니다.
이때, 뷰의 이름과 뷰에 사용할 쿼리를 지정합니다. 쿼리는 하나 이상의 테이블로부터 데이터를 선택하거나 조인하여 결과를 생성하는데, 이 결과가 뷰의 내용이 됩니다.
- 뷰 사용 : 뷰가 정의되면 해당 뷰를 쿼리하는 것처럼 사용자가 데이터에 접근할 수 있습니다.
SELECT 문을 사용하여 뷰를 조회하거나, INSERT, UPDATE, DELETE 문을 사용하여 뷰에 데이터를 삽입, 수정, 삭제할 수 있습니다.
- 뷰의 업데이트와 기본 테이블의 영향 : 뷰는 기본 테이블의 데이터를 직접 변경하는 것이 아니라, 해당하는 기본 테이블에 영향을 미칩니다.
즉, 뷰를 통해 수정된 데이터는 뷰가 정의된 쿼리에 따라 실제 기본 테이블의 데이터가 변경되는 것입니다.
- 뷰의 보안 : 뷰는 데이터베이스 사용자에게 필요한 데이터만 보여줄 수 있도록 접근 제어를 할 수 있습니다.
뷰를 통해 특정 열을 제한하거나, 특정 조건을 만족하는 데이터만 보여줄 수 있습니다.
이를 통해 사용자는 뷰를 통해 선택적인 데이터에만 접근할 수 있고, 민감한 정보를 가진 테이블에 대한 직접적인 접근을 제한할 수 있습니다.
뷰는 데이터의 중복을 피하고 데이터베이스의 복잡성을 줄이는데에도 도움이 됩니다. 여러 개의 테이블에 접근해야 하는 복잡한 쿼리를 뷰로 정의하여 단순화하고, 다양한 사용자 그룹에게 필요한 데이터를 뷰로 제공하여 각 사용자의 요구에 맞게 데이터를 제공할 수 있습니다.
'혼공학습단 > SQL' 카테고리의 다른 글
[Sql] Chapter 06. 인덱스 (2) | 2023.08.13 |
---|---|
[Sql] 혼공학습단 10기_5주차 미션 (2) | 2023.08.13 |
[Sql] 혼공학습단 10기_4주차 미션 (0) | 2023.07.30 |
[Sql] 혼공학습단 10기_3주차 미션 (2) | 2023.07.21 |
[Sql] Chapter 04. SQL 고급 문법 (0) | 2023.07.21 |