导读:最近写代码,几乎是天天泡在SQL语句里,各种代码各种写。但一直缺少总结,要不就是觉得简单,要不就是觉得大家都知道。想来,我还是没能明白总结的价值在哪里。现在也就写写最近都常写的一些语句。

一,if...else语句

<span style="font-family:KaiTi_GB2312;font-size:18px;">if(t.teacherCategory is null or t.teacherCategory='','学员',t.teacherCategory) as teacherCategory,</span>

在这里,就是查询数据库中的教师类别,如果为空,则显示学员,否则显示为教师的具体类别。

那么,if...else语句用于少数几个还看着挺方便,如果要判断的多了,就显得不那么好玩儿,这时候,可以用case...when语句。

二,case...when语句

<span style="font-family:KaiTi_GB2312;font-size:18px;">case s.applyTeacherState when '1' then '申请成功' when '0' then '申请中' when '2' then '申请失败' else null end as applyTeacherState</span>

在这里,是判断申请状态,当其分别为0.1.2的时候,显示出其具体的状态,而不是数字。

这是两个局部的应用,现在看完整的一个SQL 语句:

<span style="font-family:KaiTi_GB2312;font-size:18px;">select s.realName,s.phoNum,s.versionStartTime,case s.applyTeacherState when '1' then '申请成功' when '0' then '申请中' when '2' then '申请失败' else null end as applyTeacherState,if(t.teacherCategory is null or t.teacherCategory='','学员',t.teacherCategory) as teacherCategory,s.id,t.studentId from tj_student s left JOIN tj_teacher t on s.id=t.studentId</span>

思考:既然在实际运用的时候,这么麻烦,为什么存储的时候,要存这么难记的数字呢。用这些数字,经常会出现两个问题:

1,遇到要显示的时候,得去将数字转化为对应的含义表达。因为用户看着这些数字,是很难理解的。如果用注释的方式,在网页上标记,又显得太不友好。

2,在实际操作的时候,有时候经常会不知道这些数字背后的含义。

注意:如果在项目中,使用这样的代号。那么,应该准备好相应的数据字典,或者说,建立相对应的常量类,去统一维护这种公共需要的字段。

三,连接查询语句

3.1,左连接left join

<span style="font-family:KaiTi_GB2312;font-size:18px;">SELECT ec.id,ec.evaluateContent,ec.versionStartTime,c.courseName,s.phoNum,s.nickName,ts.phoNum,ts.nickName FROM tj_evaluatecourse ec LEFT JOIN tj_course c ON ec.courseId = c.id LEFT JOIN tj_student s ON ec.studentId = s.id LEFT JOIN tj_student ts ON ts.id = ec.t_studentId AND ts.isTeacher = '1' where ec.isDelete='0'</span>

简单说来,使用left join的话,会包含第一个表的所有字段信息。比如这条语句中,则会包括tj_evaluatecourse表中的全部信息(如果这张表有10条数据,那么最终结果也是10条数据),外加上左连接其他表中的字段。

3.2,右链接right join

<span style="font-family:KaiTi_GB2312;font-size:18px;">SELECT SUM(o.price) as countPrice,c.industryId FROM tj_orderlog o RIGHT JOIN tj_course c ON o.courseId=c.id where o.isDelete='0' GROUP BY industryId</span>

事实上,右链接和左连接没有太大的区别。比如在这条语句中,将会查询出tj_course表中的所有信息(这张表中的任何一条数据,都不会丢失),如果把这里的右链接换为左连接的话,那么将会根据tj-orderlog表来显示数据。

现在,看一条左右连接的混合使用语句:

<span style="font-family:KaiTi_GB2312;font-size:18px;">SELECT countPrice,i.industryName FROM tj_industry i LEFT JOIN(SELECT SUM(o.price) as countPrice,c.industryId FROM tj_orderlog o RIGHT JOIN tj_course c ON o.courseId=c.id where o.isDelete='0' GROUP BY industryId) x ON i.id=x.industryId GROUP BY i.industryName</span>

在这条语句中,整个查询结果都是以tj_industry表的数据为基础的,如果这张表有10条数据,那么最终的结果就是10条数据。

注意:连接查询除了左右连接以外,还有内连接、完全连接。当根据具体情况去使用。

如果是用到左、右连接,那么就一定要明确主表。

四、总结

现在的项目中,写的最多的就是各种连接语句,还有各种数据库函数的运用,这是总结的一小部分内容,也可以说是自己之前没怎么用到的,其他的一些应用,还需要熟练和运用。

