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 客户编号=客户信息表.客户编号)

注:"--"为注释文本或是说明

时间: 2024-10-05 23:08:13

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

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

在生产数据库做CURD操作时,可能会有执行某条语句误操作的情况发生,针对这个种情况有两点建议:1.在SQL SERVER上开启事务确认功能,当执行完语句后确认无误,再提交事务.(开启方法见附件图片).2.新建存储过程,粘贴附件脚本.此存储过程执行后能够自动产生两个操作日志表,自动记录CRUD的所有操作.适用于提交事务后才发现错误的情况.只需要打开表UPDATE_LOG,粘贴RollbackupSQL里的语句执行即可恢复数据.注意:1)如果表中有自增长的ID,所恢复数据的ID值是最大ID+1.2)

mysql建立表及表的简单操作-插入数据-删除主键-删除表-修改表的数据-删除表的数据

-- 1.使用数据库 USE ren; -- 2.建立student表 CREATE TABLE student ( sid INT UNSIGNED PRIMARY KEY AUTO_INCREMENT,   -- UNSIGNED(无符号) AUTO_INCREMENT(自增) sname VARCHAR(10),    -- 只能保存10个字符 saddress VARCHAR(15)   -- 只能保存15个字符 )ENGINE=MYISAM DEFAULT CHARSET=utf8;

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

原文:SQL Server 2008空间数据应用系列五:数据表中使用空间数据类型 友情提示,您阅读本篇博文的先决条件如下: 1.本文示例基于Microsoft SQL Server 2008 R2调测. 2.具备 Transact-SQL 编程经验和使用 SQL Server Management Studio 的经验. 3.熟悉或了解Microsoft SQL Server 2008中的空间数据类型. 4.具备相应(比如OGC)的GIS专业理论知识. 5.其他相关知识. 通过前面几篇文章介绍了

SQL Server 2012入门图解:建表、备份、还原

SQL Server 2012入门图解:建表.备份.还原_.NET教程网——简单专业的.NET技术网站 http://www.soaspx.com/dotnet/sql/sql2012/sqlserver212_20120504_9079.html 作者:汪宇杰 一.建立你的第一个数据库和表 例:建立一个用于描述一个学校学生情况的数据库.把它命名为School.并且要在School数据库下建立保存学生信息的表Student.在可视化界面下,我们通常这样操作.(本文是入门教程,不介绍如何用SQL语

????SQL Server中默认数据库和默认表的作用

我们知道Oracle数据库的安装架构可以是1个数据库对应1个或多个实例.而在SQL Server中,其架构和Oracle 完全相反,它是1个实例(默认实例名为Hostname主机名)下面包含多个数据库,在sqlserver数据库中(2000,2005,2008等),主要包含4个默认的数据库,分别是master数据库.model数据库.tempdb数据库和msdb数据库.这些数据库是SQL Server的心脏和灵魂.另外,还默认安装了两个实例数据库,分别是:northwind数据库和pubs数据库

SQL Server 2008 R2——使用数字辅助表(master..spt_values)实现用计数字段对记录进行重复显示

原文:SQL Server 2008 R2--使用数字辅助表(master..spt_values)实现用计数字段对记录进行重复显示 =================================版权声明================================= 版权声明:原创文章 谢绝转载  请通过右侧公告中的“联系邮箱([email protected])”联系我 勿用于学术性引用. 勿用于商业出版.商业印刷.商业引用以及其他商业用途. 本文不定期修正完善. 本文链接:http:

列出 sql server某个数据库的角色 及 表名

-- USE YOUR DB NAME select QUOTENAME(SCHEMA_NAME(SCHEMA_ID)) + '.' + QUOTENAME(NAME) FROM SYS.TABLES select '[' + schema_name(schema_id) + '].[' + name + ']' from sys.tables SELECT '[' + TABLE_SCHEMA + '].[' + TABLE_NAME + ']' FROM INFORMATION_SCHEMA

sql server 判断是否存在数据库,表,列,视图

1 判断数据库是否存在if exists (select * from sys.databases where name = '数据库名')    drop database [数据库名] 2 判断表是否存在if exists (select * from sysobjects where id = object_id(N'[表名]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)    drop table [表名] 3 判断存储过程是否存在if ex

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

SQL SERVER 判断是否存在数据库.表.列.视图 --1. 判断数据库是否存在 IF EXISTS (SELECT * FROM SYS.DATABASES WHERE NAME = '数据库名') DROP DATABASE [数据库名] --2. 判断表是否存在 IF EXISTS (SELECT * FROM SYSOBJECTS WHERE ID = OBJECT_ID(N'[表名]') AND OBJECTPROPERTY(ID, N'ISUSERTABLE') = 1) PRI

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

原文:SQL Server 2008 R2中,变表的右键弹出菜单中的"选择前1000行"为"选择所有行" 从SQL Server 2008开始,微软为了提高查询效率等原因,右键点击表时弹出菜单中默认没有"显示所有行",而以"选择前1000行"替代.这有时会为我们带来一些不便. 更改方法是:打开SQL Server Management Studio,依次点击"工具"菜单."选项",展开左