sql创建目录脚本

使用exec关键字执行存储过程

启动外围的命令提示符程序

exec xp_cmdshell 'cmd命令'

执行前需要开启sql server对cmdshell的访问

0:关闭 1:开启 默认关闭

exec sp_configure 'xp_cmdshell',0,reconfigure

重新配置

创建磁盘目录

exec xp_create_subdir N'路径';

添加约束语法

alter:修改 add:添加 constraint:约束

alter table 表名 add constraint 约束名 约束类型 约束内容

约束名的添加规则

check约束(CK_表名 _字段名)

主键约束(PK_表名 _字段名)

默认约束(DF_表名 _字段名)

唯一约束(UQ_表名 _字段名)

外键约束(FK_表名 _字段名)

查看约束名

select * from sys.sysobjects

查看所有表

select * from sys.sysdatabases 表

修改字段名

exec sp_rename '[表名].[列名]','[新列名]'

删除约束

alter table 表名

drop constraint 约束名

添加字段

alter table 表名

add 字段名称 字段类型...

删除字段(column:列)

alter table 表名

drop column 字段名

修改字段

alter table 表名

alter column 字段名-

批处理

sql批处理是将一个或多个T-SQL语句的集合,由客户端一次性发送到SQLserver实例,它表示用户提交给 数据库的引擎的工作单元

同时服务器将批处理语句变异成一个可执行单元,此单元成为执行计划。

GO是批处理的结束标识

convert(目标类型,转换对象)·

T-SQL编程

输出语句

print

局部变量:

标记@作为前缀

先声明,在赋值

赋值用set或select

声明局部变量

declare @变量名 数据类型

赋值

set @变量名 = 值

select @变量名 = 值

例如:

set @name='张三'

select @name=userName from userInfo where UserId=1

全部变量:

以@@作为前缀

set:不支持多个变量赋值、表达式返回多个值时,出错、表达式未返回值时,则赋值null

select:支持多个变量赋值、多个值时将最后一个赋值给变量、未返回值时,保持原样

if...else...

if(条件)

begin

语句1

语句2

end

else

begin

语句1

语句2

end

分号可有可无

逻辑循环控制语句

语法:

while(条件)

begin

语句1

语句2

...

break

end

break表示退出循环

如果有多条语句,才需要begin-end语句块

分号可有可无

 --计算两个时间的时间差datediff(得到的时间单位(year/month/day),‘时间’,时间)

case-end多分支语句

case具有两种格式:

简单case格式:

case 测试表达式

when 表达式1 then 结果1

when 表达式2 then 结果2

...

[else 其他结果]

end

搜索case格式:

case

when 布尔表达式1 then 结果1

when 布尔表达式2 then 结果2

...

[else 其他结果]

end

存储过程

用户自定义存储过程

create proc[edure] 存储过程名

@参数1, 数据类型 【=默认值 output】,

@参数2 数据类型 【=默认值 ouput】,

...2 as

SQL语句

go

带参数的储存过程

储存过程的参数分两种: 输入参数

输出参数

输入参数:

用于向储存过程传入值

输出参数:

用于在调用储存过程后

返回结果

按引用传递

事务

事务必须具备四个属性:原子性、一致性、隔离性、永久性

原子性:事务是一个完整的操作。事务的各步操作是不可分的,要么的简欧执行,要么都不执行

一致性:当事务完成时,数据必须处于一直状态

隔离性:对数据进行修改的所有并发事务是彼此隔离的,这表明事务必须是独立的,它不应以任何方法依赖于或影响其他事务

永久性:事务完成后,它对数据库的修改被永久保持,事务日志能保持事务的永久性

T-SQL语句管理事务

开始事务;begin transaction

提交事务:commit transaction

回滚(撤销)事务:rollback transaction

一旦事务提交或回滚,则事务结束

视图

通过物理表(多个)查询出来的一张虚拟表

创建视图

create view 视图名

as

<select语句>

[go]

索引

SQLserver中的数据也是俺页存放

索引:是SQLserver编排数据的内部方法。它为SQLserver提供一种方法来编排查询数据 inde

索引页:数据库中储存索引的数据页;索引页类似汉语字典中的目录页

