테이블Tables

이 항목은 다음에 적용됩니다. 예SQL Server(2016부터)예Azure SQL Database예Azure SQL Data Warehouse 예병렬 데이터 웨어하우스 THIS TOPIC APPLIES TO: yesSQL Server (starting with 2016)yesAzure SQL DatabaseyesAzure SQL Data Warehouse yesParallel Data Warehouse

테이블은 데이터베이스의 모든 데이터를 포함하는 데이터베이스 개체입니다.Tables are database objects that contain all the data in a database. 테이블에서 데이터는 스프레드시트와 비슷한 논리적인 행 및 열 형식으로 구성됩니다.In tables, data is logically organized in a row-and-column format similar to a spreadsheet. 각 행은 고유한 레코드를 나타내며 각 열은 레코드 내의 필드를 나타냅니다.Each row represents a unique record, and each column represents a field in the record. 예를 들어 회사 사원 데이터가 들어 있는 테이블은 각 사원에 대한 행과 사원 번호, 이름, 주소, 직책 및 집 전화번호와 같은 자세한 사원 정보를 나타내는 열로 구성할 수 있습니다.For example, a table that contains employee data for a company might contain a row for each employee and columns representing employee information such as employee number, name, address, job title, and home telephone number.

  • 데이터베이스의 테이블 수는 데이터베이스에 허용되는 개체 수(2,147,483,647)로만 제한됩니다.The number of tables in a database is limited only by the number of objects allowed in a database (2,147,483,647). 표준 사용자 정의 테이블에는 최대 1,024개의 열을 사용할 수 있습니다.A standard user-defined table can have up to 1,024 columns. 테이블의 행 수는 서버의 저장 용량으로만 제한됩니다.The number of rows in the table is limited only by the storage capacity of the server.

  • 테이블과 테이블의 각 열에 속성을 할당하여 허용되는 데이터 및 기타 속성을 제어할 수 있습니다.You can assign properties to the table and to each column in the table to control the data that is allowed and other properties. 예를 들어, 열에 대한 제약 조건을 만들어 Null 값을 금지하거나 값이 지정되지 않은 경우 기본 값을 제공할 수 있으며, 고유성을 적용하거나 테이블 간의 관계를 정의하는 테이블에 대한 키 제약 조건을 할당할 수 있습니다.For example, you can create constraints on a column to disallow null values or provide a default value if a value is not specified, or you can assign a key constraint on the table that enforces uniqueness or defines a relationship between tables.

  • 행별로 또는 페이지별로 테이블의 데이터를 압축할 수 있습니다.The data in the table can be compressed either by row or by page. 데이터 압축을 사용하면 한 페이지에 더 많은 행을 저장할 수 있습니다.Data compression can allow more rows to be stored on a page. 자세한 내용은 Data Compression을 참조하세요.For more information, see Data Compression.

테이블 형식Types of Tables

SQL ServerSQL Server 에서는 기본 사용자 정의 테이블의 표준 역할 외에도 데이터베이스에서 특수한 용도로 사용되는 다음과 같은 테이블 유형을 제공합니다.Besides the standard role of basic user-defined tables, SQL ServerSQL Server provides the following types of tables that serve special purposes in a database.

분할된 테이블Partitioned Tables
분할된 테이블은 데이터가 수평 분할된 단위로 되어 데이터베이스의 여러 파일 그룹에 분산될 수 있는 테이블입니다.Partitioned tables are tables whose data is horizontally divided into units which may be spread across more than one filegroup in a database. 분할을 사용하면 데이터 하위 집합을 빠르고 효율적으로 액세스하거나 관리하면서 동시에 전체 컬렉션의 무결성을 유지할 수 있으므로 큰 테이블 또는 인덱스를 더욱 편리하게 관리할 수 있습니다.Partitioning makes large tables or indexes more manageable by letting you access or manage subsets of data quickly and efficiently, while maintaining the integrity of the overall collection. 기본적으로 SQL Server 2017SQL Server 2017 은 최대 15,000개의 파티션을 지원합니다.By default, SQL Server 2017SQL Server 2017 supports up to 15,000 partitions. 자세한 내용은 Partitioned Tables and Indexes을 참조하세요.For more information, see Partitioned Tables and Indexes.

