SQL Server之 (一) 数据库简介 SQL Server环境配置 数据库基础知识

时间:2024-02-15 12:23:49

     前言

      这个是我工作两年多后,再次从最基础的SQL入门开始,认真的学一遍SQL Server,捡漏和巩固都有;因为自己刚开始学的时候,总是心烦气躁,最近换工作,发现1到2年经验,问到基础性的东西还是很多,这个时候需要的是扎实的基础功夫,所以一系列打击+反省后,自己节假日在家从最基础重新认识一下SQL Server,继续沉淀一下.哪里有不对或需深入探讨,请直接留言或者小窗我;欢迎~

自己学习笔记,转载请注明出处,谢谢!---酸菜

(一) 数据库简介   SQL Server环境配置   数据库基础知识

1.什么是数据库,数据库有哪些特点,为什么要用数据库?

    数据库是一种数据库管理软件,需要安装在电脑的操作系统上的;

    数据管理系统(DBMS):DataBaseManagementSystem

    数据库具有特点:

                       ① 海量存储数据;

                       ②查询速度快;

                       ③控制并发性访问;

                       ④安全性;

                       ⑤数据的完整性;

2.不同的数据库,不同的特点

    mySql:功能简单,速度很快,数据不够严谨;

    MSSQL Server:只能运行在Windows平台上,与.net有很好的结合,比mySql功能多,但是对大数据量处理不是特别好;

    Oracle:

    SQLLite:

    Access:文件级数据库;

3.数据库概念知识

    数据库(DataBase):不同类的数据放到不同的数据库中;便于对数据的类别个性化管理;安全性高;避免命名冲突;

    表(Table):关系型数据库的关系指的是表;

    列(Column)/字段(Field)/行(Row)元祖;

    主键(Primary Key):数据行中唯一标识,一个表中只能有一个主键;分为:逻辑主键和业务主键;

    逻辑主键:没有任何业务意义的字段,完全是给程序看的字段;

    业务主键:使用对业务有意义的字段,比如身份号/学号...;

    主键须有的特点: 

                            ①不允许空的列为主键;

                            ②没有重复数据的列;

                            ③没有实际业务逻辑的列;(逻辑主键)

                            ④稳定的列;(列中的数据不会经常变化的)

                            ⑤选择单列为主键;(当需要多列来共同唯一标识一个表中的一条记录时,可选择多列组成一个主键,此时可以称为:组合主键/复合主键/联合主键)一般 不推荐使用组合主键;

    数据冗余的问题:

    造成了存储空间的浪费;

    更新/删除 数据异常;

    为了处理数据冗余的问题,需要将这样的表拆分为两个或者多个表来储存,这个时候需要用主外键将几个表的数据联合起来.

    外键(Foreign Key),如何利用主外键将表中的数据联合起来?

    当数据拆分为两个表来储存的时候, 每张表有它自己的主键.其中一张表除了它的主键还有一个列,这个列用来引用另一张表中的主键,这一列就是这张表的"外键列",有外键列的表叫做"外键表",主键被引用的表叫做"主键表".

    因为外键列的数据引用的是另一张表的主键列数据,所以外键列的数据不可以随便填写,必须是另一张表的主键已经存在的数据.

4.SQL Server的安装和环境配置

    安装过程网上有对应版本的图解教程,这里我就先不写了;

    安装完后,需要启动SQL Server服务:

    开始→运行→services.msc  然后找到对应的需要启动的服务;

    查看数据库版本语句:Print @@Version;

5.SQL Server安装失败,如何干净的卸载掉;

    ①在程序卸载目录中,卸载掉所有带有SQL Server字样的程序;

    ②删除所有安装目录;

    ③删除注册表:开始→运行→regedit;在CURRENT_USER和LOCAL_MACHINE下的SoftWare下的微软项目中的带有SQL Server的都删除掉;