SQL 1:常用SQL语句的更多相关文章

  1. sql 操作常用操作语句 新增、修改字段等

    常用sql --sql 事务 BEGIN TRAN 事物名 )BEGIN ROLLBACK TRAN 事物名;RETURN;END COMMIT TRAN 事物名 --数据库清缓存 DBCC DROP ...

  2. sql 2008常用语法语句收集

    EXEC sp_dropuser 'test' : 从当前数据库删除用户 test EXEC sp_droplogin 'test' : 从 SQL Server 中删除登录 test select ...

  3. SQL其他常用的语句

    阅读目录 一:汇总数据 1.理解AVG函数 2.理解COUNT()函数 3.理解max()函数 4.理解min()函数 5.理解sum()函数 二:分组数据 1 创建分组(group by) 2 HA ...

  4. sql server 常用sql语句

    --删除约束 alter table productInfo drop constraint 约束名称 --删除列alter table productInfo drop column 列名 --添加 ...

  5. SQL Server常用SQL集合

    ================================================ 1.SQL查询一年之内的数据记录 select * from 表名 where CreateDate& ...

  6. SQL Server 常用SQL

    --查询所有表 select * from sysobjects where xtype='u' ORDER BY name ASC

  7. [SQL Server] 常用sql脚本

    1.添加表 GO IF NOT EXISTS(SELECT * FROM sys.tables WHERE name='table_name') BEGIN CREATE TABLE [dbo].[t ...

  8. Oracle常用SQL查询(2)

    三.查看数据库的SQL 1 .查看表空间的名称及大小 select  t.tablespace_name,  round ( sum (bytes / ( 1024 * 1024 )), 0 ) ts ...

  9. Oracle常用SQL查询

    一.ORACLE的启动和关闭 1.在单机环境下要想启动或关闭oracle系统必须首先切换到oracle用户,如下: su - oracle a.启动Oracle系统 oracle>svrmgrl ...

  10. ORACLE 常用SQL查询

    一.ORACLE的启动和关闭 1 .在单机环境下 要想启动或关闭ORACLE系统必须首先切换到ORACLE用户,如下 su  -  oracle a.启动ORACLE系统 oracle > sv ...

随机推荐

  1. (WPF, MVVM) Event 处理

    WPF的有些UI元素有Command属性可以直接实现绑定,如Button 但是很多Event的触发如何绑定到ViewModel中的Command呢? 答案就是使用EventTrigger可以实现. 继 ...

  2. Java方法总结与源码解析(未完待续)

    使用StringTokenizer去掉字符串中的空格 public class StringTo { public static void main(String[] args){ String te ...

  3. UVA 12563 劲歌金曲(01背包)

    劲歌金曲 [题目链接]劲歌金曲 [题目类型]01背包 &题解: 题意:求在给定时间内,最多能唱多少歌曲,在最多歌曲的情况下,使唱的时间最长. 该题类似于01背包问题,可用01背包问题的解题思路 ...

  4. rand()随机数的产生

    #include "stdio.h"#include<stdlib.h>用下列公式即可得到指定范围[m,n]的随机数: r = rand()%(n - m + 1) + ...

  5. 为什么引用不了App_Code里的类

    在Web应用程序中不能通过右键项目-〉”添加“-〉”添加ASP.NET文件夹“方式添加 .因为Web应用程序中App_Code就不存在 .不过可以通过手动的方式创建,添加一个文件夹命名为App_Cod ...

  6. Java中Filter、Servlet、Listener的学习

    1.Filter的功能filter功能,它使用户可以改变一个 request和修改一个response. Filter 不是一个servlet,它不能产生一个response,它能够在一个reques ...

  7. [ActionScript3.0] 传递任意数量的参数

    function setAgument(a:int,...rest):void{ for(var i:int=0;i<rest.length;i++){ trace(rest[i]); }}se ...

  8. JAVA继承时this和super关键字

    JAVA继承时this和super关键字 本文主要讨论在方法前使用this或super关键字时,编译器在什么地方查找对应的函数. 在子类中指定this关键字.首先在本类中查找,如果本类中找不到,再在父 ...

  9. CRM SQL 共享

     共四步 ,) PRIMARY KEY CLUSTERED, objectid UNIQUEIDENTIFIER NOT NULL, objecttype INT NOT NULL) ,,'883D4 ...

  10. IE,Chrome滚动条样式CSS

    <style type="text/css"> *{ scrollbar-face-color:#F3F3F3; /*面子*/ scrollbar-arrow-colo ...