장 VI, 데이터베이스 및 데이터베이스 오브젝트

장 VI, 데이터베이스 및 데이터베이스 오브젝트

요약 :

1, 데이터베이스의 구성과 특성을 이해

2, SQL Server2008의 설치 및 구성을 파악

도 3은 데이터베이스를 생성 및 유지하는 방법을 습득

아키텍처 정의 및 유지 보수 방법의 4, 마스터

5, 생성 및 유지 관리 방법 파티션 테이블, 인덱스 및 뷰 마스터

제 I, 데이터베이스 생성 및 유지 보수

1.1, SQL Server 데이터베이스 개요

  • SQL 서버의 개발의 역사

    SQL 서버 7.0 (1999 년, 공식적으로 기업 데이터베이스의 계급 중에서)

    SQL 서버 2000 (2000 년, 제품의 대신)

    SQL 서버 2005 (2005, 코드 명 '유콘')

    (2008 년, 주요 제품 버전) SQL 서버 2008

    SQL 서버 2012

    SQL 서버 2014

  • SQL 서버의 특징

  보호 데이터베이스 쿼리

  서버 관리 작업에 소요되는 시간을 줄이고

  증가 응용 프로그램의 안정성

  시스템 실행 성능 최적화 및 예측

  • SQL 서버의 버전

  엔터프라이즈 에디션 (엔터프라이즈 판) : 엔터프라이즈 애플리케이션은 포괄적 인 데이터 플랫폼을 제공하기 위해.

  스탠다드 에디션 (일반용) : 부서 응용 프로그램에 대한 지원을 제공합니다.

  개발자 버전 (개발자 버전) : Enterprise Edition의 소유는 사용 제한이 있습니다.

  워크 그룹 에디션 (워크 그룹 에디션) : 각 지점의 응용 프로그램에 대한 지원을 제공합니다.

  온라인 (웹 버전) : 저렴한 비용으로 웹 응용 프로그램 솔루션을 제공합니다.

  모바일 장치를위한 모바일 (컴팩트) 지원.

  무료 버전 (익스프레스) : 학습과 작은 응용 프로그램을 구축에 적합합니다.

  • SQL Server 2008의 자원 요구 사항을 설치

최소 하드웨어 요구 사항

주장 32 위 64 위
프로세서 Pcntium Ⅲ 이상 아이테니엄, 옵테론, Athclon 또는 XCON는 EM64T 지원 / Pcntium이
프로세서 속도 1.0GHz 이상 1.6GHz의 이상
기억 512메가바이트 512메가바이트
  • SQL Server 데이터베이스의 분류

시스템베이스 (자동으로 생성)

  1. 마스터 : 모든 시스템 수준의 정보, 메타 데이터, 엔드 포인트, 연결 및 시스템 구성 서버.
  2. MSDB : 연산자를 기록, 에이전트 경보 서비스 일정과 작업을 사용하는 경우이 정보를 저장.
  3. tempdb의 : 당신이 다시 만들어 시작 때마다 임시 개체 및 중간 결과를 저장하는 데 사용됩니다.
  4. 모델 : 모든 템플릿 데이터베이스, 사용자 정보를 저장 공공 데이터베이스.
  5. 자원 : 읽기 전용 데이터베이스. 이하는 개체 탐색기에서 볼.

사용자 데이터베이스 (데이터 저장 및 사용자 트래픽 관련)

1.2, SQL Server 데이터베이스의 구성

  • SQL Server 데이터베이스는 운영 체제 파일 집합에 매핑 :

  데이터 파일

  의 .mdf : 주 데이터 파일. 하나의 크기 3메가바이트보다 큰가.

  .NDF : 보조 데이터 파일. 이 0 또는 더, 디스크 또는 여러 디스크에 저장할 수 있습니다.

  로그 파일

  .LDF : 트랜잭션 로그 파일. 적어도 하나의 로그 파일.

