開發筆記小本本

来源:https://www.cnblogs.com/yuxl01/archive/2022/05/29/16322618.html
-Advertisement-
Play Games

主要記錄工作中用到的一些開發語言以及Sql 模板,持續更新 1.Sql相關 1.常用Sql模板 1.1. 可重覆執行視圖 IF EXISTS ( SELECT *FROM sysobjects WHERE id = OBJECT_ID('v_Employee') AND type = 'V' ) D ...


主要記錄工作中用到的一些開發語言以及Sql 模板,持續更新

1.Sql相關
1.常用Sql模板

1.1. 可重覆執行視圖

IF EXISTS ( SELECT *FROM  sysobjects WHERE   id = OBJECT_ID('v_Employee') AND type = 'V' ) 
  DROP VIEW v_Employee
GO
CREATE VIEW v_Employee
AS
    SELECT  * FROM  v_Employee a
GO

1.2. 可重覆執行新增表

IF NOT EXISTS(SELECT  *FROM    sysobjects WHERE   id = OBJECT_ID('EmployeeInfo') AND type = 'U' ) 
  CREATE TABLE [EmployeeInfo](
          [ID] [uniqueidentifier] PRIMARY KEY CLUSTERED
      ) ;
GO

1.3.可重覆執行存儲過程

IF ( SELECT OBJECT_ID('proc_GetEmployeeInfo')) IS NOT NULL 
   DROP PROC proc_GetEmployeeInfo
go

1.4.可重覆執行修改欄位

IF NOT EXISTS ( SELECT  *FROM    syscolumns WHERE   id = OBJECT_ID('EmployeeInfo') AND name = 'Name' ) 
    ALTER TABLE [EmployeeInfo] ADD [Name] [varchar] (50) not null; 
GO
 ALTER TABLE Table1 ALTER COLUMN column1 VARCHAR(255)

1.5.資料庫命令

--查看表結構
desc EmployeeInfo
--查看創建表結構的sql語句
show create table EmployeeInfo;
--刪除表中的列數據
alter table EmployeeInfo drop Age;
1.行轉列查詢

下麵左邊是主表Emp_DataSet 右邊是擴展表Emp_DataSet_Ext

Id Code Name Id F_id Ext_column Value
1 1001 張三 1 1 Hobby 籃球
2 1002 李四 2 1 Age 23

例如有如下2個表Emp_DataSet_ExtEmp_DataSet的擴展表,存的是擴展欄位,如何將擴展表的值,組合到主表的列呢?所以就需要使用將行轉為列

SELECT *
FROM [dbo].[Emp_DataSet] a
     INNER JOIN
(
    SELECT id, 
           MAX(CASE
                   WHEN b.name = 'Hobby'
                   THEN b.value
                   ELSE NULL
               END) AS Hobby, 
           MAX(CASE
                   WHEN b.name = 'Age'
                   THEN b.value
                   ELSE NULL
               END) AS Age
    FROM Emp_DataSet_Ext b
    GROUP BY id
) b ON a.Id = b.F_id;

查詢結果如下

Id Code Name Hobby Age
1 1001 張三 籃球 23
2.自增主鍵插入數據

例如我們需要將測試庫Emp_DataSet表和Emp_DataSet關聯表的數據,同步到正式庫,但是Emp_DataSet表中的id是自增,我們可以使用Sql導出工具導出插入語句,然後使用下麵的Sql包裹插入語句就可以實現指定id插入

SET IDENTITY_INSERT [dbo].[Emp_DataSet] ON 
--inset....
SET IDENTITY_INSERT [dbo].[Emp_DataSet] ON 
3.迴圈數據

在資料庫中標準的T-SQL中迴圈是需要使用游標的,但是到現在為止已經不建議使用游標,觸發器之類的了,但是有時候利用Sql處理數據,需要用到一些迴圈,那該如何實現呢?例如我們需要清空資料庫中所有的表數據,思路如下

先查詢出當前庫的所有表,並且使用ROW_NUMBER()為每條數據給一個id,保證順序插入臨時表

然後使用while迴圈臨時表,利用t-sql拼接刪除表數據的語句

SELECT ROW_NUMBER() OVER(ORDER BY Name) AS rowNumber ,Name INTO #t1 FROM SysObjects Where XType='U' orDER BY Name ;

