SQL 细节知识积累

妙啊,受益终生的20个写SQL的小细节,这次终于学到了 前言 SQL 语句的优化对于研发人员也是非常重要的,高效的 SQL语句经常会给使一个业务逻辑的接口响应速度变得非常快。每一个好习惯都是一笔财富,本文分SQL后悔药,SQL性能优化,SQL规范优雅三个方向,写SQL语句一些小细节的分享! 另外本人整理了20年面试题大全,包含spring、并发、数据库、Redis、分布式、dubbo、JVM、微服务等方面总结,下图是部分截图,需要的话点这里点这里,暗号优快云。 1. 写完SQL先explain查看执行计划(SQL性能优化) 日常开发写SQL的时候,尽量 阅读详情

Transact_sql:

  TRUNCATE TABLE test   //用于删除test表中的数据
  CREATE FUNCTION        //创建用户自定义函数
  ALTER FUNCTION         //语句修改
  DROP FUNCTION          //除去用户定义函数
  CREATE UNIQUE CLUSTERED INDEX client_id ON clients(client_id)

sql:
  (1).   group by ... with cube having sum(number)>=40
          下面两语句是为了保持前后兼容
         compute
         compute by
          如果使用COMPUTE BY,则必须也使用ORDER BY子句.
  (2).   JOIN ON 用法
           select book.name,tool.name from book JOIN tool ON (boo.id==tool.id)
         INNER JOIN ON (内联接:用于消除与另一个表中的任何不匹配的行)
           select book.name,tool.name from book JOIN tool ON (boo.id==tool.id)          
         LEFT OUTER JOIN ON (左外联接:)
         FULL OUTER JOIN (完整外部联接:不管另一个表是否有匹配的值,此运算符都包括两个表中所有行)
         CROSS JOIN (交叉连接:显示可能的组合)

  (3).   使用@@ERROR全局变量处理错误:
         SQL Server的所有错误都存储在系统表master.dbo.sysmessages中.用户定义的消息也可以存储在sysmessages中.如果需要,可以使用RAISERROR语句将这些用户定义的错误返回到一个应用程序.若出现一个错误,则返回一条错误信息.
    例子: use test
        drop table text1
        go
        create table text1(c1 int,c2 text)
        exec sp_tableoption 'text1','text in row','on'
        insert text1 values(1,'This is a text.')
        go
        select * from text1
        go
  (4). 检索ntext,text,image
       首先看例题: use test
          go
          create table text1(c1 int,c2 text)
          exec sp_tableoption 'text1','text in row','on'
          insert text1 values('1','This is a text.')
          go
          select * from text1
          go
    有几种方法:
      1.在SELECT语句中引用该列
      2.使用TEXTTPTR函数
      3.使用SUBTRING函数
      4.使用PATINDEX函数
    例题:
      a. exec sp_tableoption 'text1','text in row','off'
         declare @ptrval varbinary(16)
         select @ptrval=TEXTPTR(c2)
            from text1
         READTEXT text1.c2 @ptrval 0 7
      b. select substring(c2,1,7) as c2
         from text1
      c. use text
         go
         select patindex('%a%',c2) as 起始位置
            from text1
         go
 (5).修改ntext,text或image值
     可以使用下面的几种方式来修改:
        1. 使用数据库API函数;
        2. 使用WRITETEXT语句重写该列的整个数据值;
        3. 使用UPDATETEXT语句更新ntext,text或image列的特定数据块.      
   example:
      1. use test
         go
         declare @ptrval varbinary(16)
         exec sp_tableoption 'text1','text in row','off'
         select @ptrval=textptr(c2) from text1
         writetext text1.c2 @ptrval 'This is a modified text.'
         go
         select * from text1
         go
     2.  use text
         go
         declare @ptrval varbinary(16)
         select @ptrval=textptr(c2)
              from text1
         updatetext text1.c2 @ptrval NULL 0 'this is an inserted text.'
         go
         select * from text1
         go
