--表数据查询--
--数据的基本查询--

--数据简单的查询--
select * | 字段名[,字段名2, ...] from 数据表名 [where 条件表达式]

例:
use 商品管理数据库
go
select * from 商品信息表
select 商品编号,商品名称,产地 from 商品信息表
selelct * from 商品信息表 where 产地='辽宁沈阳'

理解例子

--关键字辅助查询--

--1)distinct关键字 (用来消除查询结果中的重复行,使用时紧跟在select命令后)--
select distinct * | 字段名[,字段名2, ...] from 数据表名 [where 条件表达式]

例:
use 商品管理数据库
go
select distinct 产地 from 商品信息表

理解例子

--2)top关键字 (用来查找结果中前n条或前n%条记录,用法:top n | n percent,使用时紧跟在select命令后)--

select top n | n percent * | 字段名[,字段名2, ...] from 数据表名 [where 条件表达式]

例:
use 商品管理数据库
go
select top 3 * from 商品信息表 --查询结果的前3条记录
select top 30 percent * from 商品信息表 --查询结果的30%条记录

--3)between...and...关键字 (用来查找结果在一定范围内的记录,使用时放于where后面,作为筛选条件)--
字段名[not] between 低值 and 高值 --加"not"表示对满足between...and...关键字的查找结果取反值

例:
use 商品管理数据库
go
selelct * from 库存信息表 where 库存数量 between 100 and 200 --查询"库存信息表"中"库存数量"在100到200之间的记录

--4)in 关键字 (用来查找结果为指定值的记录,使用时放于where后面,作为筛选条件)--
字段名[not] int (值1,值2,值3,...) --加"not"表示对满足in关键字的查找结果取反值

例:
use 商品管理数据库
go
selelct * from 库存信息表 where 库存数量 in(100,200) --查询"库存信息表"中"库存数量"为100或者200的记录

--5)like 关键字 (用来实现表示一定范围的模糊查询,主要用于字符型字段,使用时放于where后面,作为筛选条件)--
字段名 [not] like '<字符表达式>' --加"not"表示对满足like关键字的查找结果取反值

例:
use 商品管理数据库
go
select * from 客户信息表 where 客户姓名 like '_小%' --查询"客户信息表"中"客户姓名"满足筛选条件'_小%'的记录

--6)in null 关键字 (用来查询字段中是否包含空值,使用时放在where后面,作为条件筛选)--
字段名 is null --is不可以用"="代替,null也不能用"0"或空格等代替

例:
use 商品管理数据库
go
selelct * from 客户信息表 where 邮箱 is null

--数据的统计查询--
-- 聚合函数查询--
count( * | 字段名) --统计数据表中的数据总数
sum( 表达式 | 字段名) --计算表达式或字段名中数据的和,表达式或字段名的数据类型要求是数值型
avg( 表达式 | 字段名) --计算表达式或字段名中数据的平均值,表达式或字段名的数据类型要求是数值型
max( 表达式 | 字段名) --求出表达式或字段名中数据的最大值,表达式或字段名的数据类型可以是数值型、字符型或日期时间型
min( 表达式 | 字段名) --求出表达式或字段名中数据的最小值,表达式或字段名的数据类型可以是数值型、字符型或日期时间型
--为查询结果重命名的3种方法:--
原字段名 '新字段名'
原字段名 as '新字段名'
'新字段名'=原字段名

例:
use 商品管理数据库
go
select COUNT(*),SUM(进货数量),AVG(进货金额),MAX(进货金额),MIN(进货金额) from 进货信息表
select COUNT(*)as'总记录',SUM(进货数量)as'进货数量和',AVG(进货金额) '进货金额平均数',MAX(进货金额) '进货金额最大值','进货金额最小值'=MIN(进货金额) from 进货信息表

--查询结果排序 (order by 语句用于实现排序操作,可以出现在from或者where语句的后面)--
order by 字段名1 [,字段名2, ...] [asc | desc] --加asc表示升序,加desc表示降序,默认升序,关键字asc可以省略

例:
use 商品管理数据库
go
select*from 进货信息表 order by 进货数量 desc --查询进货信息表中的所有字段,并将进货数量进行降序排序

