学习sqlserve的一些笔记
创建表:
create table 表名
{
//定义列名
id int identify(1,1) primary key,//自动编号:从1开始每次增长1,约束:主键约束
name nvarchar(50) not null //非空约束
}
表数据的增删改查:
insert into 表名 values()
delete from 表名
update 表名 set
select * from 表名
注:当删除表中所有数据还可使用truncate table 表名,它不能加where条件但是比delect所有表数据效率高,因为它通过释放数据页来删除数据,在事务日志中只记录数据页的释放;而且删除数据后计数器重置为定义的种子,如果没有定义种子,则使用默认值1。
修改表结构:
alter table 表名
add 列名 数据类型 //增加一列
drop column 列名 //删除一列
alter column 表名 数据类型 not null //修改一列,并添加非空约束
add constraint PK_表名_列名 primary key(列名) //添加主键约束
add constraint UQ_表名_列名 unique(列名) //添加唯一约束
add constraint DF_表名_列名 default(值) for 列名 //添加默认约束
add constraint CK_表名_列名 check(列的条件表达式) //添加检查约束
add constraint FK_表名_列名 foreign key(外键表的列名) references 主键表名(主键表的列名) //添加外键约束
drop constraint 约束名1,约束名2............ //删除约束
去除重复记录:
select distinct .... from 表名 ...... //对查询的结果集去重(针对每一列都相同的情况)
排序:
select * from 表名 order by 列名 desc //按照列名降序排序,默认为asc升序排序
2 注:order by语句必须放在整个sql语句的后面。
查询数据前多少条:
select top
值 //如:5,则表示查询该表前5条
(表达式) //如:(2*2),则表示查询该表的前4条
值 percent //如:30 percent,则表示查询该表的前30%
* from 表名
模糊查询:
通配符:_ 表示任意的单个字符
例如:select * from 表名 where 列名 like '张_' //表示查询出 张字开头,单个任意字符结尾 的数据
% 匹配任意多个字符
例如:select * from 表名 where 列名 like '%张%' //表示查询出 包含张字 的数据
[] 表示范围内的单个字符
例如:select * from 表名 where 列名 like '张[0-9]' //表示查询出 张开头,0-9中任意数字结尾 的数据
[^] 不在指定范围内的单个字符
例如:select * from 表名 where 列名 like '[^0-9]' //表示查询出 不是0-9中任意数字 的单个字符
自定义转义符:escape
例如:select * from 表名 where 列名 like '%/[%' escape '/' //定义/为转义符,此语句表示查询出所有包含[的数据
空值判断:
select * from 表名 where 列名
is null //判断为空
is not null //判断部位空
类型转换函数:cast(表达式 as 数据类型)、convert(数据类型,表达式[,格式])
注:[]表示参数可写可不写。
联合结果集:union,union all
例如:select 列名1,列名2 from 表1
union all
select 列名3,列名4 from 表2
注意:联合的结果集列名默认使用第一个结果集中的列名,每个结果集必须有相同的列数,每一列的数据类型必须相容。
区别:union会去除重复列,所以效率较低。
T-SQL:
声明变量:
declare @name nvarchar(50),@age int = 18
变量赋值:
set @name = '张三'
循环:
while 条件
begin
..........
end
条件判断:
if 条件
begin
....
end
else
begin
...
end
事务:
特性ACID:
原子性(Atomicity):事务是一个完整的操作,事务的各个步骤是不可分割的,要么全部执行,要么全都不执行。
一致性(Consistency):当事务完成时,数据必须处于一致状态。
隔离性(Isolation):对数据进行修改的所有并发事务是彼此隔离的。
持久性(Durability):事务完成后,它对数据库的修改被永久保持。
例子:
begin transaction //开始一个事务
declare @sum int = 0 //声明一个变量,记录sql语句出错次数
sql语句1
set @sum = @sum + @@error //@@error:如果sql语句没有错返回0
sql语句2
set @sum = @sum + @@error
if @sum <> 0 //如果sum不等于0,表示有sql语句出错
begin
rollback //回滚
end
else
begin
commit //提交该事务
end
存储过程:
执行存储过程:exec 存储过程名称
创建存储过程:
create proc 存储过程名称
2 as
begin
.......
end
创建带参数的存储过程及执行:
create proc usp_test //创建代参的存储过程
@name nvarchar(50), //定义参数
@age int output //定义输出参数
as
begin
set @age = select 表.age from 表 where 表.name = @name //参数的使用
end declare @num int //声明一个变量,传递给输出参数
exec usp_test @name = '张三',@age = @num output //执行带参的存储过程
print @num //输出变量,即输出参数的值
例子(存储过程实现分页):
create proc usp_getPage
@pageSize int = 6, //每页的条数
@pageIndex int = 1, //当前要查看第几页
@pageCount int output, //共多少页,输出参数
@recordCount int output //共多少条记录,输出参数
as
begin
select *
from (select * ,rownumber = row_number() over(order by id asc) from 表名) as temp where temp.rownumber between (@pageIndex - 1)*@pageSize + 1 and @pageSize*pageIndex set @recordCount = (select count(*) from 表名) //计算表中记录
set @pageCount = ceiling(@recordCount*1.0/pageSize) //计算页数,ceiling()向上取整 end
declare @rc int,@pc int //用于传递给输出参数
exec usp_getPage @pageSize = 6, @pageIndex = 1, @recordCount = @rc output, @pageCount = @pc output //执行带参数的存储过程
print @rc //打印总记录条数
print @pc //打印总页数
创建触发器:
create trigger 触发器名称 on 表名
after insert,delete,update //当进行增加、删除、修改时触发
as
begin
........
end
学习sqlserve的一些笔记的更多相关文章
- canvas学习之API整理笔记(二)
前面我整理过一篇文章canvas学习之API整理笔记(一),从这篇文章我们已经可以基本了解到常用绘图的API.简单的变换和动画.而本篇文章的主要内容包括高级动画.像素操作.性能优化等知识点,讲解每个知 ...
- 学习Logistic Regression的笔记与理解(转)
学习Logistic Regression的笔记与理解 1.首先从结果往前来看下how logistic regression make predictions. 设我们某个测试数据为X(x0,x1, ...
- 转载-《Python学习手册》读书笔记
转载-<Python学习手册>读书笔记 http://www.cnblogs.com/wuyuegb2312/archive/2013/02/26/2910908.html
- python学习第五次笔记
python学习第五次笔记 列表的缺点 1.列表可以存储大量的数据类型,但是如果数据量大的话,他的查询速度比较慢. 2.列表只能按照顺序存储,数据与数据之间关联性不强 数据类型划分 数据类型:可变数据 ...
- 前端学习:JS(面向对象)代码笔记
前端学习:JS(面向对象)代码笔记 前端学习:JS面向对象知识学习(图解) 创建类和对象 创建对象方式1调用Object函数 <body> </body> <script ...
- 《Data Structures and Algorithm Analysis in C》学习与刷题笔记
<Data Structures and Algorithm Analysis in C>学习与刷题笔记 为什么要学习DSAAC? 某个月黑风高的夜晚,下班的我走在黯淡无光.冷清无人的冲之 ...
- Elasticsearch7.X 入门学习第八课笔记-----索引模板和动态模板
原文:Elasticsearch7.X 入门学习第八课笔记-----索引模板和动态模板 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接: ...
- Elasticsearch7.X 入门学习第七课笔记-----Mapping多字段与自定义Analyzer
原文:Elasticsearch7.X 入门学习第七课笔记-----Mapping多字段与自定义Analyzer 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处 ...
- Elasticsearch7.X 入门学习第五课笔记---- - Mapping设定介绍
原文:Elasticsearch7.X 入门学习第五课笔记---- - Mapping设定介绍 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本 ...
随机推荐
- poj3666(DP+离散化)
题目链接:http://poj.org/problem?id=3666 思路: 看了讨论区说本题的数据比较弱,只需要考虑不减序列即可,比较懒,所以我也只写了这一部分的代码,思路都一样,能AC就行了. ...
- linux分区之gpt(大于2T的分区)
1.文件系统限制: ext3块尺寸 最大文件尺寸 最大文件系统尺寸1KiB 16GiB 2TiB2KiB 256GiB 8TiB4KiB 2TiB 16TiB8KiB 16TiB 32 ...
- 兼容谷歌、火狐、IE7.0以上浏览器div+css实现的带有蒙版的半透明弹窗效果[xyytit]
整个页面变暗的蒙版效果,带有半透明边框的弹窗,用在网站里一定很酷. 最初见与奢饰品购物网站YMALL,后边研究了下,自己做了这个实例. 技术要点:css中几种透明样式的使用.不同的样式在不同的浏览器中 ...
- Python反转
1切片 s="svdfbffdbdf" a=s[::-1] 2入栈出栈 入栈之后再出栈正好就是了 3reverse 这个函数是列表的....你要先把str转成list list-& ...
- mysql基本的修改表的命令
修改表相关的命令 1.添加列表 alter table 表名 add 列名 类型; 2.删除某一列 alter table userinfo drop column 列名; 3.修改列的类型 alte ...
- [leetcode]785. Is Graph Bipartite? [bai'pɑrtait] 判断二分图
Given an undirected graph, return true if and only if it is bipartite. Example 1: Input: [[1,3], [0, ...
- C++ 输入cin 和输出cout
C++输入cout与输出cin 输入和输出并不是C++语言中的正式组成成分.C和C++本身都没有为输入和输出提供专门的语句结构.输入输出不是由C++本身定义的,而是在编译系统提供的I/O库中定义的. ...
- discuz模板引擎语法
论坛的首页模板:forum/discuz.htm 版块的内容模板:forum/forumdisplay.htm 主题的查看模板:forum/viewthread.htm 帖子的内容模板:forum/p ...
- .net core web api swagger 配置笔记
参考网址: --配置步骤见如下链接https://docs.microsoft.com/zh-cn/aspnet/core/tutorials/web-api-help-pages-using-swa ...
- PAT 1070 结绳(25)(代码)
1070 结绳(25 分) 给定一段一段的绳子,你需要把它们串成一条绳.每次串连的时候,是把两段绳子对折,再如下图所示套接在一起.这样得到的绳子又被当成是另一段绳子,可以再次对折去跟另一段绳子串连.每 ...