MS SQL 서버 쿼리입니다. MS SQL Server 데이터베이스에서 쿼리(Query)를 생성하는 예

마지막 업데이트: 2017년 7월 5일

이전 항목에서는 SQL Management Studio에서 하나의 테이블이 있는 간단한 데이터베이스를 만들었습니다. 이제 첫 번째 SQL 쿼리를 정의하고 실행해 보겠습니다. 이렇게 하려면 SQL Management Studio를 열고 개체 탐색기에서 최상위 요소(서버 이름)를 마우스 오른쪽 단추로 클릭한 후 나타나는 상황에 맞는 메뉴에서 새 쿼리를 선택합니다.

그런 다음 프로그램 중앙에 SQL 명령을 입력하는 창이 열립니다.

이전 주제에서 생성된 테이블에 대해 쿼리를 실행해 보겠습니다. 특히 테이블에서 모든 데이터를 가져옵니다. 데이터베이스는 University라고 하고 테이블은 dbo.Students이므로 테이블에서 데이터를 가져오려면 다음 쿼리를 입력합니다.

SELECT * FROM University.dbo.Students

SELECT 문을 사용하면 데이터를 선택할 수 있습니다. FROM은 데이터를 가져올 소스를 지정합니다. 실제로 이 쿼리를 사용하면 "university.dbo.Students 테이블에서 모두 선택"이라고 말합니다. 테이블 이름이 데이터베이스와 스키마를 나타내는 전체 경로를 사용한다는 점은 주목할 가치가 있습니다.

요청을 입력한 후 도구 모음에서 실행 버튼을 클릭하거나 F5 키를 누를 수 있습니다.

쿼리를 실행하면 쿼리 결과, 즉 Students 테이블의 모든 데이터를 표시하는 작은 테이블이 프로그램 하단에 나타납니다.

동일한 데이터베이스에 대해 여러 쿼리를 작성해야 하는 경우 USE 명령을 사용하여 데이터베이스를 커밋할 수 있습니다. 이 경우 테이블을 쿼리할 때 데이터베이스 이름과 스키마 없이 테이블 이름을 지정하는 것으로 충분합니다.

대학 사용 SELECT * FROM 학생

이 경우 서버에 대해 전체적으로 쿼리를 실행하고 있으며 서버의 모든 데이터베이스에 액세스할 수 있습니다. 그러나 특정 데이터베이스 내에서만 쿼리를 수행할 수도 있습니다. 이렇게 하려면 원하는 데이터베이스를 마우스 오른쪽 버튼으로 클릭하고 상황에 맞는 메뉴에서 새 쿼리를 선택합니다.

이 경우 위에서 사용된 Students 테이블을 쿼리하려는 경우 쿼리에서 데이터베이스 이름과 스키마를 지정할 필요가 없습니다. 이러한 값은 이미 명확하기 때문입니다.

SQL Server Management Studio는 모든 유형의 쿼리를 생성하기 위한 완벽한 도구를 제공합니다. 도움을 받아 쿼리를 생성, 저장, 로드 및 편집할 수 있습니다. 또한 서버에 연결하지 않고도 쿼리 작업을 수행할 수 있습니다. 이 도구는 다양한 프로젝트에 대한 쿼리를 개발하는 기능도 제공합니다.

쿼리 편집기나 솔루션 탐색기를 사용하여 쿼리 작업을 수행할 수 있습니다. 이 문서에서는 이 두 도구를 모두 다룹니다. SQL Server Management Studio의 이러한 두 가지 구성 요소 외에도 기본 제공 디버거를 사용하여 SQL 코드를 디버깅하는 방법을 살펴보겠습니다.

쿼리 편집기

쿼리 편집기 패널을 열려면 쿼리 편집기, SQL Server Management Studio 도구 모음에서 새 쿼리 버튼을 클릭합니다. 이 패널을 확장하여 데이터베이스 엔진 쿼리뿐만 아니라 가능한 모든 쿼리를 생성하기 위한 단추를 표시할 수 있습니다. 기본적으로 새 데이터베이스 엔진 쿼리가 생성되지만 도구 모음에서 해당 단추를 클릭하여 MDX, XMLA 및 기타 쿼리를 생성할 수도 있습니다.

쿼리 편집기 패널 하단에 있는 상태 표시줄은 편집기와 서버의 연결 상태를 나타냅니다. 서버에 자동으로 연결되지 않는 경우, 쿼리 편집기를 실행하면 서버에 연결 대화 상자가 나타나서 연결할 서버와 인증 모드를 선택할 수 있습니다.

쿼리를 오프라인으로 편집하면 서버에 연결했을 때보다 더 많은 유연성이 제공됩니다. 쿼리를 편집하기 위해 서버에 연결할 필요가 없으며 쿼리 편집기 창은 한 서버에서 연결을 끊고(쿼리 --> 연결 --> 연결 끊기 메뉴 명령 사용) 다른 편집기 창을 열지 않고도 다른 서버에 연결할 수 있습니다. 오프라인 편집 모드를 선택하려면 특정 쿼리 유형에 대한 편집기를 시작할 때 열리는 서버 연결 대화 상자에서 취소 버튼을 클릭하면 됩니다.

쿼리 편집기를 사용하여 다음 작업을 수행할 수 있습니다.

    Transact-SQL 문 생성 및 실행

    생성된 Transact-SQL 언어 문을 파일에 저장합니다.

    일반적인 쿼리에 대한 실행 계획을 생성하고 분석합니다.

    선택한 쿼리의 실행 계획을 그래픽으로 보여줍니다.

쿼리 편집기에는 내장된 텍스트 편집기와 다양한 작업을 위한 버튼 세트가 있는 도구 모음이 포함되어 있습니다. 기본 쿼리 편집기 창은 수평으로 쿼리 패널(상단)과 결과 패널(하단)로 구분됩니다. 실행될 Transact-SQL 문(즉, 쿼리)은 위쪽 창에 입력되고, 해당 쿼리에 대한 시스템의 처리 결과가 아래쪽 창에 표시됩니다. 아래 그림은 쿼리 편집기에 쿼리를 입력하는 예와 해당 쿼리를 실행한 결과를 보여줍니다.

첫 번째 USE 요청 문은 SampleDb 데이터베이스를 현재 데이터베이스로 사용하도록 지정합니다. 두 번째 문인 SELECT는 Employee 테이블에서 모든 행을 검색합니다. 이 쿼리를 실행하고 결과를 표시하려면 쿼리 편집기 도구 모음에서 실행 단추를 클릭하거나 F5 키를 누릅니다.

