channel add blog tab efault 文字编码 mysq -a
创建 mysql 数据库
- CREATE DATABASE IF NOT EXISTS`database_name`DEFAULTCHARSET utf8 COLLATE utf8_general_ci;
创建 mysql 数据表
- drop table if exists `table_name`;
- create table if not exists `table_name` (
- id intauto_incrementprimary keycomment'主键编号',
- `name` varchar(32)not null default ''comment'名称',
- `code` varchar(32)not null default ''comment'代码',
- category_id int not null default 0comment'类别编号',
- INDEXidx_name (`name`),-- 普通索引
- INDEXidx_name_category_id (`code`,category_id),-- 复合索引
- UNIQUE INDEXidxu_code (`code`)-- 唯一索引
- -- 注意,最后一行不能有逗号) ENGINE=InnoDBDEFAULTCHARSET=utf8 comment'创建表\r\n2017-06-21';
补充说明:1. MySQL 数据库的 varchar(M),M 表示的是字符数量,而不是字节数量,占用的字节数和数据表使用的编码有关。(一个中文、英文、数字等都算一个字符)2. MySQL 要求一个行的定义长度不能超过 65535 字节, 因此 varchar 的长度理论上最大是 65535 字节,编码若为 gbk,每个字符最多占 2 个字节,最大长度不能超过 32766 个字符; 编码若为 utf8,每个字符最多占 3 个字节,最大长度不能超过 21845 个字符,即不论字母、数字或汉字,只能存储 21785 个
文章参考:http://www.cnblogs.com/sochishun/p/7026762.html
例如:1 个中文用 UTF8 编码是 3 字节 (Byte),用 GBK 编码是 2 字节 (Byte)。1 个英文或数字不管什么编码都是 1 字节 (属于 ASCII 编码)。'中文' 2 个汉字的长度是 3byte * 2 = 6byte'E 文' 1 个英文 + 1 个汉字的长度是 1byte + 3byte = 4byte'a0' 1 个英文 + 1 个数字的长度是 1byte + 1byte = 2byteGBK 的文字编码用双字节来表示,即不论中、英文字符均使用双字节来表示'中文' 2 个汉字的长度是 2byte * 2 = 4byte'E 文' 1 个英文 + 1 个汉字的长度是 1byte + 2byte = 3byte'a0' 1 个英文 + 1 个数字的长度是 1byte + 1byte = 2byte
创建 mysql 视图
- create or replace view`view_name`as select * from`table_name`;
创建 mysql 存储过程
- /**
- * mysql游标
- * @since 1.0 2015-3-28 sochishun Added.
- */
- DELIMITER ;;
- drop procedure if exists proc_cursor_demo;;
- create procedure proc_cursor_demo()
- begin
- declarevint_idint;
- declarevstr_namevarchar(32);
- declaredone booleandefault false;
- -- 计费游标
- declarecur1cursor for select`id`, `name`from`table_name`whereid< 100;
- -- 将结束标志绑定到游标
- declare continuehandlerfor notfoundsetdone= true;
- open cur1;
- loop_label: loop
- fetchcur1intovint_id, vstr_name;-- 声明结束的时候
- ifdonethen
- leave loop_label;
- end if;
- call proc_update_demo(vint_id, vstr_name);
- end loop;
- close cur1;
- end;;
- DELIMITER ;
创建 mysql 函数
- /**
- * 创建mysql函数
- * @since 1.0 2016-2-18 by sochishun
- * @example SIP/301-00000155
- */
- DELIMITER ;;
- drop function if exists fn_test_demo;;
- create functionfn_test_demo(pstr_channelvarchar(32))
- returns varchar(16)-- 函数返回定义写在这里
- begin
- declarevstr_prefixvarchar(16);
- declarevstr_outvarchar(16);
- setvstr_prefix=LEFT(pstr_channel,3);
- ifvstr_prefix='SIP' then
- setvstr_out=SUBSTR(pstr_channel,5,POSITION('-' INpstr_channel)-5);
- elseif vstr_prefix='Loc' then
- setvstr_out=SUBSTR(pstr_channel,7,POSITION('@' INpstr_channel)-7);
- else
- setvstr_out=pstr_channel;
- end if;
- return vstr_out;
- end;;
- DELIMITER ;
来源: http://www.bubuko.com/infodetail-2134419.html