MySQL增刪改查之增insert、replace
一、INSERT語句
帶有values子句的insert語句,用于數據的增加
語法:
INSERT [INTO] tbl_name[(col_name,...)]
{VALUES | VALUE} (expr ,...),(...),...
①用來把一個新行插入到表中
②為和其它數據庫保持一致,不要省略INTO關鍵字以及使用VALUES而不是value關鍵字
③插入一行時,要求必須對該行所有的列賦值。但是賦值方式可以是顯式賦值(直接給出值)和隱式賦值(由MySQL自動賦值)
基本格式:
insert into (列名1,列名2,列名3,......) ?values (值1,值2,值3,......);
解析:
①(列名1,列名2,列名3,......)稱為 列清單
②(值1,值2,值3,......)稱為 值清單
③列清單和值清單中的列和值必須相互對應(數據類型)
1、在表名后面列出所有的列名
示例:插入一個新的球隊到teams表中
mysql> INSERT INTO teams(teamno,playerno,division) VALUES(3,6,'third');
2、在表名后面省略所有的列名
要求:VALUES子句中的值必須按照列在表結構中的順序來一一賦值
mysql> INSERT INTO teams VALUES(4,104,'third');
3、在表名后面只列出部分的列名
注意:所有沒有明確賦值的列,將通過隱式賦值自動得到null值
mysql> insert into (列名1,列名3......) ?values (值1,值3,......);
添加一個新行數據,沒有指定賦值的列,結果集改行數據的列名2處隱式賦null值
當然,可使用字面量NULL給列賦空值
mysql> insert into (列名1,列名2,列名3) ?values (值1,null,值3);
4、VALUES子句中除了字面量,還可以使用函數、計算、標量子查詢等
INSERT INTO (列1,列2)
VALUES((SELECT count(*) FROM 表名2),
(SELECT sum(列名) FROM 表名3));
注意:子查詢必須放在單獨的小括號中
一條INSERT語句可以插入多個行:
示例:添加4個新的球隊
INSERT INTO teams(teamno, captainno,division)
VALUES (6,7,'third'),
(7,27,'fourth'),
(8,39,'fourth'),
(9,112,'sixth');
注意:這種語法只要有1行出錯,則插入全部取消
INSERT語句中可以使用IGNORE選項來當INSERT語句出錯時,不顯示錯誤消息:但是INSERT語句不會執行
5、從其他表中復制數據:帶子查詢的INSERT語句,實現從其他表中(可按條件)復制數據進入目標表
語法:
INSERT [INTO] tbl_name[(col_name,...)]
SELECT ...
注意:
①如果在表名后面列出了列名,那么列的數量和數據類型必須和子查詢的select列表相匹配
②如果在表名后面沒有列出了列名,默認就是直接復制
insert....? select.... 語句常在需要進行數據表的備份時使用
無條件復制:將一個表中的原始數據記錄,插入到另一個表中
按條件copy:將一個表查詢出來的進行聚合操作之后的記錄,插入到目標表中
當然,可以把本表中的行再次添加到本表中,但是必須注意主鍵值不要重復。
二、REPLACE語句:替代已有的行
INSERT語句的一個變種;
當添加新行時:
①如果主鍵值重復,那么就覆蓋表中已有的行
②如果沒有主鍵值重復,則插入該行
語法:
REPLACE [INTO] tbl_name [(col_name,...)]
VALUES (expr,...),(...),...
或者
REPLACE [INTO] tbl_name [(col_name,...)]
SELECT ...
(轉)mysql自增列導致主鍵重復問題分析
mysql自增列導致主鍵重復問題分析... ?原文:http://www.cnblogs.com/cchust/p/3914935.html 前幾天開發童鞋反饋一個利用load data infile ...
關于MySQL自增主鍵的幾點問題(上)
前段時間遇到一個InnoDB表自增鎖導致的問題,最近剛好有一個同行網友也問到自增鎖的疑問,所以抽空系統的總結一下,這兩個問題下篇會有闡述. 1. 劃分三種插入類型 這里區分一下幾種插入數據行的類型,便 ...
MySQL AutoIncrement--自增鎖模式
自增鎖模式 在MYSQL 5.1.22版本前,自增列使用AUTO_INC Locking方式來實現,即采用一種特殊的表鎖機制來保證并發插入下自增操作依然是串行操作,為提高插入效率,該鎖會在插入語句完成 ...
MySQL自增ID 起始值 修改方法
在mysql中很多朋友都認為字段為AUTO_INCREMENT類型自增ID值是無法修改,其實這樣理解是錯誤的,下面介紹mysql自增ID的起始值修改與設置方法. 通常的設置自增字段的方法: 創建表格時 ...
Java連接MySQL數據庫增刪改查通用方法
版權聲明:本文為博主原創文章,未經博主允許不得轉載. Java連接MySQL數據庫增刪改查通用方法 運行環境:eclipse+MySQL 以前我們Java連接MySQL數據庫都是一個數據庫寫一個類,類 ...
node.js中對 mysql 進行增刪改查等操作和async,await處理
要對mysql進行操作,我們需要安裝一個mysql的庫. 一.安裝mysql庫 npm install mysql --save 二.對mysql進行簡單查詢操作 const mysql = requ ...
MySQL數據庫(增刪改查語句)
MySQL數據庫(增刪改查語句)一.登錄數據庫:---->? mysql -uroot -proot;(對應用戶名和密碼)二.SQL語句:?? ?數據定義語言DDL? 用來定義數據庫.表.列,關 ...
python操作mysql數據庫增刪改查的dbutils實例
python操作mysql數據庫增刪改查的dbutils實例 # 數據庫配置文件 # cat gconf.py #encoding=utf-8 import json # json里面的字典不能用單引 ...
Nodejs連接mysql的增、刪、改、查操作
一,創建數據庫 Source Database : my_news_test SET FOREIGN_KEY_CHECKS=0; -- ---------------------------- -- ...
Mysql自增ID起始值修改
在mysql中很多朋友都認為字段為AUTO_INCREMENT類型自增ID值是無法修改,其實這樣理解是錯誤的,下面介紹mysql自增ID的起始值修改與設置方法.通常的設置自增字段的方法:創建表格時添加 ...
隨機推薦
常用function() 收集
1.隨機數生成函數(來源-微信支付demo案例) /** * * 產生隨機字符串,不長于32位 * @param int $length * @return 產生的隨機字符串 */ public st ...
svg坐標系變換
svg的坐標變換有三個屬性來決定:viewport, viewBox, 和 preserveAspectRatio,我發現三篇比較詳細的博客,轉載如下: 理解SVG坐標系和變換:視窗,viewBox和 ...
JavaScript中字符串去掉特殊字符和轉義字符
/*** * 去掉字符串中的特殊字符 */ var excludeSpeci ...
從配置sublimeClang插件中學到的
1.不害怕失敗的關鍵在于要事先為失敗準備補救措施.2.人們害怕內部結構復雜的東西出錯,并以自己缺乏對內部結構的認識為理由而放棄查錯.其實某些情況下根本無需對內部結構有多么深入的認識,只需從外部觀察就夠 ...
C++ Primer : 第十二章 : 動態內存之動態數組
動態數組的分配和釋放 new和數組 C++語言和標準庫提供了一次分配一個對象數組的方法,定義了另一種new表達式語法.我們需要在類型名后跟一對方括號,在其中指明要分配的對象的數目. int* arr ...
Altium Designer 里面怎么畫等長線
(1)一般是將走線布完后,新建一個class. Design -> Classes 如上圖添加完后可以點擊close. (2)快捷鍵 T + R: 或者 點擊Tools 下拉中的Interact ...
條款05:了解C++默默編寫并調用哪些函數
每一個class都會有一個或多個構造函數.一個析構函數.一個copy assignment操作符.這些控制著基礎操作,像是產出新對象并確保它被初始化.擺脫舊對象并確保它被適當清理.以及賦予對象新值. ...
PHP命名空間(Namespace)的使用詳解
對于命名空間,官方文檔已經說得很詳細[查看],我在這里做了一下實踐和總結. 命名空間一個最明確的目的就是解決重名問題,PHP中不允許兩個函數或者類出現相同的名字,否則會產生一個致命的錯誤.這種情況下只 ...
Linux shell腳本學習(一)
一.shell腳本簡介 shell腳本是用shell腳本語法將shell命令組織起來形成的文件形式.Shell腳本與Windows/Dos 下的批處理相似,主要為了將大量命令通過一個純文本文件一次執行 ...
Maven高級應用--編譯全模塊包-dist包
1. 在需要生成dist包的模塊級別,新建文件夾xxx-xxxx-dist 2. 進入目錄,新建pom.xml,建議copy 3. dependencies節點,把要編譯成全局包的應用引入進來 < ...