随笔分类 -  中间件-数据库 / Sql

一般是sql server的sql语句
摘要:【定义】 幻读是指在同一个事务中,存在前后两次查询同一个范围的数据,但是第二次查询却看到了第一次查询没看到的行, 一般情况下特指事务执行中新增的其他行。 也就是另一个事务新增了满足当前事务查询的行,导致当前事务再次查询结果不一样。 【出现条件】 1.数据库隔离级别为RR(Repeatable Rea 阅读全文
posted @ 2023-02-15 16:38 RookieCoderAdu 阅读(68) 评论(0) 推荐(0)
摘要:【全局锁】 数据库中的表只能读取,不能增删改 --加锁-- flush table with read lock; --解锁-- unlock tables; 【共享锁 Shared lock】 也称读锁。不阻塞其他事物的读操作,但阻塞写操作。 当Session1对数据A添加共享锁之后,可读不可写。 阅读全文
posted @ 2023-02-04 00:01 RookieCoderAdu 阅读(88) 评论(0) 推荐(0)
摘要:如果不对事务进行隔离可能会产生的后果: 1.更新丢失: 两个事务同时更新一条数据,一个事务的失败导致两次修改均失败。 这是因为没有锁操作,可以同时操作数据。并发事务没隔离 2.脏读:已经修改了一条数据而没有及时提交,但该数据被并发读取,如果此时回滚数据,那并发读取的就是错误数据。那么获取的数据不一致 阅读全文
posted @ 2023-02-01 23:16 RookieCoderAdu 阅读(357) 评论(0) 推荐(0)
摘要:查看当前数据库下面的所有触发器 --查看数据库下的所有触发器-- select * from sysobjects where xtype='TR' 查看某个触发器的内容 --查看触发器的具体定义-- select definition from sys.sql_modules where obje 阅读全文
posted @ 2022-06-12 19:33 RookieCoderAdu 阅读(1074) 评论(0) 推荐(0)
摘要:最近授予了用户查看视图的权限之后,出现了问题。 原来是视图跨数据库了,而用户没有查看另一个数据库的权限,于是报错了。 怎么解决呢? 安全性 =》 登录名 =》 选择用户 =》 右键属性 =》用户映射 =》勾选数据库 本以为解决了,结果 拒绝了对对象的select 权限 原因是 上面那一步,没有勾选对 阅读全文
posted @ 2022-05-27 16:42 RookieCoderAdu 阅读(449) 评论(0) 推荐(0)
摘要:datediff(mm,getdate(),Date)=0 也就是判断和当前月份差是否为0 阅读全文
posted @ 2021-11-25 14:17 RookieCoderAdu 阅读(1027) 评论(0) 推荐(0)
摘要:1.添加字段的时候添加默认值 alter table [Student] add [Sex] bit not null default '1' 2.已存在字段添加默认值 alter table [Student] add default '1' for [Sex] with values 3.已存在 阅读全文
posted @ 2021-09-28 15:12 RookieCoderAdu 阅读(699) 评论(0) 推荐(0)
摘要:USE [MyDb] GO IF NOT EXISTS(SELECT * FROM [MyDb].[dbo].[Product] WHERE Name='小浣熊干脆面') BEGIN INSERT [dbo].[Product]([Id],[Value],[Name],[Description],[ 阅读全文
posted @ 2021-07-07 17:28 RookieCoderAdu 阅读(1310) 评论(0) 推荐(0)
摘要:nullif(A,B)表示A和B是否相等,如果相等则返回null,否则返回A。 可以用于判断两值是否相等,或者除零错误。 a/nullif(b,0) 若b为0,则返回null 阅读全文
posted @ 2021-06-08 14:07 RookieCoderAdu 阅读(474) 评论(0) 推荐(0)
摘要:USE [MySchool] GO IF COL_LENGTH('Student','Score') IS NULL BEGIN ALTER TABLE Student ADD Score DOUBLE END GO COL_LENGTH判断表中是否含有列,比如此处判断Student表中是否含有Sc 阅读全文
posted @ 2021-06-03 16:03 RookieCoderAdu 阅读(828) 评论(0) 推荐(0)
摘要:我在虚拟机上安装SQL server时遇到一个问题。 首先打开 SQL SERVER配置管理器,也就是一个红色小箱子图标的那个 1.找到 SQL SERVER网络配置,选择下面SQLEXPRESS的协议,将TCP/IP 打开 2.找到 SQL SERVER服务,将 SQL SERVER(SQLEXP 阅读全文
posted @ 2021-05-27 11:37 RookieCoderAdu 阅读(246) 评论(0) 推荐(0)
摘要:游标相当于数据库的指针。当我们查询到数据集的时候,可以使用游标来做一些遍历操作。 因为游标可以 遍历我们查询到的结果集,而且一次指向一行数据,方便我们逐行操作数据。 而且游标数据可以重复使用。他可以临时保存当前行的数据 但是它有一定的缺陷。因为他会将我们查询到的结果放置到内存,那么数据量大的时候会造 阅读全文
posted @ 2021-05-19 09:50 RookieCoderAdu 阅读(1090) 评论(0) 推荐(0)
摘要:以往的sql优化一般是根据经验,但是遇上复杂的sql,以往经验不起作用的时候怎么办?这时候,就有性能分析工具来辅助我们分析Sql中存在的问题。 打开方法: Sql server 2012数据库 -》 工具 -》Sql Server Profiler 设置好数据库的地址和账号密码 按照上诉步骤进行设置 阅读全文
posted @ 2021-05-13 00:20 RookieCoderAdu 阅读(370) 评论(0) 推荐(0)
摘要:truncate与drop是DDL语句,执行后无法回滚;delete是DML语句,可回滚。 truncate只能作用于表;delete,drop可作用于表、视图等。 truncate会清空表中的所有行,但表结构及其约束、索引等保持不变;drop会删除表的结构及其所依赖的约束、索引等。 truncat 阅读全文
posted @ 2021-02-18 11:54 RookieCoderAdu 阅读(129) 评论(0) 推荐(0)
摘要:此方法只适用于对海量数据查询的优化,对于数据量较少的查询不具有参考性 一、尽量避免全表扫描,使用索引 1.在常用字段上面建立索引,方便查找 2.避免null值判断。eg: where xx is null。 改进:可以设置默认值代替null 3.避免使用不等于操作符,如!=,<> 4.避免使用or。 阅读全文
posted @ 2021-02-18 11:48 RookieCoderAdu 阅读(578) 评论(0) 推荐(0)
摘要:语法如下: SELECT STUFF((select ','+c.MR_RolName from 查询语句 FOR XML PATH('')),1,1,''); 解释如下 1.STUFF函数。表示截取拼接函数 第一个参数表示原字符串 第二个参数表示从哪个坐标开始,参数从1开始 第三个参数表示截取几位 阅读全文
posted @ 2020-11-17 11:43 RookieCoderAdu 阅读(3136) 评论(0) 推荐(1)
摘要:获取某一天的时间,用法是使用cast ...as date,将字符串转化成日期 比如说我想获取上个月25号的日期: cast(convert(varchar(20),Year(dateadd(month,-1,@datetime))) +'-'+convert(varchar(20),Month(d 阅读全文
posted @ 2020-11-11 13:55 RookieCoderAdu 阅读(1387) 评论(0) 推荐(0)
摘要:create function getSum(@date date) returns decimal(18,2) as begin declare @number decimal(18,2)=0 while(@date<='2020/10/30') begin declare @tempdata d 阅读全文
posted @ 2020-11-05 11:32 RookieCoderAdu 阅读(435) 评论(0) 推荐(0)
摘要:declare @a decimal(18,2)=5.00 declare @b decimal(18,2)=3.00 print concat(convert(decimal(18,2),(@b/@a)*100),'%') 阅读全文
posted @ 2020-11-04 09:49 RookieCoderAdu 阅读(3075) 评论(0) 推荐(0)
摘要:declare @date varchar(50)='2020-10-03' print Month(dateadd(month,-1,Convert(datetime,@date))) print (Convert(int,Substring(@date,6,2))-1) 第一种方法保险一点,因为 阅读全文
posted @ 2020-11-02 18:12 RookieCoderAdu 阅读(1909) 评论(0) 推荐(0)