日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mariadb不能导入与mysql可以,mysql/mariadb知识点总结(12):insert语句总结

發布時間:2025/3/15 数据库 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mariadb不能导入与mysql可以,mysql/mariadb知识点总结(12):insert语句总结 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

這篇文章總結了mysql中的insert語句,delete、update、select等DML語句將會在其他文章中單獨總結。

在本博客中,”mysql”是一個系列文章,這些文章主要對mysql/mariadb的常用知識點進行了總結,每一篇博客總結的知識點有所不同,具體內容可參考mysql文章列表。

mysql文章列表直達鏈接:mysql知識點總結

insert常用語句

mysql中insert語句的語法如下

insert into tablename(字段1名稱,字段2名稱,…) values(字段1值,字段2值,…)

示例如下:

向表tb1中插入一條數據,插入數據對應的字段為name和age,name的值為tom,age為33。

insert?into?tb1?(name,age)?values('tom',33);

向表tb1中插入多條數據,具體含義同上,只不過是插入多條語句。

insert?into?tb1?(name,age)?values('jerry',22),('naruto',28);

也可以不指定字段,表示對應每個字段都會有插入的數據。

insert?into?tb1?values?(4,'Sasuke',28),(5,'hinata',25);

其實,除了使用上述的語法插入數據,我們還能夠使用如下語法

insert into tablename set 字段1名稱=字段1值,字段2名稱=字段2值

示例如下:

insert?into?tbl2?set?id=2,name="test",age=18,gender='M';

聰明如你一定發現了,上述兩種語法的不同之處在于,字段名稱與字段值是否分開了,使用set的方式字段名與字段值是在一起的。

除了這一點不同之處,其實,他們還有另外一點不同,就是,使用set的方式插入數據時,insert語句中字段的順序可以與表中字段的順序不同,而第一種語法中,字段順序必須與表中字段的順序相同。

還需要注意的是,mysql默認的sqlmode為寬松模式,這意味著即使插入的數據并不是完全符合數據類型的要求,也有可能也能插入數據。示例如下:

可以從上圖中看到,tb表中的name字段的數據類型為char(5),也就是說name字段最多只能插入5個字符,當我們插入的數據為naruto時,超過了5個字符的長度,但是仍然插入成功了,插入的數據自動被截取為narut,少了一個字母”o”,同理,age字段的值的最大取值為255,當我們插入大于255的數據時,數據自動變為了255,這樣雖然能夠插入數據,但是跟我們預期不一樣,這種情況就屬于對數據的校驗不嚴格導致的,我們再看另一種情況,如下圖:

tb1表中的name字段是不允許為空的,并且name字段沒有對應的默認值,但是我們如果不對name字段設置對應的值,數據也能插入,mysql自動將其值設置為了空字符串,如果按照嚴格的標準,這樣應該不允許插入數據。上述兩種情況都屬于對數據的校驗不嚴格造成的。

如果我們不期望這樣的事情發生,可以通過設置sql_mode參數的值進行嚴格限制,我們可以通過運行時設置的方式(參考”mysql數據庫變量(參數)管理“)與修改配置文件的方式設置sql_mode, 此時,如果你想要在不重啟的mysql情況讓以后的所有連接都遵循嚴格的限制,需要先在運行時設置中,將global.sql_mode變量的值設置為TRADITIONAL(使用的存儲引擎為innodb),同時在配置文件中設置sql_mode=TRADITIONAL(使用的存儲引擎為innodb),以免重啟后失效。

sql_mode最常用的幾種重要模式如下:

ANSI:寬松模式,對插入數據進行校驗,如果不符合定義類型或長度,對數據截斷保存,報警告信息,默認應該就是這種。

STRICT_TRANS_TABLES:只在事務型表中進行嚴格限制。

STRICT_ALL_TABLES:對所有表進行嚴格限制。

TRADITIONAL :嚴格模式,當插入數據時,進行數據的嚴格校驗,錯誤的數據將不能被插入,報error錯誤。用于事物時,會進行事物的回滾,官方提醒我們說,如果我們使用的存儲引擎是非事務型的存儲引擎(比如myisam),當我們使用這種模式時,?如果執行非法的插入或更新數據操作時,可能會出現部分完成的情況。

sql_mode更多模式可以官方文檔

總結

以上是生活随笔為你收集整理的mariadb不能导入与mysql可以,mysql/mariadb知识点总结(12):insert语句总结的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。