30
SQL Server 2000 SQL Server 2000 기기 기 기기 기기 기 기기 기기기 기기기 ( [email protected] ( [email protected] m ) m )

SQL Server 2000 기본 및 활용

  • Upload
    kostya

  • View
    93

  • Download
    0

Embed Size (px)

DESCRIPTION

SQL Server 2000 기본 및 활용. 이배현 ( [email protected] ).  수강 대상. 1. 선수 과목. 운영체제와 네트워킹에 관한 기본적인 내용 운영체제에서 계정 관리 프로그래밍 기초 ( VB, Java, Asp, Jsp…. ). 2. 수강 대상. SQL Server 에 관한 체계적인 개념 정립을 원하는 학생 , 학원 수강생 ( 초보자 ) 현업 프로그래머로 데이터베이스와 관련한 프로그램 개발을 하는 개발자 ( 중급자 ) - PowerPoint PPT Presentation

Citation preview

Page 1: SQL Server 2000 기본 및 활용

SQL Server 2000SQL Server 2000 기본 및 기본 및 활용활용

이배현이배현 ( [email protected] )( [email protected] )

Page 2: SQL Server 2000 기본 및 활용

수강 대상1. 선수 과목

1) 운영체제와 네트워킹에 관한 기본적인 내용2) 운영체제에서 계정 관리3) 프로그래밍 기초 ( VB, Java, Asp, Jsp…. )

2. 수강 대상1) SQL Server 에 관한 체계적인 개념 정립을 원하는 학생 , 학원 수강생 ( 초보자 )2) 현업 프로그래머로 데이터베이스와 관련한 프로그램 개발을

하는 개발자 ( 중급자 )3) 현업 서버 관리자로 단순 데이터베이스 서버 관리를 넘어

효과적인 데이터베이스 관리를 원하는 관리자 ( 중급자 )

3. 강의 환경1) 운영체제 : Windows XP2) SQL Server : SQL Server 2000 Enterprise Edition

Page 3: SQL Server 2000 기본 및 활용

주제 주제 : : 관계형 데이터베이스 및관계형 데이터베이스 및 데이터베이스 데이터베이스 기본기본

이배현이배현 ( [email protected] ( [email protected] ))

Page 4: SQL Server 2000 기본 및 활용

1. 관계형 데이터베이스의 기본 이해 1) 관계형 데이터베이스란 ? : 1969 년 IBM 의 연구원으로 있던 .F.Codd 가 수학적 기초에 근거를 두 고 고안한 것이 관계형 데이터베이스 (Relational Database) 이다 . 기본 개념 : 데이터베이스는 최소한의 의미를 가지는 테이블들로 구성되 며 그 테이블들에 있는 필드들로 연결한 것이다 . 필드 또한 가장 작은 논리적인 단위로 구분하는 것이 좋다 .

2) 관계와 참조 무결성 1) 관계란 ? : 두개의 실체간에 명명되어진 의미 있는 연결이며 두 실체간에 업무 적인 연관성을 나타낸다 .

2) 참조 무결성 : 관계 형성을 통해 부모 테이블과 자식테이블 간의 정의되는 데이터 무결성 구현 방법 .

Page 5: SQL Server 2000 기본 및 활용

관계형성을 통한 참조 무결성

제약 조건 부모 테이블 자식 테이블

입 력

수 정

삭 제

제약 없음 부모 테이블에 데이터가 존재하는지 검증

수정 하려는 데이터를자식 테이블에서 참조

하고 있는지를 검증

부모 테이블에 존재하는 다른 데이터로 변경

가능

삭제 하려는 데이터를자식 테이블에서 참조

하고 있는지를 검증제약 없음

CASCADE 옵션 UPDATE CASCADE : 부모 테이블의 데이터를 수정할 때 이를 참조하고 있는 자식 테이블의 데이터도 함께 수정한다 . DELETE CASCADE : 부모 테이블의 데이터를 삭제할 때 이를 참조하고 있는 자식 테이블의 데이터도 함께 삭제한다 .

Page 6: SQL Server 2000 기본 및 활용

