[SQL] SQL 基礎知識梳理(四) - 數據更新

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

SQL 基礎知識梳理(四) - 數據更新 【博主】反骨仔 【原文】http://www.cnblogs.com/liqingwen/p/5929786.html 序 這是《SQL 基礎知識梳理(三) - 聚合和排序》的下篇。 目錄 插入數據 刪除數據 更新數據 事務 一、插入數據 1.INSERT ...


SQL 基礎知識梳理(四) - 數據更新

【博主】反骨仔    【原文】http://www.cnblogs.com/liqingwen/p/5929786.html

  

  這是《SQL 基礎知識梳理(三) - 聚合和排序》的下篇。

 

目錄

 

一、插入數據

  1.INSERT 語句的基本語法

--語法:
--INSERT INTO <表名>(列1, 列2, ...) VALUES (值1, 值2, ...)
--示例
INSERT
INTO dbo.Shohin ( shohin_id , shohin_mei , shohin_bunrui , hanbai_tanka , shiire_tanka , torokubi ) VALUES ( '0011' , -- shohin_id - char(4) 'T 恤衫' , -- shohin_mei - varchar(100) '衣服' , -- shohin_bunrui - varchar(32) 1000 , -- hanbai_tanka - int 500 , -- shiire_tanka - int GETDATE() -- torokubi - date );

 

    (1)列名和值用逗號隔開,分別放在括弧里,這種形式稱為清單

        ( shohin_id ,        
          shohin_mei ,
          shohin_bunrui ,
          hanbai_tanka ,
          shiire_tanka ,
          torokubi
        )        
        --列清單

        ( '0011' , -- shohin_id - char(4)
          'T 恤衫' , -- shohin_mei - varchar(100)
          '衣服' , -- shohin_bunrui - varchar(32)
          1000 , -- hanbai_tanka - int
          500 , -- shiire_tanka - int
          GETDATE()  -- torokubi - date
        )        
        --值清單    
INSERT INTO dbo.Shohin
        ( shohin_id ,
          shohin_mei ,
          shohin_bunrui ,
          hanbai_tanka ,
          shiire_tanka ,
          torokubi
        )
VALUES  ( '0012' , -- shohin_id - char(4)
          'T 恤衫' , -- shohin_mei - varchar(100)
          '衣服' , -- shohin_bunrui - varchar(32)
          1000 , -- hanbai_tanka - int
          500 , -- shiire_tanka - int
          GETDATE()  -- torokubi - date
        ),
        ( '0013' , -- shohin_id - char(4)
          'T 恤衫' , -- shohin_mei - varchar(100)
          '衣服' , -- shohin_bunrui - varchar(32)
          1000 , -- hanbai_tanka - int
          500 , -- shiire_tanka - int
          GETDATE()  -- torokubi - date
        );
一次性多行 INSERT

  

  2.省略列清單

INSERT INTO dbo.Shohin
VALUES  ( '0014' , -- shohin_id - char(4)
          'T 恤衫' , -- shohin_mei - varchar(100)
          '衣服' , -- shohin_bunrui - varchar(32)
          1000 , -- hanbai_tanka - int
          500 , -- shiire_tanka - int
          GETDATE()  -- torokubi - date
        );

  

  3.插入 NULL 值

INSERT INTO dbo.Shohin
VALUES  ( '0015' , -- shohin_id - char(4)
          'T 恤衫' , -- shohin_mei - varchar(100)
          '衣服' , -- shohin_bunrui - varchar(32)
          1000 , -- hanbai_tanka - int
          NULL , -- shiire_tanka - int
          GETDATE()  -- torokubi - date
        );

  【備註】插入 NULL 值的列不能設置為 NOT NULL 約束。

  

  4.插入預設值

--示例:創建表時設置預設值
CREATE TABLE ShohinIns
(
    id CHAR(4) NOT NULL,
    num INT DEFAULT 0    --DEFAULT 預設約束
)
--示例:INSERT 時顯示插入預設值
INSERT INTO dbo.ShohinIns
        ( id, num )