--查询结果分组小计--
--1)group by...语句 --使用时可出现在from语句或者where语句后面
group by 字段名列表 [ having 条件表达式] --"字段名列表"表示按该字段分组。通常在select语句后面加聚合函数来表示求值小计,select语句后的字段名要么放在聚合函数中要么放在group by语句中,否则出错。having对结果做进一步的条件筛选,可加聚合函数

例:
use 商品管理数据库
go
select 进货日期,SUM(进货数量)as'进货数量和',SUM(进货金额)as'进货金额和' from 进货信息表 group by 进货日期
select 商品编号,SUM(进货数量)as'进货数量和' from 进货信息表 group by 商品编号 having SUM(进货数量)>30

--2)compute...by...语句 --使用时必须放在order...by...语句后面配合使用,表示先排序(分组),再小计
compute 聚合函数列表 by 被分组字段名 --compute...by...语句中by后面的分组字段必须与order...by...语句中by后面的排序字段相同

例:
use 商品管理数据库
go
select * from 进货信息表 order by 进货日期 compute SUM(进货数量),SUM(进货金额)by 进货日期

--数据的高级查询--

--多表连接查询--
--笛卡尔积查询
select * from A,B --A,B为两张表
--条件连接 (多表连接)
select 字段名列表 from 表1,表2,表3,... where 表1.的公共字段=表2.的公共字段 and 表2.的公共字段=表3.的公共字段 ... ... --select后面跟随被查询的字段名,有公共字段需指明是那张数据表。一定要有where条件,表与表的公共字段即为连接媒介,通常n张表的连接查询至少有n-1个连接条件支撑

例:
use 商品管理数据库
go
select 客户信息表.客户编号,客户姓名,商品编号,销售日期 from 客户信息表,销售信息表 where 客户信息表.客户编号=销售信息表.客户编号 --查询客户购买信息 例:
use 商品管理数据库
go
select 客户信息表.客户编号,客户姓名,商品信息表.商品编号,商品名称,销售金额,商品类型名
from 客户信息表,商品信息表,销售信息表,商品类型表
where 客户信息表.客户编号=销售信息表.客户编号 and 商品信息表.商品编号=销售信息表.商品编号 and 商品信息表.商品类型编号=商品类型表.商品类型编号 --查询客户购买信息

理解例子

--1)内连接(条件连接的一种)

select * | 字段列表 from 数据表1 [inner] join 数据表2 on 连接条件表达式 [inner] jion 数据表3 on 连接条件表达式 ... [where 条件表达式] --实现两张以上表连接时,按照数据表1连接数据表2,数据表2连接数据表3的顺序依次相连

例:
use 商品管理数据库
go
select 客户信息表.客户编号,客户姓名,商品信息表.商品编号,商品名称,销售金额,商品类型名
from 客户信息表
join 销售信息表 on 销售信息表.客户编号=客户信息表.客户编号
join 商品信息表 on 商品信息表.商品编号=销售信息表.商品编号
join 商品类型表 on 商品类型表.商品类型编号=商品信息表.商品类型编号 --查询客户购买信息

理解例子

--外连接

--1)左外连接 (即以左表为主表,用主表中的每条记录与右表中的每条记录连接组合,满足条件和不满足条件的记录都会出现在结果中,不满住条件的记录用空值填补)
select 字段名列表 from 表1 left join 表2 on 表1.公共字段=表2.公共字段 --表1为主表,on关键字表示连接条件

例:
select*from A.学号,姓名,课程名
from A left join B
on A.学号=B.学号 例:
use 商品管理数据库
go
select 客户信息表.客户编号,客户姓名,商品编号,销售日期
from 客户信息表 left join 销售信息表
on 客户信息表.客户编号=销售信息表.客户编号

理解例子

--2)右外连接 (即以右表为主表,用主表中的每条记录与左表中的每条记录连接组合,满足条件和不满足条件的记录都会出现在结果中,不满住条件的记录用空值填补)

select 字段名列表 from 表1 right join 表2 on表1.公共字段=表2.公共字段 --表2为主表,on关键字表示连接条件

