易错点

Where需要放在from语句之后;where中不能出现聚合函数(就是能够将几行一列合并为一行一列的函数,比如max,min,avg,count());但是可以出现其他,如比较符,getdate(0之类的哈

2,筛选条件中需要用到聚合函数的话,不能用where子句,此时考虑是否可以采用having,但是having只能够和group by 结合使用,其使用的对象必须是前面select出的参与分组的哪些列

3,group by子句必须放在where子句的后面,并且没有在group by 子句中出现的列是不能够出现在select中的,因此select中的列要么在group by中出现过,要么就是聚合函数,此时聚合函数作用的对象只在分组内部,对表中的列按照分组后的结果进行处理(因为多行聚合为一行之后,只有聚合函数才能同样返回一行的结果)

2,Like,=后的字符串的单引号别忘记了,一看到前几名,后几名,别忘记加上ofrderby,并且这个子句一般是最后一句

4,感觉执行的时候大概是这么一个顺序,先看from的对象,然后查看where子句,然后是groupby,的处理,之后是orderby 的排序,最后才返回select来查

不过书写的顺序

select

from

where

groupby

orderby

或者

select

from

groupby

having

5,要将多个结果集进行合并,使用union或者union all,此时要求列数相等,第一个select定义的是列明,类型相容;查询的结果集来自多个有关联的表采用join on(这些表之间存在类似于外键的概念)

创建和删除表

修改表

主键选择

数据的update

以及In(集合)between  and

数据检索(别名)

Select之后有几个字段,得到的结果集就有几个列;如果select 检索不和表关联的字段的时候,相当于计算函数或者表达式的值。

数据汇总

数据排序

通配符过滤

空值处理

SELECT userinfo.id, user_name, role, adm_regionid, IFNULL(region_name,0) as region_name, create_time
FROM userinfo
LEFT JOIN region ON userinfo.adm_regionid = region.id

数据分组

Having

取得特定条数

去掉重复数据

distinct

联合结果集;

(联合之后的列名是头一个selsect对应的列名,如果列数不相同,那么只有自己写一个相同类型的数据如上条语句那样给人工补全;此时补全的表达式不在是雷鸣,而是前一个sql语句对应字段下面的取值)

数据库函数

数字函数

字符串函数

如果要去除两边的空格,这么来做

LTRIM(RTRIM(“     aa      ”));

日期函数

Hour hh 小时

Second 秒钟

类型转换函数

当然转换的前提是这些类型确实可以转换

空值处理函数

流程函数

几条案例

查询员工的最高最低年龄,得到一个结果表

其中的员工最高最低年龄,并非原来的表中已经具有的列,所以需要注意select语句不仅仅是在已经有的数据中检索,还能有其他用途;如果与表无关联的时候,就是计算表达式或者函数的值作为这一列的值输出(不是列名)

在最后一行加上合计

计算入职的年份;并根据结果进行排序

取出当前日期的年份

取出每一年入职员工的人数

两列声称三个列

Select 单号,

(Case 金额

When 金额>0 then 金额

Else 0

As 收入),

(case 金额

When 金额<0 then 金额

Else 0

As 支出)

From tableName

《这个例子的特点是行数不变,只是将其中原来的一列拆分为两列,并不存在函数的聚合》

计算比赛的胜负场次

select Name,

sum(case Score

when N’胜’ then 1 else 0 )as 胜,

sum(case Score

when N’负’ then 1 else 0 )as 负,

from T_Score

group by Name

综合练习

1,  取得通话时间最长的3条记录

SELECT   TOP (3) Id, CallerNumber, TelNumber, StartDateTime, EndTime, DATEDIFF(second, StartDateTime, EndTime)

AS 间隔

FROM      T_call

ORDER BY 间隔 DESC

如果不想要多增加一个字段,可以

SELECT   TOP (3) Id, CallerNumber, TelNumber, StartDateTime, EndTime,

FROM      T_call

ORDER BY DATEDIFF(second, StartDateTime, EndTime)     DESC

2,  输出所有数据中拨打长途号码的总时长,like,sum

SELECT   SUM(DATEDIFF(second, StartDateTime, EndTime)) AS Expr1

FROM      T_call

WHERE   (TelNumber LIKE '0%')

3,  输出本月通话总时长最多的前两名话务员的编号以及对应的通话总时

SELECT   TOP (2) CallerNumber, SUM(DATEDIFF(second, StartDateTime, EndTime)) AS 间隔

FROM      T_call

WHERE   (DATEDIFF(month, StartDateTime, GETDATE()) = 0)

GROUP BY CallerNumber

ORDER BY 间隔 DESC

4,  输出本月拨打电话次

5,  数最多的前两名呼叫员的编号

SELECT   CallerNumber, COUNT(*) AS 通话次数

FROM      T_call

WHERE   (DATEDIFF(month, StartDateTime, GETDATE()) = 0)

GROUP BY CallerNumber

ORDER BY 通话次数 DESC

6,  汇总室内通话总时长和长途通话总时长

(挺麻烦的,这里暂时省略,可以参考视频)

索引

多个表之间的查询Join

(这貌似可以解决自己微博与微博报之间多对一的关系,而且在一个表对应的dataset中也可以查询另外的表中的数据)

子查询(子查询最好具有一个别名)

其中vs内置的row_number()函数是对结果集进行从1依次进行编号,但是这是个开窗函数,不能出现在where子句中,只能够在select或者order by中进行使用,因此一般采用子查询

其实上面限制结果集进行分页的查询如果写成这个样子就很容易理解

Select row_number() over(order by Fsalary desc) as rownum,fNumber,FName,FAge from T_employee where rownum>=1 and rownum<=5不过由于上面所说的语法的限制这种格式不能运行,因此套用了子查询

(有这么一条规律,如果select语句from的对象是子查询的话,如果是单个值的子查询,得到的结果只能是单个值,因此一般也不会放在from子句中,如果是多行一列的子查询,相当于一个集合,选择的对象只能是这个集合中的一个,如果是多行多列的子查询,那么就把它看做一张新表来写对应的select语句)

在插入数据的同时希望能够得到插入数据自动生成的id

方法一:可以使用out

方法二:可以使用这个全局变量select @@

转载于:https://www.cnblogs.com/bobodeboke/p/3179580.html

sql数据库相关语句相关推荐

  1. mysql的查询语句大全_sql语句(sql数据库查询语句大全)

    sql语句 结构化查询语言(StructuredQueryLanguage)缩写为SQL.结构化查询语言是一种数据库查询和编程语言,用于访问数据以及查询,更新和管理关系数据库系统: 程序功能 创建数据 ...

  2. SQL数据库基本语句

    SQL特点--> 1)综合统一.SQL是集数据定义.数据操作和数据控制于一体,语言峰峰统一,可独立完成数据库生命周期的所有活动. 2)高度非过程化.SQL语言是高度非过程化语言,当进行数据操作时 ...

  3. SQL数据库基本操作语句

    一.数据库及数据库表定义 1.创建基本表 create table <表名> (<列名><数据类型>[列级完整性约束条件] [,<列名><数据类型 ...

  4. 通用SQL数据库查询语句精华使用简介

    一. 简单查询 简单的Transact-SQL查询只包括选择列表.FROM子句和WHERE子句.它们分别说明所查询列.查询的表或视图.以及搜索条件等. 例如,下面的语句查询testtable表中姓名为 ...

  5. SQL数据库查询语句

    一.Select语句: select语句除了可以查看数据库中的表格和视图的信息外,还可以查看SQL Server的系统信息.复制.创建数据表.其查询功能强大,是SQL语言的灵魂语句,也是SQL中使用频 ...

  6. SQL数据库常用语句大全

    cmd环境下开启关闭数据库 以管理员身份运行命令提示符环境,启动数据库服务(其中MySQL57为数据库服务名,查找方法:右键我的电脑->管理->服务,):net start MySQL57 ...

  7. 易语言mysql复制表语句_易语言SQL数据库查询语句

    一.Select语句: select语句除了可以查看数据库中的表格和视图的信息外,还可以查看SQL Server的系统信息.复制.创建数据表.其查询功能强大,是SQL语言的灵魂语句,也是SQL中使用频 ...

  8. sql数据库监控语句

    --查找被阻塞进程 Select * from master..sysprocesses where dbid=9 and blocked > 0--查找阻塞头进程 select * from ...

  9. SQL数据库相关 FMDB框架的使用

    SQLite是一个开源的嵌入式关系数据库,它在2000年由D. Richard Hipp发布,它的减少应用程序管理数据的开销,SQLite可移植性好,很容易使用,很小,高效而且可靠. SQLite嵌入 ...

最新文章

  1. A100 GPU硬件架构
  2. Spring Aop 常见注解和执行顺序
  3. Linux 下Shell脚本删除过期文件
  4. Angular Service依赖注入的一个具体例子
  5. multi-thread handling for batch request
  6. 三星副会长李在镕启程赴美
  7. mysql二进制日志特点_MySQL二进制日志分析-概述篇
  8. 一个关于 UIPickerView 的 bug
  9. python输出unicode对应字符_python unicode字符串
  10. TeamView for Linux是这样实现的!
  11. 利用JDK发布webService实例
  12. python图像风格迁移_Python 超简单实现9种图像风格迁移
  13. ffmpeg批量转换ts为mp4
  14. python f检验 模型拟合度_模型评估指标(RMSE、MSE、MAE、R2准确率、召回率、F1、ROC曲线、AUC曲线、PR曲线)...
  15. oracle的oca证书,Oracle三大认证考试及其含金量解析
  16. SSM综合复习之MyBatis
  17. 7-24 程序改错题3 (5 分)
  18. 保姆级教程——将springboot项目部署到阿里云服务器(小白包会)
  19. 《了凡四训》读书总结
  20. 激光雷达+4D环绕成像雷达,新一轮「感知」军备竞赛开打

热门文章

  1. linux服务器数据转发,Linux云服务器如何使用iptables做流量转发?
  2. python2 urllib2,Python urllib2保持活着
  3. c语言中一百以内相乘的积,一百以内的加减乘除法游戏....
  4. 用python学编程_用Python学编程
  5. IDEA---Plugin ‘org.springframework.boot:spring-boot-maven-plugin:‘ not found
  6. python重复元素判定_Python实现判断给定列表是否有重复元素的方法
  7. JVM中对象如何在堆内存分配
  8. Kotlin极简教程:第9章 轻量级线程:协程
  9. python中object转str_python的id()函数介绍 python怎么将objectid转为str
  10. python查询字典里的多个key_Python:如何快速找到多个字典中的公共键(key)