常见sql高级运用

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情
 
 -- 常见 sql 高级运用
  
   -- 本文主要讲述 sql server2005 在日常的运用
 
 -- 我们建立一张部门表进行测试
  
if exists ( select * from sysobjects where [name]= 'partment' )
begin
 drop table partment
end
go
 
create table partment
(
 pid int  identity ( 1, 1),
 pname varchar ( 30) not null,
 pperson int not null
)
go 
-- 建立约束
alter table partment
 add constraint primary key ( pid)
 
-- 添加数据
insert partment
   select ' 技术部 ' , 80
union all select ' 行政部 ' , 20
union all select ' 企管部 ' , 70
union all select ' 商管部 ' , 60
go
select * from partment
go 
-- 删除表中重复的行
 /* 分析:
     删除重复的行的过程中,主要在于找到数据表中的重复列,然后进行删除。
     对本列在于找到部门名称相同的数据 , 通过聚合函数 max group by having 可以方便的找出重复的行。
      select max(pid) as 部门编号 from partment group by pname having count(pname)>0
     这样就有方法解决了
*/
-- 解决方法

 delete  from partment 

      where pid not in ( select  min ( pid) from partment group by pname having count ( pname)> 0)

   go
 
/*
    ms sql 中我们知道 max min 相反可以得到最大和最小的记录这里看需求,另外 top 亦可以得到 - 个结果,
这样我们就可以演变出其他方法。不过在 sql 里面不提倡运用 not 这样会降低效率。所有我们在这里运用 exists 来查询
提高效率。
*/
 -- 解决方法
delete p from partment as p

   where exists( select pid from partment where pname = p. pname and pid > p. pid)

go
 
/* 在日常运用中会有客户要求报表不仅可以横看而且也可以竖看,这样我们就要将行和列转换,
由于表结构不能支持本例,这样我们用 alter 更改表结构 */
 
-- 增加表结构中的列
/*
   alter table [table_name]
             add culumn_name column_type
*/
alter table partment add  company varchar ( 30)
go
update partment set company = 'xxxx 公司 '
go

 -- 引申:更改数据表中的列: alter table partment alter column pperson varchar(30)

 
