当前位置:Gxlcms > 数据库问题 > mysql之SQL模型

mysql之SQL模型

时间:2021-07-01 10:21:17 帮助过:62人阅读

SQL模型(SQL mode):
    通过定义某些规定,限制用户行为,并定义对应的处理机制。

    常见的模型:
        ANSI
            宽松模式,对插入数据进行校验,如果不符合定义类型或长度,对数据类型调整或截断保存,报warning警告。

        TRADITIONAL
            严格模式,当向mysql数据库插入数据时,进行数据的严格校验,保证错误数据不能插入,报error错误。用于事物时,会进行事物的回滚。

        STRICT_TRANS_TABLES
            严格模式,进行数据的严格校验,不允许向一个支持事物的表中插入非法数据,报error错误。

        STRICT_ALL_TABLES
            未设置的情况下,所有的非法数值都允许,返回警告信息。设置以后只要违反数据规则,都不允许填入,并返回错误。

        ANSI QUOTES
            双引号和反引号作用相同,只能用来引用字段名称/表名等,单引号只能引用在字符串。mysql中默认3者可以随意引用。

        IGNORE_SPACE
            在内建函数中忽略多余空格


    查看默认的模型:
        mysql>SHOW GLOBAL VARIABLES LIKE ‘sql_mode‘;

    修改模型:
        mysql>SET SESSION sql_mode=MODE1,...; 修改当前会话级别
        或者
        #vim /etc/my.cnf 配置文件中修改全局级别
            sql_mode=MODE1,...

    实例:
        1.查看全局和会话的sql_mode的值
            mysql>SHOW GLOBAL VARIABLES LIKE ‘sql_mode‘;
            mysql>SHOW VARIABLES LIKE ‘sql_mode‘;
            或
            mysql>SELECT @@global.sql_mode;
            mysql>SELECT @@session.sql_mode;

        2.修改sql_mode的值为strict_all_tables,并验证动态调整生效情况。
            mysql>SET GLOBAL sql_mode=‘strict_all_tables‘;
            mysql>SELECT @@session.sql_mode;
            mysql>SELECT @@global.sql_mode;
                STRICT_ALL_TABLES
            mysql>quit;

            #mysql -uroot -p
            mysql>SELECT @@session.sql_mode;
                STRICT_ALL_TABLES

            mysql>SET SESSION sql_mode=‘strict_trans_tables‘;
            mysql>SELECT @@session.sql_mode;
                STRICT_TRANS_TABLES
            mysql>SELECT@@global.sql_moed;
                STRICT_ALL_TABLES
            mysql>quit;

            #mysql -uroot -p
            mysql>SELECT @@session.sql_mode;
                STRICT_ALL_TABLES

本文出自 “小私的blog” 博客,请务必保留此出处http://ggvylf.blog.51cto.com/784661/1679327

mysql之SQL模型

标签:mysql   sql mode   

人气教程排行