Welcome 微信登录

首页 / 数据库 / SQLServer

SQL语句执行顺序详解

SQL语句执行顺序详解

我们做软件开发的,大部分人都离不开跟数据库打交道,特别是erp开发的,跟数据库打交道更是频繁,由于SQL 不同于与其他编程语言的最明显特征是处理代码的顺序。在大数编程语言中,代码按编码顺序被处理,但是在SQL语言中,第一个被处理的子句是FROM子句,尽管SELECT语句第一个出现,但是几乎总是最后被处理。 每个步骤都会产生一个虚拟表,该虚拟表被用作下一个步骤的输入。这些虚拟表对调用者(客户端应用程序或者外部查询)不可用。只是最后一步生成的表才会返回 给调用...
SQL获取第一条记录的方法(sqlserver、oracle、mysql数据库)

SQL获取第一条记录的方法(sqlserver、oracle、mysql数据库)

Sqlserver 获取每组中的第一条记录在日常生活方面,我们经常需要记录一些操作,类似于日志的操作,最后的记录才是有效数据,而且可能它们属于不同的方面、功能下面,从数据库的术语来说,就是查找出每组中的一条数据。下面我们要实现的就是在sqlserver中实现从每组中取出第一条数据。例子我们要从上面获得的有效数据为:对应的sql语句如下所示:select * from t1 t where id = (select top 1 id from t1 wher...
sqlserver四舍五入使用round函数及cast和convert函数

sqlserver四舍五入使用round函数及cast和convert函数

引言 今天和测试沟通一个百分比计算方式时遇到一个问题, 我在存储过程里用到了强转CAST(32.678 AS DECIMAL(5,1)) 我认为该方式只会保留一位小数,我给测试的回复是我并没有用到四舍五入函数,数据也没有四舍五入,而测试说他们自己验证后觉的数据是经过四舍五入了的。 想到这里于是我再试了试存储过程的每个计算点,才发现了这个问题。ROUND 那么用到四舍五入并且保留小数点时我们肯定会首选ROUND函数, 如果字段的数据类型是decimal(18...
SQL Server将一列的多行内容拼接成一行的实现方法

SQL Server将一列的多行内容拼接成一行的实现方法

下面大家先看下示例代码:示例昨天遇到一个SQL Server的问题:需要写一个储存过程来处理几个表中的数据,最后问题出在我想将一个表的一个列的多行内容拼接成一行,比如表中有两列数据 :类别名称AAA企业1AAA企业2AAA企业3BBB企业4BBB企业5我想把这个表变成如下格式:类别名称AAA企业1,企业2,企业3BBB企业4,企业5一开始挺头疼的(会了的肯定没有这种感觉,不会那必须是头疼啊(*^__^*) ),从网上找了点资料,算是找到一种比较简单方便的方...
日常收集整理SqlServer数据库优化经验和注意事项

日常收集整理SqlServer数据库优化经验和注意事项

网上关于SQL优化的教程很多,但是比较杂乱。近日有空整理了一下,写出来跟大家分享一下,其中有错误和不足的地方,还请大家纠正补充。优化数据库的注意事项:1、关键字段建立索引。2、使用存储过程,它使SQL变得更加灵活和高效。3、备份数据库和清除垃圾数据。4、SQL语句语法的优化。(可以用Sybase的SQL Expert,可惜我没找到unexpired的序列号)5、清理删除日志。SQL语句优化的基本原则:1、使用索引来更快地遍历表。缺省情况下建立的索引是非群集...
浅析SQL数据操作语句

浅析SQL数据操作语句

SQL 中的运算符1算术运算符:+:加运算,求两个数或表达式想加的和-:减运算,求两个数或表达式相减的差*,乘运算,求两个数或表达式相乘的积/:除运算,求两个数或表达式相除的商%:取模运算,求两个数或表达式相除的余数2.赋值运算=:把一个数或表达式赋值给另一个标量.3.比较运算符=:等于 >大于 < 小于 <>不等于 >= 大于等于 <=小于等于 !=不等于4.逻辑运算符AND :当且仅当两个布尔表达式为true时,返回...
使用SqlServer CTE递归查询处理树、图和层次结构

使用SqlServer CTE递归查询处理树、图和层次结构

CTE(Common Table Expressions)是从SQL Server 2005以后版本才有的。指定的临时命名结果集,这些结果集称为CTE。 与派生表类似,不存储为对象,并且只在查询期间有效。与派生表的不同之处在于,CTE 可自引用,还可在同一查询中引用多次。使用CTE能改善代码可读性,且不损害其性能。递归CTE是SQL SERVER 2005中重要的增强之一。一般我们在处理树,图和层次结构的问题时需要用到递归查询。CTE的语法如下 WITH ...
SQL Server数字开头的数据库表名的解决方法

SQL Server数字开头的数据库表名的解决方法

今天遇到了个郁闷的问题,关于数据库表名的问题。 SQL Server的数据库的表名可以用数字开头,但是在查询的时候,不能直接写表名,如下: select * form 1_tablename 在执行过程中,报错。但是给表名加上中括号,就可以了,如下: select * from [1_tablename] 用VS中的DataSet开发时,会自动生成SQL语句,但是生成的SQL语句中,有的加上方括号,但是有的没有加,这在程序执行过程中,就不能确定语句的正确性...
SQL Server 表变量和临时表的区别(详细补充篇)

SQL Server 表变量和临时表的区别(详细补充篇)

一、表变量 表变量在SQL Server 2000中首次被引入。表变量的具体定义包括列定义,列名,数据类型和约束。而在表变量中可以使用的约束包括主键约束,唯一约束,NULL约束和CHECK约束(外键约束不能在表变量中使用)。定义表变量的语句是和正常使用Create Table定义表语句的子集。只是表变量通过DECLARE @local_variable语句进行定义。 表变量的特征:1.表变量拥有特定作用域(在当前批处理语句中,但不在任何当前批处理语句调...
针对distinct疑问引发的一系列思考

针对distinct疑问引发的一系列思考

有人提出了这样一个问题,整理出来给大家也参考一下假设有如下这样一张表格:这里的数据,具有如下的特征:在一个DepartmentId中,可能会有多个Name,反之也是一样。就是说Name和DepartmentId是多对多的关系。现在想实现这样一个查询:按照DepartmentID排完序之后(第一步),再获取Name列的不重复值(第二步),而且要保留在第一步后的相对顺序。以本例而言,应该返回三个值依次是:ACB我们首先会想到下面这样一个写法select dis...
<< 151 152 153 154 155 156 157 158 159 160 >>