关闭 x
IT技术网
    技 采 号
    ITJS.cn - 技术改变世界
    • 实用工具
    • 菜鸟教程
    IT采购网 中国存储网 科技号 CIO智库

    IT技术网

    IT采购网
    • 首页
    • 行业资讯
    • 系统运维
      • 操作系统
        • Windows
        • Linux
        • Mac OS
      • 数据库
        • MySQL
        • Oracle
        • SQL Server
      • 网站建设
    • 人工智能
    • 半导体芯片
    • 笔记本电脑
    • 智能手机
    • 智能汽车
    • 编程语言
    IT技术网 - ITJS.CN
    首页 » SQL Server »SQL Server数据查询基本方法的探讨

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

    2010-09-25 09:12:00 出处:ITJS
    分享

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

    一 基本查询

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

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

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

    Select * from Student_TBL 

    二 where条件查询

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

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

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

    Select * from Student_TBL where CNO=’003’ 

    三 关键字in的使用

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

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

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

    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的学生的信息

    Select * from Student_TBL where SNO between 5 and 30 

    五 消除结果集中的重复行

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

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

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

    Select distinct column1,… from Student_TBL 

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

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

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

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

    Select top 10 * from Student_TBL 

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

    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的使用

    基本语法:

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

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

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

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

    十 使用Like实现模糊查询

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

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

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

    Select * from Student_TBL where SName like ‘李%’ 

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

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

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

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

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

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

    十一 使用is null

    基本语法:

    select * from table_Name where column is null 

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

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

    Select * from Student_TBL where CNO is null 

    十二 使用compute进行计算

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

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

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

    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 后的项一样

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

    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,

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

    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’外所有班级学生的人数

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

    十六 子查询

    基本语法:

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

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

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

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

    基本语法:

    select column1 from table1_name union select column2 from table2_name 

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

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

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

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

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

    Select DName,CName,SName   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

    上一篇返回首页 下一篇

    声明: 此文观点不代表本站立场;转载务必保留本文链接;版权疑问请联系我们。

    别人在看

    hiberfil.sys文件可以删除吗?了解该文件并手把手教你删除C盘的hiberfil.sys文件

    Window 10和 Windows 11哪个好?答案是:看你自己的需求

    盗版软件成公司里的“隐形炸弹”?老板们的“法务噩梦” 有救了!

    帝国CMS7.5编辑器上传图片取消宽高的三种方法

    帝国cms如何自动生成缩略图的实现方法

    Windows 12即将到来,将彻底改变人机交互

    帝国CMS 7.5忘记登陆账号密码怎么办?可以phpmyadmin中重置管理员密码

    帝国CMS 7.5 后台编辑器换行,修改回车键br换行为p标签

    Windows 11 版本与 Windows 10比较,新功能一览

    Windows 11激活产品密钥收集及专业版激活方法

    IT头条

    智能手机市场风云:iPhone领跑销量榜,华为缺席引争议

    15:43

    大数据算法和“老师傅”经验叠加 智慧化收储粮食尽显“科技范”

    15:17

    严重缩水!NVIDIA将推中国特供RTX 5090 DD:只剩24GB显存

    00:17

    无线路由大厂 TP-Link突然大裁员:补偿N+3

    02:39

    Meta 千万美金招募AI高级人才

    00:22

    技术热点

    微软已修复windows 7/windows 8.1媒体中心严重漏洞 用户可下载安

    卸载MySQL数据库,用rpm如何实现

    windows 7中使用网上银行或支付宝支付时总是打不开支付页面

    一致性哈希算法原理设计

    MySQL数字类型中的三种常用种类

    如何解决SQL Server中传入select语句in范围参数

      友情链接:
    • IT采购网
    • 科技号
    • 中国存储网
    • 存储网
    • 半导体联盟
    • 医疗软件网
    • 软件中国
    • ITbrand
    • 采购中国
    • CIO智库
    • 考研题库
    • 法务网
    • AI工具网
    • 电子芯片网
    • 安全库
    • 隐私保护
    • 版权申明
    • 联系我们
    IT技术网 版权所有 © 2020-2025,京ICP备14047533号-20,Power by OK设计网

    在上方输入关键词后,回车键 开始搜索。Esc键 取消该搜索窗口。