千家信息网

T-SQL高级查询语句

发表于:2025-01-19 作者:千家信息网编辑
千家信息网最后更新 2025年01月19日,系统函数:字符串函数:select '运维工程师' + 姓名+ '的基本工资是:' +CAST (基本工资 as varchar(10))+'元' from A1where 职务='运维工程师'#显示
千家信息网最后更新 2025年01月19日T-SQL高级查询语句

系统函数:

字符串函数:

select '运维工程师' + 姓名+ '的基本工资是:' +CAST (基本工资 as varchar(10))+'元' from A1where 职务='运维工程师'#显示A1表中所有运维工程师的姓名和基本工资,要求的显示格式是运维工程师 某某 的基本工资是 9000.00元

日期函数:

select DATEADD(dd,10,GETDATE())#显示距离当前10天之后的日期和时间select 姓名,DATEDIFF (YY,出生日期,GETDATE ()) AS 年龄 from A1#显示A1表中所有人的姓名和年龄select 姓名,DATENAME(YY,出生日期) AS 出生年份from A1where 出生日期 between '1990-1-1' and '1999-12-31'#显示A1表中所有90后员工的姓名和出生年份

聚合函数:

select SUM(基本工资) AS 总工资 from A1 #查询A1表中所有员工基本工资的总和select AVG(基本工资) AS 平均工资 from A1 #查询A1表中所有员工的平均基本工资select MAX (基本工资) AS 最高工资,MIN (基本工资) AS 最低工资 from A1 #查询A1表中最高和最低的基本工资select COUNT (*) AS 总行数 from A1#查询A1表中全部行数select COUNT (出生日期) AS '90后人数'from A1where 出生日期 >='1990-1-1'#查询A1表中90后的员工人数

分组查询:

select 职务,AVG (基本工资) AS 职务平均工资 from A1 group by 职务 #查询A1表中每个职务的平均工资select 职务,AVG (基本工资) AS 职务平均工资 from A1 group by 职务having AVG (基本工资) <10000 #查询A1表中平均工资小于10000的职务select 职务,AVG (基本工资) AS 职务平均工资 from A1 where 姓名 !='小张'group by 职务having AVG (基本工资)<10000 #查询A1表中平均工资小于10000的职务,但是不包括小张

数学函数:

select CEILING (AVG (基本工资)) AS 平均工资 from A1 #查询A1表中所有人的平均工资,用 CEILING()取整select 姓名,生日,DATEDIFF(yy,生日,getdate())  年龄, DATEDIFF(dd,getdate(),DATEADD(yy,30,生日)) as  距离30岁天数 from A1where DATEDIFF(yy,生日,GETDATE())<=30order by 生日#查询未满30岁的员工生日和年龄,并且计算出距离30岁的天数,以表格的形式显示select '员工 '+姓名+' 的生日是'+CONVERT(varchar(10),出生日期,111)+',现在的年龄是 '+CAST(DATEDIFF (YY,出生日期,GETDATE ())  AS varchar(10))+'岁'+',距离30岁生日还有 '+CAST(DATEDIFF(DD,GETDATE (),DATEADD(yy,30,出生日期)) AS varchar(10))+'天'from A1 where DATEDIFF (YY,出生日期,GETDATE ())<=30order by 出生日期#查询未满30岁的员工生日和年龄,并且计算出距离30岁的天数,将结果使用字符串拼接在一起 
select   名称, 种类,出厂日期          from  A1        where  出厂日期>'2017-4-1'#查询A1表中出厂日期晚于2017年4月的水果信息select  种类,   SUM(成本)  as   总成本   from  A1group   by   种类#分组查询A1表中所有水果、蔬菜、坚果的总成本select  名称+'的出厂日期是:'+CONVERT(varchar(10),出厂日期,111)    from  A1    where  种类='水果'#查询A1表中所有水果的名称和出厂日期,以特定格式拼接字符串,如"西瓜的出厂日期是:2017/05/06"select   种类,        AVG(成本)  as  平局成本   from   A1  group  by   种类   having   种类='蔬菜'#查询A1表中所有蔬菜的平均成本

多表查询
内联接:只返回两个数据几个之间匹配关系的行,关键字是"inner join"
内联接实现的两种方法

select A.姓名,A.学校,B.职业from A,Bwhere A.姓名=B.姓名#在表A和表B中使用内连接查询学生姓名、学校和职业select A.姓名,A.学校,B.职业from A inner join Bon A.姓名=B.姓名#在表A和表B中使用内联接查询学生姓名、学校和职业

第二种方法可以加"where"子句
外联接:
左外联接:
左侧表位于主表,关键字是"left join"
实现方法

select A.姓名,A.学校,B.职业from A left  join Bon A.姓名=B.姓名

右外联接:右侧表位于主表,关键字是"right join"
实现方法

select A.姓名,A.学校,B.职业from A right join Bon A.姓名=B.姓名

完整外联接:左右表都为主表,关键字"full join"

select A.姓名,A.学校,B.职业from A full  join Bon A.姓名=B.姓名

交叉联接:无条件联接,就是左表中的每行和右表对应,相当于两个表相乘,关键字是"cross join"

select A.姓名,A.学校,B.职业from A  cross  join Bon A.姓名=B.姓名
0