索引的作用:通过使用索引,可以大大提高数据库的检索速度,改善数据性能

索引类型

在SQLserver中,索引按类型可分为主键索引、聚集索引、非聚集索引和唯一索引。

主键索引:在数据表中为表定义一个主键就自动创建主键索引 主键索引是唯一索引的特殊类型

唯一索引:唯一索引不允许两行具有相同的所有制=值

聚集索引:表中各行的物理顺序与键值的逻辑(索引)顺序相同,每个表只能有一个

非聚集索引:非聚集索引指定表的逻辑顺序。数据储存在一个位置,索引储存在另一个位置,索引中包含指向数据储存位置的指针可以有多个小于249个。

创建索引

unique:唯一

clustered:聚集

nonclustered:非聚集

fillfactor:填充因子

创建索引

create [unique] [clustered] [nonclustered]

index index_name

on table_name(column_name...)

[with fillfactor=x]

fillfactor取值在0-100,表示索引页填满的空间所占的百分比(不用写%)

通过索引查询

select * from tableName

with(index=索引)

索引的优点:

  • 创建唯一性索引,保证数据表中每一行数据的唯一性

  • 大大加快数据的检索速度,这也是创建索引的最主要的原因

索引的缺点:

  • 带索引的表在数据库中需要更多的储存空间。

  • 操纵数据的命令需要更长的处理时间,因为它们需要对索引进行更新

触发器

什么是触发器:

  • 触发器是在对表进行插入,更新或删除操作是自动发执行的存储过程

  • 触发器通常用于强制业务规则

  • 触发器是一种高级约束,可以定义比用check约束更为复杂的约束;可执行复杂的SQL语句(if/while/case)、可饮用其它表中的列

特点:

  • 自动触发执行

  • 不能直接调用

  • 是一个事务(可回滚)

触发器的类型

按T-SQL分

  • delete触发器

  • insert触发器

  • update触发器

按执行流程来分

  • after 默认触发器

  • instead of "替代"触发器

触发器的语法

create trigger trigger_name

on table_name

[with encryption]

for [delete,insert,update]

as

T-SQL语句

go

触发器触发时:

  • 系统自动在内存中创建deleted表或inserted表

  • 只读,不允许修改

将结果集添加到表中

1、表已存在:insert into 表名 结果集+

2、表未存在:select * into 结果集 from 表名

自定义函数

  • 自定义函数的优点

    • 允许模块化程序设计

    • 执行速度更快

    • 减少网络流量

自定义函数的分类

  • 内置函数

    • 通过内置函数访问系统表的数据

    • 对某列或某行进行常规运算

  • 标量函数

    • 用return子句返回单个数据值

  • 表值函数

    • 返回table数据类型

表量函数

  • 定义表量/值函数的语法

     create functino [schema_name.] function_name​(@parameter_name  [as] [type_schema_name.] parameter_data_type [ = default ] [ readonly],..n)​returns 数据类型(表量)/table(表值)​[with] [encryption][,][schemabinding]​as​return [ ( ] select_stmt [ ) ]​go