2. 시스템 데이터베이스와 사용자 정의 데이터베이스 1) 시스템 데이터베이스란 ? : 시스템 데이터베이스란 SQL Server 가 동작하는데 있어서 필요한 관련 옵 션과 정보 그리고 데이터베이스 로그인과 잡 등을 저장하고 관리하는 데 이터베이스로 SQL Server 를 설치할 때 자동으로 만들어 지고 역할에 따라 자동으로 관리 된다 . 이러한 시스템 데이터베이스는 다음과 같이 총 5가 지가 있다 . ( Master, Msdb, Model, Tempdb, Distributed )

2) 시스템 데이터베이스의 역할 2.1) Master 데이터베이스 : SQL Server 의 운영에 필요한 내용을 전반적으로 관리하는 데이터베이 스로 로그인과 서버 Role, 시스템 에러 메시지 그리고 데이터베이스 정 보 등을 관리 한다 . 가장 중요한 시스템 데이터베이스로 운영체제 입장에서 보면 레지스 트리와 같은 역할을 하는 데이터베이스 이다 .

2.2) Msdb 데이터베이스 : 자동화와 관련한 잡이나 경고 등이 저장되고 관리하는 데이터베이스로 SQL Agent Service 가 주로 이용하는 데이터베이스 이다 .

Page 7: SQL Server 2000 기본 및 활용

2.3) Model 데이터베이스 : 관리자가 만드는 모든 데이터베이스의 원형으로 존재하는 데이터베이 스 이다 . Model 데이터베이스를 바꾸면 앞으로 만들어 지는 모든 데이터베이스 에 영향을 미친다 . 2.4) Tempdb 데이터베이스 : 임시 테이블이나 정렬 작업등을 일시 저장하기위한 테이블이다 . Tempdb 는 SQL Server Service 가 시작될 때 항상 초기화 되어진다 .

2.5) Distribution 데이터베이스 : 복제 설정을 했을 때만 생성되는 데이터베이스로 복제에 사용되는 정보 나 트렌젝션 데이터를 저장한다 .

3) 사용자 정의 데이터베이스란 ? : 관리자나 개발자들이 필요에 의해서 생성한 데이터베이스를 말하며 일반 적으로 업무에서 사용하는 데이터베이스를 말한다 .

Page 8: SQL Server 2000 기본 및 활용

4) 데이터베이스 만들기 : 데이터베이스는 최소한 하나 이상의 데이터파일과 하나 이상의 로그 파일 로 구성된다 .

30 Mb

10Mb 10Mb 10Mb 10Mb

Data File Log File

3.1) 엔터프라이즈 관리자를 이용하여 데이터베이스 만들기 (SAMPLEDB) 3.2) Query 분석기를 이용하여 데이터베이스 만들기 3.3) 데이터 파일 확인 3.4) 데이터베이스 삭제

Page 9: SQL Server 2000 기본 및 활용

3. 데이터베이스 개체 ( Object ) 1) 테이블 ( Table ) : 2 차원 배열 구조로 실제 데이터를 저장하는 핵심 오브젝트 이다 .

2) 뷰 ( View ) : 가상의 논리적인 테이블로 View 를 사용하는 이유는 편의성과 보안성이 다 . View 를 통해 데이터의 입력 , 수정 , 삭제가 가능하며 View 와 테이블 간의 조인도 가능하다 .

3) 저장 프로시저 ( Stored Procedure ) : View 와 비슷한 모습을 갖지만 파라미터를 활용할 수 있어서 융통성이 뛰 어나고 절차적인 프로그래밍이 가능하며 속도가 빠르다 .

4) 트리거 ( Trigger ) : 테이블에 데이터가 입력 , 수정 , 삭제될 때 동작하는 프시저의 한 형태이 다 . 업무 규칙 ( Business Rule ) 등을 정의할 때 주로 사용한다 .

5) 사용자 정의 함수 ( Function ) : 사용자가 임의로 리턴값을 구하는 환경에서 직접 함수를 정의해서 사용 할 수 있다 .

Page 10: SQL Server 2000 기본 및 활용

6) 사용자 정의 데이터 타입 : 동일한 데이터타입이 반복적으로 사용될 때 하나의 사용자 정의 데이터 타입을 만들어 적용할 수 있다 .

7) 제약조건 ( Constraint ) : 논리적으로 잘못된 데이터가 입력되는 경우의 수를 제거하기 위해서 사용 되는 데이터 무결성 구현 방법이다 . ( 컬럼에 적용되는 3 가지 제약조건 : Not Null, No Duplicate, No Change )