여러 쿼리 편집기 창을 열 수 있습니다. 하나 이상의 데이터베이스 엔진 인스턴스에 여러 연결을 만듭니다. SQL Server Management Studio 도구 모음에서 새 쿼리 단추를 클릭하면 새 연결이 생성됩니다.

쿼리 편집기 창 하단의 상태 표시줄에는 쿼리문 실행과 관련된 다음 정보가 표시됩니다.

    현재 작업 상태(예: "요청이 성공적으로 완료되었습니다")

    데이터베이스 서버 이름;

    현재 사용자 이름 및 서버 프로세스 ID

    현재 데이터베이스 이름;

    마지막 요청을 실행하는 데 소요된 시간

    발견된 줄 수.

SQL Server Management Studio의 주요 장점 중 하나는 쿼리 편집기에도 적용되는 사용 용이성입니다. 쿼리 편집기는 Transact-SQL 문을 더 쉽게 코딩할 수 있는 다양한 기능을 제공합니다. 특히 구문 강조를 사용하여 Transact-SQL 문의 가독성을 향상시킵니다. 모든 예약어는 파란색으로, 변수는 검은색으로, 문자열은 빨간색으로, 주석은 녹색으로 표시됩니다.

또한 쿼리 편집기에는 다음과 같은 상황에 맞는 도움말이 제공됩니다. 동적 도움말를 통해 특정 명령어에 대한 정보를 얻을 수 있습니다. 명령어 구문을 모르는 경우 편집기에서 해당 명령어를 선택한 다음 F1 키를 누르십시오. 다양한 Transact-SQL 문의 매개 변수를 강조 표시하여 온라인 설명서에서 관련 도움말을 얻을 수도 있습니다.

SQL Management Studio는 자동 완성 도구의 일종인 SQL Intellisense를 지원합니다. 즉, 이 모듈은 부분적으로 입력된 Transact-SQL 문 요소의 완료 가능성이 가장 높은 것을 제안합니다.

개체 탐색기를 사용하면 쿼리를 편집할 수도 있습니다. 예를 들어 Employee 테이블에 대한 CREATE TABLE 문을 생성하는 방법을 알고 싶다면 개체 탐색기에서 테이블을 마우스 오른쪽 버튼으로 클릭하고 상황에 맞는 메뉴에서 테이블 스크립트 --> CREATE 대상 --> 새 쿼리 편집기 창을 선택합니다. 테이블 --> CREATE 사용 --> 새 쿼리 편집기 창). 이렇게 생성된 CREATE TABLE 문이 포함된 쿼리 편집기 창은 아래 그림과 같다. 이 기능은 저장 프로시저 및 함수와 같은 다른 개체에도 적용됩니다.

개체 브라우저는 특정 쿼리의 실행 계획을 그래픽으로 표시하는 데 매우 유용합니다. 쿼리 실행 계획은 특정 쿼리를 실행하기 위해 가능한 여러 옵션 중에서 쿼리 최적화 프로그램이 선택한 실행 옵션입니다. 편집기 상단 패널에 필요한 쿼리를 입력하고 쿼리 --> 예상 실행 계획 표시(쿼리 --> 예상 실행 계획 표시) 메뉴에서 일련의 명령을 선택하면 이 쿼리에 대한 실행 계획이 편집기 창의 하단 패널.

솔루션 탐색기

SQL Server Management Studio의 쿼리 편집은 솔루션 방법을 기반으로 합니다. 새 쿼리 버튼을 사용하여 빈 쿼리를 생성하면 빈 솔루션을 기반으로 합니다. 빈 쿼리를 연 후 즉시 보기 --> 솔루션 탐색기 메뉴에서 일련의 명령을 실행하면 이를 확인할 수 있습니다.

결정은 전혀 관련되지 않거나, 하나 또는 여러 프로젝트와 관련될 수 있습니다. 프로젝트와 연결되지 않은 빈 솔루션입니다. 프로젝트를 솔루션과 연결하려면 빈 솔루션, 솔루션 탐색기 및 쿼리 편집기를 닫고 파일 --> 새로 만들기 --> 프로젝트를 실행하여 새 프로젝트를 만듭니다. 열리는 새 프로젝트 창의 가운데 창에서 SQL Server 스크립트 옵션을 선택합니다. 프로젝트는 특정 위치에 파일을 구성하는 방법입니다. 프로젝트에 이름을 할당하고 디스크에서 해당 위치에 대한 위치를 선택할 수 있습니다. 새 프로젝트를 생성하면 새 솔루션이 자동으로 시작됩니다. 솔루션 탐색기를 사용하여 기존 솔루션에 프로젝트를 추가할 수 있습니다.

생성된 각 프로젝트에 대해 솔루션 탐색기에는 연결, 쿼리 및 기타 폴더가 표시됩니다. 특정 프로젝트에 대한 새 쿼리 편집기 창을 열려면 해당 쿼리 폴더를 마우스 오른쪽 버튼으로 클릭하고 상황에 맞는 메뉴에서 새 쿼리를 선택합니다.

SQL Server 디버깅

SQL Server 2008부터 SQL Server에는 코드 디버거가 내장되어 있습니다. 디버깅 세션을 시작하려면 SQL Server Management Studio 기본 메뉴에서 디버그 --> 디버깅 시작을 선택합니다. 일괄 명령을 사용하는 예제를 통해 디버거가 어떻게 작동하는지 살펴보겠습니다. 일괄 처리는 포함된 모든 문을 실행하기 위해 데이터베이스 엔진으로 전송되는 SQL 문 및 절차 확장의 논리적 시퀀스입니다.

아래 그림은 프로젝트 p1에서 작업하는 직원 수를 계산하는 패키지를 보여줍니다. 이 숫자가 4 이상이면 해당 메시지가 표시됩니다. 그렇지 않으면 직원의 성과 이름이 표시됩니다.

특정 명령어에서 패키지 실행을 중지하려면 그림과 같이 중단점을 설정하면 됩니다. 이렇게 하려면 멈추고 싶은 줄의 왼쪽을 클릭하세요. 디버깅이 시작되면 노란색 화살표로 표시된 코드의 첫 번째 줄에서 실행이 중지됩니다. 실행과 디버깅을 계속하려면 디버그 --> 계속 메뉴 명령을 선택하십시오. 배치 명령은 첫 번째 중단점까지 계속 실행되며 노란색 화살표는 해당 지점에서 중지됩니다.

