数据库概述:

DBMS(Database Management System,数据库管理系统)和数据库。

平时谈到“数据库”可能有两种含义:MSSQLServer、Oracle等某种DBMS;存放一堆数据表的一个分类( Catalog )。

不同品牌的DBMS有自己的不同的特点:

MySQL(速度很快,适合对数据要求并不是十分严谨的地方,去掉了很多中小型企业中不常用的功能)

MSSQLServer(与.net结合很好,只能运行在windows平台下,大数据量、大交易量表现并不十分好,功能比MySQL多)

DB2(大型)、Oracle(大型)、Access(文件)、 SQLite(极其轻量级数据库) 、Sybase等。对于开发人员来讲,大同小异

SQL(语言)<>SQLServer<>MSSQLServer。最常见的错误。

除了Access、SQLServerCE、SQLite等文件型数据库之外,大部分数据库都需要数据库服务器才能运行。学习、开发时是连接本机的数据库,上线运行时是数据库运行在单独的服务器。

1:数据库附加时候报错:拒绝访问:数据库文件权限不够

2:SQL Server数据库身份验证

Windows身份验证:以当前登录本机的账户去登陆SQL Server,若有权限,则登录;和本机有多少实例账户无关

在企业中同一个域名中的电脑都可以使用Windows身份验证登录SQL Server

SQL Server账户验证:用你在SQL Server中自己建的用户名和密码进行登录,和Windows没有关系

  1. create database dbone
  2. on primary
  3. (
  4. name='dbone',
  5. filename='C:\dbone.mdf',
  6. size=10MB;
  7. maxsize=1000M,
  8. filegrowth=10%
  9.  
  10. )
  11. log on
  12. (
  13. name='dbone_log',
  14. filename='C:\dbone_log.ldf',
  15. size=2MB;
  16. maxsize=100M,
  17. filegrowth=10M
  18. )

Create DB Demo

3:向自动编号插入值:

1):必须把列名写全

2):必须设置IDENTITY_INSERT为ON

语法:set IDENTITY_INSERT 表名 on

4:数据删除

truncate table 表名的作用与Delete from  表名一样

1):truncate语句非常高效,由于truncate操作采用按最小方式来记录日志,所以效率非常高,

对于数百万条数据使用truncate删除只要几秒钟,而使用Delete则可能耗费几小时。

2):truncate语句会把表中的自动编号重置为默认值。

3):truncate语句不会触发Delete触发器

5:保证表中的记录不能重复,增加主键约束。

6:约束--保证数据完整性

非空约束;主键约束[PK];唯一约束[UQ];默认约束[DF];检查约束[CK];外键约束[FK]

保证列的记录必须唯一,唯一约束【唯一约束,要求表中的列必须唯一,只能有一个null值】

7:事务(Transaction)

事务:同生共死

指访问并可能更新数据库中各种数据项的一个程序执行单元(uint)--也就是由多个sql语句组成,必须作为一个整体执行

这些sql语句作为一个整体一起向系统提交,要么都执行、要么都不执行

语法步骤:

开始事务:begin transaction

事务提交:commit transaction

事务回滚:rollback transaction

判断某条语句执行是否出错:

全局变量@@error

@@error只能判断当前一条T-SQL语句执行是否有错,为了判断事务中所有T-SQL语句是否有错,我们需要对错误进行累计

例如:set @errorSum=@errorSum+@@errorSum

set implicit_Transactions{on|off}} --隐身事务
 
8:存储过程---就像数据库中运行方法(函数)

和C#里的方法一样,由存储过程名/存储过程参数组成/可以有返回结果

优点:

1.执行速度更快---在数据库中保存的存储过程语句都是编译过得

2.运行模块化执行---类似方法的复用

3.提高系统安全性---防止SQL注入

4.减少网络流通量---只要传输存储过程的名称

系统存储过程:由系统定义,存放在master数据库中,名称以"sp_"开头或者"xp_"开头

自定义存储过程:由用户在自己的数据库中创建的存储过程usp,自定义的存储过程可以以usp_开头

  1. --定义存储过程的语法
  2. CREATE PROC[EDURE] 存储过程名
  3. @参数1 数据类型 = 默认值 OUTPUT,
  4. @参数n 数据类型 = 默认值 OUTPUT
  5. AS
  6. SQL语句
  7. --参数说明:
  8. --参数可选
  9. --参数分为输入参数、输出参数
  10. --输入参数允许有默认值
  11.  
  12. EXEC 过程名 [参数]
  13.  
  14. 创建存储过程Procedure语法

存储过程的语法

9:触发器

After触发器:

在语句执行完毕之后触发

按语句触发,而不是所影响的行数,无论所影响为多少行,只触发一次。

只能建立在常规表上,不能建立在视图和临时表上。(*)

可以递归触发,最高可达32级。

update(列),在update语句触发时,判断某列是否被更新,返回布尔值。

instead of触发器:

用来替换原本的操作

不会递归触发

可以在约束被检查之前触发

可以建在表和视图上(*)

  1. CREATE TRIGGER triggerName ON 表名
  2. after(for)(forafter都表示after触发器)
  3. |instead of
  4. UPDATE|INSERT|DELETEinsert,update,delete
  5. AS
  6. begin

  7. end
  8.  
  9. 触发器Trigger语法

Trigger语法

触发器使用建议:

1.尽量避免在触发器中执行耗时操作,因为触发器会与SQL语句认为在同一个事务中。(事务不结束,就无法释放锁)

2.避免在触发器中做复杂操作,影响触发器性能的因素比较多(如:产品版本、所使用架构等等)

