重庆分公司,新征程启航

为企业提供网站建设、域名注册、服务器等服务

T-SQL查询语句

    SQL语言中最主要、最核心的部分是它的查询功能。查询语句用来对已经存在于数据库的数据按照特定的组合、条件表达式或次序进行检索,使用SELECT语句来完成。

使用SELECT查询数据

1. SELECT语法结构

创新互联公司长期为上1000家客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为洛扎企业提供专业的成都网站设计、成都网站建设洛扎网站改版等技术服务。拥有十年丰富建站经验和众多成功案例,为您定制开发。

    T-SQL中查询基本格式是有SELECT子句、FROM子句、WHERE子句组成的查询块:

select 列名 from 表名 where 查询限定条件

其中

* select 指定了想要查看哪些列的数据

* from 指定这些数据来自于哪些表

* where 指定了想要查看哪些行

 

SELECT语句的语法如下:

select  列名                       //SELECT子句:指定查询列表字段,列名格式为“表.字段1,表.字段2”,如果查单个表,可简写为“字段1,字段2”
[into  新表名]                  //INTO子句:可选,将查询结果存放在一个新表中
from  表名                      //FROM子句:指定查询数据的表名称
[where  查询限定条件]            //WHERE子句:可选,查询条件,由字段组成的条件表达式或逻辑表达式
[group by  分组条件]               //GROUP BY子句:可选,指定查询结果的分组条件,通常是一个列名,但不能是列的别名
[having   分组查询限定条件]          //HAVING子句:指定分组搜索条件,通常与GROUP BY子句一起使用
[order by  排序规则esc|desc]                //ORDER BY子句:指定查询结果的排序方式,默认为升序ESC;DESC表示

2. 表达式

    表达式是符号和运算符的一种组合,并且可以对它求值得到单个数据值

(1)条件表达式

常量:单个指定数据值的符号(字母、数字、符号)

列名:表中列的名称

一元运算符:仅有一个操作数的运算符(+正数、-负数)

二元运算符:将两个操作数组合执行操作的运算符,可以是算数运算符、赋值运算符、位运算符、比较运算符、逻辑运算符、字符串串联运算符、一元运算符

T-SQL查询语句

T-SQL查询语句

   在查询LIKE运算符的SQL语句需要使用以下的通配符运算符:

T-SQL查询语句

例如:要求查找“员工信息表”中电话号码前两位数为“13”,可以编写如下约束表达式

T-SQL查询语句

(2)逻辑表达式

T-SQL查询语句

3. 查询举例

(1)查询student表中成绩为90-100的学生所有信息

select * from student where 成绩 between 90 and 100

(2)查询student表中成绩低于90或高于95分学生信息

select * from student where 成绩<90 or 成绩>95

(3)查询student表中成绩为89、90、91分的学生信息

select * from student where 成绩 in (89,90,91)

(4)查询student表中所有姓刘的学生信息

select * from student where 姓名 like ‘刘%'

(5)查询student表中前5行的数据

select top 5 * from student

(6)查询student表中所有学生信息,按照成绩从高到低显示查询结果

select * from student order by 成绩 desc

4. 分组查询

    分组查询就是将表中的数据按照一定的条件分类组合,在根据需要得到统计信息,通过group by子句可以实现

    在group by子句查询中,select指定的列名要么是group by子句中指定的列,要么是聚合函数。聚合函数用于对一组值进行计算,并返回单个值,如求总和、最大值、最小值、平均值等。T-SQL中常见的聚合函数有SUM()、AVG()、MAX()、MIN()、COUNT()等

(1)查询student表中所有学生的总成绩,列表名显示为“总成绩”

select SUM(成绩)as 总成绩 from student

(2))查询student表中所有学生的平均成绩

select AVG(成绩)as 平均成绩 from student

(3)查询student表中所有学生的最高分和最低分

select MAX(成绩)as 最高分 MIN(成绩)as 最低分 from student