디버깅 프로세스와 관련된 정보는 쿼리 편집기 창 아래쪽에 있는 두 개의 패널에 표시됩니다. 다양한 유형의 디버깅 정보에 대한 정보는 이러한 패널에서 여러 탭으로 그룹화됩니다. 왼쪽 창에는 자동 탭, 로컬 탭 및 최대 5개의 감시 탭이 포함되어 있습니다. 오른쪽 창에는 호출 스택, 스레드, 중단점, 명령 창, 직접 실행 창 및 출력 탭이 포함되어 있습니다. 로컬 탭에는 변수 값이 표시되고, 호출 스택 탭에는 호출 스택 값이 표시되며, 중단점 탭에는 중단점 정보가 표시됩니다.

디버깅 프로세스를 종료하려면 기본 메뉴 디버그 --> 디버깅 중지에서 일련의 명령을 실행하거나 디버거 도구 모음에서 파란색 버튼을 클릭합니다.

SQL Server 2012에는 SQL Server Management Studio의 기본 제공 디버거에 몇 가지 새로운 기능이 추가되었습니다. 이제 다음과 같은 여러 작업을 수행할 수 있습니다.

    중단점 조건을 지정합니다. 중단점 조건평가된 값이 코드 실행이 특정 지점에서 중지되는지 여부를 결정하는 SQL 표현식입니다. 중단점 조건을 지정하려면 빨간색 중단점 아이콘을 마우스 오른쪽 버튼으로 클릭하고 상황에 맞는 메뉴에서 조건을 선택합니다. 중단점 조건 대화 상자가 열리고 필요한 부울 표현식을 입력할 수 있습니다. 또한 표현식이 true인 경우 실행을 중지해야 하는 경우 Is True 스위치를 설정해야 합니다. 표현식이 변경되어 실행을 중지해야 하는 경우 변경 시 스위치를 설정해야 합니다.

    중단점의 적중 횟수를 지정합니다. 적중 횟수는 실행 중 중단점에 도달한 횟수를 기준으로 특정 지점에서 실행을 중지하는 조건입니다. 지정된 패스 수와 지정된 중단점에 대해 지정된 기타 조건에 도달하면 디버거는 지정된 작업을 수행합니다. 적중 횟수에 따른 실행 중단 조건은 다음 중 하나일 수 있습니다.

    1. 무조건(기본 동작)(항상 중단);

      적중 횟수가 지정된 값과 같은 경우(그의 횟수가 지정된 값과 같을 때 중단)

      적중 횟수가 지정된 값의 배수인 경우(적중 횟수가 지정된 값의 배수와 같을 때 중단)

      그의 카운트가 지정된 값보다 크거나 같을 때 중단됩니다.

    디버깅 중 적중 횟수를 설정하려면 중단점 탭에서 필요한 중단점 아이콘을 마우스 오른쪽 버튼으로 클릭하고 상황에 맞는 메뉴에서 적중 횟수를 선택한 다음 이전 목록에서 열리는 중단점 적중 횟수 대화 상자에서 조건 중 하나를 선택합니다. 값이 필요한 옵션의 경우 조건 드롭다운 목록 오른쪽에 있는 텍스트 상자에 값을 입력합니다. 지정된 조건을 저장하려면 확인을 클릭하세요.

    중단점 필터를 지정합니다. 중단점 필터는 중단점 작업을 지정된 컴퓨터, 프로세스 또는 스레드로만 제한합니다. 중단점 필터를 설정하려면 원하는 중단점을 마우스 오른쪽 버튼으로 클릭하고 상황에 맞는 메뉴에서 필터를 선택하세요. 그런 다음 열리는 중단점 필터 대화 상자에서 이 중단점 실행을 제한할 리소스를 지정합니다. 지정된 조건을 저장하려면 확인을 클릭하세요.

    중단점에서 작업을 지정합니다. When Hit 조건은 일괄 실행이 지정된 중단점에 도달할 때 수행할 작업을 지정합니다. 기본적으로 적중 횟수 조건과 중지 조건이 모두 만족되면 실행이 중단됩니다. 또는 미리 지정된 메시지가 표시될 수도 있습니다.

    중단점에 도달했을 때 수행할 작업을 지정하려면 중단점에 대한 빨간색 아이콘을 마우스 오른쪽 버튼으로 클릭하고 상황에 맞는 메뉴에서 적중할 때를 선택합니다. 중단점이 적중될 때 대화 상자가 열리면 수행할 작업을 선택합니다. 지정된 조건을 저장하려면 확인을 클릭하세요.

    Quick Watch 창을 사용하세요. QuickWatch 창에서 Transact-SQL 식의 값을 확인한 다음 조사식 창에 식을 저장할 수 있습니다. Quick Watch 창을 열려면 디버그 메뉴에서 Quick Watch를 선택합니다. 이 창의 표현식은 표현식 드롭다운 목록에서 선택하거나 이 필드에 입력할 수 있습니다.

    빠른 정보 도구 설명을 사용하세요. 코드 ID 위로 마우스를 가져가면 빠른 정보 도구가 팝업 창에 해당 선언을 표시합니다.

테이블 표현식테이블이 있을 것으로 예상되는 곳에 사용되는 하위 쿼리를 호출합니다. 테이블 표현식에는 두 가지 유형이 있습니다.

    파생 테이블;

    일반화된 테이블 표현식.

이 두 가지 형태의 테이블 표현식은 다음 하위 섹션에서 설명됩니다.

파생 테이블

파생 테이블쿼리의 FROM 절에 포함된 테이블 표현식입니다. 별칭이 알려지기 전에 SQL 변환기가 다른 문을 처리하기 때문에 열 별칭을 사용할 수 없는 경우 파생 테이블을 사용할 수 있습니다. 아래 예는 별칭이 알려지기 전에 다른 절이 처리되는 상황에서 열 별칭을 사용하려는 시도를 보여줍니다.

SampleDb를 사용하세요. SELECT MONTH(EnterDate) as enter_month FROM Works_on GROUP BY enter_month;

이 쿼리를 실행하려고 하면 다음 오류 메시지가 생성됩니다.

메시지 207, 수준 16, 상태 1, 줄 5 잘못된 열 이름 "enter_month"입니다. (메시지 207: 레벨 16, 상태 1, 라인 5 잘못된 열 이름 enter_month)

오류가 발생하는 이유는 SELECT 문의 해당 목록이 처리되기 전에 GROUP BY 절이 처리되고, 그룹 처리 시 enter_month 열 별칭을 알 수 없기 때문입니다.

이 문제는 FROM 절이 GROUP BY 절보다 먼저 실행되므로 GROUP BY 절 없이 이전 쿼리를 포함하는 파생 테이블을 사용하여 해결할 수 있습니다.

SampleDb를 사용하세요. SELECT enter_month FROM (SELECT MONTH(EnterDate) as enter_month FROM Works_on) AS m GROUP BY enter_month;