(6).显示事务:需要显示的定义事务的启动和结束.它是通过BEGIN TRANSACTION,COMMIT TRANSACTION,COMMIT WORK,ROLLBACK TRANSACTION,ROLLBACK WORK 等Transact-SQL语句来完成的.
      1.启动事务使用BEGIN TRANSACTION语句.如果遇到错误,以后的语句能自动回滚.
      2.结束事务使用COMMIT TRANSACTION语句.该事务中的所有修改都将永久有效.事务占用的资源被释放.
      3.回滚事务使用ROLLBACK TRANSACTION清除自事务的起点或到某个保存点所有数据修改.ROLLBACK不释放由事务控制的资源.   
      4.保存点使用SAVE TRANSACTION语句.如果有条件地取消事务的一部分,事务可以返回的位置.
   example:
       use bookdb
       go
       begin tran MyTran  --启动事务
       insert into book values(9,'Windows 2000 Professional 看图速成',1,35,'2')
       save tran MySave  --保存点
       delete book where book_id=9  --删除记录
       rollback tran MySave  --回滚事务
       commit tran
       go
       select * from book   
    5. 标记事务用WITH MARK选项使事务名置于事务日志中.将数据库还原到早期状态时,可使用标记事务替代日期和时间.
(7).自动提交事务
(8).自定义锁
    自定义锁超时:
     set lock_timeout 1800
     go
     declare @timeout int
     select @timeout=@@lock_timeout
     print @timeout
     go
    自定义隔离级别:
     use bookdb
     go
     set transaction isolation level serializable
     go
     begin transaction
     select *from book
     go
     dbcc useroptions--(显示当隔离级别) 
     go
    锁定提示:
      use bookdb
      go
      set transaction isolation level serializable
      go
      begin transaction
      select book_name from book with (nolock)
      exec sp_lock --(显示锁定)
      go
     返回数据库被锁定对象
      select object_name(725577623)
      go  
(9)游标
   SQL Server支持四种API服务器游标:
      * 静态游标
      * 动态游标
      * 只进游标
      * 键集驱动游标
    ROWCOUNT返回上次操作影响的行数.
        use bookdb
        go
        set nocount on
        update book set book_name='LINUX教程'
           where book_id=20
        if @@ROWCOUNT=0
            print '没有行被更新!'
        go
     游标示例:
        --声明游标
        declare book_cursor cursor
            for select *from book
        open book_cursor
        --提取一行数据
        fetch next from book_cursor
        close book_cursor
        deallocate book_cursor  
(10)视图
     use bookdb
     go
     create view dbo.book_total
     as
     select abo.book.book_name as 书名,
        abo.book.price as 价格,
        abo.orderform.book_number as 数量,
        abo.book.price*abo.orderform.book_number
           as 总额
      from abo.orderform inner join dbo.book on dbo.orderform.book_id=abo.book.book_id 
      go
    通过视图修改数据 
 use test
        go
 /*如果表Table1存在,则删除*/
 if exists(select table_name from information_schema.tables
            where table_name='Table1')                 
  drop table Table1
 go
 /*如果视图View1存在,则删除*/
 if exists(select table_name from information_schema.views
       where table_name='View1')
         drop view View1
 go
 /*创建表Table1*/
 create table Table1(column_1 int,column_2 varchar(30))
  go
 /*创建视图View1*/
 create view View1 as select column_2,column_1
 from Table1
 go
 /*通过视图View1插入一笔记录*/
 insert into View1 values('Row1',1)
 /*检查结果*/
 select * from Table1 

对SQL基础知识第2版、SQL高级知识第2版、SQL145题第2版-by李岳的书评 数学《SQL基础知识》的第一个特点是,系统性地带你走一遍,一条SQL(查询)语句所有涉及的关键字,一个一个的过,全面而细致。这样就不需要你在SQL学习的入门阶段,碰到一个不懂的,就到处去搜,不系统。因为假如这样做,你也不知道,你是否基本搞明白了——关于这个不懂的问题的所有该掌握的知识,以及,它和其他知识的关系是什么。另外要说,第一章中,一条SELECT查询语句的执行顺序。 阅读详情