VALUES  ( '001', -- id - char(4)
          DEFAULT  -- num - int
          )
--示例:INSERT 隱式插入預設值
INSERT INTO dbo.ShohinIns( id )
VALUES  ('002')

  【備註】建議使用顯示的方式插入值。如果插入的時候隱式省略了列名,並且該列沒有指定預設值的時候,該列的值會被設定為 NULL(如果省略的列設置了 NOT NULL 約束的話,執行會報錯)。

  【總結】省略 INSERT 語句的列名,就會自動設定該列的預設值(沒有預設值時會設定為 NULL)。

  

  5.從其它表複製數據

--語法
INSERT ... 
SELECT ...
--示例
INSERT
dbo.ShohinIns ( id, num ) SELECT shohin_id, shiire_tanka FROM dbo.Shohin
--示例
INSERT INTO dbo.ShohinIns
        ( id, num )
SELECT id=1, num =2;
--示例
INSERT INTO dbo.ShohinIns
        ( id, num )
SELECT 1, 2;

   【備註】INSERT 語句中的 SELECT 語句中,可以使用 WHERE 子句或者 GROUP BY 子句等任何 SQL 語法。(但使用 ORDER BY 子句並不會產生任何效果。)

 

二、刪除數據

  1.2 種 刪除數據的方法:

    (1)DROP TABLE 語句:刪除表

    (2)DELETE 語句:刪除表的數據

--語法
--DELETE FROM <表名>;
--示例
DELETE
FROM dbo.ShohinIns;

  【備註】DELETE 語句刪除的對象是記錄(行),不是表和列。

 

  2.指定刪除對象的 DELETE 語句

--語法
--DELETE FROM <表名>
--WHERE <條件>;
--示例
DELETE FROM dbo.Shohin
WHERE hanbai_tanka >= 4000;

  【備註】可以通過 WHERE 子句指定對象條件來刪除部分數據。

  【備註】DELETE 語句中不能使用 GROUP BY、HAVING 和 ORDER BY 三類子句。

  【備註】如果要刪除表全部數據時請使用 TRUNCATE <表名>,它比 DELETE 子句更高效。

 

三、更新數據

  1.UPDATE 子句的基本語法

--語法
--UPDATE <表名>
--    SET <列名> = <表達式>

 

  2.指定條件的 UPDATE 語句

--語法
--
UPDATE <表名> -- SET <列名> = <表達式> --WHERE <條件>;
--示例
UPDATE
dbo.Shohin SET hanbai_tanka = hanbai_tanka * 10 WHERE shohin_bunrui = '廚房用具';

  

  3、使用 NULL 進行更新

--示例
UPDATE dbo.Shohin
    SET torokubi = NULL
WHERE shohin_id = '008';

  【備註】只有未設置 NOT NULL 約束和主鍵約束的列才可以清空為 NULL。

  

  4.多列更新

--示例
UPDATE dbo.Shohin
    SET hanbai_tanka = hanbai_tanka * 10,    --逗號分割
        shiire_tanka = shiire_tanka / 2
WHERE shohin_bunrui = '廚房用具'

 

四、事務

  1.事務:需要在同一個處理單元中執行的一系列更新處理的集合。

  2.創建事務:

--語法
--事務開始語句
--    DML 語句①;
--    DML 語句②;
--    ...
--事務結束語句(COMMIT 或 ROLLBACK);

    (1)COMMIT - 提交處理:提交事務包含的全部更新處理的結束指令。一旦提交,無法恢復到事務開始前的狀態。

    (2)ROLLBACK - 取消處理:取消事務包含的全部更新處理的結束指令。一旦回滾,資料庫就會回覆到事務開始之前的狀態。

 

