SQL课堂笔记

--注释

公司里一般而是用绝不重复的guid()做主键(web项目不常用)

如null参与运算,结果都是null

在数据库中创建索引能提高查询效率,)只在经常要检索的字段创建索引)

sql查询null的数据

selsct * from table

where name is null

查询年龄介于20到30的数据

selsct * from table

where age between 20 and 30

查询年龄是20,22,32,46的数据

selsct * from table

where age in(20,22,32,46)

查询年龄大于20的数据。按升序排序  DESC:降序  ASC:升序

selsct top 3 * from table

where age>20        //先条件后排序,order by必须在where语句之后

order by age ASC

根据年龄进行分组,并计算出每个年龄的人数

select age ,count(*) from table

group by age

查询出来的数据根据年龄进行分组,并计算出每个年龄的人数,并计算出同年龄的平均工资,只显示同年龄人数大于1的

select age ,avg (工资),count(*) from table

group by age

having count(*)>1    //having对分组后的信息过滤,只能用select中的列

子查询

select top 3 * from table

where 主键 not in (select top 5 工资 from table order by 工资 desc)

order by 工资 desc

修改表结构 增加字段

alter table 表名 add 列名 数据类型

去重复查询

select tistinct 工资,姓名 from table 针对显示的整行一样则不重复

union 将两个查询结果合并到一起,上下两个数据类型要相容,默认去掉重复数据

select 姓名,年龄 from table1

union )这里加all则不去重复,显示全部)

select 姓名,年龄 from table2

)可多行合并)

sql 函数

ABS():求绝对值

CEILING))舍入到最大整数

floor))舍入到最小整数

round)要修改的数,取小数点后几位)四舍五入

len)计算字符串长度)

lower()upper()装换大小写

ltrim))字符串左空格去掉

rtrim))字符串右空格去掉,去两边则嵌套两函数

substring()(字符串,从哪截取,截取长度是)

转换类型函数

cast(‘123‘ as int)

convert(datetime.‘2012-01-01‘)

select isnull(字段,‘名字‘) from table   --将字段中的null换成指定名字

日期函数

getdate))取当前日期

dateadd)单位,数量,待计算日期)

dateadd)month,-8,date)为计算日期date的8个月之前的日期

datediff(单位,开始日期,结束日期)计算两个日期之间的差额

datepart)单位,日期)返回日期的特定部分

统计每年入职的员工人数

select datepart)year,入职时间) count)*)from 表

group by datepart)year,入职时间)

case 函数用法:

select 名字

)

case 编号

when 1 then ‘用户‘

when 2 then ‘会员‘

else ‘未知’

end

) as 客户类型

from 表名

select o.no,c.name,c.age

form Table1 as o join Table2 as c on o.id=c.id

where c.age>=20;

子查询

--单列子查询

select * from table

where age>(select min(age) from table)

sql分页

select * from

(

select row_number() over(order by Fsalary desc) as rownum,

* form table

) as e1

where e1.rownum>=3 and e1.rownum<=5

【SQL 经典习题】

表中有ABC三列,用SQL语句实现:当A列大于B列时选择A列否则选择B列,

当B列大于C列是选择B列否则选择C列。

select)case when a>b a else b end),

(case when b>c b else c end)

from table

在列“客户类型”中显示,当编号等于1的时候显示‘用户’,

当编号等于2的时候显示‘会员’,其他编号显示‘未知’

select name

)

case

when 工资<2000 then ‘低收入‘

when 工资>2000 and 工资<5000 then ‘中等收入‘

else ‘高收入’

end

)

from table

--查询通话时长前五条记录

select top 5 * from table

order by DateDiff(second,StartDateTime,EndDateTime) desc

--输出所有数据中拨打长途号码)0开头)的总时长

select sum(datediff(second,StartDateTime,EndDateTime)) from table

where tellnum like ‘0%‘

--输出本月通话总时长最多的前三名呼叫员编号

select top 3 sum(second,StartDateTime,EndDateTime)callernumber from table

where datediff(month,StartDateTime,getdate  )=0;

group by CallerNumber

order by sum(datediff(second,StartDateTime,EndDateTime)) desc

--输出本月拨打电话次数最多的前三个呼叫员的编号

select top 3 CallerNumber from table

where datediff(month,StartDateTime,getdate  )=0;

group by CallerNumber

order by Count(*) desc

--输出所有数据的拨号流水)呼叫员编号,对方号码,通话时长),并且在最后一行添加总呼叫时长,汇总【市总】【长总】

select CallerNumber,tellnum,DateDiff(second,StartDateTime,EndDateTime)

form table

union all

select N‘汇总‘,

Convert(varchar(50),sum((

case

when tellnum like ‘0%‘ then DateDiff(second,StartDateTime,EndDateTime)

else 0

end

))),

sum((

case

when tellnum not like ‘0%‘ then DateDiff(second,StartDateTime,EndDateTime)

else 0

end

))

