-- ----------------------------
-- 建表
-- ----------------------------
DROP TABLE IF EXISTS `b`;
CREATE TABLE `b` (
`id` int(11) NOT NULL,
`job` varchar(255) DEFAULT NULL,
`parent_id` int(11) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- ----------------------------
-- 插入数据
-- ----------------------------
INSERT INTO `b` VALUES ('1', '程序员', '1');
INSERT INTO `b` VALUES ('2', '销售', '2');
INSERT INTO `b` VALUES ('3', '空姐', '4');
-- Mysql 判断空值ISNULL(字段名/表达式)
select * from b where ISNULL(job) and ISNULL(parent_id)
-- Mysql 类似oracle的nvl 替换空值得函数 把job字段是空的值替换成“没工作”
select IFNULL(job,'没工作' ) from b
-- Mysql if 使用方法 可以代替oracle的nvl2 把job字段是空的替换成没工作 不是空的替换成有工作
select IF(ISNULL(job),'没工作','有工作') from b;
-- Mysql when case 使用方法
SELECT
CASE job
WHEN '程序员' THEN
'希望身体健康'
WHEN '销售' THEN
'希望多多卖钱'
WHEN '空姐' THEN
'希望越来越漂亮'
ELSE '木有工作 继续努力!'
END
FROM
b;
-- Mysql 字符串连接concat() 代替oracle的||
select concat("我的工作是:",job) job from b;
-- Mysql 查看mysql编码
show variables like 'character%';
-- character_set_client 客户端使用的编码,如GBK, UTF8 比如你写的sql语句是什么编码的。
-- character_set_results 查询返回的结果集的编码(从数据库读取的数据是什么编码的)。
-- character_set_connection 连接使用的编码
-- 它们之前存在一个转换过程 character_set_client -> character_set_connection >内部操作字符集->character_set_results
-- 看过一篇博客说:collation_connection对比较文字字符串是重要的。对于列值的字符串比较,它不重要,
-- 因为列具有更高的 校对规则优先级。也就是会先使用表的编码 再使用 collation_connection
-- 比如 没有表的情况下:比如直接select length('中国人'),如果character_set_connection是utf8的则输出9,如果是gbk则输出6。
-- Mysql 修改编码 例如
SET character_set_client = 'utf8';