MSSQL 基础知识001
数据库概述:
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没有关系
create database dbone
on primary
(
name='dbone',
filename='C:\dbone.mdf',
size=10MB;
maxsize=1000M,
filegrowth=10% )
log on
(
name='dbone_log',
filename='C:\dbone_log.ldf',
size=2MB;
maxsize=100M,
filegrowth=10M
)
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_开头
--定义存储过程的语法
CREATE PROC[EDURE] 存储过程名
@参数1 数据类型 = 默认值 OUTPUT,
@参数n 数据类型 = 默认值 OUTPUT
AS
SQL语句
--参数说明:
--参数可选
--参数分为输入参数、输出参数
--输入参数允许有默认值 EXEC 过程名 [参数] 创建存储过程Procedure语法
存储过程的语法
9:触发器
After触发器:
在语句执行完毕之后触发
按语句触发,而不是所影响的行数,无论所影响为多少行,只触发一次。
只能建立在常规表上,不能建立在视图和临时表上。(*)
可以递归触发,最高可达32级。
update(列),在update语句触发时,判断某列是否被更新,返回布尔值。
instead of触发器:
用来替换原本的操作
不会递归触发
可以在约束被检查之前触发
可以建在表和视图上(*)
CREATE TRIGGER triggerName ON 表名
after(for)(for与after都表示after触发器)
|instead of
UPDATE|INSERT|DELETE(insert,update,delete)
AS
begin
…
end 触发器Trigger语法
Trigger语法
触发器使用建议:
1.尽量避免在触发器中执行耗时操作,因为触发器会与SQL语句认为在同一个事务中。(事务不结束,就无法释放锁)
2.避免在触发器中做复杂操作,影响触发器性能的因素比较多(如:产品版本、所使用架构等等)
要想编写高效的触发器考虑因素比较多(编写触发器容易,编写复杂的高性能触发器难!)。
3.触发器编写时注意对多行触发时的处理。(一般不建议使用游标,性能问题!)
MSSQL 基础知识001的更多相关文章
- APP测试入门篇之APP基础知识(001)
前言 最近两月比较多的事情混杂在一起,静不下心来写点东西,月初想发表一遍接口测试的总结,或者APP测试相关的内容,一晃就月底了,总结提炼一时半会也整不完.放几个早年总结内部培训PPT出来 ...
- MSSQL 基础知识002
---启用sa账号 1. 先使用一个windows账号登陆. 2.在数据库实例上面右键,属性,安全性,登录名,sa. 右键,属性. 常规,修改sa的密码. 状态,启用sa账号. 主键的作用: 1.唯一 ...
- MSSQL 基础知识与语句笔记
建库 CREATE DATABASE 数据库名 ON[PRIMARY] --默认属于PRIMARY主文件组,可省略 ( NAME='', --主数据文件的逻辑名 名称 FILEAME='', --主数 ...
- [Linux 001]——计算机和操作系统的基础知识
在正式开始学习 Linux 操作系统之前,有必要先回顾/学习一下计算机和操作系统的基本知识,为我们在后续的学习中铺路搭桥,在了解计算机一些基础原理的条件下再去进行学习,理解应该会更透彻一些.我会从一个 ...
- 雷子聊并发编程(001):基础知识之串行&并行&并发
前言 编写正确的程序很难,而编写正确的并发程序则难上加难.与串行程序相比,在并发程序中存在更多容易出错的地方.那么,为什么还要编写并发程序?原因很简单,能充分发挥与利用多处理器系统的强大计算能力. 在 ...
- 001/Node.js(Mooc)--基础知识
一.Node.js基础知识 node.js用C++语言编写. 简单的说 Node.js 就是运行在服务端的 JavaScript. Node.js 是一个基于Chrome JavaScript 运行时 ...
- IP地址基础知识
IP地址基础知识 网络号:用于识别主机所在的网络:主机号:用于识别该网络中的主机. 一 OSI/RM模型 应用层 表示层 会话层 传输层 网络层 数据链路层 物理层 二 TCP/IP模型 数据链路层( ...
- 深入理解mysql之BDB系列(1)---BDB相关基础知识
深入理解mysql之BDB系列(1) ---BDB相关基础知识 作者:杨万富 一:BDB体系结构 1.1.BDB体系结构 BDB总体的体系结构如图1.1所看到的,包括五个子系统(见图1.1 ...
- 深入了解mysql它BDB系列(1)---BDB基础知识
深入了解mysql它BDB系列(1) ---BDB关基础知识 作者:杨万富 一:BDB体系结构 1.1.BDB体系结构 BDB总体的体系结构如图1.1所看到的.包括五个子系统(见图1.1中 ...
随机推荐
- 3dContactPointAnnotationTool开发日志(二三)
smpl模型得是一个整体,于是我让子物体的选项卡的删除按钮消失,这样就不会删除不必要的东西然后产生奇怪现象:
- Scrum 冲刺博客,项目总结
1.各个成员在 Alpha 阶段认领的任务 数据库环境的搭建,连接数据库:张陈东芳 数据库语句sql语句:张陈东芳 商品实体类的实现:吴敏烽 获取所有商品信息的实现:吴敏烽 根据商品编号获得商品资料: ...
- Jmeter系列-自动生成html报告
从JMeter 3.0开始已支持自动生成动态报告,我们可以更容易根据生成的报告来完成我们的性能测试报告. 如何生成html测试报告 如果未生成结果文件(.jtl),可运行如下命令生成报告: jmete ...
- 在临床医学里面,bid、tid、qid和q3w是什么意思啊??这些缩写的全称是怎么写呢??
{ value: 'QD', name: 'QD 每日一次' }, { value: 'BID', name: 'BID 每日两次' }, { value: 'TID', name: 'TID 每日三 ...
- RT-thread内核之对象管理系统
一.数据结构 1.对象控制块:在include/rtdef.h中定义 /** * Base structure of Kernel object */ struct rt_object { char ...
- hdu2295-Radar
有n个城市,\(m\)个雷达,\(k\)个操作员,每个操作员只能操作一个雷达.每个雷达的覆盖范围是一个以雷达坐标为中心的圆,所有雷达的覆盖半径是相同的. 现在给出这\(n\)个城市,\(m\)个雷达的 ...
- HTML5 Web SQL 数据库总结
Web SQL 数据库 API 并不是 HTML5 规范的一部分,但是它是一个独立的规范,引入了一组使用 SQL 操作客户端数据库的 APIs. 如果你是一个 Web 后端程序员,应该很容易理解 SQ ...
- 【题解】NOIP2015推销员
……普及组的题目都做不出来……(:´д`)ゞ……再这样下去要退役了啊…… 不过不管怎样感觉这题还是蛮好的,也要记录一下下~ 我们注意到数据的范围,n 是 1e5, 又有 1e5组询问,暴力大概是 \( ...
- [JSOI2007]重要的城市 floyd:最短路计数
---题面--- 题解: 其实感觉还是比较妙的,第一眼看题想到floyd统计最短路条数, 注意到对于任意两点x,y而言,floyd将会枚举其最短路所可能经过的所有中转点, 因此我们可以直接分别统计对于 ...
- 51NOD 1038:X^A Mod P——题解
http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1038 X^A mod P = B,其中P为质数.给出P和A B,求< ...