이 쿼리의 결과는 다음과 같습니다.

일반적으로 테이블 표현식은 테이블 이름이 나타날 수 있는 SELECT 문의 어느 위치에나 배치될 수 있습니다. (테이블 표현식의 결과는 항상 테이블이거나 특별한 경우 표현식입니다.) 아래 예에서는 SELECT 문의 선택 목록에서 테이블 표현식을 사용하는 방법을 보여줍니다.

이 쿼리의 결과:

일반 테이블 표현식

공통 테이블 표현식(OTB) Transact-SQL 언어에서 지원하는 명명된 테이블 식입니다. 공통 테이블 표현식은 다음 두 가지 유형의 쿼리에 사용됩니다.

    비재귀적;

    재귀적.

이 두 가지 유형의 요청은 다음 섹션에서 설명됩니다.

OTB 및 비재귀 쿼리

비재귀적 형태의 OTB는 파생 테이블 및 뷰의 대안으로 사용될 수 있습니다. 일반적으로 OTB는 다음과 같이 결정됩니다. WITH 절 WITH 절에 사용된 이름을 참조하는 추가 쿼리입니다. Transact-SQL에서 WITH 키워드의 의미는 모호합니다. 모호함을 피하기 위해 WITH 문 앞의 문은 세미콜론으로 끝나야 합니다.

AdventureWorks2012를 사용하세요. Sales.SalesOrderHeader WHERE TotalDue > (SELECT AVG(TotalDue) FROM Sales.SalesOrderHeader WHERE YEAR(OrderDate) = "2005") AND Freight > (SELECT AVG(TotalDue) FROM Sales.SalesOrderHeader WHERE YEAR(OrderDate) = "2005 ")/2.5;

이 예의 쿼리는 총 세금(TotalDue)이 모든 세금의 평균보다 크고 운송비(Freight)가 평균 세금의 40%보다 큰 주문을 선택합니다. 하위 쿼리를 두 번 작성해야 하므로 이 쿼리의 주요 속성은 길이입니다. 쿼리 구성의 양을 줄이는 한 가지 가능한 방법은 하위 쿼리가 포함된 뷰를 만드는 것입니다. 하지만 이 솔루션은 뷰를 생성한 다음 쿼리 실행이 완료된 후 삭제해야 하기 때문에 약간 복잡합니다. 더 나은 접근 방식은 OTB를 만드는 것입니다. 아래 예는 위의 쿼리 정의를 단축하는 비재귀 OTB의 사용을 보여줍니다.

AdventureWorks2012를 사용하세요. WITH 가격_계산(연도_2005) AS (SELECT AVG(TotalDue) FROM Sales.SalesOrderHeader WHERE YEAR(OrderDate) = "2005") SELECT SalesOrderID FROM Sales.SalesOrderHeader WHERE TotalDue > (SELECT year_2005 FROM Price_calc) AND Freight > (SELECT year_2005 FROM Price_calc ) /2.5;

비재귀 쿼리의 WITH 절 구문은 다음과 같습니다.

cte_name 매개변수는 결과 테이블을 정의하는 OTB 이름을 나타내고, column_list 매개변수는 테이블 표현식의 열 목록을 나타냅니다. (위 예에서 OTB는 Price_calc라고 하며 year_2005라는 하나의 열을 갖습니다.) inner_query 매개변수는 해당 테이블 표현식의 결과 집합을 지정하는 SELECT 문을 나타냅니다. 그런 다음 정의된 테이블 표현식을 external_query에서 사용할 수 있습니다. (위 예의 외부 쿼리는 OTB Price_calc 및 year_2005 열을 사용하여 이중 중첩 쿼리를 단순화합니다.)

OTB 및 재귀 쿼리

이 섹션에서는 복잡성이 증가한 자료를 제공합니다. 따라서 처음 읽을 때에는 건너뛰고 나중에 다시 읽는 것이 좋습니다. OTB는 자신에 대한 참조를 포함할 수 있으므로 OTB를 사용하여 재귀를 구현할 수 있습니다. 재귀 쿼리의 기본 OTB 구문은 다음과 같습니다.

cte_name 및 column_list 매개변수는 비재귀 쿼리에 대한 OTB와 동일한 의미를 갖습니다. WITH 절의 본문은 연산자로 결합된 두 개의 쿼리로 구성됩니다. 유니온 올. 첫 번째 쿼리는 한 번만 호출되며 재귀 결과가 누적되기 시작합니다. UNION ALL 연산자의 첫 번째 피연산자는 OTB를 참조하지 않습니다. 이 쿼리를 참조 쿼리 또는 소스라고 합니다.

두 번째 쿼리에는 OTB에 대한 참조가 포함되어 있으며 OTB의 재귀 부분을 나타냅니다. 이 때문에 재귀 멤버라고 불립니다. 재귀 부분에 대한 첫 번째 호출에서 OTB 참조는 참조 쿼리의 결과를 나타냅니다. 재귀 멤버는 첫 번째 쿼리 호출의 결과를 사용합니다. 그 후 시스템은 재귀 부분을 다시 호출합니다. 재귀 멤버에 대한 호출은 이전 호출이 빈 결과 세트를 반환할 때 중지됩니다.

UNION ALL 연산자는 현재 누적된 행과 재귀 멤버에 대한 현재 호출로 추가된 추가 행을 조인합니다. (UNION ALL 연산자가 있다는 것은 중복 행이 결과에서 제거되지 않음을 의미합니다.)

마지막으로, external_query 매개변수는 OTB가 두 멤버의 조인에 대한 모든 호출을 검색하는 데 사용하는 외부 쿼리를 정의합니다.

OTB의 재귀적 형태를 보여주기 위해 아래 예에 표시된 코드로 정의되고 채워진 비행기 테이블을 사용합니다.

SampleDb를 사용하세요. CREATE TABLE 비행기(ContainingAssembly VARCHAR(10), ContainedAssembly VARCHAR(10), QuantityContained INT, UnitCost DECIMAL(6,2)); INSERT INTO 비행기 값("비행기", "동체", 1, 10); INSERT INTO 비행기 값("비행기", "날개", 1, 11); INSERT INTO Airplane VALUES("비행기", "꼬리", 1, 12); INSERT INTO 비행기 값("동체", "살롱", 1, 13); INSERT INTO 비행기 값("동체", "조종석", 1, 14); INSERT INTO 비행기 값("동체", "코",1, 15); INSERT INTO 비행기 값("캐빈", NULL, 1,13); INSERT INTO 비행기 값("조종석", NULL, 1, 14); INSERT INTO 비행기 값("코", NULL, 1, 15); INSERT INTO 비행기 값("날개", NULL, 2, 11); INSERT INTO 비행기 값("꼬리", NULL, 1, 12);

