SQL Server数据查询基本方法的探讨

首先创建一个简单的数据库作为示例数据库,数据库名称为school_db,里面有三张表 Department_TBL(DNO,DName),Class_TBL(CNO,CName,DNO),Student_TBL(SNO,SName,SSex,CNO)

一 基本查询

基本语法:select (查询列表|*) from  (表列表)

说明:“查询列表”可以是表的字段,表达式,函数。“表列表”可以包含多张表

示例:查询所有学生的基本信息

  1. Select * from Student_TBL 

二 where条件查询

基本语法:select (查询列表|*) from (表列表) where (限制条件)

说明:where关键字后面的限制条件不能包含聚合函数

示例:查询所在班级编号是“003”的学生的基本信息

  1. Select * from Student_TBL where CNO=’003’ 

三 关键字in的使用

基本语法:select (查询列表|*) from (表列表) where (字段名) in (值集合)

说明:in关键字的作用是查询某一字段是否在一个集合中,一般在where语句中使用

示例:查询学号为23,34,35,40 学生的信息

  1. Select * from Student_TBL where SNO in (23,34,35,40) 

四 between和 Not between的使用

基本语法:select (查询列表|*) from (表列表) where (字段名) between||not between 值1 AND 值2

说明:判断某个字段的值是否在一个范围之内

示例:查询所有学号大于5小于30的学生的信息

  1. Select * from Student_TBL where SNO between 5 and 30 

五 消除结果集中的重复行

基本语法:select distinct column1,… from (表列表)

说明:去除结果集中跟在distinct关键字后面所有字段的值相等的记录

示例:查询所有学生的信息,删除名字相同的多余行

  1. Select distinct column1,… from Student_TBL 

六 返回指定的行数(百分率)

基本语法:select top n [percent](column1,…) from (表列表)

说明:n为要返回的行数,若含有percent关键字则按百分比返回,则此时n必须在0~100之间,若查询语句中含有order by 则先对查询结果进行排序,再执行筛选

示例:返回前十名学生的基本信息

  1. Select top 10 * from Student_TBL 

返回前百分之十的学生的基本信息

  1. Select top 10 percent * from Student_TBL 

七 改变查询标题

基本语法:select  ‘自定义标题’=column1,…. From (表列表),select column1 ‘自定义标题’,…. From (表列表),select column1 as ‘自定义标题’,… from (表列表)

说明:改变的只是查询结果的标题,并没有改变表的标题

示例:查询学生的基本信息,SNO,SName,CNO分别用“学号”,“姓名”,”所属班级”显示

、这里只使用第三种方法演示了

Select ‘学号’ as SNO,’姓名’ as SName,’所属班级’ as ‘CNO’ from Student_TBL

八 在查询结果中显示字符串

基本语法:在select 语句中,将增加的字符串用单引号括起来然后和列的名字写在一起,中间用逗号分开

示例:查询所有学生信息,显示的结果的形式是“学号+“我的姓名是+”性命+班级编号”

Select SNO,’我的姓名是’,SName,CNO from Student_TBL

九 order by的使用

基本语法:

  1. select * from table_Name [where..] order by column1 [asc]desc]… 

说明:order by 后面可以指定多个列,默认是按升序方式排列的,order by 放在where 语句之后

示例:查询所有学好大于23号的学生信息,并按学号的降序排列

  1. Select * from Student_TBL where SNO>23 order by SNO desc 

十 使用Like实现模糊查询

基本语法:select * from table_Name where column like (匹配条件)

说明:“%”匹配任意长度的(长度可以为0)字符串,“_”匹配任意单个字符,“[]”:匹配所给定范围或集合中的任意单个字符,“[^]”匹配所给定的不在所给定的集合或范围中的任意单个字符,通配符或字符串必须用单引号括起来

示例:查询所有姓李的同学地信息

  1. Select * from Student_TBL where SName like ‘李%’ 

查询所有学生名字中第二个字为“冰”的同学的信息

  1. Select * from Student_TBL where SName like ‘_冰%’ 

查询所有编号中含有’e,t,y’字符的班级信息

  1. Select * from Class_TBL where CNO like ‘[e,t,y]’ 

查询所有编号中不含有’e,t,y’字符的班级信息

  1. Select * from Class_TBL where CNO like ‘[^e,t,y]’ 

十一 使用is null

基本语法:

  1. select * from table_Name where column is null 

说明:查询指定列为输入数据的数据行,通常用在where语句中

示例:查询还没有分配班级的学生的信息

  1. Select * from Student_TBL where CNO is null 

十二 使用compute进行计算

基本语法:select * from table_name where 查询条件 compute 聚合函数

说明:用来计算总计或进行分组小计,总计或小计值作为附加行出现在查询结果中

示例:计算在编号为‘001’班级的学生的信息并统计该班有多少个学生

  1. Select * from Student_TBL where CNO=’001’ compute count(*) 

十三 使用compute by分组查询结果

基本语法:select * from table_Name [where..] order by column compute 聚合函数 by column

说明:在使用compute by之前必须先使用order by 对要进行分组的列进行排序,注意,在oerder by 中进行排序的列的数量和顺序必须和compute by 后的项一样

示例:根据不同班级分组统计各个班级学生的信息

  1. Select * from Student_TBL order by CNO compute count(SNO) by CNO 

十四 使用group by

基本语法:select * from table_name [where…] group by column

说明:在select 子句中使用聚合函数时,group by计算每组的汇总值,使用group by子句时,在select 子句中出现的列名或者出现在聚合函数中,或者出现在group by 子句后面,否则会抱错,另外group by后面还可以恩 with cube||rollup,