DECLARE @count INT;
DECLARE @index INT=1;
DECLARE @tbname NVARCHAR(40);
DECLARE @sql NVARCHAR(MAX)='';
SELECT @count =COUNT(1) FROM #t1
while @index<=82
BEGIN
SELECT @tbname = name FROM #t1 WHERE rowNumber =@index ;
IF(LEN(@tbname)>0)
BEGIN
PRINT @tbname
SET @sql+='DELETE FROM [dbo].['+@tbname+'];';
END
set @index+=1
END;
PRINT @sql
4.Excel數據處理

有時候人家提供一些Excel數據,需要導入資料庫中,我想你一定會說有直接sql操作Excel啊,但是如果有的數據不好操作呢?或者是Csv文件呢?說白了那種方法用不了了,下麵就分享一招利用公式生成Sql語句,雖然稍微有點笨笨的但是也是總結的一種經驗吧。

="INSERT INTO [dbo].[EmployeeInformation] VALUES('"&A1&"','"&B1&"',N'"&C1&"','"&D1&"','"&G1&"','"&H1&"','"&E1&"','"&I1&"','"&J1&"','"&K1&"','"&L1&"','"&M1&"','"&N1&"','"&O1&"','"&P1&"','"&TEXT(Q1,"yyyy-mm-dd")&"','"&R1&"','','','','','','','','','','"&Y1&"','"&TEXT(Z1,"yyyy-mm-dd")&"','"&TEXT(AA1,"yyyy-mm-dd")&"','"&AB1&"')"

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 項目簡介 novel 是一套基於時下最新 Java 技術棧 Spring Boot 3 + Vue 3 開發的前後端分離的學習型小說項目,配備詳細的項目教程手把手教你從零開始開發上線一個生產級別的 Java 系統,由小說門戶系統、作家後臺管理系統、平臺後臺管理系統等多個子系統構成。包括小說推薦、作品 ...
  • 當你需要為你的單元測試想出有用的測試數據時,你是否也經常沒有靈感?不要擔心,Java Faker來救你了!在這篇博客中,你將學習如何生成你的測試數據。在這篇博客中,你將學習如何生成你的測試數據。 1. 簡介 編寫測試數據是編寫測試時最難的任務之一。通常你會在使用數字的時候看到123,或者在需要名字的 ...
  • 閱讀導航 前言 案例一 案例二 案例三(本文介紹的方式) 如何使用? 控制項如何開發的? 總結 1. 前言 案例一 站長分享過 眾尋 大佬的一篇 WPF 簡易新手引導 一文,新手引導的效果挺不錯的,如下圖: 該文給出的代碼未使用 MVVM 的開發方式,提示框使用的用戶控制項、蒙版窗體樣式與後臺代碼未分離 ...
  • 1.什麼是ScheduleMaster ScheduleMaster是分散式任務調度系統。簡稱:集中任務調度系統,最簡單的理解ScheduleMaster,就是對不同的系統裡面的調度任務做統一管理的框架。 例如我們現在有多個系統,每個系統針對自己處理不同的業務場景。衍生出自己的調度任務,想象一下,如 ...
  • C#-WinForm窗體仿Android桌面(左右翻頁) 利用ApeForms擴展方法使控制項平滑運動,並以此實現一個仿Android桌面翻頁的效果。 ...
  • autofac需要下載Autofac+Autofac.Extensions.DependencyInjection 推薦創建一個類 我這裡TestServer是介面和實現類都在這個裡面,直接讀取進行批量註入 然後去Program進行替換 builder.Host.UseServiceProvider ...
  • 到nuget里下載log4net 這裡為幫組類 可以改為靜態方法 private static ILog logger; static LogImp()//這個是構造函數 { if (logger == null) { var repository = LogManager.CreateReposi ...
  • 事務 事務的四個ACID特性。 Atomicity 原子性 Consistency 一致性 Isolation 隔離性 Durability 持久性 原子性 原子性即這個事務的任務要麼全做了,要麼全部沒做,不能出現做一半這種情況。 一致性 一致性即資料庫中的數據必須滿足數據滿足資料庫的約束。 隔離性 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...