7.1) 기본키 (PK) 제약 조건 : Not Null, No Duplication 7.2) Unique 제약 조건 : No Duplicate 7.3) 외래키 (FK) 제약 조건 : 관계 형성에 따른 자식 테이블의 입력 , 수정 제 약 조건 . 7.3) Check, Rule : 특정 컬럼에 입력이 허용 가능한 데이터나 데이터 범위를 지정한다 . 7.4) 디폴트 (Default) : 하나의 레코드를 입력할 때 아무런 값도 입력되지 않 은 컬럼에는 Null 값이 입력되게 되는데 이때 기본적으로 입력되는 데이터를 정의한다 .

Page 11: SQL Server 2000 기본 및 활용

8) 인덱스 ( Index ) : 데이터의 검색 속도를 향상시키기 위해 하나의 컬럼 혹은 여러 컬럼에 인 덱스를 정의한다 . 9) 데이터베이스 다이어그램 : 데이터베이스 내부의 테이블과 관계를 시각적으로 보여주는 인터페 이스로 관계 설정 및 기타 테이블과 관련한 관리작업을 할 수 있다 .

Page 12: SQL Server 2000 기본 및 활용

주제 주제 : DML (: DML (Data Manipulation LanguageData Manipulation Language))

이배현이배현 ( [email protected] ( [email protected] ))

Page 13: SQL Server 2000 기본 및 활용

1. SQL 문장에 대한 소개

1) SQL ( Structured Query Language ) 문장의 특징 : SQL 은 어떻게 작업을 수행할 지가 아니라 무엇을 해야 하는지에 관해서 정의하는 결과 중심적인 언어이다 .

사용자가 RDBMS 에 명령을 실행할 때 SQL 문장을 사용하며 RDBMS는 물 리적으로 데이터베이스에서 명령을 수행하고 결과를 사용자에게 반환한 다 .

사용자사용자사용자사용자사용자

DB 관리도구

Application

Application

데이터베이스

관리시스템( DBMS)

데이터베이스

SQL

Page 14: SQL Server 2000 기본 및 활용

2) SQL ( Structured Query Language ) 문장의 유형 : SQL 문장은 유형에 따라 다음과 같이 3 가지로 구분할 수 있다 .

1)  DDL ( Data Definition Language ) 1.1) CREATE : 데이터베이스 및 데이터베이스 오브젝트 생성 1.2) DROP : 데이터베이스 및 데이터베이스 오브젝트 삭제 1.3) ALTER : 데이터베이스 및 데이터베이스 오브젝트 수정

2) DML ( Data Manipulation Language ) 2.1) SELECT : 테이블의 데이터 조회 2.2) INSERT : 테이블에 데이터 입력 2.3) UPDATE : 테이블에 데이터 수정 2.4) DELETE : 테이블에 데이터 삭제

3) DCL ( Data Control Language) 3.1) GRANT : 특정 자원 사용에 대한 권한 부여 3.2) REVOKE : 특정 자원에 부여된 권한 취소 ( 권한을 주기 전 상태 ) 3.3) DENY : 특정 자원에 대한 권한 모두 취소 ( 모두 부정 )

Page 15: SQL Server 2000 기본 및 활용

2) SELECT 문장 기본 I 2.1) 기본 구문 : SELECT 컬럼 LIST FROM 테이블명 WHERE 조회의 조건 예 ) USE PUBS SELECT * FROM TITLES SELECT * FROM TITLES WHERE PRICE >= 20

2.2) 임의의 컬럼 만들기 예 ) SELECT ‘책 제목 : ‘, TITLES, PRICE FROM TITLES

2.3) 컬럼 해더 정의하기 예 ) SELECT TITLE_ID AS ‘책 번호’ , TITLE AS ‘책 제목’ , ‘ 가격’ = PRICE FROM TITLES

2.4) WHERE 절 ( 조회의 조건을 정의 한다 . ) 예 ) SELECT * FROM TITLES WHERE 1 = 1 SELECT * FROM TITLES WHERE 1 <> 1

Page 16: SQL Server 2000 기본 및 활용

