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

(0)

相关推荐

  • 批处理_mysql建立游戏排行榜!

    先在服务器"server"上安装个msql服务器,并设置成以服务运行,改root密码为kkk.具体看书. 建立数据库,如:mygame,建立表:game 字段:id,数据类型为int,自动编号,索引,主键 字段:name,数据类型text 字段:dir,数据类型text 字段:num,数据类型int,默认值为0. 具体看书. 添加游戏: 执行命令行mysql\bin\mysql.exe 输入:insert into game (name,dir) values ('天龙八部,'TLBB

  • 游戏和服备忘问题简析

    今天游戏和服,发现数据备份好后,导入不到目标库中, mysql -h10.66.125.733 --port 3306 -u sanda -pX12234455 --default-character-set=utf8 sanda_s10 < /data/mysql/8/user.sql 返回 ERROR 1044 (42000) at line 20: Access denied for user 'sanda'@'10.105.%' to database 'sanda_s10' 经查缺少了

  • 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中数据统计的技巧备忘录

    mysql 作为常用数据库,操作贼六是必须的,对于数字操作相关的东西,那是相当方便,本节就来拎几个统计案例出来供参考! order订单表,样例如下: CREATE TABLE `yyd_order` ( `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, `user_id` int(11) NOT NULL, `order_nid` varchar(50) NOT NULL, `status` varchar(50) NOT NULL DEFAUL

  • JavaWeb开发实现备忘录

    本文实例为大家分享了JavaWeb开发实现备忘录的具体代码,供大家参考,具体内容如下 所用技术 HTML,CSS,JavaScript,Servlet,Tomcat 8.5.60,Mysql 5.7 数据库表 开发工具 IDEA,MySQL Workbench 功能 1.添加未完成事项2.完成事项 项目演示截图 前端设计 <!DOCTYPE html> <html lang="en" > <head>   <meta charset="

  • Mac系统下MySql下载MySQL5.7及详细安装图解

    一.在浏览器当中输入以下地址 https://dev.mysql.com/downloads/mysql/ 二.进入以下界面:直接点击下面位置 ,选择跳过登录 点过这后直接下载. 三.下载完成后, 直接双击打开,弹出以下界面,再继续点击即可 下面 一直点继续,和正学安装其它软件一样 四.启动MySQL 安装完毕后,到设置当中查看以下选项,如果里面有MySQL说明已经安装成功 点击后, 启动MySQL 五.修改数据库密码 启动完成后,打开终端 aliasmysql=/usr/local/mysql

  • MySql 5.7.20安装及data和my.ini文件的配置

    1.首先上MySql的官网下载 https://dev.mysql.com/downloads/mysql/ http://www.jb51.net/softs/451120.html 以我所选版本为例(免安装版),选择MYSQL Community Server 然后在右边选择你所对应的版本 我的是64位 下载相应的zip版本 下载完解压到你想要存放的位置 我的是解压到D:\mysql-5.7.20-winx64 解压完成后是没有data文件和my.ini配置文件 这些都是要自己补充(下文有补

  • mysql 5.7.20解压版安装方法步骤详解(两种方法)

    我来讲解下window64位下MySQL的安装,MySQL是在5.7开始安装版就只有32位下载服务了,这里我讲解解压版的MySQL如何安装,在安装MySQL解压版时对于新手的小编来说也是头疼得很,各种问题各种来没有安装版的一键轻松搞定的方便,安装时需要注意三点:1.路径配置,2.安装时MySQL端口被占用这时需要关闭被占用端口,3.cmd必须是在管理员环境下设置MySQL信息. MySQL官网: https://www.mysql.com/downloads/ http://www.jb51.n

  • mysql 5.7.20常用下载、安装和配置方法及简单操作技巧(解压版免安装)

    话说凌晨刚折腾完一台MySQL 5.7.19版本的安装,未曾料到早上MySQL官方就发布了最新的5.7.20版本.这个版本看似更新不多,但是加入了一个我们所急需的功能. MySQL 5.7.20版本新增了参数group-replication-member-weight,用来表示选主时服务器的优先级.若没有这个优先级,则之前版本的MGR会选择一个或许不是用户想要的节点,这是一个令人头疼的问题.相信5.7.20版本新增的该参数能解决一些用户的痛点. 1. 下载: mysql-5.7.20是解压版免

  • Mysql 5.7.20压缩版下载和安装简易教程

    一.下载地址: http://dev.mysql.com/downloads/mysql/ http://www.jb51.net/softs/451120.html 1.进入官网下载,显示的应该是最新版本,选择第二个(mysql5.7.20-winx64.zip) 2.下载完成后,直接解压到自定义目录,解压目录就是安装目录 二.配置环境变量 1.新增环境变量,例: 变量名:MYSQL_HOME 变量值:D:\mysql\mysql5.7.20-winx64 2.修改环境变量PATH 在PATH

  • Mac OS系统下mysql 5.7.20安装教程图文详解

    Mac OS X 下 TAR.GZ 方式安装 MySQL 5.7 与 MySQL 5.6 相比, 5.7 版本在安装时有两处不同: 1:初始化方式改变, 从scripts/mysql_install_db --user=mysql初始化方式变成了bin/mysqld --initialize --user=mysql方式; 2: 初始密码生成改变, 5.6 的版本在 tar gz 方式初始化完成后默认 root 密码为空, 5.7 版本在初始化完成后会生成一个临时的 root 密码: 一.在浏览

  • Python如何实现MySQL实例初始化详解

    前言 相信每位程序员对mysql应该都不陌生,MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品.我们在日常开发中少不了要接触mysql. 腾讯云上的mysql实例,初始化的时候,需要自己点击"初始化按钮",然后还要手动输入16位复杂的密码,这个操作比较繁琐,而且如果你一次建立多个实例,这个操作量就很大了,所以必须想办法提高效率,于是就有了下文,批量调用sdk api来实现. 本文主要给大家介绍了关于Python实现MySQL实例初

随机推荐