相关推荐

江科大笔记—OLED调试工具

OLED介绍及调试工具

m0_62005595的博客 659

第五十四章 SQL函数 EXP

文章目录第五十四章 SQL函数 EXP大纲参数描述示例 第五十四章 SQL函数 EXP 返回数字的指数(自然对数的倒数)的标量数值函数。 大纲 {fn EXP(expression)} 参数 expression - 对数指数,数值表达式。 EXP返回NUMERIC或DOUBLE数据类型。如果表达式的数据类型为DOUBLE,则EXP返回DOUBLE;否则返回NUMERIC。 描述 Exp是指数函数e n,其中e是常数2.718281828。因此,要返回e的值,可以指定{fn exp(1)}。Exp是自

yaoxin521123的博客 2791

VS Code + ESP-IDF:离线环境配置与示例工程编译全指南

本文详细介绍了在VS Code中离线配置ESP-IDF开发环境的完整流程。针对国内开发者常遇到的网络问题,指南提供了从Python环境准备、获取离线安装包、运行安装器到VS Code插件配置与示例工程编译的全套解决方案,确保环境搭建稳定、可控且高效。

weixin_28842367的博客 404

SqlServer函数大全十九:EXP(指数)函数

在 SQL Server 中,EXP函数用于计算自然数 e 的指定次幂。e 是一个数学常数,其值约为 2.71828。EXP函数接受一个数值作为参数,并返回 e 的该数值次幂。

yixiaobing的博客 1679

纯相位全息图优化算法综述

除此之外,还有许多用于减少斑点噪声的非迭代方法,例如:采用下采样掩膜的采样纯相位全息图(Sampled-Phase-only Hologram)方法、模式化相位掩膜(Patterned Phase-Only Hologram)方法、双相位方法(Double-Phase Method),以及使用非随机相位掩膜的方法(Random Phase-Free Method)等。迭代算法通常由一个对目标全息图的近似出发,经过一系列的重复操作不断优化这个近似全息图,直到该近似所得到的重建图像满足一定的误差要求;

ZhongKeWeiXing的博客 1428

双RTX 3090实战:如何用vLLM低成本部署Qwen2.5-14B大模型(附避坑清单)

本文详细介绍了如何利用双RTX 3090显卡低成本部署Qwen2.5-14B大模型的完整指南,包括硬件选型、环境配置、vLLM优化及生产环境调优。重点解析了BF16混合精度在显存占用与推理质量上的平衡策略,并提供了实用的避坑清单和性能调优技巧,帮助开发者高效实现大模型部署。

pz890123456的博客 700

sql注入分类及报错注入EXP

sql注入分类原理,报错注入原理,EXP编写

mingsec的博客 1025

嵌入式开发必备:aarch64-linux-gnu-gcc交叉编译工具链保姆级安装指南(含常见错误解决)

本文详细介绍了aarch64-linux-gnu-gcc交叉编译工具链的安装与配置方法,涵盖从系统软件源安装到Linaro二进制包部署的全流程。针对嵌入式开发中常见的依赖错误、版本冲突等问题提供实用解决方案,并分享性能优化技巧与项目集成经验,帮助开发者高效完成ARM64设备的跨平台开发。

yoga7的博客 1031

【知识积累】sql注入exp编写思路

测SQL注入,通过注入获取账号和密码,熟悉 sql注入的原理方法;需要用到的模块:request模块和re正则模块 ,缺点:只适用于get请求的注入

告白的博客 918

从零开始学习PX4源码23(飞行模式管理)

本文摘要主要介绍了PX4飞控系统中飞行模式管理模块的代码实现流程。文章从整体架构入手,分析了飞行模式管理模块的启动过程、类继承关系以及核心运行机制。重点阐述了模块从rc.mc_apps启动脚本到FlightModeManager::main()的调用链路,包括任务创建、工作队列初始化和主循环执行流程。核心部分解释了Run()函数如何通过订阅传感器数据、更新参数、处理命令以及生成轨迹设定点来实现飞行模式切换和任务管理功能。文章为理解PX4飞行控制系统的模式切换机制提供了代码层面的详细分析。