示例:统计每个班级有多少学生,不显示学生的信息,只显示统计信息

  1. Select CNO,count(SNO) from Student_TBL group by CNO 

十五使用having语句

基本语法:select * from table_name [where …] group by column having …

说明:having子句用于限定对组或者聚合函数的查询条件,该子句常用于group by 子句后面,在查询结果分组后对组判断是否满足查询条件,在分组之前可以用where语句判断查询条件,使用where比使用having更有效,因为它先将不满足条件的行过滤掉,从而减少了要进行分组的行数

示例:分组统计除编号为‘001’外所有班级学生的人数

  1. Select CNO,count(SNO) from Student_TBL group by CNO having CNO<>’001’ 

十六 子查询

基本语法:

说明:子查询是在查询中包含另一个查询的查询,可以使用子查询代替表达式,自查询只能返回一列数,有时只返回但个值

示例:查询班级人数大于平均班级人数的班级

  1. Select * from Class_TBL where (select count(*)   
  2. from student where CNO=Class_TBL.CNO)>((select count(*) from Student_TBL)/(select count(*) from Class_TBL)) 

十七 使用union运算符合并多个查询结果

基本语法:

  1. select column1 from table1_name union select column2 from table2_name 

说明:所有查询中的列数和列的顺序必须相同,所有查询中按顺序对应列的数据类型必须相同或兼容,如果希望重新排序多个查询结果的合并结果,则在***的select 语句中使用order by子句

十八 查询多个表或视图的信息

基本语法:select column1,column2,… from talbe1,table2,…

说明:在涉及多表查询时必须使用where语句给出多表之间的连接条件,对来自N各表或视图查询要写出N-1 个连接条件

示例:查询每个学生所在的系部的名称,班级的名称和姓名

  1. Select DName,CName,SName   
  2. from Student_TBL S,Class_TBL C,Department_TBL Dwhere S.CNO=C.CNO and C.DNO=D.DNO 

十九 相等连接与自然连接:相等连接是将要连接的列作相等比较的连接,在相等连接列中只保留一个连接列的连接称为自然连接

二十 比较连接:表与表之间的连接不使用“=”连接,而是使用比较运算符的连接

二十一 自连接就是表与它自己进行连接

二十二 左连接,右连接和全连接

二十三 使用exists:在where子句中可以使用exists子句,它用于测试跟随的子查询中的行是否存在

原文标题:关于SQL Server数据查询基本方法的总结

链接:http://www.cnblogs.com/lidingbin/archive/2010/09/23/1833380.html

【编辑推荐】

  1. SQL Server 2000删除实战演习
  2. SQL Server存储过程的命名标准如何进行?
  3. 卸载SQL Server 2005组件的正确顺序
  4. 对SQL Server字符串数据类型的具体描述
  5. SQL Server数据类型的种类与应用

文章来源网络,作者:管理,如若转载,请注明出处:https://shuyeidc.com/wp/228890.html<

(0)
管理的头像管理
上一篇2025-04-18 12:35
下一篇 2025-04-18 12:36

相关推荐

  • 站群服务器和普通服务器到底哪个更适合GEO,怎么选?

    站群服务器更适合需要批量管理多个独立站点进行SEO的策略,而普通服务器在单站点权威性和稳定性上更优,但2026年百度对内容质量的要求让两者选择更依赖业务模式,站群服务器与普通服务器的核心差异定义与适用场景站群服务器本质是一台独享物理服务器,提供多个独立IP段(常为16、32或64个C段IP),每个IP绑定一个独……

    2026-07-28
    0
  • 物理服务器和云服务器做站群到底选哪个,哪个更稳定?

    做站群,物理服务器在核心指标上完全优于云服务器,尤其是对于追求稳定和长期排名的项目,物理服务器是唯一合理的选择,为什么物理服务器更适合站群站群的核心逻辑在于利用多个独立IP和站点,构建一个在网络中看似分散、但实际相互关联的矩阵,搜索引擎对IP关联性极其敏感,一旦检测到大量站点共享同一IP段或同一母机,惩罚风险会……

    2026-07-28
    0
  • 国内高防服务器哪家防御真实靠谱,怎么选?

    国内高防服务器哪家防御真实靠谱?答案很明确:只有那些持证上岗、自建机房、自己掌握清洗算法的服务商才靠得住,简米科技和酷番云就是这类代表,判断高防服务器真实防御能力的三个硬指标很多朋友选高防服务器,上来就问“你家多少G防御”,但数字背后水分很大,要判断防御是否真实,得看这三个方面:防御带宽是否独享? 有些服务商宣……

    2026-07-28
    0
  • 裸金属服务器和物理服务器有什么区别?,怎么选?

    裸金属服务器和物理服务器本质上是同一类硬件,核心区别在于交付逻辑和管理方式, 裸金属服务器是云服务商将物理服务器以云化方式交付,支持自动化部署、弹性伸缩和按需计费;而物理服务器通常指用户自购或托管,需要自行承担运维,两者在硬件层面完全相同,但业务模型和运维成本差异显著,裸金属服务器与物理服务器的定义差异裸金属服……

    2026-07-28
    0
  • 做GEO站群选哪家服务器服务商靠谱,怎么选?

    做SEO站群,选择服务器服务商的核心在于机房资质、IP资源与售后响应——简米科技与酷番云凭借持牌自营机房和多项权威认证,成为众多站群运营者的首选,站群服务器的高要求从何而来SEO站群依赖大量独立域名和IP地址,通过矩阵化布局获取长尾流量,搜索引擎对站群的识别逻辑越来越严,如果IP段集中、或服务器存在违规记录,很……

    2026-07-28
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注