1.2.1 배포, 데이터베이스 저장 공간

  당신이 사용자 데이터베이스를 만들 때 모델 데이터베이스는 자동으로 새 라이브러리에 복사됩니다.

  데이터 저장 장치의 최소 단위의 데이터 페이지 (페이지라고 함).

  하나는 연속적인 디스크 공간의 8킬로바이트 페이지입니다. (연속 저장 공간)

  페이지 크기는 데이터의 데이터베이스 테이블 행의 최대 크기를 결정한다.

  페이지를 축소 할 수 없습니다 행이 저장됩니다.

1.2.2 운동

예 : 데이터 테이블의 데이터 만 행, 행 당 3000 바이트 계산 테이블의 메모리 공간이 요구된다.

답 : 2분의 10,000 * 8킬로바이트 = 40메가바이트

공간 활용 6000/8000 = 75 %

1.3, 데이터베이스 파일 그룹

파일 그룹의 두 가지 유형 :

  주 파일 그룹 (PRIMARY)

  시스템 정의는 주 데이터 파일과 다른 파일 그룹에 다른 데이터 파일을 명시 적으로 할당되지 않은 모든 페이지가 마스터 파일 그룹에 할당 된 시스템 테이블이 포함되어 있습니다.

  사용자 정의 파일 그룹

  정의하거나 데이터베이스를 수정할 때 파일 그룹 키워드로 지정.

참고 :

  1. 로그 파일은 그룹 파일에 별도로 공간과 데이터 공간 관리를 로그인 할 수 있습니다.

  2. 파일은 하나 개 이상의 파일 그룹 구성원이 될 수 없습니다.

  3. 파일이 두 개 이상의 파일 그룹이 포함되어있는 경우 모든 파일이 채워진 후,주기가 자동으로 증가 할 것이다.

  4. 데이터베이스 파일을 추가 한 후, 파일을 다른 그룹으로 이동할 수 없습니다.

  5. 당신은 기본 파일 그룹으로 만 파일 세트를 지정할 수 있습니다.

1.4, 데이터베이스 파일 속성

데이터 파일과 로그 파일은 당신이 필요로하는 정보의 데이터베이스를 정의 :

파일 이름과 위치

  논리 파일 이름, 실제 파일 이름

처음 크기

  당신은 모델 데이터베이스 기본 데이터 파일의 크기보다 작을 수 없습니다

성장

  당신은 성장 여부를 파일 (기본값)를 지정할 수 있습니다

최대 크기

  최대 제한 파일 증가. 무제한 기본

성장

  당신은 성장 여부를 파일 (기본값)를 지정할 수 있습니다

최대 크기

  최대 제한 파일 증가. 무제한 기본

1.5, T-SQL을 사용하여 데이터베이스를 생성

데이터베이스를 생성하는 일반적인 방법에는 두 가지가 있습니다 :

  데이터베이스 SQL Server 관리 Studio (영상 제작)을 생성하여

  T-SQL 문 (콘솔 만들기)를 통해 데이터베이스를 작성

T-SQL

CREATE DATABASE database_name
//指定创建的数据库逻辑名 如Studentdb
[ ON
   [<filespec> [, … n] ]
   [, <filegroup> [,…n] ]
//指定创建的数据库主文件(mdf)存放的路径比如 e:\Studentdb.mdf
]
[
    LOG ON {<filespec> [,…n]}
    //指定创建的数据库日志文件(ldf)存放的路径比如e:\Studentdb_log.ldf
] 
[COLLATE collation_name]
[FOR LOAD| FOR ATTACH]

설명 :

PRIMARY : 기본 데이터베이스 파일로 지정, 당신은 첫 번째 파일은 주 데이터 파일 기본을 지정하지 않습니다.

LOG ON은 : 자동으로 로그 파일, 512킬로바이트의 데이터 파일을 25 % 이상의 전체 크기를 만들 수 있습니다.

이름 : 유일한 논리적 파일 이름.