3) 자료형 ( Data Type ) 3.1) 정수형 : 소수점이 없는 숫자형 데이터 타입 => BIGINT, INT, SMALLINT, TINYINT, BIT

3.2) 문자형 : 문자열을 정의하기 위한 데이터 타입 => CHAR : 8000 바이트 이하의 고정형 문자 . VARCHAR : 8000 바이트 이하의 가변형 문자 . TEXT : 8000 바이트 이상의 문자열 데이터 . ( 0 ~ 2 GB ) ( NCHAR, NVARCHAR, NTEXT : 유니코드 형식의 문자 데이터 )

3.3) 실수형 : 소수점을 가진 숫자형 데이터 타입 3.3.1) 고정 소수점형 : 소수점 이하 몇 자리까지 정의 ( NUMERIC, DECIMAL) 3.3.2) 부동 소수점형 : 소수점이 있는 만큼 정의 ( FLOAT, REAL )

3.4) 날짜형 : 날짜와 시간을 저장하기 위한 데이터 타입 => DateTime : 날짜와 시간을 밀리세컨드 단위까지 저장 . SmallDateTime : 날짜와 시간을 분 단위까지 저장 .

Page 17: SQL Server 2000 기본 및 활용

3.5) 이진형 : BINARY 데이터를 저장하기 위한 데이터 타입 . => BINARY, VARBINARY, IMAGE

3.6) 화폐형 : 금액을 저장하기 위한 데이터 타입 . => MONEY, SMALLMONEY 3.7) 특수형 : 특수한 용도로 사용되는 데이터 타입 . => TABLE, SQL_VARIANT, CURSOR, UNIQUEIDENTIFIER, TIMESTAMP

4) 변수 : 변수란 ? 임의의 값을 저장하기 위한 메모리상의 임시 기억 공간이며 변수의 종류에는 사용자 정의 변수와 시스템 전역 변수가 있다 .

4.1) 사용자 정의 변수 : 사용자의 필요에 의해 정의하는 변수를 사용자 정의 변수라 하며 @ 로 변 수명을 정의한다 .

Page 18: SQL Server 2000 기본 및 활용

4.1.1) 변수 선언 : DECLARE 4.1.2) 변수에 값 할당 : SET, SELECT 4.1.3) 변수에 값을 출력 : SELECT, PRINT

예 ) DECLARE @AAA INT, @BBB INT SET @AAA = 10 SELECT @BBB = 20

SELECT @AAA, @BBB => 변수 값을 출력한다 . PRINT @AAA + @BBB => 문자 형식으로 메시지를 출력 한다 . 4.2) 시스템 정의 변수 ( 함수 ) : 시스템의 상태 정보 등을 저장하기 위한 목적으로 미리 만들어진 변수이 며 @@ 로 변수명이 시작 된다 .

예 ) @@SERVERNAME, @@VERSION, @@ROWCOUNT @@ERROR , @@NESTLEVEL, @@TRANCOUNT

SELECT * FROM TITLES SELECT @@ROWCOUNT SELECT @@ERROR

Page 19: SQL Server 2000 기본 및 활용

1. 시스템 제공 함수

1) 연산 함수 : 매개 변수로 제공된 값을 연산하여 숫자 값을 리턴한다 . = > CELING, FLOWER, RAND, ROUND

2) 문자 함수 = > +, LEFT, RIGHT, SUBSTRING, LTRIM, RTRIM, LOWER, UPPER, CHARINDEX, SPACE, REPLACE….

3) 날짜 함수 = > GETDATE, DATEADD, DATEDIFF, DATEPART, DAY, MONTH, YEAR

4) 계산 함수 = > SUM, MAX, MIN, AVG, COUNT ( 주의 : NULL 값을 포함한 값은 계산 대상에서 제외 )

Page 20: SQL Server 2000 기본 및 활용

5) 변환 함수 = > CONVERT, CAST

6) 시스템 함수 = > DB_ID, DB_NAME, HOST_NAME, ISDATE, ISNULL, ISNUMERIC, NULLIF

7) 보안 함수 = > SUSER_SANME(), SUSER_SID, USER_NAME()

8) 행 집합 함수 = > OPENQUERY, OPENROWSET

Page 21: SQL Server 2000 기본 및 활용

2. SQL 문장의 기본 II