비행기 테이블에는 4개의 열이 있습니다. ContainingAssembly 열은 어셈블리를 식별하고 ContainedAssembly 열은 해당 어셈블리를 구성하는 부품을 하나씩 식별합니다. 아래 그림은 가능한 항공기 유형과 해당 구성 부품을 그래픽으로 보여줍니다.

비행기 테이블은 다음 11개 행으로 구성됩니다.

다음 예에서는 WITH 절을 사용하여 각 빌드의 총 비용을 계산하는 쿼리를 정의합니다.

SampleDb를 사용하세요. WITH list_of_parts(assembly1, 수량, 비용) AS (SELECT ContainingAssembly, QuantityContained, UnitCost FROM 비행기 WHERE ContainedAssembly가 NULL인 경우 UNION ALL SELECT a.ContainingAssembly, a.QuantityContained, CAST(l.quantity * l.cost AS DECIMAL(6,2) ) FROM list_of_parts l, 비행기 a WHERE l.assemblies1 = a.ContainedAssembly) SELECT 어셈블리1 "부품", 수량 "수량", 비용 "가격" FROM list_of_parts;

WITH 절은 Assembly1, Quantity 및 Cost라는 세 개의 열로 구성된 list_of_parts라는 OTB 목록을 정의합니다. 예제의 첫 번째 SELECT 문은 재귀 프로세스의 첫 번째 단계 결과를 저장하기 위해 한 번만 호출됩니다. 예제 마지막 줄의 SELECT 문은 다음 결과를 표시합니다.

우리 각자는 정기적으로 다양한 데이터베이스를 접하고 사용합니다. 이메일 주소를 선택하면 데이터베이스 작업을 하는 것입니다. 데이터베이스는 검색 서비스, 은행에서 고객 데이터 등을 저장하는 데 사용됩니다.

그러나 데이터베이스를 지속적으로 사용함에도 불구하고 많은 소프트웨어 시스템 개발자들에게도 동일한 용어에 대한 서로 다른 해석으로 인해 여전히 사각지대가 많습니다. SQL 언어를 다루기 전에 기본 데이터베이스 용어에 대해 간략하게 정의하겠습니다. 그래서.

데이터 베이스 - 순서가 지정된 데이터 구조와 그 관계를 저장하기 위한 파일 또는 파일 모음입니다. 관리 시스템을 데이터베이스라고 부르는 경우가 많습니다. 이는 특정 형식의 정보 저장소일 뿐이며 다양한 DBMS와 함께 작동할 수 있습니다.

테이블 - 예를 들어 지난달 주문 목록과 같은 특정 특성에 따라 그룹화되어 문서가 저장되는 폴더를 상상해 보겠습니다. 이것은 컴퓨터에 있는 테이블입니다. 별도의 테이블에는 고유한 이름이 있습니다.

데이터 형식 - 별도의 열이나 행에 저장할 수 있는 정보 유형입니다. 이는 특정 형식의 숫자 또는 텍스트일 수 있습니다.

열과 행- 우리 모두는 행과 열이 있는 스프레드시트로 작업해 왔습니다. 모든 관계형 데이터베이스는 비슷한 방식으로 테이블과 작동합니다. 행을 레코드라고도 합니다.

기본 키- 테이블의 각 행에는 테이블을 고유하게 식별하는 하나 이상의 열이 있을 수 있습니다. 기본 키가 없으면 원하는 행을 업데이트, 변경, 삭제하기가 매우 어렵습니다.

SQL이란 무엇입니까?

SQL(영어 - 구조화된 쿼리 언어)은 데이터베이스 작업용으로만 개발되었으며 현재 널리 사용되는 모든 DBMS의 표준입니다. 언어 구문은 소수의 연산자로 구성되어 있으며 배우기 쉽습니다. 그러나 겉보기 단순성에도 불구하고 모든 크기의 데이터베이스를 사용하여 복잡한 작업에 대한 SQL 쿼리를 생성할 수 있습니다.

1992년부터 ANSI SQL이라는 일반적으로 인정되는 표준이 있었습니다. 이는 연산자의 기본 구문과 기능을 정의하며 ORACLE과 같은 모든 DBMS 시장 리더에서 지원됩니다. 하나의 짧은 기사에서 언어의 모든 기능을 고려하는 것은 불가능하므로 기본적인 SQL 쿼리만 간략하게 살펴보겠습니다. 예제는 언어의 단순성과 기능을 명확하게 보여줍니다.

  • 데이터베이스 및 테이블 생성;
  • 데이터 샘플링;
  • 레코드 추가;
  • 정보의 수정 및 삭제.

SQL 데이터 유형

데이터베이스 테이블의 모든 열은 동일한 데이터 유형을 저장합니다. SQL의 데이터 유형은 다른 프로그래밍 언어와 동일합니다.

우리는 테이블과 데이터베이스를 만듭니다

SQL에서 새 데이터베이스, 테이블 및 기타 쿼리를 생성하는 방법에는 두 가지가 있습니다.

  • DBMS 콘솔을 통해
  • 데이터베이스 서버에 포함된 대화형 관리 도구를 사용합니다.

운영자가 새 데이터베이스를 생성합니다. 데이터베이스 생성<наименование базы данных>; . 보시다시피 구문은 간단하고 간결합니다.

다음 매개변수와 함께 CREATE TABLE 문을 사용하여 데이터베이스 내에 테이블을 생성합니다.

  • 테이블 이름
  • 열 이름 및 데이터 유형

예를 들어, 다음 열이 포함된 상품 테이블을 만들어 보겠습니다.

테이블을 생성합니다:

테이블 만들기

(commodity_id CHAR(15) NOT NULL,

Vendor_id CHAR(15) NOT NULL,

상품_이름 CHAR(254) NULL,

상품 가격 DECIMAL(8,2) NULL,

상품_desc VARCHAR(1000) NULL);

테이블은 5개의 열로 구성됩니다. 이름 뒤에 데이터 유형이 오고, 열은 쉼표로 구분됩니다. 열 값은 빈 값(NULL)을 허용하거나 채워야(NOT NULL)할 수 있으며 이는 테이블이 생성될 때 결정됩니다.

테이블에서 데이터 검색

데이터 가져오기 연산자는 가장 일반적으로 사용되는 SQL 쿼리입니다. 정보를 얻으려면 그러한 테이블에서 무엇을 선택하고 싶은지 표시해야 합니다. 먼저 간단한 예를 들어보겠습니다.

상품에서 상품_이름 선택