例:
use 商品管理数据库
go
select 客户信息表.客户编号,客户姓名,商品编号,销售日期
from 销售信息表 right join 客户信息表
on 客户信息表.客户编号=销售信息表.客户编号

--3)全外连接 (即将左表中所有记录分别与右表中每一条记录连接,满足条件和左右表中不满足条件的记录都会出现在结果中,不满住条件的记录用空值填补)
select 字段名列表 from 表1 full join 表2 on 表1.公共字段=表2.公共字段 --左右表不分主次,相互连接,表1表2位置可以互换,on关键字表示连接条件

例:
use 商品管理数据库
go
select A.学号,姓名,课程名
from A full join C
on A.学号=C.学号

--自连接 (指数据表与其自身实现连接查询操作,也是多表连接的一种形式)
from 数据表名 表别名 [, ...] 或者 from 数据表名 as 表别名 [, ...] --表别名在使用from语句查询数据表时使用,用as关键字指定表别名,可以用空格。可以为多张数据表指定别名,可以为一张数据表指定多个别名,即为一张数据表制作多个副本

例:
use 商品管理数据库
go
select distinct a.商品编号,a.客户编号 from 销售信息表 a, 销售信息表 as b where a.客户编号=b.客户编号 and a.商品编号 < > b.商品编号

--子查询(子查询存在于查询语句的嵌套中)--
--in运算子查询
select * | 字段名[,字段名2, ...] from 数据表名 where 条件表达式 in (select * | 字段名[,字段名2, ...] from 数据表名 [where 条件表达式])

例:
use 商品管理数据库
go
select 客户姓名,联系电话 from 客户信息表 where 客户编号 in (select 客户编号 from 销售信息表 where 销售日期='2012-12-11') --查询查在2012年12月11日购买商品的客户姓名和联系电话

--比较子查询 (指主查询的where条件中使用比较运算符与子查询构成查询条件,程序先执行子查询,与in运算符不同的是,比较运算符后面的子查询得到的结果只是一个值,而非一个集合)
(常用比较运算符:=>>=<<=<>!=!>,!<)

例:
use 商品管理数据库
go
select 商品类型编号,商品名称 from 商品信息表 where 商品编号 in (select 商品编号 from 销售信息表 where 销售数量< (select AVG(销售数量) from 销售信息表))

--exists运算子查询 (exists表示"存在",它后面的子查询不产生查询结果,而是产生一个逻辑值true或者false,当字查询有纪录被查找出结果为true,反之为false,只有子查询结果为true时才显示结果)

例:
use 商品管理数据库
go
select 客户姓名,联系电话 from 客户信息表 where exists (select * from 销售信息表 where 客户编号=客户信息表.客户编号)


注:"--"可看成说明或者注释文本

