Microsoft SQL Server 数据查询


单表查询所有列

--查询所有行所有列

select all * from table;

--查询不重复行的所有列

select distinct * from table;

--查询前n行所有列

select top n * from table;

--查询前n%行所有列

select top n percent * from table;

单表查询部分列

--查询所有行部分列

select all 列1,列n from table;

--查询不重复行的部分列

select distinct 列1,列n from table;

--查询前n行部分列

select top n 列1,列n from table;

--查询前n%行部分列

select top n percent 列1,列n from table;

对列设置别名

--为列设置别名

select 列1 别名1,列n as 别名n from table;

计算列及计算列值

create table 表名称

(

列1 char(10) not null,

列2 varchar(8) not null,

列3 char(2) not null,

列4 varchar(30),

列5 smalldatetime not null,

列6 text,

列7 AS 列1*列2 PERSISTED

)

go

select 列1,列1*表达式 as 别名1 from table;

条件查询比较运算符

>=(大于等于),>(大于),=(等于),<=(小于等于),<(小于),!=(不等于),<>(不等于),!>(不大于),!<(不小于)

select * from table where 列1=条件;

条件查询逻辑运算符

--逻辑运算符取值优先顺序:not,and,or.

select * from table where 列1=条件 and 列2=条件;

条件查询模糊查询

-- %代表任意多个字符,_代表单个字符,[]代表集合或范围内的字符,[^]代表不在集合或范围内的字符。

select * from table where 列1 like [^abc];

条件查询取值范围查询

-- between ...and...   in    not in

select * from table where 列1 in(条件);

条件查询关于空值查询

-- is null    is not null

select * from table where 列1 is null;

order by 条件排序

--ASC代表升序DESC代表降序,对数据类型text,ntext,image不能排序

select * from table where 列1=条件 order by 排序表达式 desc;

聚合函数

-- count 统计个数,sum 列值总和只能用于数值类型

-- max 列中最大值 min 列中最小值

-- avg 计算一列中所有值的平均值,只能用于数值类型

select COUNT(*) from table

GROUP BY分组HAVING排序

select 列1 from table group by 列1 HAVING COUNT(*)>2;

多表等值连接查询

SELECT TB.id,NAME FROM TB,TB1 WHERE TB.id=tb1.ID

多表内联接INNER查询

SELECT TB.id,NAME FROM TB INNER JOIN TB1 on TB.id=tb1.ID

都符合条件

多表外连接OUTER查询

SELECT TB.id,NAME FROM TB LEFT OUTER JOIN TB1 on TB.id=tb1.ID

表一全部及表二符合条件行

SELECT TB.id,NAME FROM TB RIGHT OUTER JOIN TB1 on TB.id=tb1.ID

表一符合条件行及表二所有

SELECT TB.id,NAME FROM TB FULL OUTER JOIN TB1 on TB.id=tb1.ID

表一及表二所有行

多表交叉CROSS连接查询

SELECT TB.id,NAME FROM TB CROSS JOIN TB1 where TB.id=tb1.ID

即两个表的笛卡儿积俩表相乘

表自连接

select a.id,b.name from tb1 a inner join tb1 b on a.id=b.id

带有any,some或all关键字的子查询

筛选>all或any(条件)

带有EXISTS的子查询

两张关联表,删除主表中已经在副表中没有的信息

delete from table1 where not exists ( select * from table2 where table1.field1=table2.field1 )

集合的并UNION运算

UNION 运算符通过组合其他两个结果表(例如 TABLE1 和 TABLE2)并消去表中任何重复行而派生出一个结果表。当 ALL 随 UNION 一起使用时(即 UNION ALL),不消除重复行。两种情况下,派生表的每一行不是来自 TABLE1 就是来自 TABLE2。

select * from tb union all select * from tb

所有行数据

select * from tb union  select * from tb

非重复行数据

EXCEPT 运算符

EXCEPT 运算符通过包括所有在 TABLE1 中但不在 TABLE2 中的行并消除所有重复行而派生出一个结果表。

select * from ta1 except select * from ta2;

INTERSECT 运算符

INTERSECT 运算符通过只包括 TABLE1 和 TABLE2 中都有的行并消除所有重复行而派生出一个结果表。

select * from ta1 intersect select * from ta2;

随机选取记录

--从表中随机选取记录

select top 2 * from ta1 order by newid();

局域网跨数据库查询

--开启Ad Hoc Distributed Queries组件

exec sp_configure 'show advanced options',1

reconfigure

exec sp_configure 'Ad Hoc Distributed Queries',1

reconfigure

--关闭Ad Hoc Distributed Queries组件

exec sp_configure 'Ad Hoc Distributed Queries',0

reconfigure

exec sp_configure 'show advanced options',0

reconfigure

--查询金蝶销售订单
SELECT
    DISTINCT
    aa.FID 订单编号,
    aa.FBILLNO 单据编号,
    aa.F_PAEZ_CONTRACTNO 合同号,
    aa.FDATE 业务日期,
    cc.FNAME 销售组织,
    bb.FNAME 客户名称,
    aa.F_PAEZ_ORDERSOURCE 订单来源,
    aa.F_PAEZ_TEXT 最终客户
FROM OPENDATASOURCE(
    'sqloledb',
    'Data Source=192.168.1.199;User Id=sa;Password=123'
).AIS20171005203432.dbo.T_SAL_ORDER aa
LEFT JOIN OPENDATASOURCE(
    'sqloledb',
    'Data Source=192.168.1.199;User Id=sa;Password=123'
).AIS20171005203432.dbo.T_BD_CUSTOMER_L bb ON aa.FCUSTID=bb.FCUSTID
LEFT JOIN OPENDATASOURCE(
    'sqloledb',
    'Data Source=192.168.1.199;User Id=sa;Password=123'
).AIS20171005203432.dbo.T_ORG_ORGANIZATIONS_L cc ON aa.FSALEORGID=cc.FORGID
WHERE aa.FBILLNO='035601-1808210002'

