자습서: Azure SQL Database에서 관계형 데이터베이스 디자인
적용 대상: Azure SQL Database
Azure SQL 데이터베이스는 Microsoft Azure의 관계형 DBaaS(Database-As-A-Service)입니다. 이 자습서에서는 다음을 하는 방법을 알아볼 수 있습니다.
- 데이터베이스에 연결
- Table SQL 명령 테이블 만들기
- BCP를 사용하여 데이터 대량 로드
- T-SQL 명령을 사용한 데이터 쿼리
참고 항목
이 자습서에서는 Azure SQL Database를 사용하고 있습니다. 탄력적 풀 또는 SQL Managed Instance에서 풀링된 데이터베이스를 사용할 수도 있습니다. SQL Managed Instance에 대한 연결은 SQL Managed Instance 빠른 시작을 참조하세요. 빠른 시작: Azure SQL Managed Instance에 연결하도록 Azure VM 구성 및 빠른 시작: 온-프레미스에서 Azure SQL Managed Instance로의 지점 및 사이트 간 연결 구성.
필수 조건
- SQL Server Management Studio (최신 버전) 또는 Azure Portal 쿼리 편집기 for Azure SQL 데이터베이스를 사용합니다.
- ADS(Azure Data Studio)를 사용하는 이 동일한 자습서를 따를 수도 있습니다.
- BCP 및 SQLCMD(최신 버전).
- Azure 구독이 없는 경우 시작하기 전에 체험 계정을 만듭니다.
- Azure SQL Database를 아직 만들지 않은 경우 빠른 시작: 단일 데이터베이스 만들기를 방문하세요. 제품을 사용하여 Azure SQL 데이터베이스 무료 체험(미리 보기) 옵션을 찾습니다.
Azure Portal에 로그인
Azure Portal에 로그인합니다.
서버 수준 IP 방화벽 규칙 만들기
Azure SQL Database는 서버 수준에서 IP 방화벽을 만듭니다. 방화벽 규칙에서 특정 IP가 방화벽을 통과하도록 허용하지 않는 한 이 방화벽은 외부 애플리케이션과 도구가 서버 및 서버의 데이터베이스에 연결하지 못하게 차단합니다. 데이터베이스에 대한 외부 연결을 사용하려면 먼저 IP 주소(또는 IP 주소 범위)에 대한 IP 방화벽 규칙을 추가해야 합니다. 다음 단계에 따라 서버 수준 IP 방화벽 규칙을 만듭니다.
중요
Azure SQL Database는 포트 1433을 통해 통신합니다. 회사 네트워크 내에서 이 서비스에 연결을 시도하면 포트 1433을 통한 아웃바운드 트래픽을 네트워크 방화벽에서 허용하지 않을 수 있습니다. 이 경우 관리자가 1433 포트를 열지 않으면 데이터베이스에 연결할 수 없습니다.
배포가 완료되면 Azure Portal 메뉴에서 SQL 데이터베이스를 선택하거나아무 페이지에서 SQL 데이터베이스를 선택합니다.
SQL 데이터베이스 페이지에서 데이터베이스를 선택합니다. 데이터베이스에 대한 개요 페이지가 열리고, 정규화된 서버 이름(예:
contosodatabaseserver01.database.windows.net
)을 표시하고, 추가 구성 옵션을 제공합니다.SQL Server Management Studio에서 서버 및 데이터베이스에 연결하는 데 사용할 수 있도록 이 정규화된 서버 이름을 복사합니다.
설정에서 네트워킹을 선택합니다. 퍼블릭 액세스 탭을 선택한 다음, 공용 네트워크 액세스에서 선택한 네트워크를 선택하여 방화벽 규칙 섹션을 표시합니다.
도구 모음에서 클라이언트 IPv4 추가를 선택하여 현재 IP 주소를 새 IP 방화벽 규칙에 추가합니다. IP 방화벽 규칙은 단일 IP 주소 또는 IP 주소의 범위에 1433 포트를 열 수 있습니다.
저장을 선택합니다. 서버의 1433 포트를 여는 현재 IP 주소에 서버 수준 IP 방화벽 규칙이 생성됩니다.
확인을 선택한 다음, 방화벽 설정 페이지를 닫습니다.
이제 IP 주소가 IP 방화벽을 통과할 수 있습니다. 이제 SQL Server Management Studio 또는 원하는 다른 도구를 사용하여 데이터베이스에 연결할 수 있습니다. 이전에 만든 서버 관리자 계정을 사용해야 합니다.
중요
기본적으로 모든 Azure 서비스에는 SQL Database IP 방화벽을 통한 액세스가 사용됩니다. 이 페이지에서 끄기를 선택하여 모든 Azure 서비스에 대해 사용하지 않도록 설정합니다.
데이터베이스에 연결
Azure SQL 데이터베이스는 논리 SQL 서버 내에 있습니다. 로그인을 사용하여 논리 SQL Server master
에 연결한 다음 데이터베이스에 연결할 수 있습니다. 또는 포함된 사용자를 사용하여 Azure SQL 데이터베이스에 직접 연결할 수 있습니다.
SQL Server Management Studio를 사용하여 Azure SQL 데이터베이스 서버에 연결합니다.
SQL Server Management Studio를 엽니다.
서버에 연결 대화 상자에 다음 정보를 입력합니다. 다른 옵션은 기본값으로 둡니다.
설정 제안 값 설명 서버 유형 데이터베이스 엔진 이 값은 필수입니다. 서버 이름 정규화된 Azure SQL Database 논리 서버 이름 예들 들어 your_logical_azure_sql_server.database.windows.net
입니다.인증 SQL Server 인증 SQL Server 인증을 사용하여 사용자 이름과 암호를 입력합니다. Microsoft Entra 인증 Microsoft Entra ID를 사용하여 연결하려면 Microsoft Entra 서버 관리자인 경우 Microsoft Entra MFA를 선택합니다. 자세한 내용은 Azure SQL에서 Microsoft Entra 인증 구성 및 관리를 참조하세요. 로그인 서버 관리자 계정 SQL Server 인증을 사용하는 경우 서버를 만들 때 지정한 계정입니다. 암호 서버 관리자 계정의 암호 SQL Server 인증을 사용하는 경우 서버를 만들 때 지정한 암호입니다. 옵션을 선택하여 서버에 연결 대화 상자를 펼칩니다. 데이터베이스에 연결 섹션에서 yourDatabase를 입력하여 이 데이터베이스에 연결합니다.
연결을 선택합니다. SSMS에서 개체 탐색기 창이 열립니다.
개체 탐색기에서 데이터베이스를 확장한 다음, yourDatabase를 확장하여 샘플 데이터베이스에 있는 개체를 봅니다.
개체 탐색기에서 yourDatabase를 마우스 오른쪽 단추로 클릭하고 새 쿼리를 선택합니다. 데이터베이스에 연결된 비어 있는 쿼리 창이 열립니다.
데이터베이스에 테이블 만들기
Transact-SQL을 사용하여 대학의 학생 관리 시스템을 모델링하는 네 개의 테이블 만들기:
Person
Course
Student
Credit
다음 다이어그램에서는 이러한 테이블 간의 관계를 보여줍니다. 이러한 테이블 중 일부는 다른 테이블의 열을 참조합니다. 예를 들어 Student
테이블은 Person
테이블의 PersonId
열을 참조합니다. 다이어그램에 대해 학습하여 이 자습서에서 테이블 간의 관계를 이해합니다. 효과적인 정규화된 데이터베이스 테이블을 만드는 방법에 대한 자세한 내용은 정규화된 데이터베이스 설계를 참조하세요. 데이터 형식을 선택하는 방법은 데이터 형식을 참조하세요. 기본적으로 테이블은 기본 dbo
스키마에서 만듭니다. 예를 들어 테이블의 두 부분으로 된 이름은 dbo.Person
이 됩니다.
참고 항목
또한 SQL Server Management Studio의 테이블 디자이너를 사용하여 테이블을 만들고 디자인할 수도 있습니다.
쿼리 창에서 다음 T-SQL 쿼리를 실행하여 데이터베이스에 4개의 테이블을 만듭니다.
-- Create Person table CREATE TABLE Person ( PersonId INT IDENTITY PRIMARY KEY, FirstName NVARCHAR(128) NOT NULL, MiddelInitial NVARCHAR(10), LastName NVARCHAR(128) NOT NULL, DateOfBirth DATE NOT NULL ) -- Create Student table CREATE TABLE Student ( StudentId INT IDENTITY PRIMARY KEY, PersonId INT REFERENCES Person (PersonId), Email NVARCHAR(256) ) -- Create Course table CREATE TABLE Course ( CourseId INT IDENTITY PRIMARY KEY, Name NVARCHAR(50) NOT NULL, Teacher NVARCHAR(256) NOT NULL ) -- Create Credit table CREATE TABLE Credit ( StudentId INT REFERENCES Student (StudentId), CourseId INT REFERENCES Course (CourseId), Grade DECIMAL(5,2) CHECK (Grade <= 100.00), Attempt TINYINT, CONSTRAINT [UQ_studentgrades] UNIQUE CLUSTERED ( StudentId, CourseId, Grade, Attempt ) )
새로 만든 4개의 테이블을 보려면 개체 탐색기에서 yourDatabase 아래에 있는 테이블 노드를 확장합니다.
테이블에 데이터 로드
로컬 워크스테이션 다운로드 폴더에 sampleData라는 폴더를 만들어 데이터베이스의 샘플 데이터를 저장합니다. 예들 들어
c:\Users\<your user name>\Downloads
입니다.다음 링크를 마우스 오른쪽 단추로 클릭하고 sampleData 폴더에 샘플 데이터를 저장합니다.
새 Windows 명령 프롬프트 창을 열고 sampleData 폴더로 이동합니다. 예들 들어
cd c:\Users\<your user name>\Downloads
입니다.다음
bcp
명령을 실행하여 테이블에 샘플 데이터를 삽입하고 서버, 데이터베이스, 사용자 및 암호 값을 해당 환경에 맞는 값으로 바꿉니다.bcp Course in SampleCourseData -S <server>.database.windows.net -d <database> -U <user> -P <password> -q -c -t "," bcp Person in SamplePersonData -S <server>.database.windows.net -d <database> -U <user> -P <password> -q -c -t "," bcp Student in SampleStudentData -S <server>.database.windows.net -d <database> -U <user> -P <password> -q -c -t "," bcp Credit in SampleCreditData -S <server>.database.windows.net -d <database> -U <user> -P <password> -q -c -t ","
이제 앞에서 만든 테이블에 샘플 데이터가 로드되었습니다.
쿼리 데이터
다음 T-SQL 쿼리를 실행하여 데이터베이스 테이블에서 정보를 검색합니다.
이 첫 번째 쿼리는 4개의 테이블을 모두 조인하여 'Dominick Pope' 선생님의 학생 중에 성적이 75%보다 높은 학생을 찾습니다. 쿼리 창에서 다음 T-SQL 쿼리를 실행합니다.
-- Find the students taught by Dominick Pope who have a grade higher than 75%
SELECT person.FirstName, person.LastName, course.Name, credit.Grade
FROM Person AS person
INNER JOIN Student AS student ON person.PersonId = student.PersonId
INNER JOIN Credit AS credit ON student.StudentId = credit.StudentId
INNER JOIN Course AS course ON credit.CourseId = course.courseId
WHERE course.Teacher = 'Dominick Pope'
AND Grade > 75;
이 쿼리는 4개의 테이블을 모두 조인하여 'Noe Coleman'이 등록한 적이 있는 과정을 찾습니다. 쿼리 창에서 다음 T-SQL 쿼리를 실행합니다.
-- Find all the courses in which Noe Coleman has ever enrolled
SELECT course.Name, course.Teacher, credit.Grade
FROM Course AS course
INNER JOIN Credit AS credit ON credit.CourseId = course.CourseId
INNER JOIN Student AS student ON student.StudentId = credit.StudentId
INNER JOIN Person AS person ON person.PersonId = student.PersonId
WHERE person.FirstName = 'Noe'
AND person.LastName = 'Coleman';
팁
SQL 쿼리 작성에 대한 자세한 내용을 위해 자습서: Transact-SQL 문 작성을 방문하세요.
관련 콘텐츠
- 자습서: ADS(Azure Data Studio)를 사용하여 Azure SQL Database에서 관계형 데이터베이스 디자인
- Azure Database 무료 체험하기(미리 보기)
- Azure SQL Database의 새로운 기능
- 콘텐츠 참조 구성 및 관리 - Azure SQL Database
- Azure SQL Database 비용 계획 및 관리
팁
.NET 애플리케이션 개발을 시작할 준비가 되셨나요? 다음 평가판 Learn 모듈을 사용하면 간단한 데이터베이스 생성을 포함하여 Azure SQL Database를 쿼리하는 ASP.NET 애플리케이션을 개발하고 구성하는 방법을 배울 수 있습니다.
다음 단계
Visual Studio 및 C#을 사용하여 데이터베이스를 설계하는 방법에 대한 자세한 내용을 알아보려면 다음 자습서로 이동합니다.