1:var a; type of(a) 返回的是未定义,就是声明了没有赋值叫作未定义;2:关于StackExchange.Redis(3代免费)和ServiceStack.Redis(4代收费)都属于Redis的知识点范畴html
3.在sql的视图中,遇到这样的句子:WITH CHECK OPTIONView Codesql
4.触发器 trigger 其实就是一种特殊的存储过程 理解触发器,就是:俩表爱的死去活来,你要是杀了A,那B就不活了;你对A作的update、delete 会影响到B的update、delete数据库
1 用到的功能有: 2 1.若是我更改了学生的学号,我但愿他的借书记录仍然与这个学生相关(也就是同时更改借书记录表的学号); 3 2.若是该学生已经毕业,我但愿删除他的学号的同时,也删除它的借书记录。 4 等等。 5 6 这时候能够用到触发器。对于1,建立一个Update触发器: 7 8 Create Trigger truStudent 9 On Student --在Student表中建立触发器 10 for Update --为何事件触发 11 As --事件触发后所要作的事情 12 if Update(StudentID) 13 begin 14 15 Update BorrowRecord 16 Set StudentID=i.StudentID 17 From BorrowRecord br , Deleted d ,Inserted i --Deleted和Inserted临时表 18 Where br.StudentID=d.StudentID 19 20 end 21 22 理解触发器里面的两个临时的表:Deleted , Inserted 。注意Deleted 与Inserted分别表示触发事件的表“旧的一条记录”和“新的一条记录”。 23 一个数据库系统中有两个虚拟表用于存储在表中记录改动的信息,分别是: 24 虚拟表Inserted 虚拟表Deleted 25 26 在表记录新增时 存放新增的记录 不存储记录 27 修改时 存放用来更新的新记录 存放更新前的记录 28 删除时 不存储记录 存放被删除的记录 29 30 31 一个Update 的过程能够看做为:生成新的记录到Inserted表,复制旧的记录到Deleted表,而后删除Student记录并写入新纪录。
1 对于2,建立一个Delete触发器 2 Create trigger trdStudent 3 On Student 4 for Delete 5 As 6 Delete BorrowRecord 7 From BorrowRecord br , Delted d 8 Where br.StudentID=d.StudentID
5.要是问起存储过程的好处:编程
通常来说,数据库的在执行sql时,先编译后执行的;可是存储过程是取自一个执行好的代码块,就不须要再编译拉;安全
也能够把一个表中的部分数据,存在存储过程以供别人进行数据的测试和对比;网络
并且,也能够保护真实的数据不被改变。多线程
若是已经明确地参数化查询,将它放置在存储过程当中可能带来最好的可重用性。由于只须要发送参数和存储过程的名称,因此网络流量减小了。异步
存储过程预先编译,它们运行得比即席查询快速。存储过程还能为包含在存储过程当中的一组查询维护单一的参数化计划,而不是维护大量单独查询的小型计划。这避免了计划缓冲被单独查询的计划充满。async
6 日志工具(这个抽空得搞了)ide
7.除非另外还指定了 TOP 或 FOR XML,不然,ORDER BY 子句在视图、内联函数、派生表、子查询和公用表表达式中无效。
只要咱们在嵌套子查询视图里面加入: top 100 percent 便可
8 序列化 齐活了 9.爬虫 10.Navicat的破解 11.伪静态 12.在sql中Rand()函数是随机生成的小数点,NewID是随机生成的36位的序列(相似guid())13.数据库删除语句 Drop/Delete/Truncate比较
14.SQLSERVER DBCC命令大全、SQL SERVER 2005 DBCC IND命令说明、恢复SQL Server被误删除的数据 1五、async & await 的前世此生(Updated)、[C#] 走进异步编程的世界 - 开始接触 async/await(他的左边列表里不少知识点)
1六、[C#] 进阶 - LINQ 标准查询操做概述 1七、自定义控件 初识(1) 1八、SQL Server 分页方法汇总 、19 [C#] C# 知识回顾 - 特性 Attribute(多看看这里面的例子引用特性的 方法)
21 、IEnumerable<T>和IQueryable<T>(接口IQueryable<T>实际也是继承了IEnumerable<T>接口的,设计Enumerable<T>和Queryable<T>两套接口的缘由是为了区别对待LINQ to OBJECTS、LINQ to SQL,二者对于查询的处理在内部使用的是彻底不一样的机制;针对LINQ to OBJECTS时,使用Enumerable中的扩展方法对本地集合进行排序和查询等操做,查询参数接受的是Func<>。Func<>叫作谓语表达式,至关于一个委托。针对LINQ to SQL时,则使用Queryable中的扩展方法,它接受的参数是Expression<>。Expression<>用于包装Func<>。LINQ to SQL引擎最终会将表达式树转化成为相应的SQL语句,而后在数据库中执行。)
2二、从LINQ开始之LINQ TO OBJECTS(上) 2三、三种备份数据库的方法,只需执行sql语句就好了
2三、数据库的数据导入和导出 2四、vs2017离线安装而且安装包不占用C盘空间
2五、Linq to OBJECT是用于操做内存对象的LINQ编程接口,包含了大量的查询操做符,针对内存中的集合对象进行操做。
2六、厚积薄发,丰富的公用类库积累,助你高效进行系统开发(14)---Winform开发的经常使用类库(终结篇,CHM文档放送)2七、C#夯实基础之多线程二:主线程、前台线程与后台线程
2八、C# 在多线程环境中,进行安全遍历操做(lock知识点)
2九、RabbitMQ五:生产者--队列--多消费者 30、SQL SERVER 2008的错误日志太大 3一、SQLSERVER 更改默认端口号
3一、使用identity(int,1,1)来产生行号,必须把数据插入到一张表中
3二、
Rowcount的用法
这样的查询只会返回表A中的前10条数据。它和 "select top 10 * from 表A" 的做用同样。注意一点,set rowcount 的设置会在整个会话中有效。好比下面的sql示例:
set rowcount 10 select * from 表A go select * from 表B
@@Rowcount与Rowcount看起来很像,只相差了两个@,但它们的功能是不同的,@@Rowcount主要是返回上次sql语句所影响的数据行数,好比:
若是表A中的数据量大于或等于2,那么select @@Rowcount就会返回2,若是只有1条或0条数据,那么select @@Rowcount就会返回1或者0。
注意,不要把@@Rowcount理解为只返回查询的结果数量,删除,修改,新增等语句,也会正确的返回@@Rowcount值。好比:
若是表A中存在gid='a'的数据,那么select @@Rowcount就会返回它所修改数据的行数,若是不存在gid='a'的数据,那么select @@Rowcount就会返回0,删除与新增都是一样。