SQLServer的表数据简单操作(表数据查询)--表数据查询--
--数据的基本查询--
--数据简单的查询--
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%条记录
--关键字(⽤来查结果在⼀定范围内的记录,使⽤时放于where后⾯,作为筛选条件)--
字段名[not] between 低值 and ⾼值 --加"not"表⽰对满⾜关键字的查结果取反值
例:
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
distinct查询select*from 进货信息表 order by 进货数量 desc --查询进货信息表中的所有字段,并将进货数量进⾏降序排序
--查询结果分组⼩计--
--1)语句 --使⽤时可出现在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
--by...语句 --使⽤时必须放在by...语句后⾯配合使⽤,表⽰先排序(分组),再⼩计
compute 聚合函数列表 by 被分组字段名 --by...语句中by后⾯的分组字段必须与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 客户编号=客户信息表.客户编号)
注:"--"可看成说明或者注释⽂本

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。