SQLserver是个什么东西?相当于一是个货仓,在计算机领域的货仓,学名:数据库。
数据库是个什么东西呢?是指长期存储在计算机内的、有组织、可共享的数据结合。由此可知数据库的三个特点:永久存储、有组织、可共享
照这样说,数据库就是指的SqlServer了,其实不然,每个公司有着不同的货仓,因而它只是其中之一。
既然是个货仓,货仓里都有什么东西呢?接下来我就和大家一起学习SQLserver中的一切创建:
第一:数据库的创建:
create database 数据库名
ON
(
name='数据库名_DAT',
filename='该文件的存储路径\数据库_DAT.mdf',
size=20MB,
maxsize=40MB,
filegrowth=5%
),
(
name='数据库名_DAT1‘,
filename='该文件的存储路径\数据库_DAT1.ndf',
size=20MB,
maxsize=40MB,
filegrowth=5%
),
(
name='数据库名_DAT2',
filename='该文件的存储路径\数据库_DAT2.ndf',
size=20MB,
maxsize=40MB,
filegrowth=5%
)
log on
(
name='数据库名_LOG',
filename='该文件的存储路径\数据库_LOG.ldf',
size=10MB,
maxsize=20MB,
filegrowth=1
)
注释:该数据库包括三个文件,一个是主要数据库文件.mdf、次要数据库文件.ndf、事务日志文件.ldf
五个关键词:name="文件名" filename:文件存储路径 size:文件的初始值,maxsize:文件的最大存储量 filegrowth:自动增长变量
二:创建表:
create table 表名
(
列名 数据类型 完整性约束
)
三:创建架构
create schema 架构名
authorization 架构的拥有者
create table 表名
(
列名 数据类型 完整性约束
)
四:创建视图:
CREATE VIEW
[ < database_name > .] [ < owner > .]
view_name [ ( column [ ,...n ] ) ]
[ WITH < view_attribute > [ ,...n ] ]
AS
select_statement
[ WITH CHECK OPTION ]
< view_attribute > ::=
{ ENCRYPTION | SCHEMABINDING | VIEW_METADATA }
例1:建立显示年龄大于20岁的学生学号、姓名、性别等信息的S_view1
create view S_view1
as
select sno,sname,sex from s where age>20
例2:创建v_score1,要求基本表来源:S,C,SC;选择的字段为:S表中的sno、sname;C表中的cname及SC表中score;要求查询的数据为学号为20030001的学生的考试成绩。
Use s
create view v_score1
As
Select s.sno,s.sname,c.cname,sc.score
From s,c,sc
Where s.sno=sc.sno and c.cno=sc.cno and sno=“20030001”
五:创建索引:
CREATE [UNIQUE] [CLUSTERED| NONCLUSTERED ]
INDEX index_name ON { table | view } ( column [ ASC | DESC ] [ ,...n ] )
[with
[PAD_INDEX]
[[,]FILLFACTOR=fillfactor][[,]IGNORE_DUP_KEY]
[[,]DROP_EXISTING]
[[,]STATISTICS_NORECOMPUTE]
[[,]SORT_IN_TEMPDB]
]
[ ON filegroup ]
CREATE INDEX命令创建索引各参数说明如下:
UNIQUE:用于指定为表或视图创建唯一索引,即不允许存在索引值相同的两行。
CLUSTERED:用于指定创建的索引为聚集索引。
NONCLUSTERED:用于指定创建的索引为非聚集索引。
index_name:用于指定所创建的索引的名称。
table:用于指定创建索引的表的名称。
view:用于指定创建索引的视图的名称。
ASC|DESC:用于指定具体某个索引列的升序或降序排序方向。
Column:用于指定被索引的列。
PAD_INDEX:用于指定索引中间级中每个页(节点)上保持开放的空间。
FILLFACTOR = fillfactor:用于指定在创建索引时,每个索引页的数据占索引页大小的百分比,fillfactor的值为1到100。
IGNORE_DUP_KEY:用于控制当往包含于一个唯一聚集索引中的列中插入重复数据时SQL Server所作的反应。
DROP_EXISTING:用于指定应删除并重新创建已命名的先前存在的聚集索引或者非聚集索引。
STATISTICS_NORECOMPUTE:用于指定过期的索引统计不会自动重新计算。
SORT_IN_TEMPDB:用于指定创建索引时的中间排序结果将存储在 tempdb 数据库中。
O
例子:为表employees创建了一个唯一聚集索引,其程序清单如下:
CREATE UNIQUE CLUSTERED INDEX number_ind
ON employees (number)
with
pad_index,
fillfactor=20,
ignore_dup_key,
drop_existing,
statistics_norecompute
例子:
为表employees创建了一个复合索引,其程序清单如下:
create index employees_cpl_ind
on employees(name,age)
with
pad_index,
fillfactor=50
四. 利用索引优化向导创建索引
索引优化向导可以完成以下几方面的工作:
1.根据给定的工作负荷,通过使用查询优化器分析该工作负荷中的查询,为数据库推荐最佳索引组合。
2.分析所建议的更改将会产生的影响,包括索引的使用,查询在表之间的分布,以及查询在工作负荷中的性能。
3.推荐为执行一个小型的问题查询集而对数据库进行优化的方法。
4.通过设定高级选项如磁盘空间约束、最大查询语句数和每个索引最多对应字段数等,允许定制推荐方式
N filegroup:用于指定存放索引的文件组。
六:创建存储过.创建存储过程
我们仍以“学生库”为例,为“学生库”创建一个存储过程。
①首先启动企业管理器,打开数据库,将焦点置于“存储过程”项上。然后,单击鼠标右键。如图1所示。
图1
②在快速菜单中,选择“新建存储过程”,弹出“存储过程编辑窗口”。如图2所示
图2
在创建存储过程中注意下列几点:
一、不能将 CREATE PROCEDURE 语句与其它 SQL 语句组合到单个批处理中。
二、创建存储过程的权限默认属于数据库所有者,所有者可将此权限授予其他用户。
三、存储过程是数据库对象,其名称必须遵守标识符规则。
四、只能在当前数据库中创建存储过程。
补充知识: 系统存储过程
SQL Server数据库许多的管理活动是通过一种称为“系统存储过程”的特殊过程执行的。系统存储过程在 master 数据库中创建并存储,带有 sp_ 前缀。可从任何数据库中执行系统存储过程,而无需使用 master 数据库名称来完全限定该存储过程的名称。
建议您不要创建以 sp_ 为前缀的存储过程。SQL Server 始终按照下列顺序查找以 sp_ 开头的存储过程:
一、在 master 数据库中查找存储过程。
二、根据所提供的任何限定符(数据库名称或所有者)查找该存储过程。
三、如果未指定所有者,则使用 dbo 作为所有者查找该存储过程。
因此,虽然当前数据库中可能存在带 sp_ 前缀的用户创建的存储过程,但总会先检查 master 数据库(即使该存储过程已用数据库名称限定)。
注意:如果用户创建的存储过程与系统存储过程同名,则永远不执行用户创建的存储过程。
b. 存储过程的语法
语法,如图3所示:
图3
参数
Create Procedure 创建存储过程。
procedure_name 新创建的存储过程名称。
@parameter 过程中的参数。在 CREATE PROCEDURE 语句中可以声明一个或多个参数。用户必须在执行过程时提供每个所声明参数的值(除非定义了该参数的默认值)。存储过程最多可以有 2.100 个参数。
使用 @ 符号作为第一个字符来指定参数名称。参数名称必须符合标识符的规则。每个过程的参数仅用于该过程本身;相同的参数名称可以用在其它过程中。
data_type 参数的数据类型。所有数据类型(包括 text、ntext 和 image)均可以用作存储过程的参数。
AS 指定过程要执行的操作
sql_statement 过程中要包含 的SQL 语句。
下面我们在“学生库”中新建存储过程,名称为“my_first”,存储过程文本内容如图4所示。
图4
存储过程要达到目的很简单,即:在基本情况表中,查询性别为男性的的人,并按出生日期的升序排列。
程: