使用as给字段起别名,例如:select name as 姓名 from student;

模糊匹配(like
  "_":一个占位符。例子:select * from student where name like "_ack"; // 表示匹配name以"ack"结尾,且为四个字符的值。
  "%":匹配0个或多个任意字符。
关于null的查询:
  null在数据库中不代表没有,而是代表不知道。
  select name from student where name=null; // 这句是错误的,理解起来就是:从student中查询name等于"不知道的值",这就无法查了
  select name from student where name<>null;  // 这句也是错误的。理解起来是:从student中查询name不等于"不知道的值"。这也无法查。
  select name from student where name is null;  // 这句话是正确的,理解起来是:从student中查询name是"不知道的值"
范围选取(between...and...)
  select age from student where age between 10 and 20;
  等价于:
  select age from student where age>=10 and age<=20;
聚合函数:
  AVG():求平均值。
  Count():计算总数。
  All():默认值,表示全部。
  Max():最大值。
  ...
分组Group By
  select age,Count(*) from student Group By age; // 根据年龄进行分组,并统计各个年龄的人数。
  //
  // 值得注意的是,聚合函数不能出现在where子句中
  select age,Count(*) from student where Count(*)>1 Group By age;
  // 如果需要筛选,可以使用Having来进行过滤。
  select age,Count(*) from student Group By age Having Count(*)>1;
  //
  //
  // where不等价于group by,因为group by是对选出来的结果进行过滤的。下面进行列子说明
  select age from student where Score>90 Group By age; // 理解为:从student表中选择Score>90的age,再将age进行分组
查找前几行(top):
  select top 3 * from name order by age DESC; // 根据age进行降序排序查找前3行
不重复(distinct):
  select distinct name from student; // 选取student表中不重复的name
合并显示(union),默认将重复的结果去除:
  (select name from student) union (select name from teacher);  // 表示将两个表的结果合并显示。
  // union all 可以将两个或者两个以上的表的结果合并显示,默认不会将重复结果去除,也就是查询全部的意思。
  // 使用union进行关联时,关联的结果字段数量要相同,字段类型要相同。
数字函数
  ABS():求绝对值。
  CEILING():舍入到最大整数。
  FLOOR():舍入到最小整数。
  ROUND():四舍五入。
字符串函数
  len():计算字符串长度。
  lower():转换为小写。
  upper():转换为大写。
  ltrim():去除左边空格。
  rtrim():去除右边空格。
  substring():字符串截取。substring(被截取的字符串,字符串起始位置,字符串长度)
日期函数
  getdate():获取日期
  dateadd():增加以后的日期。例子:DATEADD(year,8,getdate()),表示在参数getdate()的基础上增加8年(在当前时间加上8年)。单位可以用year/month/day/hh(小时)/...等。
  datediff():计算两个日期之间的差额。dateiff(单位,开始日期,结束日期),单位同上有yaer等
  datepart():返回日期的部分。datepart(单位,日期参数)。单位同上;日期参数,如当前日期参数:getdate()

案列:

--select dateadd(dd,-day(getdate())+1,getdate()); -- 获取本月第一天
--select dateadd(ms,-3,dateadd(mm,datediff(m,0,getdate())+1,0))

--select getdate() -- 获取当前时间
--select day(getdate()) -- 获取是当前月的第几天
select dateadd(dd,-day(getdate())+1,getdate()) -- 获取本月第一天
---------------------------------

--select datediff(m,0,getdate()) -- 第二个0表示1900-01-01。计算与1900年相差的月份,月份向下取整。例如今天是2019-03-05 13:50:45,那么获取到的值为:2019-03-01那一天以前的月份(也就是不包含3月份)
--select dateadd(mm,datediff(m,0,getdate())+1,0) -- 第三个参数的0表示1900-01-01.表示相差月份加上1900-01-01得到的日期,往往是下个月的第一天,如今天是2019-03-05 13:50:45,那么获取到的值为:2019-04-01 00:00:00.000
select dateadd(ms,-3,dateadd(mm,datediff(m,0,getdate())+1,0)) -- 在上面的基础上减去3毫秒。表示取当前月的最后一天。

day(dateadd(ms,-3,dateadd(mm,datediff(m,0,getdate())+1,0)))  -- 当前月天数

---------------------------------

select datediff(mm,'2018-2-15','2018-3-14');  -- 获取相差月份,这里显示1

 
类型转换
  cast():例子 cast('123' as int) // str转int
  convert():例子 convert(datetime, '2019-2-3') // str转datetime
空值处理函数(isnull):
  select isnull(name,'jr') from student; // 表示从student表中选取name字段,如果字段为空,那么用'jr'代替。
case函数用法:
  select name, (
  case age
  when 10 then '少年'
  when 25 then '青年'
  when 50 then '中年'
  else '不在检查年龄'
  end
  ) as 年纪类型 from student;
//
// 上面看起来并不完整,应该进行年龄段的判断。
  select name, (
  case
  when age<=10 then '少年'
  when age>10 and age<=25 then '青年'
  when age>25 and age<=50 then '中年'
  else '不在检查年龄'
  end
  ) as 年纪类型 from student;
//
// 那么如果要计算年龄类型的数量呢?

  select sex, SUM(
  case
  when age<=10 then 1
  else 0
  end
  ) as 少年, SUM(
  case
  when age>10 and age<=25 then 1
  else 0
  end
  ) as 青年, SUM(
  case
  when age>25 and age<=50 then 1
  else 0
  end
  ) as 中年
  from student group by sex;

关联查询:
  select stu.name,tea.name from student as stu join teacher as tea on stu.id=tea.sid; // 使用join
  select student.name, teacher.name from student, teacher where student.id=teacher.sid;
 

select 查询的更多相关文章

  1. 关于SubSonic3.0插件使用SqlQuery或Select查询时产生的System.NullReferenceException异常修复

    早上在编写执行用例时,突然爆异常System.NullReferenceException: 未将对象引用设置到对象的实例 执行代码:

  2. 为什么忘记commit也会造成select查询的性能问题

    今天遇到一个很有意思的问题,一个开发人员反馈在测试服务器ORACLE数据库执行的一条简单SQL语句非常缓慢,他写的一个SQL没有返回任何数据,但是耗费了几分钟的时间.让我检查分析一下原因,分析解决过后 ...

  3. [NHibernate]N+1 Select查询问题分析

    目录 写在前面 文档与系列文章 N+1 Select查询问题分析 总结 写在前面 在前面的文章(延迟加载,立即加载)中都提到了N+1 Select的问题,总觉得理解的很不到位,也请大家原谅,这也是为什 ...

  4. access数据库select查询top时无效的解决办法

    access数据库select查询top时有时无效,原因就是在使用Order by时,且排序的条件中数据有重复的. 比如:select top 10 * from table1 order by cd ...

  5. MySQL之select查询、function函数

    一.select查询 //查询某张表所有数据 select * from temp; //查询指定列和条件的数据 //查询name和age这两列,age等于22的数据 ; //as对列重命名 //as ...

  6. select查询的性能

    为什么忘记commit也会造成select查询的性能问题 今天遇到一个很有意思的问题,一个开发人员反馈在测试服务器ORACLE数据库执行的一条简单SQL语句非常缓慢,他写的一个SQL没有返回任何数据, ...

  7. 把一个select查询结果插入到一个表(可选指定字段和值实例)

    把一个select查询结果插入到一个表(可选指定字段和值实例) insert into  bak (cc,yf) select cc,9 from ket insert into bak (cc,yf ...

  8. Sql Server 函数的操作实例!(执行多条语句,返回Select查询后的临时表)

    Sql Server 函数的操作实例!(执行多条语句,返回Select查询后的临时表) SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ==== ...

  9. select查询原理

    原文:select查询原理 我并非专业DBA,但做为B/S架构的开发人员,总是离不开数据库,一般开发员只会应用SQL的四条经典语句:select ,insert,delete,update.但是我从来 ...

  10. mybatis mapper.xml 写关联查询 运用 resultmap 结果集中 用 association 关联其他表 并且 用 association 的 select 查询值 报错 java.lang.IllegalArgumentException: Mapped Statements collection does not contain value for mybatis.map

    用mybaits 写一个关联查询 查询商品表关联商品规格表,并查询规格表中的数量.价格等,为了sql重用性,利用 association 节点 查询 结果并赋值报错 商品表的mapper文件为Gooo ...

随机推荐

  1. JavaScript的DOM对象

    HTML DOM (文档对象模型) 当网页被加载时,浏览器会创建页面的文档对象模型(Document Object Model). HTML DOM 模型被构造为对象的树. HTML DOM 树 通过 ...

  2. SQL SERVER 触发器之After,Instead of

    [Ater](同for)先执行增删改操作,再执行触发器操作 [Instead of]直接只执行触发器里的 create trigger triggername on table_name for/af ...

  3. mysql以zip安装,解决the service already exists

    mysql以zip安装, mysqld -install 报错:​The service already exists ​ 原因是之前安装了以后卸载了,服务没删掉. 解决方法:​ sc query m ...

  4. Wincc用户登录VBS脚本

    在Wincc中为防止未知用户的误操作,在操作性按钮以及图符等设备操作面板,在组流程图时,需设置用户权限,只有符合权限的用户才可以进行操作.所以在流程图界面需设置系统用户登录界面.登录操作可以选择按钮或 ...

  5. Django框架(二)

    四.Django简介 1.MVC与MTV模型 MVC Web服务器开发领域里著名的MVC模式,所谓MVC就是把Web应用分为模型(M),控制器(C)和视图(V)三层,他们之间以一种插件式的.松耦合的方 ...

  6. 3、简单了解Angular应用的启动过程

    首先,了解一下目录结构: 然后,简明扼要的说一下应用的启动过程: 1.首先找到main.ts(模块启动入口),main.ts去找到app中的根模块app.module.ts 2.根模块app.modu ...

  7. day10_python_1124

    认知: 随着年龄阅历的变化而变化.01 去年内容回顾 *args **kwargs: 万能参数,动态参数 * 魔性用法: 函数的定义时,* ** 聚合. 函数的执行时,* ** 打散. 形参顺序: 位 ...

  8. 第三视角Beta答辩总结

    第三视角Beta答辩总结 博客链接以及团队信息 组长博客链接 成员信息(按拼音排序) 姓名 学号 备注 张扬 031602345 组长 陈加伟 031602204 郭俊彦 031602213 洪泽波 ...

  9. python mysql and ORM

    http://www.cnblogs.com/alex3714/articles/5950372.html 9. ORM sqlachemy学习 http://www.cnblogs.com/alex ...

  10. 云硬盘性能测试工具FIO介绍

    一.云硬盘的性能衡量指标 云硬盘的性能指标一般通过以下几个指标进行衡量 IOPS:每秒的读写次数,单位为次(计数).存储设备的底层驱动类型决定了不同的IOPS 总IOPS:每秒执行的I/O操作总次数 ...