1) Null 값 조회 ( IS NULL, IS NOT NULL ) : Null 값은 아무런 값도 입력되지 않은 컬럼이 가지는 값의 형식이다 . Null 은 아무 값도 없기 때문에 Null = Null 은 일치하지 않는다 .

2) 데이터 정렬 ( ORDER BY 절 ) : 특정 컬럼을 기준으로 데이터를 정렬하고자 할 때 정의하며 기본 오름차 순 ( ASC ) 이고 내림차순 ( DESC ) 으로 정렬할 수도 있다 . SELECT * FROM TITLES ORDER BY PRICE ASC ( 오름차순 ) SELECT * FROM TITLES ORDER BY PRICE DESC ( 내림차순 )

3) 범위 조회 (BETWEEN A AND B ) : SELECT * FROM TITLES WHERE PRICE BETWEEN 20 AND 30 SELECT * FROM TITLES WHERE LEFT( TITLE_ID, 1 ) BETWEEN 'B' AND 'M'

Page 22: SQL Server 2000 기본 및 활용

4) 출력 레코드 제한 (SET ROWCOUNT N, TOP N ( WITH TIES ) : SET ROWCOUNT 10 SELECT * FROM TITLES

SELECT TOP 10 * FROM SALES SELECT TOP 10 * FROM SALES ORDER BY QTY DESC SELECT TOP 10 WITH TIES * FROM SALES ORDER BY QTY DESC

5) 목록 조건 조회 ( IN ) : SELECT * FROM TITLES WHERE TITLE_ID IN ('BU1032', 'MC3021') SELECT * FROM TITLES WHERE TITLE_ID = 'BU1032' OR TITLE_ID = 'BU1111' OR TITLE_ID = 'MC3021'

6) 유사 문자 조회 ( LIKE 유형 : _ , %, [], [^] ) : SELECT * FROM TITLES WHERE TITLE_ID LIKE 'BU103_‘ SELECT * FROM TITLES WHERE TITLE_ID LIKE 'B%‘ SELECT * FROM TITLES WHERE TITLE_ID LIKE '[BM]%‘ SELECT * FROM TITLES WHERE TITLE_ID LIKE 'B[^U]%‘

Page 23: SQL Server 2000 기본 및 활용

7) 중복된 행 제거 ( DISTINCT ) : SELECT TITLE_ID FROM SALES SELECT DISTINCT TITLE_ID FROM SALES

8) 권장 사항 : 조회의 조건에 자주 등장하는 컬럼에 인덱스를 정의하자 . 조회의 조건에 포함되는 컬럼을 가공하지 말자 .

SELECT TITLE_ID, PRICE FROM TITLES WHERE PRICE * 1.1 < 20 ORDER BY PRICE

SELECT TITLE_ID, PRICE FROM TITLES WHERE PRICE < 20 / 1.1 ORDER BY PRICE

Page 24: SQL Server 2000 기본 및 활용

3. GROUP BY, HAVING 절

1) GROUP BY 절 : 항목별로 요약된 결과값을 출력한다 .

SELECT TITLE_ID, QTY AS ‘판매 수량’ FROM SALES SELECT TITLE_ID, SUM(QTY) AS ‘판매 수량’ FROM SALES GROUP BY TITLE_ID

2) HAVING 절 : GROUP BY 절에 의해 출력된 결과에 대한 조건을 정의한다 .

SELECT TITLE_ID, SUM(QTY) AS '판매 수량 ' FROM SALES GROUP BY TITLE_ID HAVING SUM(QTY)>= 30

SELECT TITLE_ID, SUM(QTY) AS '판매 수량 ' FROM SALES WHERE QTY > 10 GROUP BY TITLE_ID HAVING SUM(QTY)>= 30

Page 25: SQL Server 2000 기본 및 활용

4. COMPUTE, COMPUTE BY 절

1) COMPUTE 절 : 세부 데이터의 조회와 전체 요약된 결과값을 출력한다 .

SELECT TYPE, TITLE_ID, PRICE FROM TITLES COMPUTE AVG(PRICE)

2) COMPUTE BY 절 : 세부 데이터의 조회와 항목별 요약된 결과값을 출력한다 . SELECT TYPE, TITLE_ID, PRICE FROM TITLES ORDER BY TYPE COMPUTE AVG(PRICE) BY TYPE

