MySQL 语法

来源:互联网 发布:java面试 csdn 编辑:程序博客网 时间:2024/06/15 18:41

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:

         

         查询语句:

         

SELECTtr.orderid,  tr.pay_type,ud.type,ud.dict_valueFROMuser_dict ud,trade trWHERE ud.type = tr.pay_typeAND tr.orderid = 'BM231001591588346045271'
       结果:

            出现大量交叉(查询据结果并没有错)


       2.2 连表查询

SELECTorderid,bi.`name`,ud.dict_valueFROM(SELECTorderid,      pay_typeFROMmpos.tradeWHEREitime2 > 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

0 0
原创粉丝点击