(4)查询student表中所有行数

select COUNT(*)as 总行数 from student

(5)查询student表中每个班级的总成绩

select SUM(成绩)as 总成绩 from student group by 班级

(6)查询student表中总成绩大于200的班级

select SUM(成绩)as 总成绩 from student group by 班级 having SUM(成绩)>200

(7)将student表中2班的学生信息保存到表student_new中

select * into student_new from student where 班级=2

5. 子查询

    子查询就是查询中又嵌套的查询

案例1:查询student表中的最高分或最低分是哪个学生

select 姓名,成绩

from student

where 成绩=(select MAX(成绩) from student) or 成绩=(select MIN(成绩) from student)

案例2:查询每个季度的生产数量,百分比

T-SQL查询语句

select 季度,sum(生产数量) AS 每个季度的生产数量,

str((sum(生产数量)/(select sum(生产数量) from 生产表))*100)+'%' AS 百分比

from 生产表

group by 季度

order by 季度


使用T-SQL实现多表查询

    前面的查询都是单表的查询。如果一个查询需要对多个表进行操作,就称为连接查询,就是通过各个表之间共同列的关联性来查询数据。

1. 内连接(INNER JOIN)

    内连接(INNER JOIN)是最常用的一种连接方式,只显示两个表中数据的集合部分

T-SQL查询语句

案例:在表A和表B中使用内连接查询学生姓名、学校、职业

* 实现方式一:在where子句中指定连接条件,写法如下

select A.name 姓名A,A.school 学校A,B.name 姓名B,B.job 职业B 

from A,B

where A.name=B.name

* 实现方式二:在from子句中使用inner join …on子句来实现,写法如下

select A.name 姓名A,A.school 学校A,B.name 姓名B,B.job 职业B 

from A inner join B on A.name=B.name

2. 外连接

    外连接是对内连接的扩充,除了将两个表中数据重复部分连接起来,还可以要求显示左侧或右侧全部的数据

(1)左外连接(LEFT JOIN)

    左外连接的结果集包括左表的所有行

案例:在表A和表B中使用左外连接查询学生姓名、学校、职业

select A.name 姓名A,A.school 学校A,B.name 姓名B,B.job 职业B 

from A left join B on A.name=B.name

(2)右外连接(RIGHT JOIN)

    右外连接是左外连接的反向连接,其结果集包括右侧所有行

案例:在表A和表B中使用右外连接查询学生姓名、学校、职业

select A.name 姓名A,A.school 学校A,B.name 姓名B,B.job 职业B 

from A right join B on A.name=B.name

(3)全连接(FULL JOIN)

    全连接右成完整外连接,包括左表和右表中的所有行

案例:在表A和表B中使用完整外连接查询学生姓名、学校、职业

select A.name 姓名A,A.school 学校A,B.name 姓名B,B.job 职业B 

from A full join B on A.name=B.name

3. 合并两个结果集

T-SQL查询语句

案例:将两个表的结果合并到一个结果显示

SELECT 姓名,学号,班级,国籍

FROM 二班

UNION

select 姓+' '+名,学号,班级,国籍

from 一班

order by 班级 desc,学号 asc

4. 自连接

T-SQL查询语句

案例:查找每个员工的上司姓名

SELECT Y.员工姓名,S.员工姓名 AS 上司姓名

from 员工信息表 as Y inner join 员工信息表 as S

on Y.上司ID=S.员工ID

5. 交叉连接

    交叉连接就是表之间没有任何连接,左表与右表每一行一一组合,相当于两个表相乘

T-SQL查询语句

SELECT T.教师姓名,C.课程名

from 教员基本信息表 AS T cross join 课程表 AS C


名称栏目:T-SQL查询语句
分享URL:http://cqcxhl.cn/article/jheeeo.html

其他资讯

在线咨询
服务热线
服务热线:028-86922220
TOP