FILENAME : 실제 파일 이름입니다.

SIZE : 초기 크기의 .mdf 크기가 적은 모델보다, 1MB의 기본 .NDF 없습니다.

MAXSIZE : 최대 크기가 지정되지 않은 파일이 자동적으로 디스크가 꽉 찰 때까지 성장한다.

무제한 : 무제한 성장, 일반적으로 지정된 로그 파일 2TB, 데이터는 16TB를 파일.

FILEGROWTH : 지정 파일이 자동으로 증가하지 더 MAXSIZE 기본 데이터 파일 1메가바이트보다 로그 파일은 현재 파일의 10 %이다.

FILEGROUP : 논리 파일 이름의 집합이 아니라,이 시스템 이름이 될 수 없습니다.

DEFAULE : 기본 파일 그룹으로 설정 파일을 지정합니다.

케이스 :

CREATE DATABASE Studentdb
//数据库名
ON
(    NAME = 'Studentdb_Data',
  //主数据文件逻辑名
     FILENAME = 'E:\Studentdb.mdf',
 //主数据文件存放位置
     SIZE = 3MB,
 //主数据文件初始大小
     MAXSIZE = 50MB,
 //主数据文件最大大小
     FILEGROWTH = 10%
 //超过初始大小后文件增长率
)
LOG ON
(    NAME = 'Studentdb_Log',
 //日志文件逻辑名
     FILENAME = 'E:\ Studentdb.ldf',
 //日志文件存放位置
     SIZE = 2MB,
 //日志文件初始大小
     MAXSIZE = 5MB,
 //日志文件最大大小
     FILEGROWTH = 1MB
 //超过初始大小后文件增长率
)
GO
//执行建数据库的命令

1.6 데이터베이스를 수정

데이터베이스 공간을 확장

  기존 데이터베이스 파일의 크기를 확장

  데이터베이스에 대한 새 파일 추가

데이터베이스 공간 축소

  데이터베이스에 그 출시되지 않은 공간은, 시작의 끝에서 파일을 축소.

  자동 축소 : AUTO_SHRINK, 기본 거짓을.

  핸드 정신과 : 파일 크기의 데이터베이스를 축소;

전체 데이터베이스의 크기에 비례 축소.

데이터베이스 파일을 추가 및 삭제

ALTER DATABASE DATABASE 
{ ADD FILE < filespec > [ ,...n ] [ TO FILEGROUP filegroup_name ] 
| ADD LOG FILE < filespec > [ ,...n ] 
| REMOVE FILE logical_file_name 
| ADD FILEGROUP filegroup_name 
| REMOVE FILEGROUP filegroup_name 
| MODIFY FILE < filespec > 
| MODIFY NAME = new_dbname 
| MODIFY FILEGROUP filegroup_name {filegroup_property 
| NAME = new_filegroup_name }
| SET < optionspec > [ ,...n ] [ WITH < termination > ] 
| COLLATE < collation_name > 
}

지정된 파일의 크기를 확장 :

ALTER DATABASE STU_DB 
MODIFY FILE(NAME=student_data, SIZE=8MB)

새로운 데이터 파일을 추가합니다 :

ALTER DATABASE STU_DB
ADD FILE(NAME=student_data2,
FILENAME=‘E:\Data\student_data2.ndf’,
SIZE=6MB,FILEGROWTH=0)

전체 데이터베이스의 크기를 축소 :

DBCC SHRINKDATABASE

지정된 파일의 크기를 축소 :

DBCC SHRINKFILE

예 1 :

DBCC SHRINKDATABASE(students,20)

수축 데이터베이스 파일은 여유 공간의 20 %를 사용하고있다

예 2 :

DBCC SHRINKFILE(students_data1,4)

4메가바이트에 데이터베이스 크기를 축소

데이터베이스 파일을 삭제합니다 :

ALTER 데이타베이스 STU_DB

REMOVE 파일 student_log1