-- 行转换成列
-- 在这里我们用最适用的方法
  
 
declare @sql nvarchar ( 1000)
 select @sql = 'select company as 公司 '
 select @sql = @sql + ',sum( case when pname =''' + cast ( pname as varchar )+ ''' then pperson end) as ' +  pname from partment group by pname

 select  @sql = @sql + ' from partment group by company'

print @sql
exec @sql
 
 
select company as 公司 ,
sum ( case when pname = ' 技术部 ' then pperson end ) as 技术部 ,
sum ( case when pname = ' 企管部 ' then pperson end ) as 企管部 ,
sum ( case when pname = ' 行政部 ' then pperson end ) as 行政部
from partment
group by company



declare @test table (id int,name varchar(20),quarter int,profile int)
insert into @test values(1,'a',1,1000)
insert into @test values(1,'a',2,2000)
insert into @test values(1,'a',3,4000)
insert into @test values(1,'a',4,5000)
insert into @test values(2,'b',1,3000)
insert into @test values(2,'b',2,3500)
insert into @test values(2,'b',3,4200)
insert into @test values(2,'b',4,5500)
select * from @test

--行转列
select id,name,
[1] as "一季度",
[2] as "二季度",
[3] as "三季度",
[4] as "四季度",
[5] as "5"
from
@test
pivot
(
sum(profile)
for quarter in
([1],[2],[3],[4],[5])
)
as pvt


declare @test2 table (id int,name varchar(20), Q1 int, Q2 int, Q3 int, Q4 int)
insert into @test2 values(1,'a',1000,2000,4000,5000)
insert into @test2 values(2,'b',3000,3500,4200,5500)
select * from @test2

--列转行
select id,name,quarter,profile
from
@test2
unpivot
(
profile
for quarter in
([Q1],[Q2],[Q3],[Q4])
)
as unpvt




 
15、数据库事务管理与高级SQL运用 本文深入探讨了数据库事务管理与高级SQL运用,重点分析了Oracle事务特性及死锁处理机制,详细解析了SQL聚合函数及其优化方法,并介绍了HAVING子句的使用技巧。同时,文章回顾了SQL3(SQL:1999)的发展历程与核心特性,涵盖对象支持、完整性约束、触发器和事务保存点等内容,结合实际应用案例展示了SQL3如何提升数据库设计的灵活性与功能性。最后,通过执行计划分析和优化策略,帮助开发者提升SQL查询性能,增强数据库系统的可靠性与效率。 阅读详情

相关推荐

27、SQL高级主题全解析:从语句运用到事务控制

本博客深入解析了SQL高级主题,包括SQL INCLUDE语句的作用与使用方法、对象锁与行锁的机制、LOCK TABLE语句的显式表锁定技术,以及事务控制中的COMMIT和ROLLBACK操作。通过详细讲解不同隔离级别对数据一致性和并发性能的影响,并结合实际示例说明事务的完整控制流程,帮助开发者更好地理解如何在多用户环境下保障数据库操作的正确性与高效性。

css33的专栏 70

SQL使用技巧

'c'区分大小写进行检索。包含三个分析子句:分组子句(partition by), 排序子句(order by), 窗口子句(rows) 窗口就是分析函数分析时要处理的数据范围,就拿sum来说,它是sum窗口中的记录而不是整个分组中的记录,因此我们在想得到某个栏位的累计值时,我们需要把窗口指定到该分组中的第一行数据到当前行, 如果你指定该窗口从该分组中的第一行到最后一行,那么该组中的每一个sum值都会一样,即整个组的总和。keep对分组内的函数通过order by和max(),min()选取某个字段的值。

2301_78145658的博客 1716

PL/SQLSQL高级运用:批量操作与动态SQL

本章深入介绍了PL/SQLSQL结合使用的高级技术,包括使用游标获取结果集中的多行数据,以及如何利用隐式游标和REFCURSORs提高代码的灵活性。重点讲述了BULKCOLLECT和FORALL两个特性,它们能够显著提升数据操作的性能。此外,还探讨了动态SQL语句的使用,包括如何在代码中包含绑定变量以及如何通过EXECUTE IMMEDIATE执行SQL语句。本章还预示了下一章将要讨论的PL/SQL包,它们是创建模块化和可重用代码的重要工具。

weixin_42599558的博客 443

一篇文章教大家使用数据库SQL ,零基础入门教程(非常详细),从零基础入门到精通,看完这一篇就够了!!!

SQL语言有40多年的历史,从它被应用至今几乎无处不在。我们消费的每一笔支付记录,收集的每一条用户信息,发出去的每一条消息,都会使用数据库或与其相关的产品来存储,而操纵数据库的语言正是 SQLSQL 对于现在的互联网公司生产研发等岗位几乎是一个必备技能,如果不会 SQL 的话,可能什么都做不了。你可以把 SQL 当做是一种工具,利用它可以帮助你完成你的工作,创造价值。文章结尾有 SQL 小测验哦!看看你能得几分?⭐️ 点我跳转到 SQL 测验!SQL 是用于访问和处理数据库的标准的计算机语言。

logic1001的博客 5951

SQL常见用法总结(侧重查询)

LIMIT:LIMIT用来指定返回记录的个数,在SQL Server中语法是SELECT TOP,在MySQL是LIMIT,可以用offset。Delete用来删除表格中已经存在的记录,注意where条件,如果漏掉where会删除所有记录。右连接RIGHT (OUTER) JOIN:返回右表中的所有记录以及左表中匹配的记录。左连接LEFT (OUTER) JOIN:返回左表中的所有记录以及右表中匹配的记录。Min()返回选择列的最小值,max()返回选择列的最大值。inner join和join是相同的。

weixin_45440484的博客 4086

5、数据类型

学习目标: MySQL的数据类型 学习内容: MySQL支持多种类型,大致可以分为三类:数值、日期/时间和字符串(字符)类型。 数值类型 MySQL支持所有标准SQL数值数据类型。 这些类型包括严格数值数据类型(INTEGER、SMALLINT、DECIMAL和NUMERIC),以及近似数值数据类型(FLOAT、REAL和DOUBLE PRECISION)。 关键字INT是INTEGER的同义词,关键字DEC是DECIMAL的同义词。 BIT数据类型保存位字段值,并且支持MyISAM、MEMORY、Inno

琰潇秋的博客 887

SQL 查询全攻略:从基础语法到高级应用(超详细手册)

SQL(Structured Query Language,结构化查询语言)是操作关系型数据库的标准语言。无论是数据查询、插入、更新还是删除,都离不开 SQL 的身影。本文将从最基础的查询语法开始,逐步深入到复杂的多表关联和分组统计,帮助你系统掌握 SQL 查询技巧,轻松应对各类数据提取需求。语句是 SQL 中最常用的命令,用于从数据库表中提取数据。其基本语法结构为: 1.1 选择特定列 当你只需要表中的部分字段时,可以明确指定列名: 这种方式的优势在于:如果需要获取表中所有字段,可以使用通配符:

asad6的博客 1638

SQL高级运用

接上篇“SQL基本运用”:https://blog.csdn.net/weichi7549/article/details/98478335 下列例子中用到的数据库表如下: Websites表: mysql> SELECT * FROM Websites; +----+--------------+---------------------------+-------+-------...

渣渣 1183

sql sum 结果集不为零_SQL高级运用

这些知识常出现在面试题,但是实用价值很高。。其实也就是SQL高级篇罢了,多用在统计方面,将行数据合并成列数据。希望读者能举一反三,灵活运用。读取数据库中的重复记录 (group by & having)一个表中的Id有多条重复记录,所有重复的id读取出来。select id, COUNT(*) as count from tb GROUP BY id HAVING count&...

weixin_39892447的博客 492

两个sql交集_sql高级命令运用

依旧准备好三张有关联的表格:学生表t_student,班级表t_class,成绩表t_grade回顾:多表联查,select a.id,a.sname,b.cname,c.chinese,c.math,c.english from tstudent a a join t_class b on a.cid=b.id join t_grade c on c.sid = a.id where c.chi...

weixin_39542710的博客 311

高级数据库SQL语句运用

下面的 SQL 语句选取 name 以 “G”、“F” 或 “s” 开始的所有网站。在 Microsoft SQL Server 中还可以使用百分比作为参数。SELECT TOP 子句对于拥有数千条记录的大型表来说,是非常有用的。LIKE 操作符用于在 WHERE 子句中搜索列中的指定模式。在 SQL 中,通配符与 SQL LIKE 操作符一起使用。SELECT TOP 子句用于规定要返回的记录的数目。“%” 符号用于在模式的前后定义通配符(默认字母)SQL 通配符用于搜索表中的数据。

weixin_50891892的博客 754

MySQL高级运用_MYSQLSQL高级运用(帮助你高效率编程)

小编说:这些知识常出现在面试题,但是实用价值很高。。其实也就是SQL高级篇罢了,多用在统计方面,将行数据合并成列数据。希望读者能举一反三,灵活运用。1.一道SQL语句面试题,关于group by表内容:2005-05-09 胜2005-05-09 胜2005-05-09 负2005-05-09 负2005-05-10 胜2005-05-10 负2005-05-10 负如果要生成下列结果, 该如何...

weixin_42412910的博客 93

高级SQL运用

一:什么是数据库设计? 数据库设计就是将数据库中的数据实体以及这些数据实体之间的关系,进行规范和结构化的过程. 二:为什么要实施数据库设计? 1:良好的数据库设计可以有效的解决数据冗余的问题 2:效率高 3:便于进一步扩展 4:使得应用程序开发变得容易 三:设计数据库的步骤 第一步需求分析: 分析客户的业务和数据处理需求(收集信息,标识实体,标识每个实体需要存储的详细信息...

weixin_30791095的博客 69

【无标题】《从入门到精通:SQL 数据查询的编程思路与高级技巧运用

通过明确查询目标、设计合理逻辑、优化查询性能,结合灵活运用表连接、高级筛选、窗口函数等技巧,能够高效处理各种复杂的数据查询需求。在编写SQL查询语句之前,明确查询目标是关键的第一步。例如,在一个电商数据库中,若要查询"2023年1月1日之后,购买金额超过500元的活跃用户信息",就需要明确涉及用户表和订单表,查询字段包括用户名、订单金额、订单日期等,筛选条件为订单日期大于2023-01-01且订单金额大于500。对于复杂查询,可采用分步处理的方法,先编写子查询获取中间结果,再进行主查询。

zyf03230509的博客 545

mysql sql高级应用程序_MYSQLSQL高级运用(帮助你高效率编程)

小编说:这些知识常出现在面试题,但是实用价值很高。。其实也就是SQL高级篇罢了,多用在统计方面,将行数据合并成列数据。希望读者能举一反三,灵活运用。1.一道SQL语句面试题,关于group by表内容:2005-05-09 胜2005-05-09 胜2005-05-09 负2005-05-09 负2005-05-10 胜2005-05-10 负2005-05-10 负如果要生成下列结果, 该如何...

weixin_42417004的博客 74

sql相加运算_位运算在 PHP 实际项目当中的高级运用

我们首先来看一个系统中常见的需求:有一个广告表,我们要对广告做显示控制:手动上下线。只允许 VIP 查看。可能的表结构如下:CREATE TABLE `finger_ad` ( `ad_id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键', `ad_name` varchar(50) NOT NULL COMMENT '广告名称...

weixin_39804620的博客 138

SQL高级技巧与策略:深入LIKE语句、函数运用与异常处理

本博客深入探讨了SQL中的LIKE语句,包括其语法和用法,以及如何利用通配符进行模式匹配。同时,介绍了SQL中的基本函数如COUNT、AVG、ROUND、SUM、MAX和MIN的使用方法。此外,还详细讨论了SQL中的错误处理、异常管理以及性能优化技术,为中级开发者提供了深入理解和运用SQL高级技术的宝贵信息。...

weixin_34725745的博客 785

MYSQLSQL高级运用(帮助你高效率编程)

小编说:这些知识常出现在面试题,但是实用价值很高。。其实也就是SQL高级篇罢了,多用在统计方面,将行数据合并成列数据。希望读者能举一反三,灵活运用。  1.一道SQL语句面试题,关于group by表内容:2005-05-09 胜2005-05-09 胜2005-05-09 负2005-05-09 负2005-05-10 胜2005-05-10 负2005-05-10 负 如果要生成下列结果...

wangking:开源世界,人人都用上了正版啦。。。 136
下一篇: 微软ERP Microsoft Dynamics AX学习
edpdennis
博客等级 码龄19年 10粉丝 11原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值