SELECT 문 뒤에는 정보를 얻기 위해 열 이름을 지정하고 FROM은 테이블을 정의합니다.

쿼리 결과는 데이터베이스에 입력된 순서대로 Commodity_name 값이 있는 테이블의 모든 행입니다. 아무런 정렬도 없이. 결과를 정렬하는 데 추가 ORDER BY 절이 사용됩니다.

여러 필드를 쿼리하려면 다음 예와 같이 쉼표로 구분하여 나열하십시오.

상품에서 상품_ID, 상품_이름, 상품_가격을 선택하세요.

쿼리 결과로 행의 모든 ​​열 값을 얻을 수 있습니다. 이렇게 하려면 "*" 기호를 사용하세요.

SELECT * 상품에서

  • 추가로 SELECT는 다음을 지원합니다.
  • 데이터 정렬(ORDER BY 연산자)
  • 조건에 따른 선택 (WHERE)
  • 그룹화 용어(GROUP BY)

줄 추가

테이블에 행을 추가하려면 INSERT 연산자를 사용하는 SQL 쿼리가 사용됩니다. 추가는 세 가지 방법으로 수행할 수 있습니다.

  • 새로운 전체 라인을 추가하십시오;
  • 문자열의 일부;
  • 쿼리 결과.

전체 행을 추가하려면 테이블 이름과 새 행의 열(필드) 값을 지정해야 합니다. 예는 다음과 같습니다.