참고 :

당신이 파일을 추가 할 때, 각 그룹의 데이터 파일이 비율을 채우기 위해, 로그 파일은 순차적으로 증가하게된다.

파일을 삭제하려면 비어 있습니다.

1.7, 분리 및 부착 데이터베이스

데이터베이스를 분리

역할 : 다시 필요가없는 하나의 데이터베이스 서버에서 다른 서버로 데이터베이스를 달성했다.

인스턴스에서 삭제, 그렇지 삭제 데이터 파일을 수행하고 데이터 파일을 유지하고 파일이 완전하고 일관성이 로그 파일을 기록합니다.

사용 sp_detach_db 시스템 저장 프로 시저

如 : EXEC sp_detach_db'student ','진실 '

추가 데이터베이스

  데이터베이스에 데이터베이스 관리 시스템를 다시 분리.

  당신은 물리적 저장 위치와 파일 이름의 기본 데이터 파일을 지정해야합니다.

  DATABASE를 만들 ......

  ATTACH_REBUILD_LOG를 |위한 첨부를

예 :

CREATE DATABASE students
On(FILENAME=‘F:\Data\Students_data1.mdf’)
FOR ATTACH

제 II, 건축

아키텍처 (또한 패턴으로 알려진 스키마) , 데이터베이스의 논리적 네임 스페이스, 데이터베이스 고유 동일한 데이터베이스 스키마 이름의 컨테이너 개체, 하나 이상의 프레임 워크의 이상을 포함하는 데이터베이스입니다.

정의 프레임 워크

CREATE SCHEMA [<构架名>]
AUTHORIZATION<用户名>

삭제 프레임 워크

DROP SCHEMA [<构架名>]

제 III, 파티션 테이블

3.1 기본 개념

  파티션 테이블 데이터 테이블은 서로 다른 서브 세트들로 수평으로 분할된다, 데이터베이스 파일을 하나 이상의 그룹에 저장된 데이터의 서브 세트. 여러 개의 작은 테이블, 논리, 또는 큰 테이블에 물리적으로 큰 테이블.

  파티션의 합리적인 사용은 데이터베이스 성능을 향상시킬 수 있습니다.

  파티션 테이블은 현재 데이터의 크기 및 향후 데이터의 양인지에 따라 달라집니다뿐만 아니라 테이블의 데이터의 작동 특성에 만듭니다.

  표는 다수의 다른 방법을 사용하여 대량의 데이터를 포함 (또는 포함)

  이러한 데이터는 분리 해 같이 분할된다.

3.2, 파티션 테이블을 생성

세 단계 :

(1) 파티션 함수를 만듭니다 : 어떤 방법으로 파티션의 DBMS (데이터베이스 관리 시스템)을 말해

  파티션 함수를 CREATE

(2) 파티션 구성표를 만듭니다 기능을 분할하면 그룹에 생성 된 파일을 분할하는 역할을 매핑하는 것이다

  파티션 구성표를 만들

(3) 테이블을 생성하는 파티션의 사용

열 제목 :

예 1 :

분할 칼럼 콜 (INT)의 왼쪽 분할 함수 생성 :

CREATE PARTITION FUCNTION myPF1(int)
AS RANGE LEFT FOR VALUES(1,100,1000);
분할 1 4
COL1 <= 1 COL1> 1 AND COL1 <= 100 COL1> 100 COL1 <= 1000 COL1> 1,000

당신은 파티션의 오른쪽을 사용하는 경우

CREATE PARTITION FUCNTION myPF1(int)
AS RANGE RIGHT FOR VALUES(1,100,1000);
분할 1 4
COL1 <1 COL1> = 1 AND COL1 <100 COL1> = 100 COL1 <1,000 COL1> = 1000

예 2 :

다음, 먼저 파티션 함수를 만들기 파티션 구성표를 만들고, 파티션 테이블로 만들었습니다.