from table

SQL课堂笔记,布布扣,bubuko.com

时间: 2024-08-03 11:13:31

SQL课堂笔记的相关文章

SQL课堂笔记--查询表1

2017/11.10 SQL的主要功能: 1.数据定义 2.数据查询 3.数据操作 4.数据控制功能(了解)  SQL语言的动词: 数据定义:create,drop, alter 数据查询:select 数据操作:insert,update,deledte 数据控制:crant,revoke 数据查询语句的基本格式:  select[distinct] 目标列      //distinct去掉记录中的重复值  from 基本表(或视图)  [where 条件表达式]  [group by 列名

SQL课堂笔记--多表查询

2017.11.14 二:最基础的连接查询----多表查询 1.使用内部连接  内部连接也叫自然连接,最常见的连接形式   语法:     select 选择列表 from 表名1 ,表名2 where 表名1.列名1=表名2.列名2         或select 选择列表 from 表名1 join 表名2 on 表名1.列名1=表名2.列名2 例1:查询每个学生及其选修课程情况:  select student.*,sc.* from student,sc where student.sn

SQL课堂笔记--聚合函数

2017.11.13 聚合函数: COUNT(*)统计表中元组个数 COUNT(属性名)统计一列中列值的个数 //不统计空值 SUM计算一列值的总和(此列必须是数值行) AVG计算一列的平均值(此列必须是数值行) MAX求一列值中的最大值 MIN求一列值中的最小值    元组:每一条数据  例1.求计算机专业学生的平均年龄:  select avg(sage) as 平均年龄 from student where sdept='计算机'  例2.统计学校共开设课多少们课程:  select co

SQL课堂笔记--管理表

2017.11.09 1.使用T-SQL语句显示表的信息,调用系统的存储过程 sp_help (student)表名2.修改表的结构 增加列:  alter table 表名  add 列名 列的描述 删除列:  alter table 列名  drop column 列名 重命名表名:  use 数据库名  go  sp_rename 'old_table name','new_table name',('object')可写可不写 注释:  单行注释 --  多行注释/*     */ 3.

SQL课堂笔记--存储过程和触发器

---恢复内容开始--- 2017.11.21                  存储过程和触发器   1.存储过程的作用 当SQL server 创建应用程序时,可以用两种方法存储和执行程序: 1).将程序存储在本地,然后创建SQL server 发送命令并处理结果的应用程序  2).将程序以存储过程的形式存储在SQL Server服务器中,然后创建执行存储过程并处理结果的应用程序.SQL server推荐使用这种  2.存储过程(Store Procedure)是一组为了完成特定功能的T-S

SQL课堂笔记--嵌套查询

2017.11.15六:嵌套查询 嵌套查询概述:  一个select-from-where 语句称为一个查询块  将一个查询块嵌套在另一个查询块的where子句或having短语的条件中的查询称为嵌套查询   例1:查询选修了2号课程得学生姓名:  内连接:select sname from student,sc where student.sno=sc.sno and cno=2        或:select sname from student where sno in   --外层查询/

九章算法系列(#2 Binary Search)-课堂笔记

前言 先说一些题外的东西吧.受到春跃大神的影响和启发,推荐了这个算法公开课给我,晚上睡觉前点开一看发现课还有两天要开始,本着要好好系统地学习一下算法,于是就爬起来拉上两个小伙伴组团报名了.今天听了第一节课,说真的很实用,特别是对于我这种算法不扎实,并且又想找工作,提高自己的情况. 那就不多说废话了,以后每周都写个总结吧,就趁着这一个月好好把算法提高一下.具体就从:课堂笔记.leetcode和lintcode相关习题.hdu和poj相关习题三个方面来写吧.希望自己能够坚持下来,给大家分享一些好的东

Oracle之PL/SQL学习笔记

自己在学习Oracle是做的笔记及实验代码记录,内容挺全的,也挺详细,发篇博文分享给需要的朋友,共有1w多字的学习笔记吧.是以前做的,一直在压箱底,今天拿出来整理了一下,给大家分享,有不足之处还望大家批评指正. PL/SQL定义:PL/SQL是由Oracle开发,专门用于Oracle的程序设计语言. PL---Procedural Language. SQL—Structure QueryLanguage.PL/SQL包括过程化语句和SQL语句     PL/SQL的单位:块. 一个块中可以嵌套

2017年5月12号课堂笔记

2017年5月12号 星期五 空气质量:轻度污染(昨天的北风转今天的南风) 内容:html表格的基本使用,表格跨行跨列,高级表格,播放音乐,播放视频,网页布局,iframe内联框架: 文本框,密码框,单选按钮,复选框,下拉框  备注:周日晚想起来补上的周五课堂笔记(一带一路今天开会天气好晴朗) 一.html表格的基本使用 模仿老师代码: <!DOCTYPE html><html><head lang="en"> <meta charset=&q