2018.12 数据库访问及SQL优化+Ado.Net总结

**************MSSQL**************

 

1.表之间的主外键关系参考下图连接建立:

2018.12 数据库访问及SQL优化+Ado.Net总结

如果一个表A中的某列在另一个表B会出现多次,就是一对多的关系

反之B表中的该列只会在A中有唯一的对应,那么就是一对一的关系

注意:一般2个表之间的关系,也是是针对2个表的主外键而言!

 

2018.12 数据库访问及SQL优化+Ado.Net总结

2.查询条件的表达式,可以使用口号来改变优先级

2018.12 数据库访问及SQL优化+Ado.Net总结

 

3.查询优先级

2018.12 数据库访问及SQL优化+Ado.Net总结

4.连接查询join,一般实际工作中inner  join比较多(2个表需要完全匹配)

2018.12 数据库访问及SQL优化+Ado.Net总结

5.分步连接多个表:

2018.12 数据库访问及SQL优化+Ado.Net总结

 

6.count聚合函数,当需要显示的某列的为空null时,不做计数!

2018.12 数据库访问及SQL优化+Ado.Net总结

 

7.查询的语句的分步顺序:

2018.12 数据库访问及SQL优化+Ado.Net总结

 

 

 

8.针对分组情况进行,再次筛选:

2018.12 数据库访问及SQL优化+Ado.Net总结

 

9.Select查询的顺序总结:

2018.12 数据库访问及SQL优化+Ado.Net总结

 

10.数据库中的空值:

2018.12 数据库访问及SQL优化+Ado.Net总结

 

11.

2018.12 数据库访问及SQL优化+Ado.Net总结

 

12. C#自身使用的是托管资源,尤其是比如list、array等,是相对安全的,资源可以由C#自行释放;但是数据库、网络连接、本地文件等是外部资源,不属于c#托管,所以要及时释放!

 

**************Ado.Net**************

1.两种事件书写的方式::使用事件,是为了解耦,是一种发布-订阅模式

2018.12 数据库访问及SQL优化+Ado.Net总结

 

2.可变数组

2018.12 数据库访问及SQL优化+Ado.Net总结

 

3. 连接式读取数据库的方式:ExecuteReader的read()方法,它就是读取一个表的记录,即执行读,每次调用都是返回一行的结果集。一般用在判断这行的结果集是否有效果,有的话就执行下面的操作。一句话:一般用于判断返回的结果,读取过程中不能关闭连接。

  • 不是把数据一次性读取到内存,而是逐行读取,期间一直要保持于数据库的连接,是一种长连接的方式!
  • 而且语法与数据库类型有关

2018.12 数据库访问及SQL优化+Ado.Net总结

 

4. 断开式读取数据库的方式:可以将数据库内容一次性读取到内存中,然后断开数据库连接的方式(语法与数据库类型无关)如下:

①主要类及成员

2018.12 数据库访问及SQL优化+Ado.Net总结

②操作模式

2018.12 数据库访问及SQL优化+Ado.Net总结

5. 日常进行增删改查的封装类,如下:

2018.12 数据库访问及SQL优化+Ado.Net总结

6.广播的形式(其实跨窗口调用触发事件,跨类触发事件,或者跨窗口传递参数,都是这种形式)

2018.12 数据库访问及SQL优化+Ado.Net总结

 

7.跨窗口触发事件,也可以使用以下方式,(当只是简单传递参数时)

①在传递类中,定义相应的Action(不需要返回值时)

2018.12 数据库访问及SQL优化+Ado.Net总结

 

 

②在被传递的类中定义方法(参数类型与 Action<T>一致)

2018.12 数据库访问及SQL优化+Ado.Net总结

 

④在传递类中进行调用:

2018.12 数据库访问及SQL优化+Ado.Net总结

 

 

10.子查询

2018.12 数据库访问及SQL优化+Ado.Net总结

 

11.事务:2018.12 数据库访问及SQL优化+Ado.Net总结

事务实例:

2018.12 数据库访问及SQL优化+Ado.Net总结

2018.12 数据库访问及SQL优化+Ado.Net总结

 

12. sqlDataReader 一般不结合dataTable进行操作,dataTable一般结合dataAdpter进行操作(一般不需要读表的话,只是查询一行数据的话,可以使用长连接sqlDataReader方式

13.索引的使用情形:给表中需要频繁出现在where后的列添加索引,可以加快查询速度,但是不建议所有列添加索引