SQL Server에서 주소록 애플리케이션 DB 구축 및 CRUD 연습

  • 7 minutes to read

이 문서는 SQL Server에서 주소록 애플리케이션 데이터베이스를 구축하고, 해당 데이터베이스에서 CRUD(Create, Read, Update, Delete) 작업을 연습하는 방법을 단계별로 설명합니다. 또한, CRUD 작업을 저장 프로시저로 구현하는 방법도 다룹니다. 이 과정을 통해 SQL 기본기를 향상시킬 수 있습니다.

1. 주소록(Address) 테이블 생성

먼저, 주소록 정보를 저장할 테이블을 생성합니다. 다음 SQL 스크립트를 사용하여 Address 테이블을 생성합니다.

Create Table dbo.Address
(
    Num Int Identity(1, 1) Primary Key Not Null, -- 번호
    [Name] NVarChar(25) Not Null, -- 이름
    Email NVarChar(100) Null,     -- 이메일
    Phone NVarChar(15) Null,      -- 전화
    Mobile NVarChar(15) Null,     -- 휴대폰
    ZipCode NVarChar(7) Not Null, -- 우편번호
    Address NVarChar(150) Null,   -- 주소
    PostDate SmallDateTime Default(GetDate()) -- 등록일
)
Go

2. CRUD 연습

CRUD 작업은 데이터를 생성(Create), 조회(Read), 수정(Update), 삭제(Delete)하는 기본적인 데이터베이스 작업입니다. 다음 스크립트를 사용하여 이러한 작업을 연습해보겠습니다.

2.1. 생성 (Create)

주소록에 새로운 주소 정보를 입력합니다.

Insert Address
(
    Name,
    Email,
    Phone,
    Mobile,
    ZipCode,
    Address,
    PostDate
)
Values
(
    '홍길동',
    'h@h.com',
    '114',
    '119',
    '123-445',
    '서울',
    GetDate()
)
Go

2.2. 조회 (Read)

주소록 테이블의 모든 주소 정보를 조회합니다.

Select * 
From Address
Order By Num Desc
Go

특정 주소 정보를 조회합니다.

Select * 
From Address
Where Num = 5
Go

2.3. 수정 (Update)

주소록의 특정 주소 정보를 수정합니다.

Begin Transaction
    Update Address
    Set
        Name = '백두산',
        Email = 'b@b.com',
        Phone = '116',
        Mobile = '110',
        ZipCode = '456-123',
        Address = '부산',
        PostDate = GetDate()
    Where
        Num = 5
Commit Tran
Go

2.4. 삭제 (Delete)

주소록의 특정 주소 정보를 삭제합니다.

Begin Tran
    Delete Address Where Num = 1
    --RollBack Tran
    Commit Tran
Go

주소록에서 이름 또는 주소를 기준으로 정보를 검색합니다.

Select * 
From Address
Where
    Name Like '%홍%'
    Or
    Address Like '%서%'
Go

3. 저장 프로시저를 통한 CRUD 구현

CRUD 작업을 저장 프로시저를 사용하여 구현하는 방법입니다. 저장 프로시저를 사용하면 코드 재사용성을 높이고, 유지보수를 용이하게 할 수 있습니다.

3.1. 생성 (Create)

Create Procedure dbo.WriteAddress
(
    @Name NVarChar(25),
    @Email NVarChar(100),
    @Phone NVarChar(15),
    @Mobile NVarChar(15),
    @ZipCode NVarChar(7),
    @Address NVarChar(150)
)
As
    Insert Address
    (
        Name,
        Email,
        Phone,
        Mobile,
        ZipCode,
        Address,
        PostDate
    )
   

 Values
    (
        @Name,
        @Email,
        @Phone,
        @Mobile,
        @ZipCode,
        @Address,
        GetDate()
    )
Go

3.2. 조회 (Read)

모든 주소 정보 조회:

Create Proc dbo.ListAddress
As
    Select * 
    From Address
    Order By Num Desc
Go

특정 주소 정보 조회:

Create Proc dbo.ViewAddress
    @Num Int
As
    Select * 
    From Address
    Where Num = @Num
Go

3.3. 수정 (Update)

Create Proc dbo.ModifyAddress
    @Name NVarChar(25),
    @Email NVarChar(100),
    @Phone NVarChar(15),
    @Mobile NVarChar(15),
    @ZipCode NVarChar(7),
    @Address NVarChar(150),
    @Num Int
As    
    Begin Transaction
        Update Address
        Set
            Name = @Name,
            Email = @Email,
            Phone = @Phone,
            Mobile = @Mobile,
            ZipCode = @ZipCode,
            Address = @Address,
            PostDate = GetDate()
        Where
            Num = @Num
    Commit Tran
Go

3.4. 삭제 (Delete)

Create Procedure dbo.DeleteAddress
    @Num Int
As
    Begin Tran
        Delete Address 
        Where Num = @Num
    Commit Tran
Go
Create Proc dbo.SearchAddress
    @SearchField NVarChar(25),
    @SearchQuery NVarChar(25)
As
    Declare @strSql NVarChar(150)
    Set @strSql = 'Select * From Address Where ' + @SearchField + ' Like ''%' + @SearchQuery + '%'''
    Exec (@strSql)
Go

이 문서를 통해 SQL Server에서 주소록 애플리케이션 데이터베이스를 구축하고, CRUD 작업을 수행하는 방법을 배웠습니다. 저장 프로시저를 사용하여 CRUD 작업을 구현하는 방법도 함께 살펴보았습니다.