Page 26: SQL Server 2000 기본 및 활용

1. INSERT, UPDATE, DELETE

1) 데이터 입력 ( INSERT ) : 테이블이나 뷰를 통해 테이블에 데이터를 입력한다 . 구문 : INSERT [INTO] 테이블명 ( COL1, COL2, COL3,… ) VALUES ( VAL1, VAL2, VAL3,… )

2) 데이터 수정 ( UPDATE ) : 테이블에 입력된 데이터를 수정한다 . 구문 : UPDATE 테이블명 SET COL1 = VAL1 , COL2 = VAL2 WHERE COL3 = VAL3

3) 데이터 삭제 ( DELETE ) : 테이블에 입력된 데이터를 삭제한다 . 구문 : DELETE FROM 테이블명 WHERE COL1 = VAL1

Page 27: SQL Server 2000 기본 및 활용

2. TRANSACTION의 기본 개념 1) TRANSACTION 이란 ? : 데이터베이스에서 작업의 처리 단위를 TRANSACTION 이라고 한다 . 트랜잭션의 종류는 암시적 트랜잭션과 명시적 트랜잭션 두가지가 있다 .

2) 암시적 트랜잭션 : 사용자가 트랜잭션의 시작을 직접 지정할 필요 없이 각 트랜잭션을 커 밋 ( COMMIT ) 또는 롤백 ( ROLLBACK ) 하기만 하면 된다 .

암시적 트랜잭션 설정 : SET IMPLICIT_TRANSACTIONS ON 암시적 트랜잭션 해재 : SET IMPLICIT_TRANSACTIONS OFF

3) 명시적 트랜잭션 : 개발자가 직접 트랜잭션의 시작과 끝을 정의 한다 . BEGIN TRANSACTION 으로 트랜잭션을 시작하고 COMMIT 이나 ROLLBACK 으로 트랜잭션을 종료 한다 .

Page 28: SQL Server 2000 기본 및 활용

3. SUB QUERY, 상관관계 SUB QUERY : DML 문장 ( SELECT, INSERT, UPDATE, DELETE ) 안에 SELECT문장을 SUB QUERY 라고 한다 .

1) 단순 SUB QUERY 특징 : 괄호로 묶여 있다 . SUB QUERY 만 실행해도 실행된다 . 안쪽 질의가 먼저 실행된 후 바깥 질의가 실행 된다 .

2) 단순 SUB QUERY 활용 예 ) SELECT STOR_ID, SUM(QTY), ROUND(CONVERT(FLOAT, SUM(QTY)) / (SELECT SUM(QTY) FROM SALES) * 100 , 2) FROM S ALES GROUP BY STOR_ID

예 ) SELECT TITLE FROM TITLES WHERE TITLE_ID IN ( SELECT TITLE_ID FROM SALES )

Page 29: SQL Server 2000 기본 및 활용

3) 상관관계 SUB QUERY 특징 : 바깥 질의의 결과가 안쪽 질의에 영향을 미치고 안쪽 질의의 결과가 다시 바깥 질의에 영향을 준다 . 안쪽 질의만 수행하면 문장이 실행되지 않는다 .

4) 상관관계 SUB QUERY 활용 예 ) SELECT A.* FROM SALES A WHERE 10 > ( SELECT COUNT(*) FROM SALES B WHERE A.QTY < B.QTY ) ORDER BY QTY DESC

Page 30: SQL Server 2000 기본 및 활용

4. 다른 테이블을 기반으로 한 데이터 입력 1) SELECT ~ INTO 문 : 새로운 테이블을 만들면서 기존에 있는 테이블의 데이터를 입력 한다 . SELECT * INTO TITLES2 FROM TITLES SELECT TITLE_ID, TITLE, PRICE INTO TITLES3 FROM TITLES WHERE PRICE >= 20

SELECT * INTO #TITLES FROM TITLES SELECT * INTO ##TITLES FROM TITLES

2) INSERT ~ SELECT 문 : 기존의 있는 테이블에 다른 테이블의 데이터를 입력한다 . INSERT TITLES2 SELECT * FROM TITLES

INSERT TITLES3 SELECT TITLE_ID, TITLE, PRICE FROM TITLES WHERE PRICE < 20