首页 > 代码库 > SQL Server基础

SQL Server基础

<style></style>

一、常用命令

1、使用命令行开启SQL Server服务

     获取管理员权限的命令行工具:

     net start mssqlserver 开启sql server服务

     net restart mssqlserver 重新启动sql server服务

     net stop mssqlserver 关闭sql server服务 

2、使用命令登陆(该方法可适用于在一台没有SQL Server的电脑去操作一台有SQL Server的电脑)

     运行: sqpl ?/

     

     [-S 服务器的名称]  [-U 登陆名] [-P 密码]

     

     出现1>表示连接成功,接下来就可以输入SQL语句来进行操作了。

    

二、基本概念知识

 1、数据库登录名:

       SQL Server安装以后,有一个超级管理员"sa"(super Administrator的简称),一般不要使用这个用户管理数据,也不能 把这个用户的密码设置为空,随便把该用户操作、密码设置为空都将给数据库带来很大的安全隐患,所以一般在安装完毕并创  建了其他登录名后,将sa账户进行禁用或删除。

      如何新建一个数据库用户我在另一篇博客中写有。http://www.cnblogs.com/chenyongblog/p/3719408.html

 

 2、系统数据库:

      SQL Server中自带的系统数据库master,model,msdb,tempdb。

      这里引用下这篇文章:深入了解SQLServer系统数据库工作原理

      Master 
      Master数据库保存有放在SQLSERVER实体上的所有数据库,它还是将引擎固定起来的粘合剂。由于如果不使用主数据库,SQLSERVER就不能启动,所以你必须要小心地管 理好这个数据库。因此,对这个数据库进行常规备份是十分必要的。 
       

      这个数据库包括了诸如系统登录、配置设置、已连接的SERVER等信息,以及用于该实体的其他系统和用户数据库的一般信息。主数据库还存有扩展存储过程,它能够访问外部进程,从而让你能够与磁盘子系统和系统API调用等特性交互。这些过程一般都用像C++这样的现代编程语言。 
 
      如果不幸碰到系统崩溃而必须恢复主数据库的情况,你可以参看MCSE/MCDBA Steven Warren在TechRepublic上发表的文章。这篇文章讲得十分透彻,它解释了恢复 一重要数据库所需要的一些特殊步骤。 
 
      Model 
      Model是一个用来在实体上创建新用户数据库的模版数据库。你可以把任何存储过程、视图、用户等放在模型数据库里,这样在创建新数据库的时候,新数据库就会包含你放在 模型数据库里的所有对象了。 
 
      Tempdb 
 
      正如其名字所提示的,tempdb存有临时对象,例如全局和本地临时表格和存储过程。 (这里我理解我系统的临时表,例如我在做集合查询的时候,不想创建一个新表,我可以通过tempdb来保存数据
 
     这个数据库在SQLSERVER每次重启的时候都会被重新创建,而其中包含的对象是依据模型数据库里定义的对象被创建的。除了这些对象,tempdb还存有其他对象,例如表格 变量、来自表格值函数的结果集,以及临时表格变量。由于tempdb会保留SQLSERVER实体上所有数据库的这些对象类型,所以对数据库进行优化配置是非常重要的。 

     Msdb 
     Msdb数据库用来保存于数据库备份、SQL Agent信息、DTS程序包、SQLSERVER任务等信息,以及诸如日志转移这样的复制信息。 

3、文件及组成类型

     数据库文件由1个数据文件.mdf/.ndf和至少1个日志文件.ldf组成

4、服务器角色

 (1)sysadmin:执行sql server中的任何动作
 (2)serveradmin:配置服务器设置
 (3)setupadmin:安装复制和管理拓展过程
 (4)securityadmin:管理登陆和create database的权限以及阅读审计
 (5)processadmin:管理sql server进程
 (6)dbcreator:创建和修改数据库
 (7)diskadmin:管理磁盘文件

5、数据库角色

 (1)db_owner:可以执行数据库中技术所有动作的用户
 (2)db_accessadmin:可以添加、删除用户的用户
 (3)db_datareader:可以查看所有数据库中用户表内数据的用户
 (4)db_datawriter:可以添加、修改或删除所有数据库中用户表内的数据的用户
 (5)db_ddlaadmin:可以在数据库中执行所有DDL操作的用户
 (6)db_securityadmin:可以管理数据库中与安全权限有关的
 (7)db_backoperator:可以备份数据库的用户(并可以发布DBCC和CHECKPOINT语句,这两个语句一般在备份前都会被执行)
 (8)db_denydatareader:不能看到数据库中任务数据的用户
 (9)db_denydatawriter:不能修改数据库中任何数据的用户

三、数据库完整性

1、实体完整性约束:实体完整性要求表中的每一行数据都反映不同的实体,不能存在相同的数据行。通过索引、唯一约束、主键约束或者表示列属性。

2、域完整性约束:域完整性指的是给定列输入的有效性通过限制数据类型、检查约束、输入格式、外键约束、默认值、非空约束等多种方法,可以实现标的域完整性。

3、引用完整性约束:在输入或删除数据行时,引用完整性约束用来保持表之间已定义的关系。子表不能添加主表中设置了外键约束的列没有关联的内容。主表不能修改设置了外键约束的列,当子表有与之匹配的相关信息时,主表不能删除设置了外键的列,当子表有与之匹配的相关信息时,引用完整性通过主键和外键之间的引用关系来实现。

4、自定义完整性约束:用户自定义完整性用来定义特定的规则,通过数据库的规则,存储过程等方法来进行约束。

四、主键、外键

1、主键:当某些信息不允许重复时,这就需要有一个列,这个列的值用来唯一标识表中每一行,用于强制表的实体完整性,这样的列定义为表的主键。一个表只能有一个主键,主键约束确保了表中的行是唯一,尽管有的表个允许没有主键,但是通常情况下应当为表设置一列为主键。

2、外键:当子表某列的信息必须在主表存在的情况才能输入,就应当建立一种"引用"的关系,确保"子表"中的某个数据项在"主表"中必须存在。"外键"就是用来达到这个目的的,它是相对于主键而言的,就是"子表"中对应于"主表"的列,在子表中称为外键或者引用键,它的值要求与主表的主键或唯一键相对应,外键用来强制引用完整性。一个表可以有多个外键。

3、复合主键:如果两列或多列组合起来唯一地标识表中的每一行,则该主键也叫"复合主键"。当使用复合主键,数据输入时,必须跟所有设置了复合主键的列的数据都相同的情况才会被禁止输入。

4、主键选用原则:

   (1)最少性是指列数最少的键,如果可以从单个主键和组合主键选择时,应该选择单个主键,这是因为操作一列比操作多列要快。当然该规则也有例外,例如,两个整数类型的列的组合比一个很大的字符类型的列要快。
   (2)稳定性是指列中数据的特征,由于主键通常用来在两个表之间建立联系,所以主键的数据不要经常更新,理想情况下,应该永远不改变。