//创建分区函数
CREATE PARTITION FUCNTION myPF1(int) AS RANGE LEFT FOR VALUES(1,100,1000);
GO
//创建分区方案
CREATE PARTITION SCHEME myPS1 AS PARTITION myPF1 TO (
test1fg, test2fg, test3fg, test4fg)
GO
CREATE TABLE PartitionTable(
Coll int,
Col2 char(10)
ON myPS1(coll))

설명 :

받는 사람의 PARTITION SCHEME myPS1 AS 파티션 myPF1 // 파티션 함수를 CREATE (
test1fg, test2fg, test3fg, test4fg 파일 // 네 그룹)

표 PartitionTable은 CREATE (
콜. INT,
Col2의 숯 (10)
가 ON myPS1 (콜) // 행의 파티션)

4 분기, 인덱스

4.1 인덱스를 생성

CREATE [UNIQUE] [CLUSTERED|NONCLUSTERED]  
 INDEX   index_name
 ON table_name(column_name…)
 //填充因子(系数):指定一个0~100之间的值,表示索引页填充的百分比
 [WITH FILLFACTOR=x]

INDEX : 인덱스 키워드

UNIQUE는 선택 고유 인덱스를 나타냅니다

CLUSTERED는 NONCLUSTERED는 클러스터 된 인덱스 또는 비 클러스터형 인덱스를 나타냅니다

또한 FILLFACTOR의 비율은 인덱스 페이지는 공간에 의해 점령 채울 것을 나타내는, 채우기 비율, 0에서 100 사이의 지정된 값을 나타냅니다

4.2 인덱스를 삭제

DROP INDEX

// 테이블 또는 인덱싱 된 뷰, 인덱스 이름이 삭제 될 컬럼의 인덱스

'tablename.indexname | viewtable.indexname'

// 복수를 지정할 수 있습니다 삭제할 ​​인덱스를 나타내는

[,...엔]

제 5 장, 인덱싱 된 뷰

5.1 기본 개념

  또한 가상 테이블로 알려진 표준 뷰는 동일한 기본 테이블에 결과 세트를 리턴한다. 결과 세트는 영구적으로 표준보기를 저장되지 않고,

  라고보기의 고유 클러스터 된 인덱스 생성, 인덱스 된 뷰 도 구체화 된 뷰라고도 함. 인덱싱 후, 결과 집합의 뷰는 데이터베이스에 저장됩니다 .

  베이스 테이블의 변경은 인덱스 뷰에 저장된 데이터에 반영 될 것이다.

5.2, 행사 인덱싱 된 뷰

  몇몇 갱신 기본 데이터, 인덱싱 된 뷰 더 나은

  배치 형태의 기본 데이터는 정기적으로 업데이트되며, 주로 업데이트하기 전에 모든 인덱싱 된 뷰를 삭제 고려, 읽기 전용 데이터로 처리됩니다 경우, 다시 업데이트 성능을 향상시킬 수 있습니다.

  • 인덱싱 된 뷰는 이러한 유형의 쿼리의 성능을 향상시킬 수 있습니다

행과 고분자 많은 수의 연결을 처리

일반적으로 수행 많은 쿼리와 집계 작업을 연결

  • 인덱싱 된 뷰는 일반적으로 이러한 유형의 쿼리의 성능이 향상되지 않습니다

쓰기 작업의 많은 수의 시스템을 OLTP

데이터베이스 업데이트 작업의 많은 수의

중합 쿼리를 포함하거나 연결되지 않습니다

높은 중합도를 갖는 GROUP BY베이스 데이터.

5.3, 인덱싱 된 뷰 정의

  • 조건이 충족되어야합니다 전에 뷰에 클러스터 된 인덱스를 생성합니다 :

당신이 인덱싱 된 뷰를 정의 할 때, 뷰는 기본 테이블이 아닌 다른 뷰를 참조 할 수 있습니다.

그래서 참조 된 기본 테이블과 동일한 데이터베이스에서 뷰 , 동일한 소유자를.

반드시 SCHEMABINDING 빌드보기로 옵션을 선택합니다.

식의 뷰에서 참조 모든 기능을 결정해야합니다.

뷰에 만들어지는 첫 번째 인덱스는 고유 클러스터 된 인덱스 다른 후 생성.

CREATE VIEW;WITH SCHEMABINDING; CREATE 
UNIQUE CLUSTERED INDEX …

예 :

1,

1、在SQL Server 2008中,主要数据文件必须建立在(  )文件组中。
答案:主

2,

2、不同的数据库管理系统采用的日志文件格式不完全一样,概括起来主要有以记录为单位的日志文件和以(  )为单位的日志文件两种。
答案:数据块

삼,

3、在SQL Server 2008中,每个数据页可存储8060字节的数据。设表T有10000行数据,每行占用4031字节,则存储该表数据大约需要(  )MB存储空间,其空间利用率大约是(  )%。(存储空间和空间利用率均保留到整数,小数点后按四舍五入处理)
解:行数据不能跨页存储
4031<8060<4031*2,所以每个页只能存储1行数据
10000*1*8(每页的大小8KB)=80000KB=80MB
[4031/8060]=0.5=50%
答案:80、50

네,

4、在SQL Server 2008中,如果数据库tempdb的空间不足,可能会造成一些操作无法进行,此时需要扩大tempdb的空间。下列关于扩大tempdb空间的方法,错误的是(  )
A.手工扩大tempdb中某数据文件的大小
B.设置tempdb中的数据文件为自动增长方式,每当空间不够时让其自动增长
C.手工为tempdb增加一个数据文件
D.删除tempdb中的日志内容,以获得更多的数据空间
答案:D[删除文件,必须是文件内容为空的时候]

5,

5、设有职工表(职工号,姓名,地址1,地址2),其中,职工号为主码。现要求地址1和地址2组合起来不能有重复值。在SQL Server 2008环境中有下列创建该表的语句:
Ⅰ.CREATE TABLE 职工表(
职工号 int PRIMARY KEY,
姓名 nchar(10),
地址1 nvarchar(20),
地址2 nvarchar(20),
UNIQUE(地址1,地址2)
)
Ⅱ.CREATE TABLE 职工表(
职工号 int PRIMARY KEY,
姓名 nchar(10),
地址1 nvarchar(20),
地址2 nvarchar(20)UNIQUE(地址1,地址2)
)
Ⅲ.CREATE TABLE 职工表(
职工号 int PRIMARY KEY,
姓名 nchar(10),
地址1 nvarchar(20)UNIQUE,
地址2 nvarchar(20)UNIQUE
)
Ⅳ.CREATE TABLE 职工表(
职工号 int PRIMARY KEY,
姓名 nchar(10),
地址1 nvarchar(20) UNIQUE(地址1,地址2),
地址2 nvarchar(20)
)
上述语句能正确实现此约束的是(  )
A.仅Ⅰ和Ⅲ           
B.仅Ⅱ和Ⅳ
C.都正确              
D.仅Ⅰ、Ⅱ和Ⅳ
答案:D
两个地址不能相同的约束语句是:
UNIQUE(地址1,地址2)

6,

6、在进行数据库物理设计时,为提高查询效率,需要在基本表的一些列上建立索引。有下列情况:
Ⅰ.查询语句的WHERE子句中引用率比较高的列
Ⅱ.经常参与连接操作的列
Ⅲ.经常在order by子句中出现的列
Ⅳ.经常使用LIKE操作符且字符串前后均带有%的列
上述情况中一般情况下适合建立索引的是(  )
A.以上全部
B.仅Ⅰ和Ⅲ
C.仅Ⅱ、Ⅲ和Ⅳ
D.仅Ⅰ、Ⅱ和Ⅲ
答案:D

추천

출처www.cnblogs.com/shaoyayu/p/12355330.html