要想编写高效的触发器考虑因素比较多(编写触发器容易,编写复杂的高性能触发器难!)。

3.触发器编写时注意对多行触发时的处理。(一般不建议使用游标,性能问题!)

MSSQL 基础知识001的更多相关文章

  1. APP测试入门篇之APP基础知识(001)

    前言        最近两月比较多的事情混杂在一起,静不下心来写点东西,月初想发表一遍接口测试的总结,或者APP测试相关的内容,一晃就月底了,总结提炼一时半会也整不完.放几个早年总结内部培训PPT出来 ...

  2. MSSQL 基础知识002

    ---启用sa账号 1. 先使用一个windows账号登陆. 2.在数据库实例上面右键,属性,安全性,登录名,sa. 右键,属性. 常规,修改sa的密码. 状态,启用sa账号. 主键的作用: 1.唯一 ...

  3. MSSQL 基础知识与语句笔记

    建库 CREATE DATABASE 数据库名 ON[PRIMARY] --默认属于PRIMARY主文件组,可省略 ( NAME='', --主数据文件的逻辑名 名称 FILEAME='', --主数 ...

  4. [Linux 001]——计算机和操作系统的基础知识

    在正式开始学习 Linux 操作系统之前,有必要先回顾/学习一下计算机和操作系统的基本知识,为我们在后续的学习中铺路搭桥,在了解计算机一些基础原理的条件下再去进行学习,理解应该会更透彻一些.我会从一个 ...

  5. 雷子聊并发编程(001):基础知识之串行&并行&并发

    前言 编写正确的程序很难,而编写正确的并发程序则难上加难.与串行程序相比,在并发程序中存在更多容易出错的地方.那么,为什么还要编写并发程序?原因很简单,能充分发挥与利用多处理器系统的强大计算能力. 在 ...

  6. 001/Node.js(Mooc)--基础知识

    一.Node.js基础知识 node.js用C++语言编写. 简单的说 Node.js 就是运行在服务端的 JavaScript. Node.js 是一个基于Chrome JavaScript 运行时 ...

  7. IP地址基础知识

    IP地址基础知识 网络号:用于识别主机所在的网络:主机号:用于识别该网络中的主机. 一 OSI/RM模型 应用层 表示层 会话层 传输层 网络层 数据链路层 物理层 二 TCP/IP模型 数据链路层( ...

  8. 深入理解mysql之BDB系列(1)---BDB相关基础知识

        深入理解mysql之BDB系列(1) ---BDB相关基础知识 作者:杨万富   一:BDB体系结构 1.1.BDB体系结构 BDB总体的体系结构如图1.1所看到的,包括五个子系统(见图1.1 ...

  9. 深入了解mysql它BDB系列(1)---BDB基础知识

        深入了解mysql它BDB系列(1) ---BDB关基础知识 作者:杨万富   一:BDB体系结构 1.1.BDB体系结构 BDB总体的体系结构如图1.1所看到的.包括五个子系统(见图1.1中 ...

随机推荐

  1. tweenjs缓动算法使用小实例

    这里的tweenjs不是依托于createjs的tewwnjs,而是一系列缓动算法集合.因为本身是算法,可以用在各个业务场景中,这也正是总结学习它的价值所在.tweenjs代码详情: /* * Twe ...

  2. SQL SERVER技术内幕之7 透视与逆透视

    1.透视转换 透视数据(pivoting)是一种把数据从行的状态旋转为列的状态的处理,在这个过程中可能须要对值进行聚合. 每个透视转换将涉及三个逻辑处理阶段,每个阶段都有相关的元素:分组阶段处理相关的 ...

  3. nginx 反向代理 ,入门

    入门:http://www.cnblogs.com/jjzd/p/6691500.html 启动,重新加载:http://blog.csdn.net/zhongguozhichuang/article ...

  4. Axure RP 的安装与卸载

    官网:http://www.axure.com/download 支持Windows和Mac

  5. BZOJ 1407 Savage(拓展欧几里得)

    这题的时间复杂度真玄学... O(m*n^2).1e8也能过啊... 首先题目保证m<=1e6. 这启发我们枚举或者二分答案? 但是答案不满足单调性,考虑从小到大枚举m. 对于每一个m,枚举两个 ...

  6. 【bzoj4229】选择 离线+LCT

    题目描述 现在,我想知道自己是否还有选择. 给定n个点m条边的无向图以及顺序发生的q个事件. 每个事件都属于下面两种之一: 1.删除某一条图上仍存在的边 2.询问是否存在两条边不相交的路径可以从点u出 ...

  7. BZOJ4868:[SHOI2017]期末考试——题解

    http://www.lydsy.com/JudgeOnline/problem.php?id=4868 题目复制于洛谷:https://www.luogu.org/problemnew/show/P ...

  8. BZOJ1503:[NOI2004]郁闷的出纳员——题解

    http://www.lydsy.com/JudgeOnline/problem.php?id=1503 (题面复制的洛谷的,因为洛谷好看) 题目描述 OIER公司是一家大型专业化软件公司,有着数以万 ...

  9. HDU3652:B-number——题解

    http://acm.hdu.edu.cn/showproblem.php?pid=3652 题目大意:给一个数n,求1-n所有满足下列条件的数的个数: 1.包含一个子串为“13” 2.能被13整除. ...

  10. float,absolute脱离文档流的总结

    dom元素脱离文档流,有如下几种方式: 1. float 脱离文档流,其他dom元素无视他,在其下方布局,但是其未脱离文本流,其他元素的文本会认为他存在,环绕他布局.父元素会无视他,因此无法获取其高度 ...