码迷,mamicode.com
首页 > 数据库 > 详细

使用过得sql语句展示--会不断更新完善

时间:2015-05-24 08:54:36      阅读:149      评论:0      收藏:0      [点我收藏+]

标签:运行速度   更新   yii   多表查询   sql语句   

这篇博文主要是对我自己用过的sql语句进行展示,然后不断完善,形成自己写sql语句的风格,并提高自己sql语句的运行速度。之前自己对左连接等一系列的sql语句都不是很熟悉,经过这几天的学习和项目中实际需求的使用,学会了一些sql语句。现在将我写的sql语句展示出来。主要分为两类,一类是通过yii框架里的sql语句写法,一类是正常的sql语句。

先说正常的sql语句吧。
1.首先是多表查询,先涉及到的是join方法,下面这条连接,有几个点需要注意,一个是group by的使用,group by的话,表示的是按照后面的那个关键字排序,如果遇到重复的,就会只取第一条信息。
还有如果在很多and的条件里面,有需要或的关系的话,可以向下面这个方法一样,使用括号括起来,然后写上or的语句,
还有要注意,多表查询的话,一定要注意两张表示靠什么关键字段连接的,如下面的sql语句,os.order_id = o.id 这个就是他们连接的依据。

SELECT os.city_id, o.id as order_id, o.c_id 
From order_social_detail os JOIN order o 
WHERE os.order_id = o.id 
AND o.pay_status = 0 
AND (social_type = 1 OR social_type = 5 OR social_type = 8) 
GROUP BY o.id

2.说道join的方法的话,就一定得提left join 这种左连接了,以左边的表为主表,也就是前面的表。
如下面的sql语句,其本质和join是一样的,他的条件是用ON这个关键字然后加上 us.city_id = cd.area_id两种表关联的属性相连接的。
然后还可要注意的是,这个地方用了IN这个关键字,表示你搜索的东西在你的括号包含的东西里面。

SELECT cd.deadline_day FROM {{user_socialmanage}} us 
LEFT JOIN {{city_data}} cd  
ON us.city_id = cd.area_id 
WHERE us.is_delete = 0 
AND us.social_security_status IN (‘0,1,3‘) 
AND us.c_id = {$c_id} 
GROUP BY us.city_name

3.下面这个sql语句主要说明是不等号的使用方式,还有小于等于的方式。

SELECT * FROM jy_order_social_detail 
WHERE last_feedback_content != ‘‘ 
AND c_id = {$c_id} and is_delete = 0 
AND service_status <= 4

4.现在要讲的是,获取数据库表里面存的数据不为空的信息,用is not null这个关键词,如果是要为空的话,用is null。就是因为这个原因,所以数据最好不要存为null,避免歧义。

SELECT city_id From user_socialmanage 
where (social_security_current_month is not null) 
and social_security_status = 1 
and is_delete = 0

5.count()的使用。下面的就是最基本的count()的使用方式了。

SELECT count(*) From user_socialmanage 
where (social_security_status=0 or social_security_status=1 or social_security_status=3)

6.如果在yii框架里面,如果你想在sql语句中加入变量的话,可以采用分离,然后用. 点的方式来连接,也可以直接在sql语句中,用大括号将其变量包起来。

public function getServiceStatusByCid($params) {
        //传进来的$parmas是数组,包括$service_status和c_id
        $c_id = $params[‘c_id‘];
        $service_status = $params[‘service_status‘];
        $sql = "SELECT id From {{order_social_detail}} where service_status = {$service_status} and c_id = {$c_id} and is_delete = 0";
        $command = Yii::app()->db->createCommand($sql);
        $service_status_data = $command->queryAll();

    //采用 . 的方式分离,这个要1注意的是,sql语句都要用双引号哦。
    $sql = "SELECT id From {{order_social_detail}} where service_status = ". $service_status ." and c_id = ". $c_id ." and is_delete = 0";
        $command = Yii::app()->db->createCommand($sql);
        $service_status_data = $command->queryAll();

        return $service_status_data;
    }

使用过得sql语句展示--会不断更新完善

标签:运行速度   更新   yii   多表查询   sql语句   

原文地址:http://blog.csdn.net/rodgexue/article/details/45939669

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!