Database/MS SQL

[MS SQL Server] #3_데이터베이스 구축하기(by Transact-SQL)

Tigercow.Door 2019. 4. 9. 16:16

안녕하세요. 문범우입니다.

지난 포스팅에서는 SSMS의 개체탐색기를 이용하며 데이터베이스 구축을 진행해보았습니다.

이번 포스팅에서는 같은 과정에 대해서 Transact-SQL을 이용해 진행해보도록 하겠습니다.


1. 데이터베이스 구축하기

 

먼저 아래와 같이 SSMS를 실행시키고 상단의 새쿼리 메뉴를 클릭합니다.

빨간색 박스에 master로 설정되어 있는 것을 확인합니다.

 

우리는 먼저 데이터베이스를 만들고 해당 데이터베이스 내부에 테이블이나 데이터를 추가할 것이니, 먼저 master를 선택하여 데이터베이스를 만들어야 합니다.

 

그럼 우측, 쿼리를 입력할 수 있는 곳에 아래와 같이 데이터베이스 생성 쿼리를 입력해봅니다.

 

create database <database명>

 

위의 쿼리문은 데이터 정의어(DDL) 중의 하나인 create문을 이용하는 쿼리입니다.

 

위의 쿼리문을 실행시키기 위해서 해당 쿼리문을 블록처리하고 F5를 눌러 실행시킵니다.

그리고 좌측의 개체탐색기 > 데이터베이스를 확인하면 Test02 라는 데이터베이스가 새로 생긴것을 확인할 수 있습니다.

 

이제 우리가 방금 생성한 Test02 라는 데이터베이스 내에 새로운 테이블을 생성하고 데이터를 추가해야 합니다.

하지만 우리가 처음 시작할 때 master 로 설정하고 시작한 것을 기억하시나요?

이 상태에서 테이블을 생성하거나 데이터를 입력하려고 하면 우리가 원하는대로, Test02 라는 데이터베이스에 데이터가 기록되지 않고 시스템 데이터베이스에 기록되게 됩니다.

따라서 우리가 앞으로 Test02에서 작업하겠다고 컴퓨터에게 알려주어야 합니다.

이를 위해서 아래와 같은 쿼리를 입력합니다.

 

use Test02;

 

위의 쿼리문을 실행하면 아래와 같이 master 로 선택되어있던 것이 Test02로 바뀐것을 확인할 수 있습니다.

 

그럼 이제 Test02에 새로운 테이블을 만들어 보도록합시다.

새로운 테이블을 만들때에도 데이터베이스 생성과 동일하게 create 문을 이용합니다.

 

create table member(
    id int constraint pk_code primary key,
    name char(10),
    email char(10)
);

 

쿼리를 실행시킬 때는 실행시키고자 하는 부분만 블록으로 감싸 F5를 눌러야합니다.

특정 부분을 블록으로 감싸지 않고 F5를 누르면 해당 쿼리창의 시작부터 끝까지 모든 쿼리가 다시 실행되므로 에러가 발생할 수 있습니다.

 

위의 쿼리를 잠시 살펴보면, create 문을 사용하였지만 database 생성시와는 다르게 테이블명 뒤에 소괄호가 있고 그 내부에 여러 정보가 있습니다.

테이블은 특정 칼럼과 그 칼럼에 대한 설명이 존재하기 때문에 위와 같은 형태를 띄게 됩니다.

 

위의 쿼리에서, member 테이블은 id, name, email 이라는 3개의 칼럼을 가지고 있습니다.

그리고 id는 int형 데이터 타입, name과 email은 모두 char(10) 이라는 데이터 타입을 가집니다.

추가적으로 id 칼럼은 contraint pk_code primary key 라고 붙어있는데, 여기서 constraint는 해당 칼럼에 특정 제약조건을 주겠다라는 의미이고 그 제약조건의 내용이 뒤에 따라서 붙습니다.

여기서는 pk_code primary key 라는 제약조건이 붙었는데, 이는 pk_code 라는 이름의 primary key로 설정하겠다라는 의미입니다.

즉, member 테이블에서의 primary key, 기본키는 id컬럼이며 해당 기본키의 이름은 pk_code인 것 입니다.

 

그런데 이렇게 테이블을 만들고 보니 name이름에 null이 들어가면 안되는 것을 깜빡했습니다.

name이라는 칼럼에 not null 속성을 추가해주어야 하는데, 그렇다고 해서 테이블을 통째로 지우고 다시 날리는 것은 너무나 비효율적입니다.

이렇게 테이블의 속성을 변경하기 위해 데이터 정의어(DDL)에서 ALTER구문이 존재합니다.

 

ALTER문을 이용하여 member 테이블의 name 칼럼의 속성을 변경해보도록 하겠습니다.

 

alter table member
alter column name char(10) not null;

 

먼저 어떤 테이블에 대해서 변경을 진행할 지 알려줍니다.

그리고 column을 수정하는데 어떤 칼럼을 수정하는지 해당 칼럼의 이름을 적어주고 이후 속성을 그대로 적어줍니다.

우리가 not null만 추가하고자 했으나 char(10)까지 그대로 적어주는 이유는 해당 alter 구문이 추가하는 명령이 아닌 변경하는 명령이기 때문입니다.

즉, char(10) 이라는 속성을 가진 칼럼을 char(10) not null 속성을 가지도록 변경하는 것 입니다.

 

그럼 이제 우리가 만든 member 테이블에 데이터를 직접 입력해주도록 하겠습니다.

이렇게 데이터를 입력하거나 조회, 수정, 삭제하는 쿼리를 데이터 조작어(DML) 이라고 합니다.

데이터 조작어에는 크게 INSERT(삽입), UPDATE(수정), DELETE(삭제), SELECT(조회) 네가지가 있으나 이번 포스팅에서는 단순히 Transact-SQL을 경험해보는 것이 목적이기 때문에 INSERT와 SELECT문에 대해 간단히 사용만 하도록 하겠습니다.

 

해당 쿼리문들에 대해서는 추후에 좀 더 자세히 알아볼 것이니 잘 이해가 가지 않아도 괜찮습니다.

 

먼저 member 테이블에 아래와 같은 쿼리로 데이터를 입력합니다.

 

insert into member values(10, '홍범우', 'hong@email');

 

위의 쿼리는, member 라는 테이블에 데이터를 insert 할 것이다라는 의미입니다.

그리고 입력되는 데이터의 내용은 values(~~~) 내부에 입력합니다.

 

해당 쿼리를 실행시키고, 우리가 입력한 데이터가 잘 저장되었나 확인하기 위해서 아래 쿼리를 입력합니다.

 

select * from member;

 

select 문은 데이터를 조회하는 쿼리문 입니다.

select 문을 통해서 어떤 칼럼을 조회할 지 선택할 수 있는데, 이때 * 의 의미는 모든 것을 의미합니다.

즉, 위의 쿼리는 특정 칼럼만 확인하는게 아니라 모든 칼럼을 조회하겠다는 의미이고, 배경이 되는 테이블이 member라는 것을 알려주기 위해 from ~ 절을 작성해준 것 입니다.

 

위의 select 쿼리를 실행시키면 아래와 같이 우리가 위에서 입력한 데이터가 정상적으로 입력된 것을 볼 수 있습니다.

 


이렇게 해서 간단하게 Transact-SQL 을 통해 데이터베이스를 구축하는 방법에 대해서 알아보았습니다.

 

728x90