MS-SQL7.0 Implementation 강의 노트. Written by 남현주. 1 일 history, 설치, R-DBMS Chapter 1. SQL Server 개요 Chapter 2. Transact- SQL 개요 Chapter 3. 데이터베이스 생성하기 (간략히). History (SQL Server 의 역사 ). 1970 년 IBM : 데이터베이스 질의를 위한 언어 만듬 – SEQUEL ( 구조적 질의 언어 : Structured English Query Language )
Une image / un lien ci-dessous est fourni (tel quel) pour télécharger la présentation
Politique de téléchargement : le contenu du site vous est fourni TEL QUEL pour votre information et votre usage personnel ; il ne peut être vendu, concédé sous licence ni partagé sur d’autres sites sans l’accord de son auteur.Le contenu vous est fourni TEL QUEL, pour votre information et votre usage personnel uniquement.Téléchargez la présentation en cliquant sur ce lien.Lors du téléchargement, si vous ne parvenez pas à télécharger une présentation, l’éditeur a peut-être supprimé le fichier de son serveur.Pendant le téléchargement, si vous ne parvenez pas à obtenir une présentation, le fichier a peut-être été supprimé par l’éditeur.
제1장 SQL Server 개요 • SQL Server란 클라이언트/서버형의 관계형 데이타베이스 관리 시스템(RDBMS)이다. • 클라이언트/서버(Client/Server Architecture) 클라이언트 : 다른 시스템 구성요소 들에게 서비스나 자원을 요청하는 시스템 구성요소 서 버 : 서비스나 자원을 다른 시스템 구성 요소 들에 제공하는 시스템 구성요소
데이터베이스의필요배경 SAM(Sequential Access Method) I-SAM(Indexed SAM) 파일 출현 PC :dBase, 호스트:네트워크 DB, 계층적DB등장 DBMS(DataBase Management System) 등장 SQL Server는 관계형데이터베이스 관리 시스템 (RDBMS:Relational Database Management System)
- 데이터에 기반한 시스템의 3가지 범주 . 파일 기반 시스템(File-based systems) . 호스트 기반 시스템(Host_based systems) . 클라이언트/서버 시스템(C/S systems) • 관계형 데이터베이스 관리 시스템(RDBMS) 구조 : 2차원 테이블
Transact_SQL SQL Server는 구조화된 쿼리 언어의 한 버전인 Transact-SQL을 데이터베이스 쿼리 및 프로그래 밍언어로 이용한다. Transact-SQL로는 데이터를 액세스하고 관리할 수 있다. 조 작 : DB에 저장된 데이터의 입력, 수정, 삭제, 조 회 등의 작업을 SQL에 의해서 최종사용자에 게 보여지게 함 무결성 : 데이터의 일관성, 믿을 만한 데이터로 만듬
문(Statement) 설명 GRANT 보안이요구되는시스템에서데이터를조작하고T-SQL 문을실행하는사용자를허가하는엔트리를생성한다. DENY 보안이요구되는시스템에서계정의권한을거부하고사용자, 그룹, 역할로부터그들의그룹과역할멤버쉽을통해권한을상속받는것을막는다. REVOKE 이전에허가또는거부되었던권한을제거한다. (데이터제어언어(Data Control Language, DCL)) DCL문은데이터베이스사용자혹은역할과관련된권한을변경할때사용.
(데이터정의언어(Data Definition Language, DDL)) DDL문은데이터베이스와테이블및저장프로시저같은 데이터베이스객체의생성을통해데이터베이스구조를 정의. CREATE , ALTER, DROP 문 * 참고 : 객체의이름 Fully Qualified Names : 서버이름, 데이터베이스이 름, 소유자이름, 객체이름 대부분의객체참조는로컬서버를디폴트로하고세부분의이름을사용한다
(데이터조작언어(Data Manipulation Language, DML)) DML문은데이터베이스에서데이터를조작. 이문을 이용하여데이터변경또는정보를추출할수있음. SELECT, INSERT, UPDATE, DELETE * 기본적인SELECT 문 SELECT 이후에는가져올컬럼이나표현식을나열하면 된다. 모든컬럼지정시 * FROM 이후에는어떤테이블 로부터데이터를가져오는지지시한다. 여러테이블이 올수도있고, 뷰가올수도있다.WHERE 절이후에는 어떤행을가져올것인지를지시한다. 생략하면전체행을 가져온다.
예) SELECT * FROM titles – titles테이블의전체자료가져오기 SELECT title_id, pub_id, price, title FROM titles –원하는컬럼순으로가져오기 SELECT ‘책번호:’, title_id, pub_id, price, title FROM titles –임의의컬럼만들기
SELECT Title_no = title_id, ‘출판사번호’ = pub_id, price, title FROM titles –컬럼의제목바꾸기(1) SELECT title_id as Title_no , pub_id as [출판사번호], price, title FROM titles –컬럼의제목바꾸기(2) SELECT title_id Title_no , pub_id [출판사번호], price, title FROM titles –컬럼의제목바꾸기(3)
SELECT title_id as Title_no, pubid as ‘출판사번호’, price, Convert(char(30), title) as ‘줄인제목’ FROM titles –자료를변형시킴(1) SELECT title_id as Title_no, pubid as ‘출판사번호’, price * 1.1 as ‘가격(부가세포함)’ FROM titles –자료를변형시킴(2) * 주의 : SELECT 10/3 은?
(로컬변수) 변수는할당된값을갖는언어구성요소이다. 사용자정의로컬변수는 @로시작한다. 예) DECALRE @lvname char(20) SET @ lvname = ‘Dodsworth’ SELECT * FROM employees WHERE lastname = @lvname (연산자) 치환연산자(=), 산술연산자, 단항연산자, 비교연산자, 문자열연결연산자(+), 논리연산자
datepart 약어 범위 year Yy 1753-9999 quarter Qq 1-4 month Mm 1-12 Day of year Dy 1-366 Day Dd 1-31 Week Wk 0-51 Weekday Dw 1-7(1이일요일) Hour Hh 0-23 Minute Mi 0-59 Second Ss 0-59 millisencond Ms 0-999 날짜함수) GETDATE() –현재의날짜와시간 SELECT CONVERT(varchar(30), GETDATE(), 102) DATEADD() – datepart부분에지정한숫자값을더한다. SELECT DATEADD(DD, 100, GETDATE()) –오늘로부터 100일후는?
* 조건에맞는행가져오기 SELECT title_id, qty FROM sales WHERE title_id = ‘BU1032’ * 비 교 = > < >= <= <> != !> !<
* NULL SELECT title_id, price FROM titles WHERE price IS NULL 주의)SELECT title_id, price FROM titles WHERE price = NULL
* 정 렬 SELECT title_id, qty FROM sales ORDER BY title_id, qty 주의)SELECT title_id, qty FROM sales ORDER BY title_id, qty DESC
* 범 위 SELECT title_id, qty FROM sales WHERE qty BETWEEN 10 AND 20 (WHERE qty >= 10 AND qty <= 20) * 목 록 SELECT title_id, qty FROM sales WHERE title_id IN (‘BU1032’,’BU1111’,’MC3021’) (WHERE title_id =‘BU1032’ OR title_id =’BU1111’ OR title_id =’MC3021’)
/* 튜닝을위한제안 */ . NOT 연산자를사용하지말것 : 색인의도움을받을수없다. . 연산자앞에는컬럼만오게할것 . 적절한 ( )와띄어쓰기 :가독성을좋게한다.
(흐름제어언어구성요소) BEGIN… END 블록 IF… ELSE 블록 WHILE 구조 : 지정된조건이참인동안블록을반복 적으로수행 RETURN : 쿼리혹은프로시저로부터무조건빠져나 옴. RETURN 뒤의문은실행되지않는다. 0 값이정상, 0이 아닌값이에러지시를위해사용된다. 인라인주석( -- ) : 주석문자의오른쪽텍스트는무 시된다. 블록주석(/* */)
제3장 데이터베이스 생성하기 • R-DBMS(관계형데이터베이스) 설계소개 데이터베이스란 어느 한 조직의 다수 응용 시스템들이 사용하기 위해 통합, 저장되어진 서로 관련된 데이터의 집합 “서로 관련된 데이터의 집합” 행(Row),열(Column)로 이루어진 2차원 테이블 구조
데이터베이스 데이터 모델링 어플리케이션 테이블(table) 실체(entity) 레코드셋(record set) 열(column) 속성(attribute) 필드(field) 행(row) 인스턴스(instance) 레코드(record) 용어정리> 관계형 데이터베이스는 설계시에 꼭 중요한 모델링이라는 작업이 들어간다. 설계에 들어가는 시간이 개발에 들어가는 시간보다 월등히 많이 필요하다.(70~80%) 모델링을 하는 가장 큰 이유는 데이터의 중복성을 제거하는 것이다.
* 모델링의 3단계 : 실체, 관계, 속성 실체(entity) : 하나로 묶을 수 있는 것의 실질적인 집합 예) 사원 테이블, 고객 테이블 등… 관계(Relationship) : 실체에 대한 설명이나 추가적 인 구분자. 기본키와 참조키로 정의 예) 사원과 부서의 관계, 고객과 주문의 관계 등… 속성(Attribute) : 실체나 관계에 대한 서술적 속성. 컬럼 예) 사원명, 사원번호, 주소, 전화번호 등…
* 논리적인 데이터베이스 설계 .테이블 및 해당 이름 .각 테이블의 컬럼명 .유일 값 요구, 널 허용, 컬럼에 저장될 자료형 같 은 컬럼의 특성 .각 테이블의 기본키 : 테이블의 컬럼을 유일하게 식별할 수 있는 값들을 저장하는 컬럼이다. .테이블간의 관계 : 어떤 테이블의 행들은 다른 테이블의 하나 이상의 행에 종속적이다.이러한 테이블 사이의 종족성을 관계라 한다. 관계를 정의하기 위해서 다른 테이블의 기본 키를 참조하는 이러한 컬럼을 참조 키라 한다.
.관계에는 일대일, 일대다, 다대일, 다대다와 같은 경우가 발생할 수 있다. 참고로 다대다는 R-DB에서는 인정되지 않는 관계로 정규화를 거쳐야 한다. (정 규 화) 1.제 1정규화(1NF) 규칙 : 여러 값을 가진 컬럼이 존재할 수 없다. 반 복되는 그룹이 존재해서는 안된다. 각 행 과 열에는 오직 한 값만이 존재해야 한다.
사번 사번 사번 취미 사원명 사원명 취미 1 1 1 여행 홍길동 홍길동 여행 골프 1 2 사미자 골프 2 사미자 등산 2 등산 1번 사원은 두 가지 취미를 갖고 있다. 이 그룹은 제1 정규화의 대상이 된다. 다음과 같이 정규화 한다.
사번 프로젝트번호 부서 프로젝트 역할 고과율 1 A 전산 팀장 A 1 B 전산 조원 C 1 C 전산 부팀장 B 2 C 경리 팀장 A 3 C 기획 팀장 A 2.제 2정규화(2NF) 규칙 : 모든 키가 아닌 컬럼은 기본 키 전체에 의존 적이어야 한다. 기본키의 일부분에 의존적 이어서는 안된다.
사번 사번 프로젝트 번호 부서 프로젝트 역할 고과율 1 전산 1 A 팀장 A 2 경리 1 B 조원 C 3 기획 1 C 부팀장 B 2 C 팀장 A 3 C 팀장 A 위의 테이블에서 기본키는 (사번+프로젝트 번호)이다. 그런데 부서 컬럼은 사번에 의존적이다. 즉, 부서컬럼은 (사번+프로젝트 번호)에 의존적이지 않고 사번에 의존적이므로 아래와 같이 제 2정규화를 거쳐야 한다.
사번 프로젝트번호 프로젝트 역할 고과율 1 A 팀장 A 1 B 조원 C 1 C 부팀장 B 2 C 팀장 A 3 C 팀장 A 3.제 3정규화(3NF) 규칙: 키가 아닌 컬럼은, 다른 키가 아닌 컬럼에 의 존적이어서는 안된다.
프로젝트 역할 사번 프로젝트번호 고과율 프로젝트 역할 1 팀장 A A 팀장 1 조원 B C 조원 1 부팀장 C B 부팀장 2 C 팀장 3 C 팀장 고과율 컬럼은 프로젝트 역할에 따라 변하고 있음을 볼 수 있다. 즉, 고과율은 키가 아닌, 프로젝트 역할 컬럼에 의존적이다. 아래와 같이 정규화한다.
학번 이름 과목번호 과목명 1 최철호 K 국어 2 이상진 K 국어 3 김철민 K 국어 3 김철민 M 수학 3 김철민 E 영어 2 이상진 H 역사 2 이상진 P 정치 1 최철호 P 정치 4.제 4정규화(4NF) 규칙 : 3NF 테이블은 의존적인 다대다 관계를 가질 수 없다.
Connexion au compte
Connectez-vous pour publier votre contenu sur SlideServe.