SQLserver笔记(进阶)相关推荐

  1. Vue学习笔记进阶篇——Render函数

    本文为转载,原文:Vue学习笔记进阶篇--Render函数 基础 Vue 推荐在绝大多数情况下使用 template 来创建你的 HTML.然而在一些场景中,你真的需要 JavaScript 的完全编 ...

  2. PHP学习笔记 - 进阶篇(7)

    PHP学习笔记 - 进阶篇(7) 文件操作 读取文件内容 PHP具有丰富的文件操作函数,最简单的读取文件的函数为file_get_contents,可以将整个文件全部读取到一个字符串中. $conte ...

  3. Spring Boot学习笔记-进阶(3)

    文章目录 Spring Boot学习笔记-进阶(3) 一.Spring Boot与缓存 二.Spring Boot与消息 三.Spring Boot与检索 四.Spring Boot与任务 异步任务 ...

  4. Vue学习笔记进阶篇——多元素及多组件过渡

    本文为转载,原文:Vue学习笔记进阶篇--多元素及多组件过渡 多元素的过渡 对于原生标签可以使用 v-if/v-else.但是有一点需要注意: 当有相同标签名的元素切换时,需要通过 key 特性设置唯 ...

  5. 微信小程序开发笔记 进阶篇④——getPhoneNumber 获取用户手机号码(小程序云)

    文章目录 一.前言 二.前端代码wxml 三.前端代码js 四.云函数 五.程序流程 一.前言 微信小程序开发笔记--导读 大部分微信小程序开发者都会有这样的需求:获取小程序用户的手机号码. 但是,因 ...

  6. 微信小程序开发笔记 进阶篇⑤——getPhoneNumber 获取用户手机号码(基础库 2.21.2 之前)

    文章目录 一.前言 二.前端代码wxml 三.前端代码js 四.后端java 五.程序流程 六.参考 一.前言 微信小程序开发笔记--导读 大部分微信小程序开发者都会有这样的需求:获取小程序用户的手机 ...

  7. C#笔记进阶篇03 抽象函数与抽象类

    C#笔记进阶篇03 抽象函数与抽象类 --本系列是基于人民邮电出版社<C#2008 C#图解教程>.清华大学出版社<C#入门经典(第五版)>两本书的自学C#笔记,如果您发现了本 ...

  8. 微信小程序开发笔记 进阶篇⑥——getPhoneNumber 获取用户手机号码(基础库 2.21.2 之后)

    文章目录 一.前言 二.前端代码wxml 三.前端代码js 四.后端java 五.程序流程 六.参考 一.前言 微信小程序开发笔记--导读 大部分微信小程序开发者都会有这样的需求:获取小程序用户的手机 ...

  9. Apollo学习笔记 进阶课程之三:定位技术②

    Apollo学习笔记 进阶课程之三:定位技术② 百度的无人驾驶定位方案 1).GNSS定位 GPS误差来源: 上图为单点定位,基于TOA 载波定位技术:(RPK技术,PPP技术) RPK:可以在五秒内 ...

  10. vue-resource post php,Vue学习笔记进阶篇——vue-resource安装及使用

    简介 vue-resource是Vue.js的一款插件,它可以通过XMLHttpRequest或JSONP发起请求并处理响应.也就是说,$.ajax能做的事情,vue-resource插件一样也能做到 ...

最新文章

  1. GigaScience:ASaiM基于Galaxy微生物组分析框架
  2. Linux下用arptables防arp攻击
  3. spring5.0.2中文官网文档pdf
  4. asa清空配置_Cisco ASA 管理配置文件
  5. 数组可以容纳多少水----------给你出道题
  6. spark-1.2.0 集群环境搭建
  7. layer normalization 缺点_优缺点并存的星越,用车感受还是不错的!
  8. python邮件群发_Python操作Gmail@定时定向群发邮件
  9. STM32F407 硬件IIC驱动MCP4017 数字电位器
  10. win7sp1怎么共享计算机,win7怎么升级到sp1?win7可以直接升级win7 sp1版本吗
  11. C盘扩容好帮手——傲梅分区助手
  12. python中类似对象吗_关于性能:什么是Python中最快的(访问)类似结构的对象?
  13. java constants_Java Constants类代码示例
  14. qq好友发聚会照片html,在QQ朋友聊天页面上点击发送图片,打开后怎么同时可以点击几张图片一次性发送,...
  15. C++中文件开头写的 using namespace std 有什么作用?
  16. java编译器:必须对其进行捕获或声明以便抛出
  17. 每日一犬 · 布鲁克浣熊猎犬
  18. 如何清空python的IDLE?
  19. nz-select 选择器
  20. Demystifying Ethernet Types— Difference between Cat5e, Cat 6, and Cat7

热门文章

  1. 秒懂Java类型(Type)系统
  2. Win 7 下eclipse添加Courier New字体
  3. 高德地图巡航异步加载数据_“高德地图”和“百度地图”的差别
  4. Linux杀死进程命令:kill、killall、pkill
  5. 对称加密,非对称加密,混合加密
  6. Windows 10注册表损坏怎么办?
  7. python爬微信头像_Python爬微信好友头像,性别,所在地区
  8. windows下cmd使用wget命令
  9. pycharm快捷键和无法输入英文!
  10. .strip().split('t')和.strip().split()