MSSQL学习笔记
??? 最近在看教程,重新学习SQL,突然发现基础太差,好多东西都不懂。原来只知道打开Manager啪啪的在那用,理论上的东西查好远。现在翻来看看,到是能理解不少。边看边记,可能有些语句都不太懂,只是想记下来,以后慢慢回味。 ? 1.SQL<>SQLSERVER<>MSSQLSERVER 2.char、vachar、nvchar之间区别 ? 3.主键外键 ? 4.聚合函数:count max min avg sum等。聚合函数不可出现在where子句中。where count(*)>2//错误。解决方法是用having子句,having子句必须跟在group by子句后 ? 5.通配符过滤:单字符匹配用like '_XXX' 多字符匹配like 'k%' ? 6.null不等于空,而是不知道内容是什么。null+2=null<>''+'2'='2' ? 7.Group by 列名;select 后面的字段必须在group by子句中,或者是聚合函数 ? 8.distinct取消重复是针对整行的数据,而不是某一字段的重复 ? 9.union将两个查询结果合并到一起,两个查询语句的查询字段数目相同,对应的字段类型需相同(相容)。另外,union会对合并后的查询结果去除重复,如果仅想合并查询结果集则需在union后加all ? 10.函数 ? 11.索引,被经常使用去查询的字段建立索引,查询时按原来查询一样,方便查询。插入、删除、更新时都需要改变索引,降低速度。所以只对经常出现在where子句中的字段设索引 ? 12.join语法(left join、right join、cross join) select from table1 as t1 join table2 as t2 on table1.col1=table2.col(表也可以起别名) ? 13.子查询。将一个查询结果供其他查询使用,用的时候将其视为普通的表一样。select子句作为一列的话,查询子句只能返回一行一列。 ? 14.in(value1,value2,....) in里面也可用select子查询,但子查询需要返回单行多列 ? 15.Row_NUMBER()函数(叫开窗函数,05以上版本提供),用于求行号介于某两个书之间的行.只能出现在select或order by子句 ? 16.实现idisposable接口的对象,使用完都需要dispose 最方便的用法是使用Using ? 17.insert into table output inserted.id values('' '' '') 返回新插入的一行的id(自动生成行号情况),此时在C#中可用command.executescalar()返回一行一列的数据 ? 18.sql注入式漏洞攻击。1' or '1'='1 字符串拼接,解决方法是查询时使用参数化方式查询 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- SQLServer数据库中获取每月第一天和最后天的方法以及扩展
- 解决sqlserver2008无法启动配置管理器的问题
- SQLSERVER2005的10054错误在Windows Server 2003 SP1上的解
- sql-server – 如何列出或搜索数据库中的所有列名?
- 数据库 – 将单个R对象列写入预先存在的postgres数据库表
- 复习一下sql server的差异备份
- T-SQL UPDATE中的每一行的RAND都不同
- 在sqlserver2005中安装sql server 2000的示例数据库northwi
- SQLServer收缩数据库
- SQLServer2005遇到的一些错误:233,18452,18470