php程序員對數據庫操作必須要知道的一些語法

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

  1. Sqlmysql

--?如果存在數據庫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設置編碼格式。
我這里創建了一個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.關于批量

立即學習PHP免費學習筆記(深入)”;

--?批量插入  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之間的部分復制替換成要更新的字段信息

? 版權聲明
THE END
喜歡就支持一下吧
點贊13 分享