MySql 备忘录_Mysql

一、关于空值
提示:

在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字符集设置 http://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%';查看当前数据库的字符集设置情况

时间: 2024-09-21 11:41:41

MySql 备忘录_Mysql的相关文章

centOS7安装MySQL数据库_Mysql

1.先检测系统是否自带原有版本mysql安装包,如果有要先卸载删除,不然不能成功安装和启动: # rpm -qa|grep mysql      查看有哪些安装包,如果直接跳过,说明没有安装包,记忆可以直接进入第2.3 # yum remove mysql mysql-server mysql-libs compat-mysql51    注意这个代码,卸载不干净 # rm -rf /var/lib/mysql # rm /etc/my.cnf # rpm -qa|grep mysql     

详解如何使用DockerHub官方的MySQL镜像_Mysql

前言 最近一直在尝试以官方centos镜像为基础,制作基于centos的MySQL镜像.但是制作后发现镜像大小已经超过1.5G,这对于一般的Docker镜像来说太臃肿了.Docker Hub官方提供的mysql镜像才324MB.目前来说我还没有找到什么好的方法把我制作的镜像的体积减下来,所以就先使用官方的吧! docker pull mysql:5.7 如何使用这个Docker镜像? 1.启动一个Mysql Server容器(默认端口3306) docker run --name mysql -

MySQL 管理_Mysql

对于内容驱动的网站,设计好坏的关键是关系型数据库.在这个教程中,我们已经使用了MySQL关系型数据库管理系统(RDBMS)建立了我们的数据库.对于网站的开发者来说,MySQL是一个较受欢迎的选择,这不仅是因为它对于任何平台上的非商业应用都是免费的,而且也因为它的架设和使用非常的简单.正如我们在第一章中所看到的那样,根据正确的指导,一个新的用户可以在不超过30分钟的时间内架设好一个MySQL服务,并将其运行起来(对于一个有经验的用户甚至只要10分钟!). 如果你想做的仅仅是架设一个MySQL服务环

如何把ACCESS的数据导入到Mysql中_Mysql

如何把ACCESS的数据导入到Mysql中  www.Alltips.Com 2001-10-6  极限技术网    在建设网站的过程中,经常要处理一些数据的导入及导出.在Mysql数据库中,有两种方法来处理数据的导出(一般).   1. 使用select * from table_name into outfile "file_name";   2. 使用mysqldump实用程序   下面我们来举例说明:   假设我们的数据库中有一个库为samp_db,一个表为samp_table

如何配置全世界最小的 MySQL 服务器_Mysql

配置全世界最小的 MySQL 服务器--如何在一块 Intel Edison 为控制板上安装一个 MySQL 服务器. 介绍 在我最近的一篇博文中,物联网,消息以及 MySQL,我展示了如果Particle Photon 的板子开始构建你自己的物联网.那个实现很棒,不过因为 Particle Photon 板子没有任何本地的存储,所以需要稳定的互联网(wi-fi)接入.如果你没有一个可靠的网络访问 (例如在一些边远的地方) 或者需要某些很小的东西来存储数据,现在就可以使用Intel Edison

在Linux系统安装Mysql教程_Mysql

引言 现在因为项目的需要在搭建Mysql的集群,从最简单的开始,先安装一个Mysql 在linux系统下. 步骤: 第一步:安装: tarmysql-5.5.48-linux2.-x86_64.tar.gz Copy到指定的路径下: cpmysql-5.5.48-linux2.6-x86_64 /usr/local/mysql -r 添加系统mysql组合mysql用户: 执行命令:groupaddmysql和useradd -r -g mysql mysql 安装数据库: 进入安装mysql软

mysql 锁表锁行语句分享(MySQL事务处理)_Mysql

复制代码 代码如下: mysql_query("set autocommit=0"); $list_one = $db->fetch_first("select * from prizes where id = ".$id." FOR UPDATE"); $db->query("DELETE from prizes WHERE id =".$list_one['id']); mysql_query("co

MYSQL不能从远程连接的一个解决方法(s not allowed to connect to this MySQL server)_Mysql

如果你想连接你的mysql的时候发生这个错误: 复制代码 代码如下: ERROR 1130: Host '192.168.1.3' is not allowed to connect to this MySQL server 解决方法: 1. 改表法.可能是你的帐号不允许从远程登陆,只能在localhost.这个时候只要在localhost的那台电脑,登入mysql后,更改 "mysql" 数据库里的 "user" 表里的 "host" 项,从&

解决 phpmyadmin #2002 无法登录 MySQL 服务器_Mysql

解决 .#2002 无法登录 MySQL 服务器 将config.sample.inc.php复制成config.inc.php 出现这个错误,表示没有连接到数据库.修改config.inc.php文件, 复制代码 代码如下: 将$cfg['Servers'][$i]['host'] = 'localhost'; 改为$cfg['Servers'][$i]['host'] = '127.0.0.1'; 或者 修改 php.ini : mysql.default_socket = /tmp/mys