전체 소스 코드는 다음과 같습니다.

DotNetMemoCore\DotNetMemo.Database\dbo\Scripts\Address\AddressDB.sql

--* 주소록 애플리케이션 DB

--[0] 주소록(Address) 테이블 생성
Create Table dbo.Address
(
	Num Int Identity(1, 1) 
		Primary Key Not Null,--번호
	[Name] NVarChar(25) Not Null, --이름
	Email NVarChar(100) Null,     --이메일
	Phone NVarChar(15) Null,	     --전화
	Mobile NVarChar(15) Null,     --휴대폰
	ZipCode NVarChar(7) Not Null, --우편번호
	Address NVarChar(150) Null,   --주소
	PostDate SmallDateTime 
		Default(GetDate())   --등록일
)
Go

--[1] 입력
Insert Address
(
	Name,
	Email,
	Phone,
	Mobile,
	ZipCode,
	Address,
	PostDate
)
Values
(
	'홍길동',
	'h@h.com',
	'114',
	'119',
	'123-445',
	'서울',
	GetDate()
)
Go

--[2] 출력
Select * 
From Address
Order By Num Desc
Go

--[3] 상세
Select * 
From Address
Where Num = 5
Go

--[4] 수정
Begin Transaction
	Update Address
	Set
		Name = '백두산',
		Email = 'b@b.com',
		Phone = '116',
		Mobile = '110',
		ZipCode = '456-123',
		Address = '부산',
		PostDate = GetDate()
	Where
		Num = 5
--RollBack Tran
Commit Tran
Go

--[5] 삭제
Begin Tran
	Delete Address Where Num = 1
	Go
	--에러 : X
	Delete Address Where Num = 3
	Go
	--에러 : X
	Delete Address Where Num = 5
	Go
	--에러 : X
--RollBack Tran
Commit Tran
--에러 : O
Go

--[6] 검색
Select * 
From Address
Where
	Name Like '%홍%'
	Or
	Address Like '%서%'
Go

--Stored Procedure
--[1] 입력 : WriteAddress, FrmWrite.cs, Write.aspx
Create Procedure dbo.WriteAddress
(
	@Name NVarChar(25),
	@Email NVarChar(100),
	@Phone NVarChar(15),
	@Mobile NVarChar(15),
	@ZipCode NVarChar(7),
	@Address NVarChar(150)
)
As
	Insert Address
	(
		Name,
		Email,
		Phone,
		Mobile,
		ZipCode,
		Address,
		PostDate
	)
	Values
	(
		@Name,
		@Email,
		@Phone,
		@Mobile,
		@ZipCode,
		@Address,
		GetDate()
	)
Go

Execute WriteAddress 
	'한라산', 'h@h.com', 
	'114', '115', '123-456', '대전'
Go

--[2] 출력 : ListAddress, FrmList.cs, List.aspx
Create Proc dbo.ListAddress
As
	Select * 
	From Address
	Order By Num Desc
Go

Exec ListAddress
Go

--[3] 상세 : ViewAddress, FrmView.cs, View.aspx
Create Proc dbo.ViewAddress
	@Num Int
As
	Select * 
	From Address
	Where Num = @Num
Go

ViewAddress 10
Go

--[4] 수정 : ModifyAddress, FrmModify,cs, Modify.aspx
Create Proc dbo.ModifyAddress
	@Name NVarChar(25),
	@Email NVarChar(100),
	@Phone NVarChar(15),
	@Mobile NVarChar(15),
	@ZipCode NVarChar(7),
	@Address NVarChar(150),
	@Num Int
As	
	Begin Transaction
		Update Address
		Set
			Name = @Name,
			Email = @Email,
			Phone = @Phone,
			Mobile = @Mobile,
			ZipCode = @ZipCode,
			Address = @Address,
			PostDate = GetDate()
		Where
			Num = @Num
	--RollBack Tran
	Commit Tran
Go

Execute ModifyAddress '지리산', 'j@j.com', '114', '119', '123-123', '전북', 10
Go

--[5] 삭제 : DeleteAddress, FrmDelete.cs, Delete.aspx
Create Procedure dbo.DeleteAddress
	@Num Int
As
	Begin Tran
		Delete Address 
		Where Num = @Num
	--RollBack Tran
	Commit Tran
Go

Execute DeleteAddress 10
Go

--[6] 검색 : SearchAddress, FrmSearch.cs, Search.aspx
Create Proc dbo.SearchAddress
	@SearchField NVarChar(25),
	@SearchQuery NVarChar(25)
As
	Declare @strSql NVarChar(150)
	Set @strSql = '
		Select * 
		From Address
		Where
			' + @SearchField 
			+ ' Like ''%' 
			+ @SearchQuery + '%'''
	--Print @strSql
	Exec (@strSql)
Go

Exec SearchAddress 'Address', '서울'
Go

--배포 URL : http://www.dotnetkorea.com/
--테스트 URL : http://sample.redplus.net/Web/Address/List.aspx
VisualAcademy Docs의 모든 콘텐츠, 이미지, 동영상의 저작권은 박용준에게 있습니다. 저작권법에 의해 보호를 받는 저작물이므로 무단 전재와 복제를 금합니다. 사이트의 콘텐츠를 복제하여 블로그, 웹사이트 등에 게시할 수 없습니다. 단, 링크와 SNS 공유, Youtube 동영상 공유는 허용합니다. www.VisualAcademy.com
박용준 강사의 모든 동영상 강의는 데브렉에서 독점으로 제공됩니다. www.devlec.com