08Microsoft SQL Server 数据查询的更多相关文章

  1. 6、SQL Server 数据查询

    一.使用SELECT检索数据 数据查询是SQL语言的中心内容,SELECT 语句的作用是让数据库服务器根据客户要求检索出所需要的信息资料,并按照规定的格式进行整理,返回给客户端. SELECT 语句的 ...

  2. SQL Server 数据查询 整理

    一.使用SELECT检索数据 数据查询是SQL语言的中心内容,SELECT 语句的作用是让数据库服务器根据客户要求检索出所需要的信息资料,并按照规定的格式进行整理,返回给客户端. SELECT 语句的 ...

  3. SQL Server将查询出数据进行列转行操作

    在日常的SQL Server数据查询时经常会遇到需要将数据列转换成行的操作,现将自己学习的列转行SQL语句举例如下: --首先查询语句 SELCT * FROM  YXBAK..TBYJKSTEMP ...

  4. Sql Server中查询今天、昨天、本周、上周、本月、上月数据

    Sql Server中查询今天.昨天.本周.上周.本月.上月数据 在做Sql Server开发的时候有时需要获取表中今天.昨天.本周.上周.本月.上月等数据,这时候就需要使用DATEDIFF()函数及 ...

  5. CASE函数 sql server——分组查询(方法和思想) ref和out 一般处理程序结合反射技术统一执行客户端请求 遍历查询结果集,update数据 HBuilder设置APP状态栏

    CASE函数   作用: 可以将查询结果集的某一列的字段值进行替换 它可以生成一个新列 相当于switch...case和 if..else 使用语法: case 表达式/字段 when 值 then ...

  6. 【SQL Server数据迁移】64位的机器:SQL Server中查询ORACLE的数据

    从SQL Server中查询ORACLE中的数据,可以在SQL Server中创建到ORACLE的链接服务器来实现的,但是根据32位 .64位的机器和软件, 需要用不同的驱动程序来实现. 在64位的机 ...

  7. 【SQL Server数据迁移】32位的机器:SQL Server中查询ORACLE的数据

    从SQL Server中查询ORACLE中的数据,可以在SQL Server中创建到ORACLE的链接服务器来实现的,但是根据32位 .64位的机器和软件,需要用不同的驱动程序来实现. 在32位的机器 ...

  8. Sql Server参数化查询之where in和like实现详解

    where in 的参数化查询实现 首先说一下我们常用的办法,直接拼SQL实现,一般情况下都能满足需要 string userIds = "1,2,3,4"; using (Sql ...

  9. 【转】Sql Server参数化查询之where in和like实现之xml和DataTable传参

    转载至: http://www.cnblogs.com/lzrabbit/archive/2012/04/29/2475427.html 在上一篇Sql Server参数化查询之where in和li ...

随机推荐

  1. 三元表达式之理解/jquery源代码分析之$.inArray实现

    每次看到三元表达式就会惶惶然分不清怎样读,正如语文中的断句一样,jquery源代码中的三元表达式更是不知怎样断句. 附jquery中的inArray实现. 大家熟悉jquery的应该都不陌生inArr ...

  2. JSON介绍及Android最全面解析方法(Gson、AS自带org.son、Jackson解析)

    前言 今天,我们来介绍一下现今主流的数据交换格式-JSON! 相同作为主流为数据交换格式-XML,假设有兴趣能够阅读我写的XML及其DOM.SAX.PULL解析方法和对照 文件夹 定义 JavaScr ...

  3. 前端为啥要用javascript框架

    前端使用EXT.JS,如果存在两个控件,其中A控件的ID 与 B控件的name相同的话,会报错.ID不能存在相同的情况众所周知,而不同的控件,name也不能相同,恐怕只有遇到过的人才知道了,这不,我就 ...

  4. 2015-2016 ACM-ICPC Pacific Northwest Regional Contest (Div. 2)V - Gears

    Problem V | limit 4 secondsGearsA set of gears is installed on the plane. You are given the center c ...

  5. Minimizing Maximizer

    题意: 最少需要多少个区间能完全覆盖整个区间[1,n] 分析: dp[i]表示覆盖[1,i]最少需要的区间数,对于区间[a,b],dp[b]=min(dp[a...b-1])+1;用线段树来维护区间最 ...

  6. 51Nod 1486 大大走格子 —— 容斥

    题目:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1486 对于每个点,求出从起点到它,不经过其他障碍点的方案数: 求一 ...

  7. 简述Python中的break和continue的区别

    众所周知在Python中,break是结束整个循环体,而continue则是结束本次循环再继续循环. 但是作为一个新手的你,还是不明白它们的区别,这里用一个生动的例子说明它们的区别,如下: 1.con ...

  8. 8. Ext文本输入框:Ext.form.TextField属性汇总

    转自:https://blog.csdn.net/ryuudenne/article/details/8834650 Ext.form.TextField主要配置表: allowBlank       ...

  9. CSS单行文本溢出显示省略号

    此为转载,原文地址 项目中常常有这种需要我们对溢出文本进行"..."显示的操作,单行多行的情况都有(具体几行得看设计师心情了),这篇随笔是我个人对这种情况解决办法的归纳,欢迎各路英 ...

  10. bzoj 3396: [Usaco2009 Jan]Total flow 水流【最大流】

    最大流生动形象的板子,注意数组开大点 #include<iostream> #include<cstdio> #include<queue> #include< ...