INSERT INTO Commodity VALUES("106", "50", "Coca-Cola", "1.68", "No Alcogol ,)

이 예에서는 테이블에 새 제품을 추가합니다. 각 열의 VALUES 뒤에 값이 나열됩니다. 해당 열에 해당하는 값이 없으면 NULL을 지정해야 합니다. 열에는 테이블 생성 시 지정한 순서대로 값이 채워집니다.

행의 일부만 추가하는 경우 다음 예와 같이 열 이름을 명시적으로 지정해야 합니다.

상품에 삽입(상품_ID, 공급업체_ID, 상품_이름)

VALUES("106 ", '50", "코카콜라",)

제품 식별자, 공급업체 및 이름만 입력하고 나머지 필드는 비워 두었습니다.

쿼리 결과 추가

INSERT는 주로 행을 추가하는 데 사용되지만 SELECT 문의 결과를 추가하는 데에도 사용할 수 있습니다.

데이터 변경

데이터베이스 테이블의 필드 정보를 변경하려면 UPDATE 문을 사용해야 합니다. 연산자는 두 가지 방법으로 사용할 수 있습니다.

  • 테이블의 모든 행이 업데이트됩니다.
  • 특정 라인에만 해당됩니다.

업데이트는 세 가지 주요 요소로 구성됩니다.

  • 변경이 필요한 테이블;
  • 필드 이름 및 새 값
  • 변경할 행을 선택하는 조건입니다.

예를 살펴보겠습니다. ID=106인 제품의 가격이 변경되었으므로 이 행을 업데이트해야 한다고 가정해 보겠습니다. 우리는 다음 연산자를 작성합니다:

업데이트 상품 SET 상품_가격 = "3.2" WHERE 상품_ID = "106"

업데이트가 수행될 Commodity의 경우 테이블 이름을 지정한 다음 SET 이후에 열의 새 값을 지정하고 WHERE에 필요한 ID 값을 지정하여 원하는 레코드를 찾았습니다.

여러 열을 변경하려면 SET 문 뒤에 쉼표로 구분된 여러 열-값 쌍이 옵니다. 제품 이름과 가격이 업데이트되는 예를 살펴보겠습니다.

UPDATE Commodity SET 상품_이름='환타', 상품_가격 = "3.2" WHERE 상품_ID = "106"

열의 정보를 제거하려면 테이블 구조에서 허용하는 경우 해당 열에 NULL 값을 할당할 수 있습니다. NULL은 정확하게 "no" 값이며 텍스트나 숫자 형태의 0이 아니라는 점을 기억해야 합니다. 제품 설명을 삭제해 보겠습니다.

업데이트 상품 세트 상품_desc = NULL WHERE 상품_ID = "106"

행 제거

테이블의 행을 삭제하는 SQL 쿼리는 DELETE 문을 사용하여 실행됩니다. 두 가지 사용 사례가 있습니다.

  • 테이블의 특정 행이 삭제됩니다.
  • 테이블의 모든 행이 삭제됩니다.

테이블에서 한 행을 삭제하는 예:

상품_ID = "106"인 상품에서 삭제

DELETE FROM 후에 행이 삭제될 테이블의 이름을 나타냅니다. WHERE 절에는 삭제할 행을 선택하는 조건이 포함되어 있습니다. 이 예에서는 ID=106인 제품군을 삭제합니다. WHERE를 지정하는 것은 매우 중요합니다. 이 문을 생략하면 테이블의 모든 행이 삭제됩니다. 이는 필드 값을 변경하는 경우에도 적용됩니다.

DELETE 문은 열 이름이나 메타 문자를 지정하지 않습니다. 행을 완전히 삭제하지만 단일 열을 삭제할 수는 없습니다.

Microsoft Access에서 SQL 사용

일반적으로 테이블, 데이터베이스를 생성하고 데이터베이스의 데이터를 관리, 수정, 분석하고 복잡한 SQL 문을 작성하고 즉시 실행할 수 있는 편리한 대화형 쿼리 디자이너(쿼리 디자이너)를 통해 SQL Access 쿼리를 구현하는 데 대화형으로 사용됩니다.

서버 액세스 모드도 지원됩니다. 이 모드에서는 Access DBMS를 모든 ODBC 데이터 소스에 대한 SQL 쿼리 생성기로 사용할 수 있습니다. 이 기능을 사용하면 Access 응용 프로그램이 모든 형식과 상호 작용할 수 있습니다.

SQL 확장

SQL 쿼리에는 루프, 분기 등과 같은 절차적 프로그래밍 언어의 모든 기능이 없기 때문에 DBMS 제조업체에서는 고급 기능을 갖춘 자체 SQL 버전을 개발하고 있습니다. 우선, 이는 절차적 언어의 저장 프로시저와 표준 연산자를 지원합니다.

언어의 가장 일반적인 방언:

  • 오라클 데이터베이스 - PL/SQL
  • 인터베이스, 파이어버드 - PSQL
  • Microsoft SQL Server - Transact-SQL
  • PostgreSQL - PL/pgSQL.

인터넷상의 SQL

MySQL DBMS는 무료 GNU General Public License에 따라 배포됩니다. 맞춤형 모듈을 개발할 수 있는 상용 라이센스가 있습니다. XAMPP, WAMP, LAMP 등 가장 널리 사용되는 인터넷 서버 어셈블리에 구성 요소로 포함되어 있으며 인터넷에서 애플리케이션을 개발하는 데 가장 널리 사용되는 DBMS입니다.

Sun Microsystems에서 개발했으며 현재 Oracle Corporation에서 지원합니다. 최대 64TB 크기의 데이터베이스, SQL:2003 구문 표준, 데이터베이스 복제 및 클라우드 서비스가 지원됩니다.

SQL - 구조화된 쿼리 언어.
이번 리뷰에서는 가장 일반적인 유형의 SQL 쿼리를 살펴보겠습니다.
SQL 표준이 정의되었습니다. 안시(미국 국립표준협회).
SQL은 특히 관계형 데이터베이스를 겨냥한 언어입니다.

SQL 파티셔닝:


DDL
(데이터 정의 언어) - ANSI의 소위 스키마 설명 언어(Schema Description Language)는 데이터베이스에 개체(테이블, 인덱스, 뷰 등)를 생성하는 명령으로 구성됩니다.
DML(데이터 조작 언어)는 주어진 시간에 테이블에 어떤 값이 표시되는지 결정하는 명령 집합입니다.
DCD(데이터 관리 언어)은 사용자가 특정 작업을 수행하도록 허용할지 여부를 결정하는 기능으로 구성됩니다. 이는 ANSI DDL의 일부입니다. 이 이름들을 잊지 마세요. 이는 다른 언어가 아니라 기능별로 그룹화된 SQL 명령 섹션입니다.

데이터 유형:

SQL Server - 데이터 유형

설명

빅인트 (정수 8)

빅인트 (정수 8)

바이너리(N)

바이너리(n) 또는 영상

성격
(동의어 )

국가의 성격또는 ntext

성격이 다양하다(동의어 char 다양한 varchar)

민족적 성격이 다양하다또는 ntext

날짜 시간

날짜 시간

소수

일명 숫자

배정밀도

배정밀도

정수 (정수 4) (동의어: 정수)

정수 (정수 4)

국민적 성격(동의어: 국민적 성격, nchar)

국민적 성격

숫자(동의어: 소수, 12월)

민족적 성격이 다양하다(동의어: 전국 문자 다양, nvarchar)

국민적 성격이 다양하다

작은 날짜 시간

날짜 시간

작은 (정수 2)

작은 (정수 2)

소액

sql_variant

더 이상 지원되지 않음

엔텍스트
SQL Server 2005부터는 사용이 권장되지 않습니다.

타임스탬프

지원되지 않음

작은 (정수 1)

작은 (정수 1)

고유 식별자

고유 식별자

바르바이너리(N)

바르바이너리(n) 또는 영상

작은 날짜 시간

날짜 시간

작은 (정수 2)

작은 (정수 2)

소액

sql_variant

지원되지 않음

타임스탬프

지원되지 않음

작은 (정수 1)

작은 (정수 1)

고유 식별자

고유 식별자

바르바이너리(N)

바르바이너리(n) 또는 영상

SQL Server 2000의 데이터 유형 테이블

요청이란 무엇입니까?

요구데이터베이스 프로그램에 제공하는 명령입니다. 쿼리는 DML 언어의 일부입니다. 모든 SQL 쿼리는 단일 명령으로 구성됩니다. 매우 복잡한 평가 및 데이터 조작을 수행하려면 명령을 확장해야 하기 때문에 이 명령의 구조는 믿을 수 없을 정도로 간단합니다.

선택 명령:

선택하다"선택"은 테이블에서 데이터를 선택하는 데 가장 자주 사용되는 명령입니다.
SELECT를 사용하는 쿼리 유형:

users_base에서 ID, user_name, 도시, 생년월일을 선택하세요.

이러한 쿼리는 users_base 테이블에서 SELECT 명령 뒤에 쉼표로 구분된 지정된 열의 모든 값을 표시합니다. 또한 모든 열을 하나의 문자(예: *)로 표시할 수 있습니다. SELECT * FROM 사용자_베이스; - 이러한 쿼리는 테이블의 모든 데이터를 표시합니다.

SELECT 명령 구조:

SELECT(쿼리에서 표시해야 하는 쉼표로 구분된 열 이름) FROM(데이터베이스의 테이블 이름)
- 가장 간단한 요청 유형입니다. 편리한 데이터 검색을 위한 추가 명령이 있습니다(아래 "기능" 참조).

DML 명령:

세 가지 DML(Data Manipulation Language) 명령을 사용하여 필드에 값을 배치하고 제거할 수 있습니다.
끼워 넣다(끼워 넣다)
업데이트(업데이트, 수정),
삭제(삭제)

삽입 명령:

INSERT INTO users_base (사용자 이름, 도시, 생일) VALUES ('Alexander', 'Rostov', '06/20/1991');

INSERT 명령에는 접두사 INTO(in to)가 붙은 다음 괄호 안에 데이터를 삽입해야 하는 열의 이름이 있고 VALUES 명령(값)이 오고 괄호 안에 값이 차례로 표시됩니다( 열과 함께 값의 순서를 관찰하는 데 필요한 경우 값은 지정한 열과 동일한 순서여야 합니다.

업데이트 명령:

UPDATE users_base SET user_name = '알렉세이';

UPDATE 명령은 테이블의 값을 업데이트합니다. 먼저 UPDATE 명령 자체가 나오고, 그 다음에는 테이블 이름이 오고, SET 명령(세트) 뒤에는 열 이름과 해당 값이 따옴표로 묶입니다(값이 문자열 형식이면 따옴표가 붙고, 숫자 값이고 열이면 따옴표가 붙습니다). vchar 데이터 유형이나 다른 문자열 유형에 연결되어 있지 않으면 따옴표는 의미가 없습니다.)

삭제 명령:

users_base에서 삭제 WHERE user_name = 'Vasily';

DELETE 명령은 전체 행을 삭제하고 WHERE 기준을 사용하여 행을 식별합니다. 이 경우 이 쿼리는 user_name 열 값이 Vasily인 모든 행을 삭제합니다. WHERE 기준과 다른 기준에 대해서는 잠시 후에 이야기하겠습니다.

기준, 기능, 조건 등 SQL에서 우리에게 도움이 되는 것:

WHERE 절은 테이블의 모든 행에 대해 조건이 true 또는 false일 수 있는 조건자를 설정할 수 있는 SELECT 명령 및 기타 DML 명령의 절입니다. 이 명령은 테이블에서 이 명령문이 참인 행만 검색합니다.
예:
SELECT id, city, birthday_day FROM users_base WHERE user_name = 'Alexey';- 이러한 쿼리는 WHERE 조건과 일치하는 행, 즉 user_name 열에 Alexey 값이 있는 모든 행만 표시합니다.

ORDER BY - 선택한 행을 정렬하는 조건입니다. ASC와 DESC의 두 가지 기준이 있습니다. ASC(A에서 Z까지 또는 0에서 9까지 정렬)

DESC(ASC의 반대).
예:
사용자_베이스에서 ID, 도시, 생년월일을 선택하세요. ORDER BY 사용자_이름 ASC; - 이러한 쿼리는 user_name 열을 기준으로 A부터 Z(A-Z, 0-9)까지 정렬된 값을 표시합니다.

이 조건은 WHERE 절과 함께 사용할 수도 있습니다.
예:
SELECT id, city, birthday_day FROM users_base WHERE user_name = 'Alexey' ORDER BY id ASC;

DISTINCT는 SELECT 절에서 이중 값을 제거하는 방법을 제공하는 인수입니다. 저것들. user_name과 같이 열에 중복된 값이 있는 경우 DISTINCT는 하나의 값만 표시합니다. 예를 들어 데이터베이스에 Alexey라는 이름의 사람이 2명 있으면 DISTINCT 함수를 사용하는 쿼리는 하나의 값만 표시합니다. 가장 먼저 접하게 되는...
예:
users_base에서 DISTINCT user_name을 선택합니다.- 이러한 쿼리는 user_name 열의 모든 레코드 값을 표시하지만 반복되지는 않습니다. 무한한 수의 반복 값이 있으면 표시되지 않습니다.

AND - 두 개의 부울(A AND B 형식)을 인수로 사용하고 둘 다 참인지 여부를 참과 비교하여 평가합니다.
예:
SELECT * FROM users_base WHERE city = 'Rostov' AND user_name = 'Alexander';- 도시 이름이 한 줄에 나타나는 테이블의 모든 값을 표시합니다(이 경우 Rostov 및 사용자 이름 Alexander.

OR - 두 개의 부울(A OR B 형식)을 인수로 사용하고 그 중 하나가 올바른지 평가합니다.

SELECT * FROM users_base WHERE city = '로스토프' OR user_name = 'Alexander';- Rostov 도시 이름 또는 사용자 이름 Alexander가 줄에 나타나는 테이블의 모든 값을 표시합니다.

NOT - 단일 부울(NOT A 형식)을 인수로 사용하고 해당 값을 false에서 true로 또는 true에서 false로 변경합니다.
SELECT * FROM users_base WHERE city = 'Rostov' OR NOT user_name = 'Alexander';- 도시 Rostov의 이름이 한 줄에 표시되거나 사용자 이름이 정확히 Alexander가 아닌 테이블의 모든 값을 표시합니다.

IN - 주어진 값이 포함될 수도 있고 포함되지 않을 수도 있는 값 집합을 정의합니다.
SELECT * FROM users_base WHERE city IN ('블라디보스토크', '로스토프');- 이러한 쿼리는 도시 열에 지정된 도시 이름이 포함된 테이블의 모든 값을 표시합니다.

Between은 IN 연산자와 유사합니다. IN과 마찬가지로 집합의 숫자로 정의하는 것과 달리 BETWEEN은 조건자가 true가 되기 위해 값이 감소해야 하는 범위를 정의합니다.
SELECT * FROM users_base WHERE id는 1과 10 사이입니다.- ID 열에 1에서 10 사이의 범위에 있는 테이블의 모든 값을 표시합니다.

COUNT - 쿼리가 선택한 필드의 행 번호 또는 NULL이 아닌 값을 생성합니다.
users_base에서 SELECT COUNT (*);- 이 테이블의 행 수를 표시합니다.
SELECT COUNT (DISTINCT user_name) FROM users_base ;- 사용자 이름이 포함된 줄 수를 표시합니다(반복되지 않음).

SUM - 주어진 필드에 대해 선택된 모든 값의 산술 합계를 생성합니다.
users_base에서 SUM(id) 선택;- id 열의 모든 행 값의 합을 표시합니다.

AVG - 이 필드에서 선택한 모든 값의 평균을 구합니다.
users_base에서 AVG(id)를 선택합니다.- ID 열에서 선택한 모든 값의 평균을 표시합니다.

MAX - 이 필드에 대해 선택된 모든 값 중 가장 큰 값을 생성합니다.

MIN - 이 필드에 대해 선택된 모든 값 중 가장 작은 값을 생성합니다.

테이블 생성:

CREATE TABLE users_base (id 정수, user_name 텍스트, 도시 텍스트, birthday_day 날짜/시간);- 이러한 명령을 실행하면 내가 예시로 제시한 테이블이 생성됩니다... 여기서는 모든 것이 간단합니다. CREATE TABLE 명령과 생성하려는 테이블 이름을 괄호 안에 입력하고, 쉼표로 구분된 열 이름과 해당 데이터 유형입니다. 이는 SQL에서 테이블을 생성하는 표준 방법입니다. 이제 SQL Server 2005에서 테이블을 생성하는 예를 들어 보겠습니다.

ANSI_NULLS를 ON으로 설정
가다
QUOTED_IDENTIFIER를 켜짐으로 설정
가다
존재하지 않는 경우(SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N."") AND 입력(N"U"))
시작하다
테이블 만들기 .(

NULL이 아님,
NULL이 아님,
NULL이 아님,
기본 키 클러스터형
A.S.C.



가다
ANSI_NULLS를 ON으로 설정
가다
QUOTED_IDENTIFIER를 켜짐으로 설정
가다
존재하지 않는 경우(SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N."") AND 입력(N"U"))
시작하다
테이블 만들기 .(
IDENTITY(1,1)은 NULL이 아닙니다.
없는,
없는,
기본 키 클러스터형
A.S.C.
) (IGNORE_DUP_KEY = OFF) ON
) ON TEXTIMAGE_ON

가다
ANSI_NULLS를 ON으로 설정
가다
QUOTED_IDENTIFIER를 켜짐으로 설정
가다
존재하지 않는 경우(SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N."") AND 입력(N"U"))
시작하다
테이블 만들기 .(
IDENTITY(1,1)은 NULL이 아닙니다.
없는,
없는,
기본 키 클러스터형
A.S.C.
) (IGNORE_DUP_KEY = OFF) ON
) 에


SQL Server 2005의 구문은 또 다른 주제입니다. 저는 단지 SQL 프로그래밍의 기본 사항을 설명했다는 점을 보여주고 싶었습니다. 기본 사항만 알면 스스로 최고 수준에 도달할 수 있습니다.

이 주제에 관해 질문이 있으시면 저에게 편지를 보내주세요.