연습 - 데이터베이스에 연결하고 샘플 데이터 추가
데이터베이스를 앱에 연결하기 전에 연결할 수 있는지 확인하고, 기본 테이블을 추가하고, 샘플 데이터로 작업을 수행할 수 있습니다.
Microsoft는 Azure SQL 데이터베이스에 대한 인프라, 소프트웨어 업데이트 및 패치를 유지 관리합니다. 기타 모든 SQL Server 설치와 마찬가지로 Azure SQL 데이터베이스를 관리할 수 있습니다. 예를 들어, Visual Studio, SQL Server Management Studio, Azure Data Studio 또는 기타 도구를 사용하여 Azure SQL Database를 관리할 수 있습니다.
데이터베이스에 액세스하고 앱에 연결하는 방법은 사용자가 결정합니다. 데이터베이스 작업 환경을 쌓기 위해 포털에서 직접 데이터베이스에 연결하고, 테이블을 만들고, 몇 가지 기본 CRUD 작업을 실행해 보겠습니다. 여기서 알아볼 수 있는 내용은 다음과 같습니다.
- Cloud Shell의 정의 및 포털에서 액세스하는 방법
- Azure CLI에서 연결 문자열을 비롯한 데이터베이스에 대한 정보에 액세스하는 방법
sqlcmd
를 사용하여 데이터베이스에 연결하는 방법- 기본 테이블 및 일부 샘플 데이터를 사용하여 데이터베이스를 초기화하는 방법
Azure Cloud Shell은 무엇인가요?
Azure Cloud Shell은 Azure 리소스를 관리 및 개발하기 위한 브라우저 기반 셸 환경입니다. Cloud Shell을 클라우드에서 실행되는 대화형 콘솔로 생각하세요.
내부적으로, Cloud Shell은 Linux에서 실행됩니다. 그러나 Linux 또는 Windows 환경을 선호하는지에 따라 선택할 수 있는 두 가지 환경이 있습니다. Bash와 PowerShell의 두 가지 환경 중에 선택할 수 있습니다.
Cloud Shell은 어디에서나 액세스할 수 있습니다. 포털 외에도 shell.azure.com, Azure 모바일 앱 또는 Visual Studio Code에서 Cloud Shell에 액세스할 수 있습니다.
Cloud Shell에는 인기 있는 도구 및 텍스트 편집기가 포함되어 있습니다. 다음은 이 연습에서 사용하는 세 가지 도구인 az
, jq
및 sqlcmd
유틸리티에 대해 간략히 살펴보겠습니다.
az
는 Azure CLI라고도 합니다. Azure 리소스로 작업하기 위한 명령줄 인터페이스입니다. 이 인터페이스를 사용하여 연결 문자열을 포함하여 데이터베이스에 대한 정보를 가져옵니다.jq
는 명령줄 JSON 파서입니다.az
명령의 출력을 이 도구로 파이프하여 JSON 출력에서 중요한 필드를 추출합니다.sqlcmd
를 사용하면 SQL Server에서 명령문을 실행할 수 있습니다.sqlcmd
를 사용하여 Azure SQL Database와의 대화형 세션을 만듭니다.
Azure SQL 데이터베이스에 대한 정보 가져오기
데이터베이스에 연결하기 전에 해당 데이터베이스가 존재하고 온라인 상태인지 확인하는 것이 좋습니다.
여기서는 az
유틸리티를 사용하여 데이터베이스를 나열하고, 최대 크기 및 상태를 비롯한 Logistics 데이터베이스 관련 정보를 표시합니다.
shell.azure.com을 방문 하거나 Azure Portal의 Azure Portal 전역 컨트롤 창에서 Cloud Shell 단추를 선택합니다.
옵션이 제공된 경우 이 학습 연습에 대해 Bash를 선택합니다.
시작 팝업에서 스토리지 계정이 필요하지 않음을 선택합니다. 구독 드롭다운에서 구독을 선택합니다. 적용을 선택합니다. 새 Cloud Shell 터미널이 로드됩니다.
실행할
az
명령에는 리소스 그룹의 이름과 Azure SQL 논리 서버의 이름이 필요합니다. 키 입력을 저장하려면 이azure configure
명령을 실행하여 기본값으로 지정합니다.[server-name]
을 만든 Azure SQL 논리 서버의 이름으로 바꾸고[resource-group]
을 서버에 사용한 리소스 그룹으로 바꿉니다.팁
Cloud Shell에 붙여넣으려면
Ctrl+V
대신Ctrl+Shift+V
를 사용합니다. 터미널에서 현재 명령을 지우려면Ctrl+C
를 사용합니다.az configure --defaults group=[resource-group] sql-server=[server-name]
참고 항목
Azure Portal의 창에 따라 SQL 서버 이름이 FQDN(예:
servername.database.windows.net
) 또는 독립 실행형(servername
)으로 표시됩니다. 이 명령의 경우.database.windows.net
접미사 없이 논리적 이름만 필요합니다.다음
az sql db list
명령을 실행하여 Azure SQL 논리 서버의 모든 데이터베이스를 나열합니다.az sql db list
대량의 JSON 블록이 출력으로 표시됩니다.
데이터베이스 이름만 표시하려고 하므로 명령을 한 번 더 실행합니다. 하지만 이번에는 출력을
jq
로 파이프하여 이름 필드만 표시합니다.az sql db list | jq '[.[] | {name: .name}]'
다음 출력이 표시됩니다.
[ { "name": "Logistics" }, { "name": "master" } ]
Logistics
는 사용자 데이터베이스입니다. SQL Server와 마찬가지로master
시스템 데이터베이스에는 로그인 계정 및 시스템 구성 설정과 같은 서버 메타데이터가 포함됩니다.다음
az sql db show
명령을 실행하여Logistics
데이터베이스에 대한 세부 정보를 가져옵니다.az sql db show --name Logistics
앞의 경우처럼 JSON의 대형 블록이 출력으로 표시됩니다.
이 명령을 한 번 더 실행합니다. 이번에는 출력을
jq
로 파이프하여 출력을 Logistics 데이터베이스의 이름, 최대 크기 및 상태로만 제한합니다.az sql db show --name Logistics | jq '{name: .name, maxSizeBytes: .maxSizeBytes, status: .status}'
데이터베이스가 온라인 상태인지와 데이터베이스가 저장할 수 있는 최대 데이터 양이 표시됩니다.
{ "name": "Logistics", "maxSizeBytes": 2147483648, "status": "Online" }
Azure SQL Database 무료 플랜을 선택한 경우 서버리스 데이터베이스가 자동으로 일시 중지되어 무료 vCore 초를 절약하므로 비활성 기간 후에 일시 중지된 상태로
Logistics
데이터베이스를 볼 수 있습니다.
데이터베이스 연결
연결 문자열에는 애플리케이션이 데이터베이스에 연결하는 데 필요한 모든 정보가 포함됩니다. Cloud Shell에 있는 동안 연결 문자열을 가져오는 것부터 시작해 보겠습니다.
Cloud Shell에서 가져온 연결 문자열
다음 az sql db show-connection-string
명령을 실행하여 연결 문자열을 sqlcmd
에서 사용할 수 있는 형식으로 Logistics
데이터베이스에 가져옵니다.
```azurecli
az sql db show-connection-string --client sqlcmd
```
Your output resembles the following example. Copy this output for use in the next step.
```output
"sqlcmd -S tcp:<server-name>.database.windows.net,1433 -d Logistics -U <username> -P <password> -N -l 30"
```
Azure Portal에서 가져온 연결 문자열
Azure Portal은 Azure SQL 데이터베이스의 다양한 데이터 공급자에 대한 연결 문자열을 쉽게 액세스할 수 있도록 제공합니다.
- Azure Portal에서 SQL Database로 이동합니다.
- SQL 데이터베이스 서비스 메뉴의 설정에서 연결 문자열을 선택합니다.
- 원하는 데이터 공급자 및 연결 방법을 선택합니다.
Visual Studio Code를 사용하여 데이터베이스에 연결
그래픽 도구를 사용하여 새 Azure SQL Database에 연결해 보겠습니다. Visual Studio Code는 인기 있는 오픈 소스 Windows, macOS, Linux용 그래픽 코드 편집기입니다. SQL Server, Azure SQL Database, Azure SQL Managed Instance 및 Fabric을 포함한 플랫폼의 데이터베이스 쿼리용 mssql 확장을 포함한 여러 확장을 지원합니다.
Visual Studio Code를 다운로드하여 설치합니다.
Visual Studio Code의 창 왼쪽에 있는 작업 표시줄에서 확장 아이콘을 선택하여 확장 보기를 엽니다. mssql을 검색하고 설치를 선택하여 확장을 추가합니다. mssql 확장은 로컬 워크스테이션에 추가합니다.
팁
데이터베이스 개체의 향후 애플리케이션 프로젝트 개발을 위해 Visual Studio Code용 SQL Database Projects 확장도 사용합니다. 이 도구를 사용하면 원본 제어에서 데이터베이스로 작업하고, 기존 데이터베이스 스키마를 캡처하고, 새 개체를 디자인하고, 데이터베이스에 게시할 수 있습니다.
확장 목록에서 SQL Server 확장을 선택합니다.
연결에서 연결 추가를 선택합니다.
프로필 이름에서 새 연결에 기억하기 쉬운 사용자 지정 이름을 지정합니다.
연결 정보를 제공하는 방법에는 여러 가지가 있습니다.
- 매개 변수를 선택하여 Azure SQL 논리 서버 이름, 데이터베이스 이름, 사용자 이름 및 암호를 수동으로 입력합니다.
- 데이터베이스의 연결 문자열에 붙여넣을 연결 문자열을 선택한 다음 사용자 이름과 암호를 추가합니다.
- VS Code에서 Azure 구독에 연결하려면 Azure 찾아보기를 선택하고 목록에서 새 Azure SQL Database를 선택하기만 하면 됩니다.
이 학습 연습에서는 Azure 찾아보기를 선택합니다. VS Code에서 Azure 구독에 연결합니다.
목록에서 구독을 선택합니다.
목록에서 리소스 그룹을 선택합니다.
목록에서 서버 및 데이터베이스를 선택합니다.
인증 유형이 SQL 로그인으로 설정된 상태에서 이전 모듈에서 만든 사용자 이름 및 암호를 제공합니다.
연결을 선택합니다.
성공하면 연결 추가 대화 상자가 사라지고 서버 연결 및 테이블, 뷰 등의 개체 탐색기로 대체됩니다.
Visual Studio Code를 사용한 데이터베이스 쿼리
Azure SQL Database에서 기본 CRUD(만들기, 읽기, 업데이트, 삭제) 작업을 수행하는 일련의 명령을 실행해 보겠습니다.
CONNECTIONS에서 서버 이름 줄을 마우스 오른쪽 단추로 클릭하고 새 쿼리를 선택합니다.
첫 번째 데이터베이스 개체를 만들기 위해 새 쿼리 창에서 다음 명령을 붙여넣어
Drivers
라고 하는 새 테이블을 만들어 보겠습니다.CREATE TABLE Drivers (DriverID int IDENTITY(1,1), LastName varchar(255), FirstName varchar(255), OriginCity varchar(255)); GO
이 테이블에는 4개의 열인 고유 ID, 기사의 이름과 성, 기사의 출생 도시가 포함됩니다.
쿼리 실행 단추를 선택하여 쿼리 창에서 T-SQL 명령을 실행합니다.
팁
쿼리 창에서 여러 명령 중 단일 T-SQL 명령을 실행하려면 원하는 쿼리를 끌어서 선택한 다음 실행합니다.
Visual Studio Code의 거의 모든 항목과 마찬가지로 Visual Studio Code에서 바로 가기 키를 사용자 지정할 수 있습니다. Windows에서 Execute의 기본 바로 가기 키는
Ctrl + Shift + E
입니다.이어서 다음 T-SQL 문을 실행하여
Drivers
테이블이 있는지 확인하기 위해 데이터베이스 메타데이터를 쿼리합니다.SELECT name FROM sys.tables; GO
쿼리 결과 탭의 결과에서 테이블 목록에
Drivers
가 있는 것을 볼 수 있습니다.name ------- Drivers
테이블에 행을 추가해 보겠습니다. 다음 T-SQL 문을 실행하여 테이블에 샘플 행을 추가합니다.
INSERT INTO Drivers (LastName, FirstName, OriginCity) VALUES ('Zirne', 'Laura', 'Springfield'); GO
이 출력은 작업이 성공했음을 나타냅니다.
3:14:01 PM Started executing query at Line 7 (1 row affected) Total execution time: 00:00:00.044
방금 삽입한 행을 보려면 다음 T-SQL 문을 실행하여 테이블의 모든 행에 있는
DriverID
및OriginCity
열을 나열합니다.SELECT DriverID, OriginCity FROM Drivers; GO
이전 단계에서 만든 행의
DriverID
및OriginCity
가 포함된 하나의 결과가 표시됩니다.DriverID OriginCity ----------- -------------------------- 1 Springfield
OriginCity
를 변경하도록 행을 업데이트해 보겠습니다. 다음 T-SQL을 실행하여1
의DriverID
를 가진 드라이버의 원산지 도시를 “Springfield”에서 “Boston”으로 변경합니다.UPDATE Drivers SET OriginCity='Boston' WHERE DriverID=1; GO
쿼리 결과 창에서 쿼리 실행을 확인하는 메시지가 표시됩니다.
3:14:29 PM Started executing query at Line 13 (1 row affected) Total execution time: 00:00:00.031
다음 T-SQL 문을 실행하여
DriverID
및OriginCity
열을 다시 나열합니다.SELECT DriverID, OriginCity FROM Drivers; GO
이제 다음과 같이 출력됩니다.
OriginCity
에 Boston에 대한 업데이트가 어떻게 반영되었는지 확인하세요.DriverID OriginCity ----------- -------------------------- 1 Boston
마지막으로 다음 T-SQL 문을 실행하여 해당 행을 제거하여 레코드를 삭제해 보겠습니다.
DELETE FROM Drivers WHERE DriverID=1; GO
3:15:00 PM Started executing query at Line 16 (1 row affected) Total execution time: 00:00:00.017
다음 T-SQL 문을 실행하여
Drivers
테이블이 비었는지 확인합니다.SELECT COUNT(*) FROM Drivers; GO
테이블에 행이 없는 것을 볼 수 있습니다.
----------- 0
이제 Cloud Shell 및 Visual Studio에서 Azure SQL Database를 사용하는 대략적인 방법을 습득하였습니다. SQL Server Management Studio, Visual Studio 또는 사용자 지정 애플리케이션 등 즐겨 찾는 SQL 관리 도구에 대한 연결 문자열을 사용할 수 있습니다.
Cloud Shell을 사용하면 Azure 리소스 전반에 쉽게 액세스하고 관련 작업을 수행할 수 있습니다. Cloud Shell은 브라우저 기반이므로 Windows, macOS, Linux같이 웹 브라우저가 있는 모든 시스템에서 Cloud Shell에 액세스할 수 있습니다.
Visual Studio Code에서 T-SQL 명령을 실행하는 실습 경험을 습득하고 T-SQL 기술을 연습했습니다.
다음 단원에서는 이 모듈을 마무리하고 데이터베이스를 분리하는 방법에 관해 설명하겠습니다.