陌城烟雨 499

论文必备 - YOLOv11热力图可视化,支持指定模型,指定显示层,设置置信度,以及10种可视化实现方式

本文带来的是YOLOv11热力图可视化功能,支持,以及。我们经常看到一些论文里绘制了不同的热力图,一方面能够直观的感受其模型的有效性,另一方面也丰富了论文内容。特别是在使用了注意力模块的网络中,热力图就可以验证注意力机制是否真正聚焦到了预期的重要特征上,以便对模型的有效性和合理性进行评估。例如这篇文章中展示的,就很能够表达作者改进后的模型相比之前模型的优越性。

Limiiiing的博客 5505

SQL必知必会知识点汇总

又一个SQL学习阶段结束啦!

m0_62279905的博客 2248

1、工作流介绍

工作流起源于办公自动化,是对软件中业务流程的抽象。通过工作流将各个任务有序组织起来形成一个完整的业务闭环。比如:请假审批流程,网上购物流程,银行贷款流程;!

leyoliu的博客 5109

SQL知识积累

1.如果存在更新数据库,如果不存在就插入数据库(merg into)语法

快乐成长 596

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

sql知识积累

找出卡号重复的select card from krs group by card having count(*)>1查询重复语句:select name from krs group by name having count(name) >2一些不错的sql语句,1、说明:复制表(只复制结构,源表名:a 新表名:b) (Access可用)法一:select * ...

aui4110的博客 173

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

SQL语句中遇到的小细节

SQL语句中遇到的小细节 在写SQL语句的时候遇到了一些小问题,因为一点点小细节,害我折腾了好久,在此记录一下! 刚开始提示我的SQL语句有问题 Error querying database. Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL serve

在路上的博客 305

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

sql语句的小知识点积累

最近在复习sql语句,把一般会遇到的小知识点记一下 1.order by 排序 要放在select语句的最后 比如要求找到to_date=‘9999-01-01’ 并且salary 倒序的员工薪水信息,并且去重,去重用distinct 这个关键字 select…from…where…order by… select distinct salary from salaries where to_date='9999-01-01' order by salary desc 这个语句如果order by放在w

shenshenruoxi的博客 632

【java学习积累】SQL语句积累

最近笔者在学习数据库的相关知识,但是最基础的SQL语句还是要好好总结一下的。本文主要是记录SQL语句的相关知识。 一、SQL语句分类 1、DDL (数据定义语句)–数据定义语言 - Data Definition Language –用来定义数据库的对象,如数据表、视图、索引等 2、DML (数据操纵语句)–数据处理语言 - Data Manipulation Language –...

xiangzaixiansheng的博客 387

SQL server积累

这是对sqlserver的一些积累待补充。

weixin_42206931的博客 2580

SQL的积累

SQL的积累学习(不常用的经常会忘记,所以以后用到的就会记在下面): --新增字段alter table t_Student add Test varchar(200)--删除字段alter table t_Student drop COLUMN Test--修改字段类型alter TABLE t_Student alter column Test VARCHAR(100)--修改字段名称ex...

weixin_30949361的博客 81

SQL常用知识点积累

对于SQL,主要是SQL SERVER的使用,常用知识点如下: 1. 根据数据库脚本生成数据库。一般根据数据库脚本生成数据库时,会非常慢,因为需要较数据库架构即数据及其他数据库相关的信息一起复制到目标数据库。但如果仅选择数据库脚本的生成相关的表的SQL语句,则较快。因此,根据脚本还原数据库时,一定记得操作的目的,从而加快进展。 2.

Andrewniu的博客 636
上一篇: WebRequest实现读取天气预报信息
下一篇: SQL中 case when then end的用法
add8849
博客等级 码龄22年 13粉丝 94原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值