임시 테이블Temporary Tables
임시 테이블은 tempdb에 저장됩니다.Temporary tables are stored in tempdb. 임시 테이블에는 로컬 및 전역의 두 가지 유형이 있습니다.There are two types of temporary tables: local and global. 이 두 유형은 이름, 표시 여부 및 가용성 면에서 서로 다릅니다.They differ from each other in their names, their visibility, and their availability. 로컬 임시 테이블은 이름이 한 개의 숫자 기호(#)로 시작하며 사용자의 현재 연결에만 표시되고 사용자가 SQL ServerSQL Server인스턴스와의 연결을 끊으면 삭제됩니다.Local temporary tables have a single number sign (#) as the first character of their names; they are visible only to the current connection for the user, and they are deleted when the user disconnects from the instance of SQL ServerSQL Server. 전역 임시 테이블은 이름이 두 개의 숫자 기호(##)로 시작하며 테이블 작성 후 모든 사용자에게 표시되고 테이블을 참조하는 모든 사용자가 SQL ServerSQL Server인스턴스와의 연결을 끊으면 삭제됩니다.Global temporary tables have two number signs (##) as the first characters of their names; they are visible to any user after they are created, and they are deleted when all users referencing the table disconnect from the instance of SQL ServerSQL Server.

시스템 테이블System Tables
SQL ServerSQL Server에서 서버와 서버의 모든 테이블에 대한 구성을 정의하는 데이터를 시스템 테이블이라고 알려진 특수한 테이블 집합에 저장합니다. SQL ServerSQL Server stores the data that defines the configuration of the server and all its tables in a special set of tables known as system tables. 사용자는 시스템 테이블을 직접 쿼리하거나 업데이트할 수 없습니다.Users cannot directly query or update the system tables. 시스템 테이블의 정보는 시스템 뷰를 통해 사용할 수 있습니다.The information in the system tables is made available through the system views. 자세한 내용은 시스템 뷰(Transact-SQL)를 참조하세요.For more information, see System Views (Transact-SQL).

넓은 테이블Wide Tables
넓은 테이블에서는 스파스 열 을 사용하여 테이블이 포함할 수 있는 전체 열을 최대 30,000개까지 늘립니다.Wide tables use sparse columns to increase the total of columns that a table can have to 30,000. 스파스 열은 Null 값에 대해 최적화된 저장소가 있는 일반 열입니다.Sparse columns are ordinary columns that have an optimized storage for null values. 스파스 열을 사용하면 Null 값에 대한 공간 요구 사항이 줄어드는 반면 Null이 아닌 값을 검색하는 데 더 많은 오버헤드가 발생합니다.Sparse columns reduce the space requirements for null values at the cost of more overhead to retrieve nonnull values. 넓은 테이블은 테이블의 모든 스파스 열을 구조화된 출력으로 결합하는 형식화되지 않은 XML 표현인 열 집합을 정의했습니다.A wide table has defined a column set, which is an untyped XML representation that combines all the sparse columns of a table into a structured output. 인덱스 및 통계 수도 각각 1,000개와 30,000개로 늘어납니다.The number of indexes and statistics is also increased to 1,000 and 30,000, respectively. 넓은 테이블 행의 최대 크기는 8,019바이트입니다.The maximum size of a wide table row is 8,019 bytes. 따라서 특정 행에 포함된 대부분의 데이터는 NULL이어야 합니다.Therefore, most of the data in any particular row should be NULL. 넓은 테이블에 있는 비스파스 열과 계산 열을 더한 최대 개수는 1,024개입니다.The maximum number of nonsparse columns plus computed columns in a wide table remains 1,024.

넓은 테이블은 성능에 다음과 같은 영향을 미칠 수 있습니다.Wide tables have the following performance implications.

  • 넓은 테이블을 사용하면 테이블에서 인덱스를 유지 관리하는 비용이 증가할 수 있습니다.Wide tables can increase the cost to maintain indexes on the table. 넓은 테이블의 인덱스 수는 비즈니스 논리에 필요한 인덱스 수로 제한하는 것이 좋습니다.We recommend that the number of indexes on a wide table be limited to the indexes that are required by the business logic. 인덱스 수가 늘어나면 DML 컴파일 시간과 메모리 요구 사항도 함께 늘어납니다.As the number of indexes increases, so does the DML compile-time and memory requirement. 비클러스터형 인덱스는 데이터 하위 집합에 적용되는 필터링된 인덱스여야 합니다.Nonclustered indexes should be filtered indexes that are applied to data subsets. 자세한 내용은 Create Filtered Indexes을(를) 참조하세요.For more information, see Create Filtered Indexes.

  • 응용 프로그램은 넓은 테이블에서 열을 동적으로 추가하고 제거할 수 있습니다.Applications can dynamically add and remove columns from wide tables. 열을 추가하거나 제거하면 컴파일된 쿼리 계획도 함께 무효화됩니다.When columns are added or removed, compiled query plans are also invalidated. 스키마의 변동 정도가 최소화되도록 예상 작업에 맞게 응용 프로그램을 디자인하는 것이 좋습니다.We recommend that you design an application to match the projected workload so that schema changes are minimized.

  • 넓은 테이블에서 데이터를 추가 및 제거하면 성능에 영향을 줄 수 있습니다.When data is added and removed from a wide table, performance can be affected. 데이터 테이블이 최소한으로 변경되도록 예상 작업에 맞게 응용 프로그램을 디자인해야 합니다.Applications must be designed for the projected workload so that changes to the table data is minimized.

  • 넓은 테이블에서 클러스터링 키의 여러 행을 업데이트하는 DML 문의 실행은 가급적 제한해야 합니다.Limit the execution of DML statements on a wide table that update multiple rows of a clustering key. 이러한 문은 컴파일 및 실행에 많은 메모리 리소스가 필요할 수 있습니다.These statements can require significant memory resources to compile and execute.

  • 넓은 테이블에서는 파티션 전환 작업의 속도가 느리고 처리하는 데 많은 양의 메모리가 필요할 수 있습니다.Switch partition operations on wide tables can be slow and might require large amounts of memory to process. 성능 및 메모리 요구 사항은 원본 및 대상 파티션에 있는 전체 열 개수와 비례합니다.The performance and memory requirements are proportional to the total number of columns in both the source and target partitions.

  • 넓은 테이블에서 특정 열을 업데이트하는 업데이트 커서는 FOR UPDATE 절에서 열을 명시적으로 나열해야 합니다.Update cursors that update specific columns in a wide table should list the columns explicitly in the FOR UPDATE clause. 이렇게 하면 커서를 사용할 때 성능을 최적화하는 데 도움이 됩니다.This will help optimize performance when you use cursors.

공통 테이블 태스크Common Table Tasks

다음 표에서는 테이블 만들기 또는 수정과 관련된 공통 태스크의 링크를 제공합니다.The following table provides links to common tasks associated with creating or modifying a table.

테이블 태스크Table Tasks 항목Topic
테이블을 만드는 방법을 설명합니다.Describes how to create a table. 테이블 만들기(데이터베이스 엔진)Create Tables (Database Engine)
테이블을 삭제하는 방법을 설명합니다.Describes how to delete a table. 테이블 삭제(데이터베이스 엔진)Delete Tables (Database Engine)
기존 테이블의 열이 일부 또는 모두 포함된 새 테이블을 만드는 방법을 설명합니다.Describes how to create a new table that contains some or all of the columns in an existing table. 테이블 복제Duplicate Tables
테이블의 이름을 바꾸는 방법을 설명합니다.Describes how to rename a table. 테이블 이름 바꾸기(데이터베이스 엔진)Rename Tables (Database Engine)
테이블의 속성을 보는 방법을 설명합니다.Describes how to view the properties of the table. 테이블 정의 보기View the Table Definition
뷰 또는 저장 프로시저와 같은 다른 개체가 테이블에 종속되는지 여부를 결정하는 방법을 설명합니다.Describes how to determine whether other objects such as a view or stored procedure depend on a table. 테이블의 종속성 보기View the Dependencies of a Table

다음 표에서는 테이블에서 열 만들기 또는 수정과 관련된 공통 태스크에 대한 링크를 제공합니다.The following table provides links to common tasks associated with creating or modifying columns in a table.

열 태스크Column Tasks 항목Topic
기존 테이블에 열을 추가하는 방법을 설명합니다.Describes how to add columns to an existing table. 테이블에 열 추가(데이터베이스 엔진)Add Columns to a Table (Database Engine)
테이블에서 열을 삭제하는 방법을 설명합니다.Describes how to delete columns from a table. 테이블에서 열 삭제Delete Columns from a Table
열의 이름을 변경하는 방법을 설명합니다.Describes how to change the name of a column. 열 이름 바꾸기(데이터베이스 엔진)Rename Columns (Database Engine)
열 정의만 복사하거나 열 정의와 데이터를 모두 복사하여 한 테이블에서 다른 테이블로 열을 복사하는 방법을 설명합니다.Describes how to copy columns from one table to another, copying either just the column definition, or the definition and data. 한 테이블에서 다른 테이블로 열 복사(데이터베이스 엔진)Copy Columns from One Table to Another (Database Engine)
데이터 형식 또는 다른 속성을 변경하여 열 정의를 수정하는 방법을 설명합니다.Describes how to modify a column definition, by changing the data type or other property. 열 수정(데이터베이스 엔진)Modify Columns (Database Engine)
열이 표시되는 순서를 변경하는 방법을 설명합니다.Describes how to change the order in which the columns appear. 테이블에서 열 순서 변경Change Column Order in a Table
테이블에서 계산 열을 만드는 방법을 설명합니다.Describes how to create a computed column in a table. 테이블에서 계산 열 지정Specify Computed Columns in a Table
열의 기본값을 지정하는 방법을 설명합니다.Describes how to specify a default value for a column. 다른 값을 제공하지 않으면 이 값이 사용됩니다.This value is used if another value is not supplied. 열의 기본값 지정Specify Default Values for Columns

관련 항목:See Also

PRIMARY KEY 및 FOREIGN KEY 제약 조건 Primary and Foreign Key Constraints
UNIQUE 제약 조건 및 CHECK 제약 조건 Unique Constraints and Check Constraints