MySql 备忘录

 更新时间:2012年03月23日 23:42:33   作者:  
在MySQL中如果不为NOT NULL字段赋值(等同于赋NULL值)也就是说,MySQL中NOT NULL并不是一个约束条件了
一、关于空值
提示:

在MySQL中如果不为NOT NULL字段赋值(等同于赋NULL值)

例如:
为一个NOT NULL的整型赋NULL值,结果是0,它并不会出错,
为一个NOT NULL的CHAR型赋NULL值,结果是''(空字符串)
DATATIME
-> '0000-00-00 00:00:00 '
MySQL会自动将NULL值转化为该字段的默认值, 那怕是你在表定义时没有明确地为该字段设置默认值.

也就是说,MySQL中NOT NULL并不是一个约束条件了.

如果字段设置为可空,则插入记录时如果没有给该字段赋值,那么MySQL自动用Default的值,如果没有设置Default,则无论是该字段是什么类型该字段值为NULL.
字段是否可空,虽然不是一个约束条件,却会改变系统赋默认值的方式。
疑问:以上规则是否仅限于MyIsam表,InnoDB呢??也是这样处理的吗??

连接字符集和校对
character_set_server和collation_server 服务器字符集和校对规则
character_set_database和collation_database 默认的数据库字符集和校对规则

#当查询离开客户端后,在查询中使用哪种字符集?
服务器使用character_set_client变量作为客户端发送的查询中使用的字符集。
#服务器接收到查询后应该转换为哪种字符集?
服务器将客户端发送的查询从character_set_client转换到character_set_connection
#服务器发送结果集或返回错误信息到客户端之前应该转换为哪种字符集?
character_set_results变量指示服务器返回查询结果到客户端使用的字符集。
包括结果数据(列值)和结果元数据(列名)。
有两个语句影响连接字符集:

SET NAMES 'charset_name'
SET CHARACTER SET charset_name
SET NAMES 'x'语句与这三个语句等价:
mysql> SET character_set_client = x;
mysql> SET character_set_results = x;
mysql> SET character_set_connection = x;
SET CHARACTER SET x语句与这三个语句等价:
mysql> SET character_set_client = x;
mysql> SET character_set_results = x;
mysql> SET collation_connection = @@collation_database; (设置为默认的数据库连接字符集和校对规则)

深入Mysql字符集设置 https://www.jb51.net/article/29960.htm

用于元数据的UTF8
元数据是“关于数据的数据”。描述数据库的任何数据—作为数据库内容的对立面—是元数据。因此,列名、数据库名、用户名、版本名以及从SHOW语句得到的结果中的大部分字符串是元数据。还包括INFORMATION_SCHEMA数据库中的表中的内容,因为定义的那些表存储关于数据库对象的信息。

元数据表述必须满足这些需求:

· 全部元数据必须在同一字符集内。否则,对INFORM一个TION_SCHEMA数据库中的表执行的SHOW命令和SELECT查询不能正常工作,因为这些运算结果中的同一列的不同行将会使用不同的字符集。

· 元数据必须包括所有语言的所有字符。否则,用户将不能够使用它们自己的语言来命名列和表。

为了满足这两个需求,MySQL使用Unicode字符集存储元数据,即UTF8。

服务器将character_set_system系统变量设置为元数据字符集的名:

mysql> SHOW VARIABLES LIKE 'character_set_system';

mysql> SHOW VARIABLES LIKE 'character%';查看当前数据库的字符集设置情况

相关文章

  • 解决Mysql的left join无效及使用的注意事项说明

    解决Mysql的left join无效及使用的注意事项说明

    这篇文章主要介绍了解决Mysql的left join无效及使用的注意事项说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-07-07
  • CentOS安装配置MySQL8.0的步骤详解

    CentOS安装配置MySQL8.0的步骤详解

    这篇文章主要介绍了CentOS安装配置MySQL8.0的步骤,非常不错,具有一定的参考借鉴价值,需要的朋友参考下吧
    2018-08-08
  • mysql自联去重的一些笔记记录

    mysql自联去重的一些笔记记录

    这篇文章主要给大家介绍了关于mysql自联去重的一些笔记记录,文中通过示例代码介绍的非常详细,对大家学习或者使用mysql具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-06-06
  • 全面解析MySQL Explain如何优化SQL查询性能

    全面解析MySQL Explain如何优化SQL查询性能

    在 MySQL 中,EXPLAIN 关键字可以帮助我们分析查询执行计划,从而优化查询性能,所以本文就来和大家详细讲讲Explain是如何优化SQL查询性能的
    2023-05-05
  • MySQL索引长度限制原理解析

    MySQL索引长度限制原理解析

    这篇文章主要介绍了MySQL索引长度限制原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-12-12
  • Mysql事务并发脏读+不可重复读+幻读详解

    Mysql事务并发脏读+不可重复读+幻读详解

    这篇文章主要介绍了Mysql事务并发脏读+不可重复读+幻读详解,文章基于Mysql事务的相关资料展开对主题的详细介绍,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-04-04
  • 教你使用VS Code的MySQL扩展管理数据库的方法

    教你使用VS Code的MySQL扩展管理数据库的方法

    这篇文章主要介绍了使用VS Code的MySQL扩展管理数据库,在本文告诉你如何用VS Code的扩展程序管理MySQL数据库,包括连接到MySQL、新建数据库和表、修改字段定义、简单的查询方法以及导入导出,需要的朋友可以参考下
    2022-01-01
  • 讲解MySQL中的事务特性

    讲解MySQL中的事务特性

    这篇文章主要介绍了讲解MySQL中的事务特性,是MySQL入门学习中的基础知识,需要的朋友可以参考下
    2015-05-05
  • MySQL之多表查询自连接方式

    MySQL之多表查询自连接方式

    这篇文章主要介绍了MySQL之多表查询自连接方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-09-09
  • MySQL DATE_SUB()函数的实现示例

    MySQL DATE_SUB()函数的实现示例

    本文主要介绍了MySQL DATE_SUB() 函数的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2025-03-03

最新评论