A.4 마당서점데이터베이스생성 1 마당서점의데이터베이스 Madang을생성하기위해윈도우의 [ 시작 ]-[ 모든프로그램 ]- [Microsoft SQL Server 2012]-[SQL Server Management Studio] 를선택한다. 인증을 [Windows 인증 ] 으로선택한후 < 연결 > 을클릭한다. 2 1 3 서버이름 MADANG_DB\SQLEXPRESS 는 MADANG_DB 라는이름을가진컴퓨터에설치된 SQLEXPRESS 라는인스 턴스를의미한다. MADANG_DB 는사용자의컴퓨터마다다르게나타난다. 2 툴바에서 [ 파일열기 ]( ) 를클릭하여이책에서제공하는 madang_db_with_sample. sql 파일을선택하고 < 열기 > 를클릭한다. 1 2 부록실습소프트웨어설치 517
예제소스는 http://hanb.co.kr/exam/4024 에서다운로드하여사용하거나툴바의 [ 새쿼리 ]( 에아래의소스를입력한다. 입력후에는앞으로실습을위해서저장해둔다. -- 실습에필요한 Madang DB 와 COMPANY DB 를모두생성한다. -- 데이터베이스생성 USE [master] -- 마당데이터베이스생성 ) 를클릭한후쿼리편집기 파일명 : madang_db_with_sample.sql IF EXISTS(SELECT name FROM sys.databases WHERE (name = 'Madang') OR (name = 'madang')) DROP DATABASE [Madang]; CREATE DATABASE Madang USE [master] -- COMPANY 데이터베이스생성 IF EXISTS(SELECT name FROM sys.databases WHERE (name = 'COMPANY') OR (name = 'Company')) DROP DATABASE [COMPANY]; CREATE DATABASE COMPANY -- 명령어는 T-SQL 문은아니지만현재까지명령어를 SQL Server에보내서실행시키는역할을한다. -- 즉 명령어는명령어를묶어서배치로서버에보내는역할을한다. -- Book, Customer, Orders 테이블생성 USE [Madang] CREATE TABLE Book ( bookid INT PRIMARY KEY, bookname VARCHAR(40), publisher VARCHAR(40), price INT ); CREATE TABLE Customer ( custid INT PRIMARY KEY NONCLUSTERED, name VARCHAR(40), address VARCHAR(40), phone VARCHAR(30) ); CREATE TABLE Orders ( orderid INT PRIMARY KEY, custid INT REFERENCES Customer(custid), 518 부록실습소프트웨어설치
bookid INT REFERENCES Book(bookid), saleprice INT, orderdate DATE ); -- Book, Customer, Orders 데이터생성 INSERT INTO Book VALUES (1, ' 축구의역사 ', ' 굿스포츠 ', 7000); INSERT INTO Book VALUES (2, ' 축구아는여자 ', ' 나무수 ', 13000); INSERT INTO Book VALUES (3, ' 축구의이해 ', ' 대한미디어 ', 22000); INSERT INTO Book VALUES (4, ' 골프바이블 ', ' 대한미디어 ', 35000); INSERT INTO Book VALUES (5, ' 피겨교본 ', ' 굿스포츠 ', 8000); INSERT INTO Book VALUES (6, ' 역도단계별기술 ', ' 굿스포츠 ', 6000); INSERT INTO Book VALUES (7, ' 야구의추억 ', ' 이상미디어 ', 20000); INSERT INTO Book VALUES (8, ' 야구를부탁해 ', ' 이상미디어 ', 13000); INSERT INTO Book VALUES (9, ' 올림픽이야기 ', ' 삼성당 ', 7500); INSERT INTO Book VALUES (10, 'Olympic Champions', 'Pearson', 13000); INSERT INTO Customer VALUES (1, ' 박지성 ', ' 영국맨체스타 ', '000-5000-0001'); INSERT INTO Customer VALUES (2, ' 김연아 ', ' 대한민국서울 ', '000-6000-0001'); INSERT INTO Customer VALUES (3, ' 장미란 ', ' 대한민국강원도 ', '000-7000-0001'); INSERT INTO Customer VALUES (4, ' 추신수 ', ' 미국클리블랜드 ', '000-8000-0001'); INSERT INTO Customer VALUES (5, ' 박세리 ', ' 대한민국대전 ', NULL); -- 주문 (Orders) 테이블의책값은할인판매를가정함 INSERT INTO Orders VALUES (1, 1, 1, 6000, '2013-07-01'); INSERT INTO Orders VALUES (2, 1, 3, 21000, '2013-07-03'); INSERT INTO Orders VALUES (3, 2, 5, 8000, '2013-07-03'); INSERT INTO Orders VALUES (4, 3, 6, 6000, '2013-07-04'); INSERT INTO Orders VALUES (5, 4, 7, 20000, '2013-07-05'); INSERT INTO Orders VALUES (6, 1, 2, 12000, '2013-07-07'); INSERT INTO Orders VALUES (7, 4, 8, 13000, '2013-07-07'); INSERT INTO Orders VALUES (8, 3, 10, 12000, '2013-07-08'); INSERT INTO Orders VALUES (9, 2, 10, 7000, '2013-07-09'); INSERT INTO Orders VALUES (10, 3, 8, 13000, '2013-07-10'); -- 3 장에서사용되는 Imported_Book 테이블생성 CREATE TABLE Imported_Book ( bookid INT, bookname VARCHAR(40), publisher VARCHAR(40), price INT ); 부록실습소프트웨어설치 519
INSERT INTO Imported_Book VALUES (21, 'Zen Golf', 'Pearson', 12000); INSERT INTO Imported_Book VALUES (22, 'Soccer Skills', 'Human Kinetics', 15000); -- 여기서부터는사용자아이디를생성하는부분 -- SQL Server에서 master 외에다른사용자를만드려면로그인과사용자아이디를만들어야함 USE [master] -- 로그인아이디 mduser 생성 IF EXISTS(SELECT * FROM sys.syslogins WHERE name = N'mduser') DROP LOGIN [mduser] CREATE LOGIN mduser WITH PASSWORD='mdpass', default_database=madang -- 사용자아이디 mduser 생성 -- mduser에게 Madang 데이터베이스 user 및권한부여 USE [Madang] IF EXISTS (SELECT * FROM sys.database_principals WHERE name = N'mduser') DROP USER [mduser]; CREATE USER mduser FOR login mduser WITH default_schema=dbo EXEC sp_addrolemember db_owner, mduser -- mduser에게 COMPANY 데이터베이스 user 및권한부여 USE [COMPANY] IF EXISTS (SELECT * FROM sys.database_principals WHERE name = N'mduser') DROP USER [mduser]; CREATE USER mduser FOR login mduser WITH default_schema=dbo EXEC sp_addrolemember db_owner, mduser -- 연습문제사원데이터베이스생성 CREATE TABLE Dept ( deptno INT CONSTRAINT PK_DEPT PRIMARY KEY, dname VARCHAR(14), loc VARCHAR(13) ); 520 부록실습소프트웨어설치
CREATE TABLE Emp ( empno INT CONSTRAINT PK_EMP PRIMARY KEY, ename VARCHAR(10), job VARCHAR(9), MGR SMALLINT, hiredate DATE, sal DECIMAL(7,2), comm DECIMAL(7,2), deptno INT CONSTRAINT FK_deptno REFERENCES Dept ); -- Dept 데이터 4 개삽입 INSERT INTO Dept VALUES (10,'ACCOUNTING','NEW YORK'); INSERT INTO Dept VALUES (20,'RESEARCH','DALLAS'); INSERT INTO Dept VALUES (30,'SALES','CHICA'); INSERT INTO Dept VALUES (40,'OPERATIONS','BOSTON'); -- Emp 데이터 14 개삽입 INSERT INTO Emp VALUES (7369, 'SMITH', 'CLERK', 7902, '12-17-1980', 800, NULL, 20); INSERT INTO Emp VALUES (7499, 'ALLEN', 'SALESMAN', 7698, '02-20-1981', 1600, 300, 30); INSERT INTO Emp VALUES (7521, 'WARD', 'SALESMAN', 7698, '02-22-1981', 1250, 500, 30); INSERT INTO Emp VALUES (7566, 'JONES', 'MANAGER', 7839, '04-02-1981', 2975, NULL, 20); INSERT INTO Emp VALUES (7654, 'MARTIN', 'SALESMAN', 7698, '09-28-1981', 1250, 1400, 30); INSERT INTO Emp VALUES (7698, 'BLAKE', 'MANAGER', 7839, '05-01-1981', 2850, NULL, 30); INSERT INTO Emp VALUES (7782, 'CLARK', 'MANAGER', 7839, '06-09-1981', 2450, NULL, 10); INSERT INTO Emp VALUES (7788, 'SCOTT', 'ANALYST', 7566, '07-13-1987', 3000, NULL, 20); INSERT INTO Emp VALUES (7839, 'KING', 'PRESIDENT', NULL, '11-17-1981', 5000, NULL, 10); INSERT INTO Emp VALUES (7844, 'TURNER', 'SALESMAN', 7698, '09-08-1981', 1500, 0, 30); INSERT INTO Emp VALUES (7876, 'ADAMS', 'CLERK', 7788, '07-13-1987', 1100, NULL, 20); INSERT INTO Emp VALUES (7900, 'JAMES', 'CLERK', 7698, '12-03-1981', 950, NULL, 30); 부록실습소프트웨어설치 521
INSERT INTO Emp VALUES (7902, 'FORD', 'ANALYST', 7566, '12-03-1981', 3000, NULL, 20); INSERT INTO Emp VALUES (7934, 'MILLER', 'CLERK', 7782, 01-23-1982', 1300, NULL, 10); USE [Madang] 3 파일이열리면 SQL 편집기에서 [ 실행 ]( ) 을클릭한다. 522 부록실습소프트웨어설치
4 실행이완료된후 [ 개체탐색기 ]-[ 데이터베이스 ]-[Madang]-[ 테이블 ] 을클릭하면 Madang DB 와테이블이생성되어있는것을확인할수있다. 5 테스트를위해 SQL Server 를종료한후 SQL Server 인증모드로다시로그인해보자. 방 법은 SQL Server Management Studio 를실행시킨후인증을 [SQL Server 인증 ] 으로 선택하고, 로그인과암호를다음과같이입력한후 < 연결 > 을클릭하면된다. 로그인 : mduser 암호 : mdpass 1 2 3 향후 SQL 실습을위해위의로그인정보를기억해두기바란다. 부록실습소프트웨어설치 523
6 툴바에서 [ 새쿼리 ]( ) 를클릭한다. 쿼리창에다음과같이입력하고 [ 실행 ]( ) 을클릭한다. 아래 [ 결과 ] 탭에서결과를확인할수있다. SELECT * FROM Customer; 1 3 2 개체탐색기의 MADANG_DB\SQLEXPRESS 는 사용자컴퓨터이름 \ 인스턴스명 으로각사용자마다다르게나타난다. MADANG_DB 는컴퓨터이름이며 Madang 은데이터베이스이름이므로혼돈하지않도록주의하기바란다. 7 정상적으로실행이완료되는것을확인하고 SQL Server Management Studio 를종료 한다. 524 부록실습소프트웨어설치
A.5 AdventureWorks Sample Database 설치 AdventureWorks Sample Database는마이크로소프트사에서제공하는 SQL Server용실습데이터베이스다. Cycle 회사를모델로만들어졌으며, 실습에사용할 LT light 버전은간단한실습을위해기존모델을축소하여제공한것이다. 1 관련파일을다운로드하기위해 http://msftdbprodsamples.codeplex.com/ 에접속한다. [Download - AdventureWorks Database-2008, 2008R2 and 2012] 를클릭한다. 부록실습소프트웨어설치 525
2 [AdventureWorksLT2012_Database.zip] 을클릭하여다운로드한다. 향후버전이업그레이드되더라도설치방법은동일하므로잘익혀두기바란다. 3 설치를위해다음의위치에압축을해제한다. C:\AdventureWorksLT2012 1 526 부록실습소프트웨어설치
2 3 4 압축을해제하면다음과같이데이터파일 (mdf) 과로그파일 (ldf) 을확인할수있다. 부록실습소프트웨어설치 527
5 윈도우의 [ 시작 ]-[ 모든프로그램 ]-[Microsoft SQL Server 2012]-[SQL Server Management Studio] 에서마우스오른쪽버튼을누른후 [ 관리자권한으로실행 ] 을선 택한다. 사용자계정컨트롤화면이나오면 < 예 > 를클릭한다. 1 2 6 Windows 인증모드로 SQL Server 에연결한다. 1 2 528 부록실습소프트웨어설치
7 [ 개체탐색기 ]-[ 데이터베이스 ] 에서마우스오른쪽버튼을누른후 [ 연결 ] 을선택한다. 8 [ 데이터베이스연결 ] 창이열리면 < 추가 > 를클릭하여 C:\AdventureWorksLT2012 폴 더에서 AdventureWorksLT2012_Data.mdf 파일을선택한후 < 확인 > 을클릭한다. 1 부록실습소프트웨어설치 529
2 3 4 9 다음과같이데이터파일과로그파일이추가되면 < 확인 > 을클릭하여데이터베이스연결 을마친다. 530 부록실습소프트웨어설치
10 데이터베이스가제대로추가되었는지확인하기위해 [ 개체탐색기 ]-[ 데이터베이스 ]- [AdventureWorksLT2012]-[ 테이블 ] 을클릭하여테이블을확인한다. 테스트를위해 [ 새쿼리 ]( ) 를클릭한후다음과같이입력하고 [ 실행 ]( ) 을클릭해결과가나오는지확인한다. USE AdventureWorksLT2012; SELECT * FROM SalesLT.Address; 1 3 2 부록실습소프트웨어설치 531
11 마지막으로앞으로실습을위해 AdventureWorksLT2012 데이터베이스에 mduser 를추가하고사용권한을부여해보자. [ 새쿼리 ]( ) 를클릭하여다음과같이입력하고 [ 실행 ]( ) 을클릭한다. [ 개체탐색기 ]-[ 데이터베이스 ]-[AdventureWorksLT2012]- [ 보안 ]-[ 사용자 ] 를클릭하면 mduser 가추가되어있는것을확인할수있다. USE AdventureWorksLT2012; CREATE USER mduser FOR login mduser WITH default_schema=saleslt; EXEC sp_addrolemember db_owner,mduser; 1 3 2 532 부록실습소프트웨어설치