概述
1. 创建新表
1.1. 创建一张数据表的基本格式
CREATE TABLE `trade` (
`id` char(20) CHARACTER SET ascii COLLATE ascii_bin NOT NULL,
`userid` int(1) NOT NULL DEFAULT '0',
`type` int(1) NOT NULL DEFAULT '0' COMMENT '1:订货 2:消费',
`orderid` char(32) CHARACTER SET ascii COLLATE ascii_bin NOT NULL,
`psam` char(20) CHARACTER SET ascii COLLATE ascii_bin NOT NULL,
`card` char(40) CHARACTER SET ascii COLLATE ascii_bin DEFAULT NULL,
`amount` int(1) unsigned NOT NULL DEFAULT '0',
`itime0` int(1) NOT NULL DEFAULT '0' COMMENT '下单时间',
`itime1` int(1) NOT NULL DEFAULT '0' COMMENT '交易发起时间',
`itime2` int(1) NOT NULL DEFAULT '0' COMMENT '完成时间',
`pay_type` int(1) NOT NULL DEFAULT '0' COMMENT '付款类型',
`state` char(2) CHARACTER SET ascii COLLATE ascii_bin DEFAULT NULL,
`tradeNo` int(1) NOT NULL DEFAULT '0',
`flag` int(1) NOT NULL DEFAULT '0' COMMENT '0未处理 1:已处理',
`service_time` datetime DEFAULT NULL,
`service_result` varchar(200) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `IDX_PA_IT_PS` (`pay_type`,`itime2`,`psam`),
KEY `IDX_ORDERID` (`orderid`),
KEY `IDX_USERID_ID` (`userid`,`id`)
) ENGINE=MyISAM DEFAULT CHARSET=gbk;
注:
(1) <strong><span style="color:#008080;"># 若表中有自动增长的字段,若要设置primary key,只能为该字段</span></strong>
(2) 关于 CHARACTER SET xxx COLLATE xxx (上表中,char类型的字段都有该项)<p> 首先是MySQL里面关于<a target=_blank href="http://dev.mysql.com/doc/refman/5.0/en/charset.html" target="_blank">character set(字符集)和collation(整理?我认为翻译成比较规则可能更贴切)的概念</a>。</p><p> Character set顾名思义,<span style="font-family:Arial;">就是字符、以及字符对应的编码的集合。<span style="font-family:Arial;">例如简体中文字符集gb2312就包括简体中文中的所有规定汉字,以及每个汉字对应的代码。</span></span></p><p>Collation,是指比较字符的规则的集合。有了比较规则,才能够将一组数据排序——例如按照英文字母顺序排序、汉字按照拼音顺序排序等等。显然,针对同样一组字符集</p><p>可以有不同的排序标准、规则。例如汉字可以按照拼音排序,也可以按照笔画多少排序。尤其是Unicode的字符集,由于其可以包含不同种类的语言,所以可以按照各种语言</p><p>的排序方法排序。此外,完全按照字符在字符集里的编码进行比较的方式称为binary比较。到了这里我们就容易理解了。举例来说,MySQL支持的gb2312字符集中,有gb2312_bin和gb2312_general_ci两种collation。很显然前者是binary比较规则,后者是一般的中</p><p>文字符比较规则。每种字符集都有其默认的collation。对于utf8字符集来说,其默认collation是utf8_general_ci。要获得MySQL里面支持的字符集和默认collation列表,可以使用<a target=_blank href="http://dev.mysql.com/doc/refman/5.0/en/charset-charsets.html" target="_blank">SHOW CHARACTER SET</a>语句:</p> (3)KEY用于建立索引
2.
2.1 查询问题1
table user_dict:
table trade:
查询语句:
SELECT
tr.orderid,
tr.pay_type,
ud.type,
ud.dict_value
FROM
user_dict ud,
trade tr
WHERE
ud.type = tr.pay_type
AND tr.orderid = 'BM231001591588346045271'
结果:
出现大量交叉(查询据结果并没有错)
2.2 连表查询
SELECT
orderid,bi.`name`,ud.dict_value
FROM
(
SELECT
orderid,
pay_type
FROM
mpos.trade
WHERE
itime2 > UNIX_TIMESTAMP(
DATE_SUB(
'2016-03-24 00:00:00',
INTERVAL 1 DAY
)
)
AND itime2 < UNIX_TIMESTAMP(
DATE_ADD(
'2016-03-24 23:59:59',
INTERVAL 1 DAY
)
)
AND FIND_IN_SET(
LEFT (pay_type, 2),
'2,4,21,22,23,24'
)
AND state = '00'
) tr left JOIN business_info bi on bi. CODE = LEFT (tr.orderid, 2)
LEFT JOIN user_dict ud on ud.dict_key = LEFT(tr.pay_type , 2) and ud.type = 3
先查trade 表3天的数据,在从business_info中得到business_info.name、从user_dict中得到user_dict.dict_value
3. 判断空
select * from table where id is null or id=''
区分is null 和‘’
4. select * from table LIMIT 5
LIMIT 5指取前5条即可,取到5条即终止query
最后
以上就是拉长吐司为你收集整理的MySQL 语法的全部内容,希望文章能够帮你解决MySQL 语法所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复