--示例
BEGIN
TRANSACTION; UPDATE dbo.Shohin SET hanbai_tanka = hanbai_tanka - 1000 WHERE shohin_mei = '運動 T 恤'; UPDATE dbo.Shohin SET hanbai_tanka = hanbai_tanka + 1000 WHERE shohin_mei = 'T 恤衫'; DELETE FROM dbo.Shohin WHERE shohin_id = '0015'; ROLLBACK;  -- COMMIT

  

  3.ACID 特性

    (1)原子性(Atomicity):在事務結束時,其中包含的更新處理要麼全部執行,要麼完全不執行。

    (2)一致性(Consistency):事務中包含的處理,要滿足資料庫提前設置的約束,也稱完整性。

    (3)隔離性(lsolation):保證不同事務之前互不幹擾的特性。

    (4)持久性(Durability):事務一旦結束,DBMS 會保證該時點的數據狀態得以保存的特性,也稱耐久性。

      

備註

  這裡採用 MS SQL Server 進行驗證,不保證所有的 DBMS 執行結果正確。

 

傳送門

  《SQL 基礎知識梳理(一) - 資料庫與 SQL

  《SQL 基礎知識梳理(二) - 查詢基礎

  《SQL 基礎知識梳理(三) - 聚合和排序

 


【參考】《SQL ゼロからはじめるデータベース操作》

 


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

-Advertisement-
Play Games
更多相關文章
  • iOS4.0開始,Block橫空出世,它其實就是c預言的補充,書面點說就是帶有自動變數的匿名函數,Block簡潔,代碼的可讀性也高,因此深受廣大開發者的喜愛,這一次給大家介紹Block的基本類型和項目中的實際操作。 Block的形式如下: Block的基本類型 1.無參數無返回值 2.無參數有返回值 ...
  • Android架構 圖1 Android架構自上而下名稱為應用層、應用框架層、運行庫和Adroid虛擬機層、 Linux內核層。 1. 應用層 應用層像一座大廈裡面的磚瓦。我們所做的開發基本上都在應用層,在手機上應用層的軟體有桌面、簡訊、電話、瀏覽器、微信、扣扣等等這類軟體。應用層的軟體是在應用框架 ...
  • 本文主要介紹9patch圖 *.9.png:android手機上,可以按需求自動拉伸的圖片 本文地址:http://www.cnblogs.com/wuyudong/p/5947195.html,轉載請註明出處。 使用AS點開XXX.9.png圖片 可以看到圖片的四條邊有黑色的線段。下麵通過示意圖來 ...
  • 鏡像下載地址:https://developers.google.com/android/nexus/images 1、打開手機 設置-關於手機-點擊版本號7次,以打開“開發者選項” 2、返回上一步,開發者選項-打開USB 調試3、將手機關機4、同時按住電源鍵&音量減鍵,進入bootloader界面 ...
  • 本文來實現《Android 手機衛士--導航界面1的佈局編寫》中的圖片選擇器部分的代碼。 本文地址:http://www.cnblogs.com/wuyudong/p/5944356.html,轉載請註明出處。 這個可以參考官網提供的API文檔 圖片選擇器編寫 在選中和未選中的過程中,切換展示圖片 ...
  • 1.生命周期 關於生命周期,在詳細講解下: 上圖是從android官網獲取的生命周期。 正常的流程,很多文章都討論過了,我們討論幾個特殊的情況。 1)OnResume->OnPause->OnResume 我們看這段解釋:The activity is no longer visible。 也就是說 ...
  • 這個代理傳值是經常使用的一種傳值方式,下麵介紹一種View 和 Controller 之間的代理傳值方法。 先建立一個View視圖 如 LoginView 是繼承於一個UIView 在LoginView.h裡面聲明協議 LoginView.h文件 import @class LoginView; / ...
  • 背景: 雖然Azure sql database有DMVs可以查看DTU等使用情況,但記錄有時間限制,不會一直保留。為了更好監控Azure_sql_database上各個庫的DTU使用情況、資料庫磁碟使用情況、阻塞等情況。通過本地的Agent的job使用link server 鏈接到各個Azure ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...