MySql 必須要知道的一些語法

来源:http://www.cnblogs.com/Liuxiong/archive/2016/10/13/5956226.html
-Advertisement-
Play Games

如果你初識MySql的話,那麼這些語法糖你有必要知道。 1.Sql創建資料庫 2.Sql創建數據表 3.創建存儲過程 4.關於批量更新和插入數據到mysql ...


如果你初識MySql的話,那麼這些語法糖你有必要知道。

1.Sql創建資料庫

-- 如果存在資料庫order,則刪除。否則創建資料庫
drop database if exists `order`;
-- 創建資料庫
create database `order`;

2.Sql創建數據表

CREATE TABLE `Users` (
  `ID` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '客戶id',
  `Member` varchar(20) DEFAULT NULL COMMENT '會員號',
  `Name` varchar(100) DEFAULT NULL COMMENT '姓名',
  `Phone` varchar(20) DEFAULT NULL COMMENT '手機號碼',
  `QQ` varchar(20) DEFAULT NULL COMMENT 'QQ',
  `PassWord` varchar(50) DEFAULT NULL COMMENT '密碼',
  `IsOpen` char(2) DEFAULT 'Y' COMMENT '是否禁用',
  `Createtime` datetime DEFAULT NULL COMMENT '創建時間',
  PRIMARY KEY (`ID`)
) ENGINE=InnoDB AUTO_INCREMENT=1000 DEFAULT CHARSET=utf8;
我這裡創建了一個Users表,如果你的MySql裡面存在多個資料庫的話你可以使用 關鍵詞 Use 來告訴mysql你所創建的表屬於哪一個庫,我這裡創建到了上面新建的Order庫裡面,如果你有mysql或者SQLserver的基礎的話
你會覺得這些都很簡單,確實如此,主鍵,預設值,是否為空,是否自增等等,你都瞭解,不過還是有兩個東西值的說一下,一個是沒個欄位的備註,我個人開發過程中覺得這個非常重要,所以一個簡單的備註能讓你快速的回憶起
這個欄位的作用,COMMENT 就是專門做這個的。第二個是我創建表中的1000這個值,這個是該表的記錄會從1000開始,可以自己去定義。uft8設置編碼格式。

3.創建存儲過程

DELIMITER $$
CREATE DEFINER=`root`@`%` PROCEDURE `RecordPage`(
    tblName varchar(2000),
    SelectFieldName varchar(4000),
    strWhere varchar(4000),
    OrderField varchar(2000),
    PageSize int,
    PageIndex int,
    out iRowCount int  ,            -- 總記錄數
    out pagecount int               -- 總分頁數
)
$$:begin
     declare v_sqlcounts varchar(4000);
     declare v_sqlselect varchar(4000);
     #拼接查詢總記錄的SQL語句
     set strWhere=concat(' where ', strWhere);
     set OrderField=concat(' order by ', OrderField);

    #拼接分頁查詢記錄的動態SQL語句
    set v_sqlselect = concat('select ',SelectFieldName,' from ',tblName,strWhere,if(OrderField is not null,OrderField,''),' limit ',(PageIndex-1)*PageSize,' , ',PageSize);
   #select v_sqlselect;leave $$;
   set @sqlselect = v_sqlselect;

   prepare stmtselect from @sqlselect;
        execute stmtselect;
   deallocate prepare stmtselect;
   
       -- set v_sqlcounts = concat('select count(*) into @recordcount from ',tblName,strWhere);
     set v_sqlcounts = concat('select SQL_CALC_FOUND_ROWS ',SelectFieldName,'  from ',tblName,strWhere);
    #select v_sqlcounts;leave $$;
    set @sqlcounts = v_sqlcounts;
    prepare stmt from @sqlcounts;
         execute stmt;
    deallocate prepare stmt;
    #獲取動態SQL語句返回值
    -- set iRowCount = @recordcount;
     set iRowCount = (select FOUND_ROWS());
   
end $$$$
DELIMITER ;

創建存儲過程的格式,上面是我創建的一個通用分頁的存儲過程,親測,可用,只需要對應傳參數就行了

4.關於批量更新和插入數據到mysql

-- 批量插入
INSERT
INTO `order`.`users`(`ID`,`Member`,`Name`,`Phone`,`QQ`,`PassWord`,`IsOpen`,`Createtime`) VALUES(),(),(),(),(),(),()......;
--批量更新
UPDATE `order`.`users` SET Name= case ID WHEN 1 THEN '111' WHEN 2 THEN '222' WHEN 3 THEN '333' END WHERE `ID` in(1,2,3) ;

更新多個欄位的時候可以將SET與END之間的部分複製替換成要更新的欄位信息

 


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

-Advertisement-
Play Games
更多相關文章
  • 新浪微博:intsmaze劉洋洋哥 KafkaSpout的核心邏輯都是由PartitionManager來實現的。但是這個類實現時候需要考慮的東西有些多,0.92至0.93,至當前(2015.3.14)的master一直在變化。在這裡,先分析一下最近的發佈版0.93里的邏輯。也提出一些問題,希望以後 ...
  • 《SQL學習指南》中的第10章 1.4 外連接 在多表連接中,存在連接條件可能無法表中所有的行匹配的問題,例如當account表與customer表進行連接時,會存在account表中cust_id列值無法匹配customer表中的cust_id列值,內連接在無法匹配成功時,是不會將這條匹配失敗的結 ...
  • 函數索引 1.1 概述 在實際應用中,當條件列使用函數運算進行數據匹配時,即使該列建立了索引,索引也不會被使用。 如下示例,其中在owner列上建立一個普通b-tree索引,觀察兩種查詢方式(不使用UPPER函數及使用UPPER函數)的執行計劃的區別。 通過上面的示例可以看到,即使條件列建立了索引, ...
  • 由於項目需要MongoDB做為存儲資料庫,在學習過程碰上疑難雜症,心痛如海,故此終於開始書寫博客之路。 操作MongoDB類庫版本: 連接字元串的相關變化: 沒有安全認證的URL:mongodb://127.0.0.1:27017 加上安全認證的URL:mongodb://[userName]:[u ...
  • 現在MyBatis越來越受大家的喜愛了,它的優勢大家都知道,我就不多說了,直接說重點。 MyBatis中提供動態SQL功能,我們可以使用<if><when><where><otherwise><foreach>等等,這樣我們就可以寫出根據條件生成的動態SQL了,但是,在這中間,我們經常用到的<if> ...
  • 才參加工作不久,很多代碼習慣還沒養成,昨天按要求寫的資料庫基本增刪改查操作,在使用這些方法的時候,雖然能實現功能,但是效率低下,還可能產生記憶體問題,今天被項目經理一頓教育,在此記錄學到的教訓。 mybatis中重覆的代碼使用sql和include標簽進行封裝和調用 資料庫操作使用的是mybatis框 ...
  • 在進行ETL開發時,數據類型(Data Type)是最基礎的,但也容易被忽略,樓主使用的SQL Server 版本是2012,用此博文記錄,常用的SSIS數據類型和TSQL數據類型的映射關係。SSIS的數據類型,主要是指數據流(Data Flow)數據類型和變數(Variable)數據類型。 當數據 ...
  • 無意睹到一篇舊文檔 SR0008:考慮使用 SCOPE_IDENTITY 代替 @@IDENTITY :https://msdn.microsoft.com/zh-cn/library/dd172121(v=vs.100).aspx 日常開發,我們如果在插入記錄的同時需要返回插入的IdentityI ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...