學習sqlserve的一些筆記

来源:http://www.cnblogs.com/tianyaguoke/archive/2016/10/11/5950691.html
-Advertisement-
Play Games

創建表: 表數據的增刪改查: 修改表結構: 去除重覆記錄: 排序: 查詢數據前多少條: 模糊查詢: 通配符:_ 表示任意的單個字元 % 匹配任意多個字元 [] 表示範圍內的單個字元 [^] 不在指定範圍內的單個字元 自定義轉義符:escape 空值判斷: 類型轉換函數:cast(表達式 as 數據類 ...


創建表:

1 create table 表名
2 {
3   //定義列名
4   id int identify(1,1) primary key,//自動編號:從1開始每次增長1,約束:主鍵約束
5   name nvarchar(50) not null      //非空約束
6 }

 

表數據的增刪改查:
          

1 insert   into   表名 values()
2 delete   from   表名
3 update   表名   set 
4 select   *    from   表名
5 註:當刪除表中所有數據還可使用truncate table 表名,它不能加where條件但是比delect所有表數據效率高,因為它通過釋放數據頁來刪除數據,在事務日誌中只記錄數據頁的釋放;而且刪除數據後計數器重置為定義的種子,如果沒有定義種子,則使用預設值1。

 

修改表結構:

 1 alter table 表名
 2           add 列名 數據類型                 //增加一列
 3           drop column 列名                //刪除一列
 4           alter column 表名 數據類型 not null       //修改一列,並添加非空約束
 5           add constraint PK_表名_列名 primary key(列名)      //添加主鍵約束
 6           add constraint UQ_表名_列名 unique(列名)         //添加唯一約束
 7           add constraint DF_表名_列名 default(值) for 列名   //添加預設約束
 8           add constraint CK_表名_列名 check(列的條件表達式)   //添加檢查約束
 9           add constraint FK_表名_列名 foreign key(外鍵表的列名) references 主鍵表名(主鍵表的列名)      //添加外鍵約束
10           drop constraint 約束名1,約束名2............       //刪除約束

 

去除重覆記錄:

1 select distinct .... from 表名 ......     //對查詢的結果集去重(針對每一列都相同的情況)

 

排序:

1 select * from 表名 order by 列名 desc      //按照列名降序排序,預設為asc升序排序
2 註:order by語句必須放在整個sql語句的後面。

 

  

查詢數據前多少條:

1 select top 
2        值                              //如:5,則表示查詢該表前5條
3        (表達式)                           //如:(2*2),則表示查詢該表的前4條
4        值 percent                        //如:30 percent,則表示查詢該表的前30%
5              * from 表名

 

模糊查詢:
    通配符:_ 表示任意的單個字元 

1 例如:select * from 表名 where 列名 like '張_'            //表示查詢出 張字開頭,單個任意字元結尾 的數據

 


        % 匹配任意多個字元 

1 例如:select * from 表名 where 列名 like '%張%'           //表示查詢出 包含張字 的數據

 


        [] 表示範圍內的單個字元 

1 例如:select * from 表名 where 列名 like '張[0-9]'     //表示查詢出 張開頭,0-9中任意數字結尾 的數據

 


        [^] 不在指定範圍內的單個字元 

1 例如:select * from 表名 where 列名 like '[^0-9]'   //表示查詢出 不是0-9中任意數字 的單個字元

 

自定義轉義符:escape

1 例如:select * from 表名 where 列名 like '%/[%' escape '/'     //定義/為轉義符,此語句表示查詢出所有包含[的數據

 

空值判斷:

1 select * from 表名 where 列名 
2                  is null                  //判斷為空
3                  is not null             //判斷部位空

 

類型轉換函數:cast(表達式 as 數據類型)、convert(數據類型,表達式[,格式])
       註:[]表示參數可寫可不寫。

聯合結果集:union,union all
  

1 例如:select 列名1,列名2 from 表1
2                    union all    
3                          select 列名3,列名4 from 表2
4 註意:聯合的結果集列名預設使用第一個結果集中的列名,每個結果集必須有相同的列數,每一列的數據類型必須相容。
5 區別:union會去除重覆列,所以效率較低。

 

T-SQL:
    聲明變數:

1 declare @name nvarchar(50),@age int = 18

 


    變數賦值:

1 set @name = '張三'

 


    迴圈:

1 while 條件    
2       begin
3         ..........    
4       end

 


    條件判斷:

1 if 條件
2 begin
3   ....
4 end
5 else
6 begin
7   ...
8 end

 

事務:
    特性ACID:
    原子性(Atomicity):事務是一個完整的操作,事務的各個步驟是不可分割的,要麼全部執行,要麼全都不執行。
    一致性(Consistency):當事務完成時,數據必須處於一致狀態。
    隔離性(Isolation):對數據進行修改的所有併發事務是彼此隔離的。
    持久性(Durability):事務完成後,它對資料庫的修改被永久保持。

  

 1 例子:
 2    begin transaction                   //開始一個事務
 3    declare @sum int = 0                //聲明一個變數,記錄sql語句出錯次數
 4      sql語句1    
 5      set @sum = @sum + @@error             //@@error:如果sql語句沒有錯返回0
 6      sql語句2    
 7      set @sum = @sum + @@error
 8      if @sum <> 0                     //如果sum不等於0,表示有sql語句出錯
 9      begin
10        rollback                    //回滾
11      end
12      else
13      begin
14        commit                      //提交該事務
15      end 

 

 

存儲過程:
      執行存儲過程:exec 存儲過程名稱
      創建存儲過程:

1 create proc 存儲過程名稱
2 as
3 begin
4   .......
5 end

 


      創建帶參數的存儲過程及執行:

 1 create proc usp_test                            //創建代參的存儲過程
 2 @name nvarchar(50),                           //定義參數
 3 @age int output                                //定義輸出參數
 4 as
 5 begin
 6   set @age = select 表.age fromwhere 表.name = @name    //參數的使用
 7 end
 8 
 9 declare @num int                            //聲明一個變數,傳遞給輸出參數
10 exec usp_test @name = '張三',@age = @num output           //執行帶參的存儲過程
11 print @num                                //輸出變數,即輸出參數的值

 


  例子(存儲過程實現分頁):

 1 create  proc  usp_getPage
 2 @pageSize  int = 6,                          //每頁的條數
 3 @pageIndex  int = 1,                         //當前要查看第幾頁
 4 @pageCount  int  output,                     //共多少頁,輸出參數
 5 @recordCount  int  output                    //共多少條記錄,輸出參數
 6 as
 7 begin
 8   select  *  
 9   from  (select  * ,rownumber = row_number()  over(order  by  id  asc)  from  表名)  as  temp  10     where  temp.rownumber  between  (@pageIndex - 1)*@pageSize + 1  and  @pageSize*pageIndex   11     set  @recordCount = (select  count(*)  from  表名)     //計算表中記錄
12     set  @pageCount = ceiling(@recordCount*1.0/pageSize)  //計算頁數,ceiling()向上取整13 end
14  
15 declare @rc int,@pc int //用於傳遞給輸出參數 16 exec usp_getPage @pageSize = 6, @pageIndex = 1, @recordCount = @rc output, @pageCount = @pc output //執行帶參數的存儲過程 17 print @rc //列印總記錄條數 18 print @pc //列印總頁數

 

 

創建觸發器:

1 create trigger 觸發器名稱 on 表名
2 after insert,delete,update        //當進行增加、刪除、修改時觸發
3 as
4 begin
5   ........
6 end

 


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

-Advertisement-
Play Games
更多相關文章
  • Mysql安裝的時候可以有msi安裝和zip解壓縮兩種安裝方式。zip壓縮包解壓到目錄,要使用它還需對它進行一定的配置。下麵對Mysql壓縮包版的安裝方法進行詳細的描述,要是此文有不正確的認識,希望大家指正,非常感謝。 一、下載mysql壓縮包文件。 下載地址:http://dev.mysql.co ...
  • 跟蹤標記:1204/1222 功能及用途: 捕獲SQL Server死鎖信息,並自動存放到錯誤日誌(ERRORLOG)中。 舉例: 跟蹤標記1204 在錯誤日誌中記錄的死鎖信息 跟蹤標記1222 在錯誤日誌中記錄的死鎖信息 小結: (1) 不需要加跟蹤標記3605,跟蹤標記1204,1222捕獲的死 ...
  • TO_CHAR 是把日期或數字轉換為字元串 TO_DATE 是把字元串轉換為資料庫中得日期類型轉換函數 TO_NUMBER 將字元轉化為數字TO_CHAR 使用TO_CHAR函數處理數字 TO_CHAR(number, '格式') TO_CHAR(salary,’$99,999.99’); 使用TO ...
  • 一、修改欄位預設值 alter table 表名 drop constraint 約束名字 說明:刪除表的欄位的原有約束 alter table 表名 add constraint 約束名字 DEFAULT 預設值 for 欄位名稱 說明:添加一個表的欄位的約束並指定預設值 二、修改欄位名: alt ...
  • 多表連接查詢 內連接(inner join) 目的:將多張表中能通過鏈接謂詞或者鏈接運算符連接起來的數據查詢出來。 等值連接(join...on(...=...)) --選出雇員的名字和雇員所在的部門名字 --(1)必須明確的指出重覆欄位屬於哪個表 select ename,dname dept.d... ...
  • jdbc day02 DML語法 比起插敘語句,沒有ResultSet結果集,stmt.executeUpdate(sql)返回的是改變幾行的int類型. SQL註入 sql註入就是 用戶輸入的值,當做了sql語言的一部分, 然後攻破密碼等重要信息. 為了防止sql註入,就要將含有單引號的 採用預編 ...
  • SQLServer事務的隔離級別 資料庫是要被廣大客戶所共用訪問的,那麼在資料庫操作過程中很可能出現以下幾種不確定情況。 更新丟失(Lost update) 兩個事務都同時更新一行數據,但是第二個事務卻中途失敗退出,導致對數據的兩個修改都失效了。這是因為系統沒有執行任何的鎖操作,因此併發事務並沒有被 ...
  • DECLARE @hdoc int DECLARE @doc xml SET @doc = '<CityValueSet> <CityItem> <CityId>201</CityId><CityName>北京</CityName><EngName>beijing</EngName><Level>1 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...