SQL Server 的表数据简单操作(表数据查询)
--表数据查询--
--数据的基本查询--
--数据简单的查询--
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 的表数据简单操作(表数据查询)的更多相关文章
- SQL SERVER回滚恢复误操作的数据
在生产数据库做CURD操作时,可能会有执行某条语句误操作的情况发生,针对这个种情况有两点建议: 1. 在SQL SERVER上开启事务确认功能,当执行完语句后确认无误,再提交事务.(开启方法见附件图片 ...
- SQL Server 2008空间数据应用系列五:数据表中使用空间数据类型
原文:SQL Server 2008空间数据应用系列五:数据表中使用空间数据类型 友情提示,您阅读本篇博文的先决条件如下: 1.本文示例基于Microsoft SQL Server 2008 R2调测 ...
- SQL SERVER学习笔记:临时表与表变量
本文主要摘自徐海蔚的<Microsoft SQL SERVER企业级平台管理实践> 表变量可以作为存储过程的返回参数,而临时表不行.(存疑?表值参数只在SQL SERVER2008才开始支 ...
- SQL Server 2008 R2中,变表的右键弹出菜单中的“选择前1000行”为“选择所有行”
原文:SQL Server 2008 R2中,变表的右键弹出菜单中的"选择前1000行"为"选择所有行" 从SQL Server 2008开始,微软为了提高查询 ...
- 何查询SQL Server数据库没有主键的表并增加主键
SQL Server数据库中,如果一个表没有主键,我们该如何查询呢?本文我们主要就介绍了如何查询数据库中没有主键的表名并为其增加主键的方法,希望能够对您有所帮助. 该功能的实现代码如下: declar ...
- SQL SERVER 判断是否存在数据库、表、列、视图
SQL SERVER 判断是否存在数据库.表.列.视图 --1. 判断数据库是否存在 IF EXISTS (SELECT * FROM SYS.DATABASES WHERE NAME = '数据库名 ...
- 从SQL Server到MySQL,近百亿数据量迁移实战
从SQL Server到MySQL,近百亿数据量迁移实战 狄敬超(3D) 2018-05-29 10:52:48 212 沪江成立于 2001 年,作为较早期的教育学习网站,当时技术选型范围并不大:J ...
- SQL Server 执行计划利用统计信息对数据行的预估原理以及SQL Server 2014中预估策略的改变
前提 本文仅讨论SQL Server查询时, 对于非复合统计信息,也即每个字段的统计信息只包含当前列的数据分布的情况下, 在用多个字段进行组合查询的时候,如何根据统计信息去预估行数的. 利用不同字段 ...
- SQL Server中bcp命令的用法以及数据批量导入导出
原文:SQL Server中bcp命令的用法以及数据批量导入导出 1.bcp命令参数解析 bcp命令有许多参数,下面给出bcp命令参数的简要解析 用法: bcp {dbtable | query} { ...
- SQL Server 2016五大优势挖掘企业用户数据价值
SQL Server 2016五大优势挖掘企业用户数据价值 转载自:http://soft.zdnet.com.cn/software_zone/2016/0318/3074442.shtml 3月1 ...
随机推荐
- 5. Longest Palindromic Substring
Given a string S, find the longest palindromic substring in S. You may assume that the maximum lengt ...
- 关于STM32的FLASH操作【转载】
说到STM32的FLSAH,我们的第一反应是用来装程序的,实际上,STM32的片内FLASH不仅用来装程序,还用来装芯片配置.芯片ID.自举程序等等.当然, FLASH还可以用来装数据. FLASH分 ...
- 黄聪:如何为IIS增加svg和woff等字体格式的MIME
现在字体图标已经渐渐代替了图片了,移动端用起来也很方便. 使用了字体文件来显示矢量的图标,为了能在IIS上正常显示图标,可以通过增加iis的MIME-TYPE来支持图标字体文件 下面就把IIS增加sv ...
- OAF_开发系列22_实现OAF条形码BarCode
20150717 Created By BaoXinjian
- CentOS 下 sftp 有人能连有人不能连 程序设定了禁用IP
问题现象: 局域网的一台Linux上运行有sftp Server. 大家用FileZilia 连接,有两个人能够连接,有两个人不能连接. 解决问题: 1.先查看服务器上的sftp server是哪一个 ...
- mysql临时表的产生
sql执行会生成一个巨大的临时表,当内存放不下时,要全部copy 到磁盘,导致IO飙升,时间开销增大. 额外收获知识收藏如下: 临时表存储 MySQL临时表分为"内存临时表"和&q ...
- vim常用操作
vim filename 编辑一个文件 在一般模式里按yy是复制的意思(复制当前行),按yy之前先按相应的数字键就是复制光标所在行到指定的行,然后按p粘贴在一般模式里按dd是删除的意思(也叫做剪切), ...
- 高级搜索插件solis search在umbraco中的使用
好久没有写关于umbraco的博客了,这段时间在研究solis search,感觉它太强大,好东西是需要分享的,所以写一篇简单的使用博客分享给个人umbraco爱好者. 简介 在了解solis sea ...
- Spark SQL Example
Spark SQL Example This example demonstrates how to use sqlContext.sql to create and load a table ...
- 通过JS简单实现图片缩放
;display: none;cursor: pointer;} #FullScreenDiv{;display: none;background-color: #919191;filter: alp ...