优秀的编程知识分享平台

网站首页 > 技术文章 正文

SQL - 通过TSQL代码方式进行简单的数据查询 153

nanyue 2025-09-03 05:58:00 技术文章 7 ℃

数据查询:简单来说通过执行编写的TSQL代码查询出表中符合条件的数据,查询的出数据一般称为数据(结果)集,是一个结果集合(其中的数据是没有顺序的)

1 不带条件查询表中所有列的数据(也叫检索数据)

--简单查询数据的标准格式
select * from 表名
--select:意指查询/检索
--* : 代表所有列名
--from:意指从哪个表

--最后一次说明
--切换至要查询表随机所在的数据库
--否则报错(自行测试)
use School;

--查询出 Student 表中所有列的数据
select * from Student
--* 代替 Student 表中所有列名

--有时查询时不需要查询出所有列的数据
--可使用只查询指定列名的方式进行查询
--这样做也可以节省查询时间,提供查询数据的效率
--查询出 Student 表中指定列的数据
select SId, SName, SAge from Student
--每个列名间使用逗号间隔(半角英文状态下)

--也可以进行折行编写
select 
SId, SName, SAge 
from Student

--查询语句的执行顺序
--大致执行顺序从后向前,从左向右
1)from Student 确认从哪个表中获取数据
2)select  SId, SName, SAge 再从1)筛选出指定列的数据
并不是从上到下依次执行

注意:除非必要,不要通过 不带条件,使用 * 查询表的所有数据(特别是数据非常多的表)

2 带条件的查询表中数据(现只针对单个表)需要使用到查询条件的基本条件符号

条件符号:用于SQL查询语句中筛选数据的关键字,通过它可以根据不同的条件符号来对表中数据进行筛选,可以使得使用者更加快速精准地得到我们所需的数据

最基本的条件符号

1) = (等于符号)用于筛选出符合条件的数据集

2) <> (不等于符号)与 =相反,用于筛选出不符合条件的数据集

3) > (大于符号)用于筛选出大于指定数值或日期的数据集

4) < (小于符号)用于筛选出小于指定数值或日期的数据集

5) >= (大于等于)用于筛选出大于等于指定数值或日期的数据集

6) <= (小于等于符号)用于筛选出小于等于指定数值或日期的数据集

7) and/or(逻辑运算符)用于多个条件的组合,可以筛选出两个条件的交/并集数据集

--1) = (等于符号)用于筛选出符合条件的数据集
select SId,SName,SAge from Student where SAge = 18

--2) <> (不等于符号)与 =相反,用于筛选出不符合条件的数据集
select SId,SName,SAge from Student where SAge <> 18

--3) > (大于符号)用于筛选出大于指定数值或日期的数据集
select SId,SName,SAge from Student where SId > 13

--4) < (小于符号)用于筛选出小于指定数值或日期的数据集
select SId,SName,SAge from Student where SId < 13

--5) >= (大于等于)用于筛选出大于等于指定数值或日期的数据集
select SId,SName,SAge from Student where SId >= 13

--6) <= (小于等于符号)用于筛选出小于等于指定数值或日期的数据集
select SId,SName,SAge from Student where SId <= 13

--7) and/or/not (逻辑运算符)用于多个条件的组合,可以筛选出两个条件的交/并/相反集数据集
--使用and得到两个条件的交集结果
select SId,SCId,SName,SAge from Student where SId <=5 and SCId = 3
--使用or 得到两个条件的并集结果
select SId,SCId,SName,SAge from Student where SId <=5 or SCId = 3
--使用 not 得到筛选条件结果的相反结果集
select SId,SCId,SName,SAge from Student where not(SId <=5)

3 (*了解即可)查询数据时可以通过 as= 为表中的列名起个别名,但是这个别名只是基于列名的临时性"列名"只能应用于这个查询中(暂时)

--使用 as 为列名起别名(根据需要自定义有意义的别名)
select 
SId as N'学生编号',
SName as N'学生姓名', 
SAge as N'学生年龄'
from Student

--使用 = 为列名起别名
select 
学生编号 = SId,
学生姓名 = SName, 
学生年龄 = SAge  
from Student

4 通过top/percent获取查询结果的前几条/百分之几(大于当前百分比的最近的整数)

 --表中共有16条数据
--获取查询结果的前5条数据
select top 5 * from Student
--获取查询结果的前百分10% 条数据
--查询结果为1.12,实际查询出的数据为2条
select top 7 percent * from Student

注意:通过查询语句得到的数据并没有顺序(只是显示的有顺序)单独使用top意义不大

5 order by 排序语句,top语句一般与order by 语句合在一起连用(进行数据分页时经常使用 order by语句)

--order by 排序语句
--通过年龄降序升序排序(小到大,默认 asc可以省略)
select top 5 * from Student order by SAge asc
--通过年龄降序排序(大到小)
select top 5 * from Student order by SAge desc

--语句执行顺序
1)from Student 从此表中获取结果集
2)order by SAge asc/desc 对1)中数据进行升序/降序排序
3)select top 5 * 获取2)中结果集的前5条数据

知道其查询的执行顺序,查看其查询结果才不会迷惑

6 游标:是SQL的一种数据访问机制,游标是一种处理数据的方法

通过SQL的select查询语句返回的结果是一个包含一行或者是多行的数据集,如果要对查询的结果再进行查询如查看结果的第一行、上一行、下一行、最后一行等等操作

使用select语句无法完成的其操作结果,因为这时要查询的结果不再是针对数据表,而是针对已经查询出来的结果集,游标就是针对这种情况而出现的

可以将" 游标"简单的看成是结果集中的一个指针,我们可以根据需要通过此"指针"在结果集中来回移动获取需要的数据

--未进行排序,查询结果为无顺序的集合
select  * from Student 
--进行排序,查询结果为有顺序的称为游标
select  * from Student order by SAge 
--虽然最终结果相同,但是查询的结果是不同的
最近发表
标签列表