《SQL Server 2008从入门到通晓》–20180723

目录

1.架构

架构是一种独立于用户的逻辑分组,组中可以存储表,视图,存储进度等。若是表1在架设1中,表2在架构2中,用架构1的用户名登录时表2不可知。且未添加该架构的数据库无法被该架构的用户访问。

1.1.创设架构并在架设中创制表

履行如下语句

CREATE LOGIN hy WITH PASSWORD = '123456'
GO
--新建登录名
CREATE DATABASE schematest
GO
--新建数据库
USE schematest
GO
CREATE USER u_for_test FOR LOGIN hy
GO
CREATE SCHEMA dbo_Schema
go
--在schematest数据库下添加dbo_Schema
CREATE TABLE T1(id INT,NAME VARCHAR(20))
go

CREATE TABLE dbo_Schema.T2(Nid int,DD datetime)
go

GRANT SELECT ON SCHEMA :: dbo_Schema TO u_for_test;
--给u_for_test赋予SELECT权限
--重新使用hy登录即可。

用hy登录,打开未添加dbo_Schema架构的数据库,出现如下提醒
图片 1
打开schematest数据库,展开表,dbo_Schema下的T2表可见,非dbo_Schema架构下的T1表不可知。
图片 2

1.2.删减架构

删除架构前必须删除恐怕移动该架构的具有目标,不然删除操作将会破产。如举行下列语句

DROP SCHEMA dbo_Schema
GO

结果如图所示
图片 3
那时候要将T2表删除或许移动到其余架构才能得逞删除dbo_Schema

1.3.修改表的架构

如图所示,右键表名——设计——右边属性栏中修改表的架构
图片 4
如图所示,当把T2表所引述的架构修改为dbo后,可一连删除架构dbo_Schema操作。就能得逞删除dbo.Schema
图片 5

2.视图

视图是数据库中原始数据的一种转移,是查看表数据的一种方式,视图是一种逻辑对象,是杜撰的表,是一串SELECT语句,并不是实事求是的表。

2.1.新建视图

示例1:利用student表和class_student表的数额新建视图class_01,记录01班学生详细音信
Student表的数据如图所示
图片 6
Class_student表的数目如图所示
图片 7
履行下列语句新建视图class_01

CREATE VIEW class_01
AS
SELECT class_student.stu_no,class_id,stu_name,stu_sex,stu_age,stu_addr,stu_native_place,stu_birthday,stu_enter_score,stu_phone,stu_father_name,stu_mather_name
FROM class_student INNER JOIN student
ON class_student.stu_no=student.stu_no
WHERE class_id='01'

视图class_01的多少如图所示
图片 8

注:视图只是一个SELECT语句,数据依据基表的数量变动而自动改变。

2.2.用到视图修改数据

示例2:有course表数据,基于course表新建视图coursetest,列名为course_id,course_name,credits。
Course表数据如图所示
图片 9
举办下列语句新建coursetest视图

CREATE VIEW coursetest
AS
SELECT course.course_id,course_name,credits FROM course

Coursetest视图数据如图所示
图片 10
在coursetest视图中插入一行course_id为“0013”的数据

INSERT INTO coursetest(course_id,course_name,credits)
VALUES('0013','嵌入式系统开发','5')

Course表数据如图所示
图片 11
那行数据也被插入到course表中,在依照单张表的视图中得以由此增删改视图数据来更新基表数据,对按照多张表的视图不可更新。

2.3.刨除视图

DROP VIEW coursetest

3.索引

3.1.聚集索引

聚集索引数据按照索引的依次排序,查询速度比非聚集索引快。当插入数据时,按索引顺序对数码再次排序。打个借使,新华字典中按拼音查字就是聚集索引,找到了矮字就能按梯次查下去找到爱字。一个表只可以有1个聚集索引
比方一个表在开创主键时没有聚集索引也没指定唯一非聚集索引,会对PRIMARY
KEY字段自动创制聚集索引

3.2.非聚集索引

非聚集索引不依据索引顺序排序,制定了表中多少的逻辑顺序,选取指针指向数据页的款型。一个表可以拥有三个非聚集索引。打个比方,新华字典中按笔画查字就是非聚集索引,笔画索引顺序和字的相继分裂,依靠指针来指向数据页。

3.3.制造索引

示例3:设置IndexDemo1表的id字段为PRIMARY
KEY,看系统是或不是自动为该字段创立了聚集索引。执行下列语句

CREATE DATABASE IndexDemo
USE IndexDemo
CREATE TABLE IndexDemo1(
id INT NOT NULL,
A CHAR(10),
B VARCHAR(10),
CONSTRAINT PK_id PRIMARY KEY(id)
)

结果如图所示
图片 12
聚集索引以PRIMARY KEY的键名为索引名。
举行下列语句删除PRIMARY KEY

ALTER TABLE IndexDemo1
DROP CONSTRAINT PK_id

聚集索引PK_id也同时被去除了。
示例4:在示例3的IndexDemo1表中,插入几行数据,添加聚集索引,观望数据顺序,添加非聚集索引,观看数据顺序
IndexDemo1的数码如图所示(未添加索引)
图片 13
施行下列语句,为id列添加聚集索引

CREATE CLUSTERED INDEX clustered_index ON IndexDemo1(id)

添加聚集索引clustered_index后IndexDemo1表的数量如图所示
图片 14
可以窥见,表中数量依据id列从小到大进展排序。
那会儿在表中插入一条数据

INSERT INTO IndexDemo1(id,A,B)VALUES('7','g','f')

表中多少排序如图所示
图片 15
推行下列代码删除聚集索引clustered_index并对id列创制非聚集索引nonclustered_index

DROP INDEX IndexDemo1.clustered_index
GO--删除聚集索引clustered_index
CREATE NONCLUSTERED INDEX nonclustered_index ON IndexDemo1(id)
GO--创建非聚集索引nonclustered_index

表中的数据如图所示
图片 16
此时添加一条记下

INSERT INTO IndexDemo1(id,A,B)VALUES('8','g','f')

表中的数据如图所示
图片 17
在未成立聚集索引,创立了非聚集索引的表中新插入的数额是添加在末行的。

3.4.修改索引

当数码变动时,有必不可少重新生成索引,重新社团目录或然禁止目录。

  • 重新生成索引表示删除索引,并且重新创建索引。那样可以根据指定的填充度压缩页来删除碎片,回收磁盘空间,重新排序索引。
  • 再一次协会目录对索引碎片的整理程度稍差于重新生成索引。
  • 取缔目录表示禁止用户访问索引。

示例5:对IndexDemo1表中的id列重新生成索引,重新协会目录和禁止目录。
施行下列语句

ALTER INDEX nonclustered_index ON IndexDemo1 REBUILD
--重新生成索引
ALTER INDEX nonclustered_index ON IndexDemo1 REORGANIZE
--重新组织索引
ALTER INDEX nonclustered_index ON IndexDemo1 DISABLE
--禁用索引

注:禁用索引后再次启用索引,只需重新生成索引就足以了。

3.5.查看索引

可以选拔目录视图和系列函数查看索引。那样的函数有许多,不一一列举了。
图片 18

3.6.查看索引碎片

右键索引名,在性质——碎片中查看碎片
图片 19

3.7.查看总结信息

在表下的总结新闻中,右键点击要查看统计音讯的索引名,点击详细音信
图片 20

相关文章