SQL Server 的表数据简单操作(表数据查询)的更多相关文章

  1. SQL SERVER回滚恢复误操作的数据

    在生产数据库做CURD操作时,可能会有执行某条语句误操作的情况发生,针对这个种情况有两点建议: 1. 在SQL SERVER上开启事务确认功能,当执行完语句后确认无误,再提交事务.(开启方法见附件图片 ...

  2. SQL Server 2008空间数据应用系列五:数据表中使用空间数据类型

    原文:SQL Server 2008空间数据应用系列五:数据表中使用空间数据类型 友情提示,您阅读本篇博文的先决条件如下: 1.本文示例基于Microsoft SQL Server 2008 R2调测 ...

  3. SQL SERVER学习笔记:临时表与表变量

    本文主要摘自徐海蔚的<Microsoft SQL SERVER企业级平台管理实践> 表变量可以作为存储过程的返回参数,而临时表不行.(存疑?表值参数只在SQL SERVER2008才开始支 ...

  4. SQL Server 2008 R2中,变表的右键弹出菜单中的“选择前1000行”为“选择所有行”

    原文:SQL Server 2008 R2中,变表的右键弹出菜单中的"选择前1000行"为"选择所有行" 从SQL Server 2008开始,微软为了提高查询 ...

  5. 何查询SQL Server数据库没有主键的表并增加主键

    SQL Server数据库中,如果一个表没有主键,我们该如何查询呢?本文我们主要就介绍了如何查询数据库中没有主键的表名并为其增加主键的方法,希望能够对您有所帮助. 该功能的实现代码如下: declar ...

  6. SQL SERVER 判断是否存在数据库、表、列、视图

    SQL SERVER 判断是否存在数据库.表.列.视图 --1. 判断数据库是否存在 IF EXISTS (SELECT * FROM SYS.DATABASES WHERE NAME = '数据库名 ...

  7. 从SQL Server到MySQL,近百亿数据量迁移实战

    从SQL Server到MySQL,近百亿数据量迁移实战 狄敬超(3D) 2018-05-29 10:52:48 212 沪江成立于 2001 年,作为较早期的教育学习网站,当时技术选型范围并不大:J ...

  8. SQL Server 执行计划利用统计信息对数据行的预估原理以及SQL Server 2014中预估策略的改变

    前提  本文仅讨论SQL Server查询时, 对于非复合统计信息,也即每个字段的统计信息只包含当前列的数据分布的情况下, 在用多个字段进行组合查询的时候,如何根据统计信息去预估行数的. 利用不同字段 ...

  9. SQL Server中bcp命令的用法以及数据批量导入导出

    原文:SQL Server中bcp命令的用法以及数据批量导入导出 1.bcp命令参数解析 bcp命令有许多参数,下面给出bcp命令参数的简要解析 用法: bcp {dbtable | query} { ...

  10. SQL Server 2016五大优势挖掘企业用户数据价值

    SQL Server 2016五大优势挖掘企业用户数据价值 转载自:http://soft.zdnet.com.cn/software_zone/2016/0318/3074442.shtml 3月1 ...

随机推荐

  1. java内存的那些事

    在Java中,内存的管理分为以下几个部分: Heap:堆区域,存放对象实例,凡是New出来的东西都存放在此. Stack:栈区域,存放基本数据类型.常量.局部变量.对象的引用地址 Data Segme ...

  2. OAF_文件系列11_实现OAF读写Excel包JXL和POI的区别(概念)

    20150803 Created By BaoXinjian

  3. Visual Studio 在调试时启用编辑功能

    Visual Studio边调试边修改 如果你在调试一个web应用程序的时候,想进行编辑,可以有如下两种方法:    方法一:在web项目的属性页里的web标签页,选中"启用编辑并继续&qu ...

  4. JS中两个感叹号!!的意义

    var foo = true; console.log(!foo); // false console.log(!!foo); // true 两个 !! 就是 非非 如果值为boolean值 两个感 ...

  5. HBase 常用Shell命令

    两个月前使用过hbase,现在最基本的命令都淡忘了,留一个备查~ 进入hbase shell console$HBASE_HOME/bin/hbase shell如果有kerberos认证,需要事先使 ...

  6. 118、通过solid来定义不同边框的颜色,可以只定义一个边框的颜色

    以下是设置按钮的右边框和底边框颜色为红色,边框大小为3dp,如下图: 在drawable新建一个 buttonstyle.xml的文件,内容如下: <?xml version="1.0 ...

  7. Axure 使用心得总结

    Axure的本意是高效快捷的完成原型制作,能够清晰的说明功能,交互就是好的,"够漂亮"就行,不需要做到很完美,至于完美还是交给专业的UI吧. 一些心得记录下来: 1.下载一些常用的 ...

  8. C#播放声音的四种方法 +AxWindowsMediaPlayer的详细用法

    C#播放声音的四种方法 第一种是利用DirectX 1.安装了DirectX SDK(有9个DLL文件).这里我们只用到MicroSoft.DirectX.dll和 Microsoft.Directx ...

  9. XE6 & IOS开发之免证书真机调试(2):连接真机并运行App(有图有真相)

    网上能找到的关于Delphi XE系列的移动开发的相关文章甚少,本文尽量以详细的图文内容.傻瓜式的表达来告诉你想要的答案. 原创作品,请尊重作者劳动成果,转载请注明出处!!! 连接真机前,请先确保真机 ...

  10. VS 远程调试之 “The visual studio remote debugger does not support this edition of windows”

    The error message "The visual studio remote debugger does not support this edition of windows&q ...