国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > MySQL > 正文

mysql中的sql

2024-07-24 12:41:46
字體:
來源:轉載
供稿:網友

本文實例講述了mysql中的sql_mode模式。分享給大家供大家參考,具體如下:

mysql數據庫的中有一個環境變量sql_mode,定義了mysql應該支持的sql語法,數據校驗等!我們可以通過以下方式查看當前數據庫使用的sql_mode:

mysql> select @@sql_mode;+----------------------------------------------------------------+| @@sql_mode                           |+----------------------------------------------------------------+| STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION |+----------------------------------------------------------------+

mysql5.0以上版本支持三種sql_mode模式

ANSI模式

寬松模式,對插入數據進行校驗,如果不符合定義類型或長度,對數據類型調整或截斷保存,報warning警告。

TRADITIONAL模式

嚴格模式,當向mysql數據庫插入數據時,進行數據的嚴格校驗,保證錯誤數據不能插入,報error錯誤。用于事物時,會進行事物的回滾。

STRICT_TRANS_TABLES模式

嚴格模式,進行數據的嚴格校驗,錯誤數據不能插入,報error錯誤。

 

1 ANSI模式

在ANSI模式下,當我們插入數據時,未滿足列長度要求時,數據同樣會插入成功,但是對超出列長度的字段進行截斷,同時報告warning警告。

mysql> set @@sql_mode=ANSI;Query OK, 0 rows affected (0.00 sec)mysql> create table test(name varchar(4), pass varchar(4));Query OK, 0 rows affected (0.03 sec)mysql> insert into test values('aaaaa','aaaaa'),('bbbb','bbbb');Query OK, 2 rows affected, 2 warnings (0.02 sec)Records: 2 Duplicates: 0 Warnings: 2mysql> show warnings;+---------+------+-------------------------------------------+| Level  | Code | Message                  |+---------+------+-------------------------------------------+| Warning | 1265 | Data truncated for column 'name' at row 1 || Warning | 1265 | Data truncated for column 'pass' at row 1 |+---------+------+-------------------------------------------+2 rows in set (0.00 sec)mysql> select * from test;+------+------+| name | pass |+------+------+| aaaa | aaaa || bbbb | bbbb |+------+------+2 rows in set (0.00 sec)

2 STRICT_TRANS_TABLES模式

在STRICT_TRANS_TABLES模式下,當我們插入數據時,mysql會嚴格的進行數據的校驗,當發現插入列值未滿足要求,直接報告error錯誤,保證了錯誤數據無法插入到數據庫中。

mysql> set @@sql_mode=STRICT_TRANS_TABLES;Query OK, 0 rows affected (0.00 sec)mysql> create table test(name varchar(4), pass varchar(4));Query OK, 0 rows affected (0.02 sec)mysql> insert into test values('aaaaa','aaaaa'),('bbbb','bbbb');ERROR 1406 (22001): Data too long for column 'name' at row 1mysql> show errors;+-------+------+------------------------------------------+| Level | Code | Message                 |+-------+------+------------------------------------------+| Error | 1406 | Data too long for column 'name' at row 1 |+-------+------+------------------------------------------+1 row in set (0.00 sec)mysql> select * from test;Empty set (0.00 sec)
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 永寿县| 临西县| 柘城县| 隆昌县| 榆林市| 望江县| 论坛| 浦北县| 衡阳县| 张掖市| 广昌县| 上犹县| 公安县| 随州市| 巴彦淖尔市| 门源| 兴文县| 河曲县| 彭山县| 固安县| 资阳市| 马鞍山市| 新疆| 诏安县| 阳泉市| 喀喇沁旗| 江川县| 伊吾县| 德阳市| 静宁县| 松潘县| 日照市| 县级市| 达州市| 西畴县| 五河县| 雷州市| 天镇县| 齐河县| 鄄城县| 南汇区|