6.通过设计器创建数据库和表;

    ①每个数据库都有且只有一个主数据文件(.mdf),日志文件(_log.ldf);任意多个次要数据文件(.ndf),多个事务日志文件;

    ②文件组:可将多个数据文件逻辑分到一组,方便日后管理维护(备份/将表建立在对应文件组上等);

    ③分离:对要分离的数据库,右击,分离,删除链接;

    ④附加:右击数据库,选择附加,找到目录下的数据库文件;

    ⑤脱机:暂时不用这个数据库,右击脱机,还在原来的目录,需要恢复,右击联机;

    ⑥生成兼容脚本移动数据库:右击数据库→任务→生成脚本,可选生成向下版本,可选项根据需求;

       注:<1>附加和分离是在数据库版本是一样的情况下进行的,不同版本是会出错;

           <2>报错:"不允许保存更改.您所做的更改要求删除并重新创建以下表.您对无法重新创建的表进行了更改或者启用了"阻止保存要求重新创建表的更改"选项";解决方法:工具→选项→Designer/设计→ 勾去  阻止保存要求重新创建表的更改;

           <3>报错:附加数据库时报错"..拒绝访问..";权限问题,设置数据库文件安全为:Everyone;

           <4>低版本向高版本是兼容的,高版本向低版本是不兼容的;

7.数据库的数据类型;

    ①image:用来存储 byte[]类型;

    ②字符串类型:char,nchar,varchar,nvarchar,text,ntext,varchar(max),nvarchar(max)都属于字符串类型,下面是对应的区别;

        <1>带n和不带n的区别:

               char: char(2),表示可以存储2个字节,比如:ab,12,赵;

               nchar:nchar(2),表示可以存储两个字符,每个字符占用2个字节,比如:貂蝉,ab,12;

               总结:

               不带n:存储中文占用2个字节;存储数字/英文等占用1个字节;

               带n:无论存储中文/英文/数字,每个字符都占用2个字节;

               带n的数据类型最长4000,nchar(4000)/nvarchar(4000);

               不带n的数据类型最长是8000,char(8000)/varchar(8000);

        <2>带var和不带var的区别:

               char(10):  1                  ;

                                1111111111;

               varchar(10): 1;

                                   1111111111;

               总结:

               不带var:固定长度,存储1个字符,也要占用10个字节,会自动补9个空格,占满10个字节;

               带var:可变长度,会根据实际存储的字符大小动态重新分配存储空间,相对节省存储空间;

               10,表示存储最大10个字节,无论是固定长度还是可变长度,超过后都会报错;

        <3>大字符串存储时:

               SQL 2005前用:text和ntext;

               SQL 2005后用:varchar(max)/nvarchar(max);max表示4GB内存;

         注:①对于双字节字符,用nvarchar解决;

    ③bit类型:在程序中和查询语句中bit的类型的值都是1(true)和0(false),但是在设计器中必须输入true/false;

       注:详细的数据类型文档,在  帮助→索引中搜索"数据类型 [SQL Server]"都会有详细的解释文档;

8.数据库的5个系统数据库

    ①master:记录SQL Server系统的所有系统级信息.例如:登录账户信息,链接服务器和系统配置设置,记录其他所有数据库的存在,数据文件的位置,SQL Server的初始化信息等,如果master不存在,无法启动SQL Server;

    ②msdb:用于SQL Server代理计划警报和作业,数据库定时执行某些操作,数据库邮件等;

    ③model:用作于SQL Server实例上创建的所有数据库的模板.对model数据库的修改(数据库大小/排序规则/恢复模式/其他数据库选项)将应用于以后创建的所有的数据库.在model中创建一张表,以后创建其他数据库都默认有一张同样的表;

    ④tempdb:一个工作空间,用于保存临时对象或中间集.一个全局资源,可供链接到SQL Server的所有实例用户使用.每次启动SQL Server时都会重新创建tempdb;

    ⑤Resource:一个只读数据库.包含SQL Server包括的系统对象.系统对象在物理上保留在Resource数据库中, 但在逻辑上显示在每个数据库的sys架构中.