发布时间:2025-10-15 18:06:16    次浏览
自从用了EF后很少写sql和存储过程了,今天需要写个比较复杂的报告,翻出了之前的笔记做参考,感觉这个笔记还是很有用的,因此发出来和园友分享。1、case...end(具体的值)case后面有值,相当于c#中的switch case注意:case后必须有条件,并且when后面必须是值不能为条件。 2、case...end (范围)case 后面无值,相当于c#中的if...else if...else....注意:case后不根条件 3、if...eles 4、while循环 5、索引使用索引能提高查询效率,但是索引也是占据空间的,而且添加、更新、删除数据的时候也需要同步更新索引,因此会降低Insert、Update、Delete的速度。只在经常检索的字段上(Where)创建索引。1)聚集索引:索引目录中的和目录中对应的数据都是有顺序的。2)非聚集索引:索引目录有顺序但存储的数据是没有顺序的。 6、子查询将一个查询语句做为一个结果集供其他SQL语句使用,就像使用普通的表一样,被当作结果集的查询语句被称为子查询。所有可以使用表的地方几乎都可以使用子查询来代替。 转换为两位小数:CONVERT(numeric(10,2), AVG(english))只有返回且仅返回一行、一列数据的子查询才能当成单值子查询。 7、分页 8、连接 9.视图优点: 筛选表中的行 防止未经许可的用户访问敏感数据 降低数据库的复杂程度 创建视图 10、局部变量 11、全局变量 12、事务事务:同生共死指访问并可能更新数据库中各种数据项的一个程序执行单元(unit)--也就是由多个sql语句组成,必须作为一个整体执行这些sql语句作为一个整体一起向系统提交,要么都执行、要么都不执行语法步骤: 开始事务:BEGIN TRANSACTION 事务提交:COMMIT TRANSACTION 事务回滚:ROLLBACK TRANSACTION 判断某条语句执行是否出错:全局变量@@ERROR;@@ERROR只能判断当前一条T-SQL语句执行是否有错,为了判断事务中所有T-SQL语句是否有错,我们需要对错误进行累计; 13、存储过程 存储过程---就像数据库中运行方法(函数)和C#里的方法一样,由存储过程名/存储过程参数组成/可以有返回结果。前面学的if else/while/变量/insert/select 等,都可以在存储过程中使用优点: 执行速度更快 - 在数据库中保存的存储过程语句都是编译过的 允许模块化程序设计 - 类似方法的复用 提高系统安全性 - 防止SQL注入 减少网络流通量 - 只要传输 存储过程的名称 系统存储过程由系统定义,存放在master数据库中名称以“sp_”开头或”xp_”开头创建存储过程: --调用declare@pageintexecusp_GroupMainlist1 1, 100, @pageoutputselect@page14、常用函数1)ISNULL(expression,value) 如果expression不为null返回expression表达式的值,否则返回value的值2)聚合函数 3)字符串操作函数 4)日期相关函数 15、sql语句执行顺序 ---------------------以下是根据园友建议后续补充的,部分为项目中的实际代码(没时间写整理直接贴源码)---------------------------16、分组查询group by...having对group by分组后的数据进行过滤在分组查询中,查询的列名必须出现在group by后或者在聚合函数中 17、临时表[转]方法一:create table #临时表名(字段1 约束条件,字段2 约束条件,.....)create table ##临时表名(字段1 约束条件,字段2 约束条件,.....)方法二:select * into #临时表名 from 你的表;select * into ##临时表名 from 你的表;注:以上的#代表局部临时表,##代表全局临时表 详细说明:http://www.cnblogs.com/Hdsome/archive/2008/12/10/1351504.html18、表值函数 19、标量值函数 20、触发器[转] 详细说明:http://www.cnblogs.com/yank/p/4193820.html