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 参数的数据类型。所有数据类型(包括 textntextimage)均可以用作存储过程的参数。

AS 指定过程要执行的操作

sql_statement 过程中要包含 的SQL 语句。

下面我们在“学生库”中新建存储过程,名称为“my_first”,存储过程文本内容如图4所示。

图4

存储过程要达到目的很简单,即:在基本情况表中,查询性别为男性的的人,并按出生日期的升序排列。

程:

SQlServer第一天的更多相关文章

  1. 解剖SQLSERVER 第一篇 数据库恢复软件商的黑幕(有删减版)

    解剖SQLSERVER 第一篇  数据库恢复软件商的黑幕(有删减版) 这一系列,我们一起来解剖SQLSERVER 在系列的第一篇文章里本人可能会得罪某些人,但是作为一位SQLSERVER MVP,在我 ...

  2. 微软BI 系列随笔列表 (SSIS, SSRS, SSAS, MDX, SQL Server)

    [公告]本博客于2015年10月起不再更新 新博客文章主要发表在商业智能BI社区: http://www.flybi.net/blog/biwork 博客地图自动分类 文章目录方便更好的导航,阅读文章 ...

  3. BI 系列随笔列表 (SSIS, SSRS, SSAS, MDX, SQL Server)

    微软 BI ETL 架构设计 如何在 ETL 项目中统一管理上百个 SSIS 包的日志和包配置框架 如何管理和记录 SSIS 各个 Task 的开始执行时间和结束时间以及 Task 中添加|删除|修改 ...

  4. mORMot学习笔记2-2种方式查询数据

    本例使用SqlServer 第一种方式结果放入Memo控件,,需要引用SynCommons, SynDB, SynOleDb; procedure TForm1.Button1Click(Sender ...

  5. 翻译brent ozar的sqlserver dba训练课程——第一章:建立数据库服务器清单

    在公司里,走进销售副总裁的办公室,询问他手下有多少销售人员.不,我的意思是你并不要那么做,他们会问你销售工具为什么那么慢.  其实我的意思是,如果你能走进他的办公室问他这个问题.我敢打赌,他会马上回答 ...

  6. _00020 妳那伊抹微笑_谁的异常最诡异第一期之 SqlServer RSA premaster secret error

    博文作者:妳那伊抹微笑 博客地址:http://blog.csdn.net/u012185296 博文标题:_00020 妳那伊抹微笑_谁的异常最诡异第一期之 SqlServer RSA premas ...

  7. sqlserver性能调优第一步

    相信不少的朋友,无论是做开发.架构的,还是DBA等,都经常听说“调优”这个词.说起“调优”,可能会让很多技术人员心头激情澎湃,也可能会让很多人感觉苦恼,不知道如何入手.当然,也有很多人对此不屑一顾,因 ...

  8. SQLSERVER取当前月第一天和最后一天

    --本月第一天: select   dateadd(dd,-day(getdate())+1,getdate()) --本月最后一天: SELECT dateadd(ms,-3,DATEADD(mm, ...

  9. 【转】在sqlserver下增加MYSQL的链接服务器,实现分布式数据库开发第一步

    首先要在SQLserver上服务器上这装ODBC对mysql的支持,我下载了mysql-connector-odbc-5.1.5-win32.rar,安装后在ODBC中有了DRIVER={MySQL ...

随机推荐

  1. 虚拟机VM安装linux系统

    废话不多说,直接上图文过程: 1.首先是下载linux镜像文件了(CentOS,Ubuntu等,根据自己的实际需求下载) linux镜像下载(提供几个32位的linux镜像下载,如有其他需求请自行百度 ...

  2. 纯CSS tooltip 提示

    一般的tooltip,使用超链接的title,或者是css+javascript生成. 如果页面布局合理,样式结构清晰,可以使用纯CSS的提示. demo如下: a.tooltip { positio ...

  3. PHP PDO函数库详解

    PDO是一个“数据库访问抽象层”,作用是统一各种数据库的访问接口,与mysql和mysqli的函数库相比,PDO让跨数据库的使用更具有亲和力:与ADODB和MDB2相比,PDO更高效.目前而言,实现“ ...

  4. gulp教程之gulp-minify-css

    简介: 使用gulp-minify-css压缩css文件,减小文件大小,并给引用url添加版本号避免缓存.重要:gulp-minify-css已经被废弃,请使用gulp-clean-css,用法一致. ...

  5. AngularJS学习笔记

    一.初识AngularJS:1.Angularjs通过创建实时模板来代替视图,而不是将数据合并进模板后更新DOM,任何一个独立视图组件中的值都是动态替换的. 二.数据绑定和第一个AngularJS W ...

  6. mysql5.6新特性总结

    一. server参数默认值设置的变化http://dev.mysql.com/doc/refman/5.6/en/server-default-changes.html 二. innodb增强1.全 ...

  7. [原创]VM虚拟机Centos6.4网络配置。

    关于虚拟机VMware 3种网络模式(桥接.nat.Host-only)的工作原理http://www.cnblogs.com/hehexiaoxia/p/4042583.html 操作环境 主机:W ...

  8. Android中的几种解析XML文件的类

    Ø DOM解析 优点: 1.XML树在内存中完整存储,因此可以直接修改其数据和结构. 2.可以通过该解析器随时访问XML树中的任何一个节点. 3.DOM解析器的API在使用上也相对比较简单. 缺点:如 ...

  9. powershell读写磁盘变量(对象序列化)

    ---[第一章,开篇引子]--- 很久很久以前,我在网上闲逛,看到一头powershell菜鸟,写了一篇感慨道“挖哈哈,我学会powershell啦,我以前很笨,各种不懂,还想把变量保存起来.” 实际 ...

  10. 依然同上~ 点击获取当前option的value与text

    $(".tjbtn").click(function(){ $('#leader').each(function(index, ele){ var leader = ele.val ...