"테이블 (데이터베이스)"의 두 판 사이의 차이
(→테이블 생성) |
|||
(사용자 4명의 중간 판 89개는 보이지 않습니다) | |||
1번째 줄: | 1번째 줄: | ||
− | '''테이블'''(table)은 행(row)과 열(column)로 | + | '''테이블'''(table)은 [[데이터베이스]]에서 [[행]](가로, row, record)과 [[열]](세로, column, field)로 짜여진 표에 기록된 [[데이터]]의 집합이다. '''디비 테이블'''(DB table)이라고도 한다. |
− | = 개요 = | + | == 개요 == |
− | 테이블( | + | 테이블이란 데이터베이스에서 단일 주제에 관해 행과 열로 구성되는 정보 모음을 가리킨다. 예를 들면, 업무용 데이터베이스는 대개 고객 정보에 관한 테이블을 가지고 있는데, 고객의 계정 번호, 주소, 전화번호 등을 저장할 수 있는 여러 개의 행으로 구성된다. 테이블 내에서 계정 번호 등과 같은 낱낱의 데이터 각각을 [[필드 (데이터베이스)|필드]](field)라고 부른다. 하나의 행은 모든 고객들의 전화 번호 등과 같은 어떤 한 필드 내의 모든 데이터로 구성된다. 필드는 완전한 정보 셋인 레코드로 조직화되며, 각각은 하나의 열을 이룬다. 표준화 과정을 통해 데이터를 가장 효과적인 방법으로 테이블로 구성할 수 있는 방법을 결정한다. |
− | = | + | 컴퓨터로 만들어지거나 또는 종이 위에 손쉽게 그릴 수 있는 진리표에는 기반이 되는 결정이나 기준 목록을 포함한다. 진리표에는 가능한 모든 결정 상황이 목록화되며, 각 상황에서 취해져야 할 행위가 정의된다. 기본적인 예로는, 도로 교차점의 교통 상황에 대하여 "예" 또는 "아니오"와 같은 결정들과 빨간색 신호나, 녹색 신호 등과 같이 기준들이 표현될 수 있다. 진리표는 여러 가지 상황에서 내려지는 결정에 따라 처리 기준을 지시하기 위한 컴퓨터 프로그램에도 삽입될 수 있다. 진리표가 변경되면 프로그램에도 반영된다.<ref name='table_info'>김동근, 〈[http://www.terms.co.kr/table.htm table 테이블]〉, 《김동근의 텀즈, 컴퓨터 용어사전》, 2002-06-17</ref> |
− | 테이블은 기본적으로 행(row)과 열(column)으로 구성되어 있다. | + | == 구조 == |
+ | 테이블은 기본적으로 [[행]](row)과 [[열]](column)으로 구성되어 있다. | ||
− | + | === 행(row) === | |
− | + | * '''레코드'''(record), '''튜플'''(tuple) : 릴레이션이 나타내는 [[엔티티]](entity)의 특정 인스턴스에 관한 사실(값)들의 모임이다. 튜플로 통용된다. | |
+ | * '''카디날리티'''(cardinality) : 릴레이션 튜플의 개수<ref name='rdb_info'>돌딱, 〈[https://blog.naver.com/96wjdduf/221860693470 관계형 데이터베이스의 구조]〉, 2020-03-18</ref> | ||
− | + | === 열(column) === | |
+ | * '''[[속성]]'''(attribute) : 하나의 릴레이션은 현실세계의 어떤 개체(entity)를 표현하고 저장되는 데 사용된다. 이때 개체는 사물이 될 수도, 추상적인 개념이 될 수도 있다. | ||
+ | * '''[[필드 (데이터베이스)|필드]]'''(field) : 종종 컬럼의 대용으로 동일한 의미로 사용되지만, 필드와 필드값은 한 열이나 한 컬럼 사이의 교차로 존재하는 단일 항목을 특정할 때 언급하는 것이다. | ||
+ | * '''[[차수]]'''(degree) : 한 릴레이션에 들어 있는 속성의 수<ref name='rdb_info'></ref> | ||
− | + | === 도메인 === | |
− | + | 하나의 속성이 취할 수 있는 같은 타입의 원자값들의 집합이다. [[도메인]](domain)은 실제 속성 값이 나타날 때 그 값의 합법 여부를 시스템이 검사하는데 이용된다.<ref name='rdb_info'></ref> | |
− | |||
− | + | === 릴레이션 인스턴스 === | |
− | + | [[릴레이션 인스턴스]](relation instance)란 데이터 개체를 구성하고 있는 속성들에 데이터 타입이 정의되어 구체적인 데이터 값을 갖고 있는 것을 말한다.<ref>개발자, 〈[https://blog.naver.com/kookh1/120184872122 릴레이션의 특징과 용어]〉, 2013-03-16</ref> | |
− | + | === 관계형 데이터베이스 구조 === | |
+ | [[파일:릴레이션_구조.png|image]]<ref name='rdb_info'></ref> | ||
− | + | == SQL에서 테이블 활용 == | |
− | + | === 테이블 생성=== | |
− | |||
− | + | CREATE TABLE 테이블 이름 ( | |
− | + | 컬럼명1 DATATYPE [DEFAULT 형식], | |
− | + | 컬럼명2 DATATYPE [DEFAULT 형식], | |
+ | 컬럼명3 DATATYPE [DEFAULT 형식] | ||
+ | ); | ||
+ | :테이블 생성시 대/소문자 구분은 하지 않는다. (기본적으로 테이블이나 컬럼명은 대문자로 만들어진다.) | ||
+ | :DATE 유형은 별도로 크기를 지정하지 않는다. | ||
+ | :문자 데이터 유형은 반드시 가질 수 있는 최대 길이를 표시해야 한다. | ||
+ | :컬럼과 컬럼의 구분은 콤마로 하되, 마지막 컬럼은 콤마를 찍지 않는다. | ||
+ | :컬럼에 대한 제약조건이 있으면 CONSTRAINT를 이용하여 추가할 수 있다.<ref name='constraint'>개발이 하고 싶어요, 〈[https://hyeonstorage.tistory.com/291 CREATE TABLE 테이블 생성, 제약조건(CONSTRAINT), 확인(DESC)]〉, 2014-05-29</ref> | ||
− | = | + | === 테이블 수정 === |
− | == | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | ALTER TABLE 테이블명; | |
− | |||
− | |||
− | |||
− | === | + | === 테이블 삭제 === |
− | + | DROP TABLE 테이블명 [CASCADE CONSTRAINT]; | |
− | |||
− | + | :DROP TABLE 명령어를 사용하면 테이블의 모든 데이터 및 구조를 삭제한다. | |
− | + | :CASCADE CONSTRAINT 옵션은 해당 테이블과 관계가 있었던 참조되는 제약조건에 대해서도 삭제한다는 것을 의미한다. | |
− | + | :(SQL Server에서는 CASCADE 옵션이 존재하지 않는다. 테이블 삭제 전에 참조하는 FOREIGN KEY 제약 등을 먼저 삭제해야 한다.)<ref name='constraint'></ref> | |
− | === | + | === 테이블 목록 조회 === |
− | * ''' | + | SHOW TABLES; |
− | + | ||
− | + | === 테이블 조회 === | |
+ | SELECT * FROM 테이블명; | ||
+ | |||
+ | === 컬럼 추가 (ADD COLUMN) === | ||
+ | |||
+ | ALTER TABLE 테이블명 | ||
+ | ADD 추가할 컬럼명 데이터 유형; <ref name='constraint'></ref> | ||
+ | |||
+ | === 컬럼 수정 (MODIFY COLUMN) === | ||
+ | |||
+ | ALTER TABLE 테이블명 | ||
+ | MODIFY COLUMN 수정할 컬럼명; | ||
+ | |||
+ | :MODIFY COLUMN 사용 시 주의사항 | ||
+ | ::해당 컬럼의 크기를 늘릴 수는 있지만 줄이지는 못한다. 이는 기존의 데이터가 훼손될 수 있기 때문이다. | ||
+ | ::해당 컬럼이 NULL 값만 가지고 있거나 테이블에 아무 행도 없으면 컬럼의 폭을 줄일 수 있다. | ||
+ | ::해당 컬럼이 NULL 값만을 가지고 있으면 데이터 유형을 변경할 수 있다. | ||
+ | ::해당 컬럼의 DEFAULT 값을 바꾸면 변경 작업 이후 발생하는 행 삽입에만 영향을 미치게 된다. | ||
+ | ::해당 컬럼에 NULL 값이 없을 경우에만 NOT NULL 제약조건을 추가할 수 있다.<ref name='constraint'></ref> | ||
+ | |||
+ | === 컬럼명 수정 (RENAME COLUMN) === | ||
+ | 테이블을 생성하면서 만들어졌던 컬럼명을 변경해야 할 경우에 사용한다. | ||
+ | |||
+ | ALTER TABLE 테이블명 | ||
+ | RENAME COLUMN 변경해야할 컬럼명 TO 새로운 컬럼명; <ref name='constraint'></ref> | ||
+ | |||
+ | === 컬럼 삭제 (DROP COLUMN) === | ||
+ | |||
+ | ALTER TABLE 테이블명 | ||
+ | DROP COLUMN 삭제할 컬럼명; <ref name='constraint'></ref> | ||
+ | |||
+ | == 제약조건 == | ||
+ | 제약조건(constraint)은 사용자가 원하는 조건의 데이터만 유지하기 위한 특정 컬럼에 설정하는 제약이다. 테이블을 생성할 때 제약조건을 반드시 기술할 필요는 없다.<ref name='constraint'></ref> | ||
+ | |||
+ | === PRIMARY KEY(P.K) === | ||
+ | * 테이블에 저장된 행 데이터를 고유하게 식별하기 위한 기본키 정의 | ||
+ | * 하나의 테이블에 하나의 기본키 제약만 정의할 수 있다. | ||
+ | * 기본키 제약을 정의하면 DBMS는 자동으로 UNIQUE 인덱스를 생성하며, 기본키를 구성하는 컬럼에는 NULL을 입력할 수 없다.<ref name='constraint'></ref> | ||
+ | |||
+ | === UNIQUE KEY === | ||
+ | * 테이블에 저장된 행 데이터를 고유하게 식별하기 위한 고유키를 정의한다. | ||
+ | * 단, NULL은 고유키 제약의 대상이 아니므로, NULL 값을 가진 행이 여러 개가 있더라도 고유키 제약 위반이 되지 않는다.<ref name='constraint'></ref> | ||
+ | |||
+ | === NOT NULL === | ||
+ | * NULL 값의 입력을 금지한다. | ||
+ | * 디폴트 상태에서는 모든 컬럼에서 NULL을 허가하고 있지만, 이 제약을 지정함으로써 해당 컬럼은 입력 필수가 된다.<ref name='constraint'></ref> | ||
+ | |||
+ | === CHECK === | ||
+ | * 입력할 수 있는 값의 범위 등을 제한한다. CHECK 제약으로는 TRUE or FALSE로 평가할 수 있는 논리식을 지정한다.<ref name='constraint'></ref> | ||
+ | |||
+ | === FOREIGN KEY(F.K) === | ||
+ | * 관계형 데이터베이스에서 테이블 간의 관계를 정의하기 위해 기본키를 다른 테이블의 외래키로 복사하는 경우 외래키가 생성된다. | ||
+ | * 외래키 지정시 참조 무결성 제약 옵션을 선택할 수 있다.<ref name='constraint'></ref> | ||
{{각주}} | {{각주}} | ||
− | = | + | == 참고자료 == |
− | * | + | * 김동근, 〈[http://www.terms.co.kr/table.htm table 테이블]〉, 《김동근의 텀즈, 컴퓨터 용어사전》, 2002-06-17 |
− | + | * 환, 〈[http://blog.naver.com/PostView.nhn?blogId=jjhstr&logNo=60097939589&proxyReferer=https:%2F%2Fwww.google.com%2F DB에서 entityty란?]〉, 2009-12-24 | |
− | * | + | * 개발자, 〈[https://blog.naver.com/kookh1/120184872122 릴레이션의 특징과 용어]〉, 2013-03-16 |
− | * | + | * 개발이 하고 싶어요, 〈[https://hyeonstorage.tistory.com/291 CREATE TABLE 테이블 생성, 제약조건(CONSTRAINT), 확인(DESC)]〉, 2014-05-29 |
− | * | + | * 글그리, 〈[https://eastroot1590.tistory.com/entry/%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%B2%A0%EC%9D%B4%EC%8A%A4-%EC%9A%A9%EC%96%B4-%EB%A6%B4%EB%A0%88%EC%9D%B4%EC%85%98Relation 데이터베이스 - 릴레이션(Relation)]〉, 2017-03-09 |
− | * 돌딱, 〈[https://blog.naver.com/96wjdduf/221860693470 관계형 데이터베이스의 구조 ]〉, 2020-03-18 | + | * victolee, 〈[https://victorydntmd.tistory.com/319 인덱스(Index)]〉, 2019-05-18 |
− | + | * 무니봇, 〈[https://moonibot.tistory.com/37 릴레이션 스키마(Relation Schema), 릴레이션 인스턴스(Relation Instance), 속성(Attribute), 튜플(Tuple)]〉, 2019-12-17 | |
+ | * Tigercow, 〈[https://doorbw.tistory.com/227 엔터티(ENTITY)와 속성(ATTRIBUTE)]〉, 2020-01-13 | ||
+ | * 돌딱, 〈[https://blog.naver.com/96wjdduf/221860693470 관계형 데이터베이스의 구조]〉, 2020-03-18 | ||
− | = 같이 보기 = | + | == 같이 보기 == |
* [[데이터베이스]] | * [[데이터베이스]] | ||
* [[릴레이션]] | * [[릴레이션]] | ||
+ | * [[뷰]] | ||
* [[DBMS]] | * [[DBMS]] | ||
* [[키]] | * [[키]] | ||
+ | * [[SQL]] | ||
+ | * [[정규화]] | ||
+ | * [[역정규화]] | ||
+ | * [[HTML]] | ||
+ | * [[엔티티]] | ||
+ | * [[태그]] | ||
+ | * [[테이블 (HTML)]] | ||
+ | * [[테이블]] | ||
{{데이터|검토 필요}} | {{데이터|검토 필요}} |
2022년 6월 9일 (목) 16:56 기준 최신판
테이블(table)은 데이터베이스에서 행(가로, row, record)과 열(세로, column, field)로 짜여진 표에 기록된 데이터의 집합이다. 디비 테이블(DB table)이라고도 한다.
개요[편집]
테이블이란 데이터베이스에서 단일 주제에 관해 행과 열로 구성되는 정보 모음을 가리킨다. 예를 들면, 업무용 데이터베이스는 대개 고객 정보에 관한 테이블을 가지고 있는데, 고객의 계정 번호, 주소, 전화번호 등을 저장할 수 있는 여러 개의 행으로 구성된다. 테이블 내에서 계정 번호 등과 같은 낱낱의 데이터 각각을 필드(field)라고 부른다. 하나의 행은 모든 고객들의 전화 번호 등과 같은 어떤 한 필드 내의 모든 데이터로 구성된다. 필드는 완전한 정보 셋인 레코드로 조직화되며, 각각은 하나의 열을 이룬다. 표준화 과정을 통해 데이터를 가장 효과적인 방법으로 테이블로 구성할 수 있는 방법을 결정한다.
컴퓨터로 만들어지거나 또는 종이 위에 손쉽게 그릴 수 있는 진리표에는 기반이 되는 결정이나 기준 목록을 포함한다. 진리표에는 가능한 모든 결정 상황이 목록화되며, 각 상황에서 취해져야 할 행위가 정의된다. 기본적인 예로는, 도로 교차점의 교통 상황에 대하여 "예" 또는 "아니오"와 같은 결정들과 빨간색 신호나, 녹색 신호 등과 같이 기준들이 표현될 수 있다. 진리표는 여러 가지 상황에서 내려지는 결정에 따라 처리 기준을 지시하기 위한 컴퓨터 프로그램에도 삽입될 수 있다. 진리표가 변경되면 프로그램에도 반영된다.[1]
구조[편집]
테이블은 기본적으로 행(row)과 열(column)으로 구성되어 있다.
행(row)[편집]
- 레코드(record), 튜플(tuple) : 릴레이션이 나타내는 엔티티(entity)의 특정 인스턴스에 관한 사실(값)들의 모임이다. 튜플로 통용된다.
- 카디날리티(cardinality) : 릴레이션 튜플의 개수[2]
열(column)[편집]
- 속성(attribute) : 하나의 릴레이션은 현실세계의 어떤 개체(entity)를 표현하고 저장되는 데 사용된다. 이때 개체는 사물이 될 수도, 추상적인 개념이 될 수도 있다.
- 필드(field) : 종종 컬럼의 대용으로 동일한 의미로 사용되지만, 필드와 필드값은 한 열이나 한 컬럼 사이의 교차로 존재하는 단일 항목을 특정할 때 언급하는 것이다.
- 차수(degree) : 한 릴레이션에 들어 있는 속성의 수[2]
도메인[편집]
하나의 속성이 취할 수 있는 같은 타입의 원자값들의 집합이다. 도메인(domain)은 실제 속성 값이 나타날 때 그 값의 합법 여부를 시스템이 검사하는데 이용된다.[2]
릴레이션 인스턴스[편집]
릴레이션 인스턴스(relation instance)란 데이터 개체를 구성하고 있는 속성들에 데이터 타입이 정의되어 구체적인 데이터 값을 갖고 있는 것을 말한다.[3]
관계형 데이터베이스 구조[편집]
SQL에서 테이블 활용[편집]
테이블 생성[편집]
CREATE TABLE 테이블 이름 ( 컬럼명1 DATATYPE [DEFAULT 형식], 컬럼명2 DATATYPE [DEFAULT 형식], 컬럼명3 DATATYPE [DEFAULT 형식] );
- 테이블 생성시 대/소문자 구분은 하지 않는다. (기본적으로 테이블이나 컬럼명은 대문자로 만들어진다.)
- DATE 유형은 별도로 크기를 지정하지 않는다.
- 문자 데이터 유형은 반드시 가질 수 있는 최대 길이를 표시해야 한다.
- 컬럼과 컬럼의 구분은 콤마로 하되, 마지막 컬럼은 콤마를 찍지 않는다.
- 컬럼에 대한 제약조건이 있으면 CONSTRAINT를 이용하여 추가할 수 있다.[4]
테이블 수정[편집]
ALTER TABLE 테이블명;
테이블 삭제[편집]
DROP TABLE 테이블명 [CASCADE CONSTRAINT];
- DROP TABLE 명령어를 사용하면 테이블의 모든 데이터 및 구조를 삭제한다.
- CASCADE CONSTRAINT 옵션은 해당 테이블과 관계가 있었던 참조되는 제약조건에 대해서도 삭제한다는 것을 의미한다.
- (SQL Server에서는 CASCADE 옵션이 존재하지 않는다. 테이블 삭제 전에 참조하는 FOREIGN KEY 제약 등을 먼저 삭제해야 한다.)[4]
테이블 목록 조회[편집]
SHOW TABLES;
테이블 조회[편집]
SELECT * FROM 테이블명;
컬럼 추가 (ADD COLUMN)[편집]
ALTER TABLE 테이블명 ADD 추가할 컬럼명 데이터 유형; [4]
컬럼 수정 (MODIFY COLUMN)[편집]
ALTER TABLE 테이블명 MODIFY COLUMN 수정할 컬럼명;
- MODIFY COLUMN 사용 시 주의사항
- 해당 컬럼의 크기를 늘릴 수는 있지만 줄이지는 못한다. 이는 기존의 데이터가 훼손될 수 있기 때문이다.
- 해당 컬럼이 NULL 값만 가지고 있거나 테이블에 아무 행도 없으면 컬럼의 폭을 줄일 수 있다.
- 해당 컬럼이 NULL 값만을 가지고 있으면 데이터 유형을 변경할 수 있다.
- 해당 컬럼의 DEFAULT 값을 바꾸면 변경 작업 이후 발생하는 행 삽입에만 영향을 미치게 된다.
- 해당 컬럼에 NULL 값이 없을 경우에만 NOT NULL 제약조건을 추가할 수 있다.[4]
컬럼명 수정 (RENAME COLUMN)[편집]
테이블을 생성하면서 만들어졌던 컬럼명을 변경해야 할 경우에 사용한다.
ALTER TABLE 테이블명 RENAME COLUMN 변경해야할 컬럼명 TO 새로운 컬럼명; [4]
컬럼 삭제 (DROP COLUMN)[편집]
ALTER TABLE 테이블명 DROP COLUMN 삭제할 컬럼명; [4]
제약조건[편집]
제약조건(constraint)은 사용자가 원하는 조건의 데이터만 유지하기 위한 특정 컬럼에 설정하는 제약이다. 테이블을 생성할 때 제약조건을 반드시 기술할 필요는 없다.[4]
PRIMARY KEY(P.K)[편집]
- 테이블에 저장된 행 데이터를 고유하게 식별하기 위한 기본키 정의
- 하나의 테이블에 하나의 기본키 제약만 정의할 수 있다.
- 기본키 제약을 정의하면 DBMS는 자동으로 UNIQUE 인덱스를 생성하며, 기본키를 구성하는 컬럼에는 NULL을 입력할 수 없다.[4]
UNIQUE KEY[편집]
- 테이블에 저장된 행 데이터를 고유하게 식별하기 위한 고유키를 정의한다.
- 단, NULL은 고유키 제약의 대상이 아니므로, NULL 값을 가진 행이 여러 개가 있더라도 고유키 제약 위반이 되지 않는다.[4]
NOT NULL[편집]
- NULL 값의 입력을 금지한다.
- 디폴트 상태에서는 모든 컬럼에서 NULL을 허가하고 있지만, 이 제약을 지정함으로써 해당 컬럼은 입력 필수가 된다.[4]
CHECK[편집]
- 입력할 수 있는 값의 범위 등을 제한한다. CHECK 제약으로는 TRUE or FALSE로 평가할 수 있는 논리식을 지정한다.[4]
FOREIGN KEY(F.K)[편집]
- 관계형 데이터베이스에서 테이블 간의 관계를 정의하기 위해 기본키를 다른 테이블의 외래키로 복사하는 경우 외래키가 생성된다.
- 외래키 지정시 참조 무결성 제약 옵션을 선택할 수 있다.[4]
각주[편집]
참고자료[편집]
- 김동근, 〈table 테이블〉, 《김동근의 텀즈, 컴퓨터 용어사전》, 2002-06-17
- 환, 〈DB에서 entityty란?〉, 2009-12-24
- 개발자, 〈릴레이션의 특징과 용어〉, 2013-03-16
- 개발이 하고 싶어요, 〈CREATE TABLE 테이블 생성, 제약조건(CONSTRAINT), 확인(DESC)〉, 2014-05-29
- 글그리, 〈데이터베이스 - 릴레이션(Relation)〉, 2017-03-09
- victolee, 〈인덱스(Index)〉, 2019-05-18
- 무니봇, 〈릴레이션 스키마(Relation Schema), 릴레이션 인스턴스(Relation Instance), 속성(Attribute), 튜플(Tuple)〉, 2019-12-17
- Tigercow, 〈엔터티(ENTITY)와 속성(ATTRIBUTE)〉, 2020-01-13
- 돌딱, 〈관계형 데이터베이스의 구조〉, 2020-03-18
같이 보기[편집]