SqlServer 学习笔记
随机函数
select rand()
declare @age int
set @age = rand()*100
select @age
数据类型转换
declare @birthday datatime
set @birthday = getdate()
select convert (varchar,@birthday)
时间函数
select getdate()
select convert(varchar(4),Year(getdate()))
select dateadd(dd,2(getdate())) 日
select dateadd(mm,2(getdate())) 月
select dateadd(yy,2(getdate())) 年
select datediff(day,'2005-3-4',(getdate())) 计算给定日期和现在日期相差天数
流程控制语句
判断语句
if 条件…… else……
case 条件 when 5 then ……
when 6 then……
else …… end
case when @scroe<60 then ....
循环 while (条件)
begin
……
end
实例:
declare @time int, @a varchar(100) set @time=0 set @a='*' while (@time<20) begin print @a set @a+='*' set @time+=1 end
动态构造SQL语句
declare @tableName nvarchar(20)
set @tableName='T'+convert(varchar(4),Year(getdate()))+'年'+convert(varchar(2),Month(getdate()))+'月'+convert(varchar(2),day(getdate()))+'日'
execute (' create table ' +@tablename+' (studentid int, studentName nvarchar(10)) ')
过滤数据
使用比较操作符 = > < >= <= <>
使用字符比较符 like
% 0个或多个字符串
—任何单个的字符
【】在指定区域或集合内的任何单个字符
【^】不在指定区域或集合内的任何单个字符
select * from tsudent where sname like '高%'
select * from tstudent where sname like '_[明,宇]_'
查询未知的值
select * from tstudent where class is null --查找班级为空的学生
select * from tstudent where class is not null --查找班级不为空的学生
格式化结果集
排序
asc 升序 desc降序
实例: select * from tscore order by mark desc
去重 distinct
select distinct class from tstudent
多表查询
内连接 select a.*,b.* from student a join score b on a.studentid=b.studentid
左右连接 select a.*,b.* from student a left (right)join score b on a.studentid=b.studentid
数据分组和汇总
TOP n 列出前n行记录
select top 5 * from tstudent order by Birthday
使用聚集函数
count(*) count(列) sum min max avg
select count(*) from tstudent
统计表中class列不为空的记录数量 select count(class) from tstudent
select avg(mark) from tscore where subjectid=1
group by 使用例子
select Class,count(*) from tstudent group by Class
select sname,avg(mark) from tscore a join tstudent b on a.studentid=b.studentid group by sname having avg(mark)>77 --having 相当于条件
多列汇总
select subjectname,class,sum(mark) from tstudent a join tscore b on a.studentid=b.studentid join tsubject c on b.subjectid=c.subjectid group by subjectname,class with rollup -- 联合使用group by 子句和操作符rollup,将两列的详细信息和分组汇总
联合使用cube,将对列出subject那么,class两列进行汇总
select subjectname,class,sum(mark) from tstudent a join tscore b on a.studentid=b.studentid join tsubject c on b.subjectid=c.subjectid group by subjectname,class with cube
查找网络管理课程的学生成绩
select studentid,subjectname, mark from tscore a join tsubject b on a.subjectid=b.subjectid where subjectname='网络管理'
另一种写法
select studentid, sname from tstudent where studentid in (select studentid from
(select studentid,avg(mark) trt from tscore group by studentid having avg(mark)<60) as t1)
数据增删改
插入
insert tstudent values('0000001902','hanligang','男','1414121548554236565','1984-5-12','3234@qq.com','网络班',getdate())
insert tstudent (studentid,sex,name) values ('454514545','man','jkjdkf') -- 插入部分数据
insert tnetwork select * from tstudent where class='网络班' --将查询的数据插入现有表中
select studentid,sname,sex,email into TDev from tstudent where calss='网络班' --将查询的记录创建新的表
删除
delete tstudent where studentid='24234234'
delete tstudent where birthday <'1982-1-1'
delete tstudent where studentid in (select distinct studentid from tscore where mark<60)
delete tstudent where studentid in (select distinct a.tstudentid from tstudent a join tscore b on a.studentid=b.studentid where mark<60)
等价于 delete tstudent from tstudent a join tscore b on a.studentid=b.studentid where mark<60
更新
update tstudent set sname='hanlignag' where studentid='000000569'
update tscore set mark=mark+5 from tscore a join tsubject b on a.subjectid=b.subjectid where b.subjectname='软件测试‘ and mark<80
SqlServer 学习笔记的更多相关文章
- SQLServer学习笔记系列6
一.写在前面的话 时间是我们每个人都特别熟悉的,但是到底它是什么,用什么来衡量,可能很多人会愣在那里.时间可以见证一切,也可以消磨一切,那些过往的点点滴滴可思可忆.回想往年清明节过后,在家乡的晚上总能 ...
- SQLServer学习笔记系列5
一.写在前面的话 转眼又是一年清明节,话说“清明时节雨纷纷”,武汉的天气伴随着这个清明节下了一场暴雨,整个城市如海一样,朋友圈渗透着清明节武汉看海的节奏.今年又没有回老家祭祖,但是心里依然是怀念着那些 ...
- SQLServer学习笔记系列3
一.写在前面的话 今天又是双休啦!生活依然再继续,当你停下来的时候,或许会突然显得不自在.有时候,看到一种东西,你会发现原来在这个社会上,优秀的人很多,默默 吃苦努力奋斗的人也多!星期五早上按时上班, ...
- SQLServer学习笔记系列2
一.写在前面的话 继上一次SQLServer学习笔记系列1http://www.cnblogs.com/liupeng61624/p/4354983.html以后,继续学习Sqlserver,一步一步 ...
- SQLServer学习笔记<>相关子查询及复杂查询
二.查询缺少值的查询 在这里我们加入要查询2008年每一天的订单有多少?首先我们可以查询下订单表的订单日期在2008年的所有订单信息. 1 select distinct orderdate,coun ...
- SQLServer 学习笔记之超详细基础SQL语句 Part 12(The End)
Sqlserver 学习笔记 by:授客 QQ:1033553122 -----------------------接Part 11------------------- 现在,我们希望从 " ...
- SQLServer 学习笔记之超详细基础SQL语句 Part 11
Sqlserver 学习笔记 by:授客 QQ:1033553122 -----------------------接Part 10------------------- DECLARE @myavg ...
- SQLServer 学习笔记之超详细基础SQL语句 Part 10
Sqlserver 学习笔记 by:授客 QQ:1033553122 -----------------------接Part 9------------------- 删除约束的语法 ALTER T ...
- SQLServer 学习笔记之超详细基础SQL语句 Part 9
Sqlserver 学习笔记 by:授客 QQ:1033553122 -----------------------接Part 8------------------- 3 范式的概念 第一范式的目标 ...
- SQLServer 学习笔记之超详细基础SQL语句 Part 8
Sqlserver 学习笔记 by:授客 QQ:1033553122 -----------------------接Part 7------------------- --触发器str_trigge ...
随机推荐
- go语言实战教程:实战项目资源导入和项目框架搭建
从本节内容开始,我们将利用我们所学习的Iris框架的相关知识,进行实战项目开发. 实战项目框架搭建 我们的实战项目是使用Iris框架开发一个关于本地服务平台的后台管理平台.平台中可以管理用户.商品.商 ...
- ELK(+Redis)-开源实时日志分析平台
################################################################################################### ...
- Ubuntu16.04安装Nvidia显卡驱动+Cuda8.0+Cudnn6.0
一.安装Nvidia显卡驱动(gtx1050ti) 参考链接:Ubuntu16.04.2 LTS 64bit系统装机记录中的显卡驱动安装部分. 二.安装Cuda8.0 1.确定自己的系统信息,以Ubu ...
- POJ1046 Color Me Less
题目来源:http://poj.org/problem?id=1046 题目大意: 在RGB颜色空间中,用下面的公式来度量两个颜色值的距离. 现给出16个RGB表示的颜色,和一些用于测试的颜色,求被测 ...
- CF C. Plasticine zebra (思维)
题意: 是输入一个只有'w','b'的字符串,可以对他的任意位置切割成两个子串,切割后的右边的子串翻转后再和左边的子串拼起来会得到一个新的字符串,操作次数不限,问能得到的字符串中wb交替出现的最大的长 ...
- jap的教程
第一个资料: https://wenku.baidu.com/view/5ca6ce6a1eb91a37f1115cee.html 第二个资料 :http://www.yiibai.com/jpa ...
- jdbc 操作步骤详解
package com.itheima.test; import java.sql.Connection; import java.sql.DriverManager; import java.sql ...
- Hive 基本语法操练(三):分区操作和桶操作
(一)分区操作 Hive 的分区通过在创建表时启动 PARTITION BY 实现,用来分区的维度并不是实际数据的某一列,具体分区的标志是由插入内容时给定的.当要查询某一分区的内容时可以采用 WHER ...
- mysql服务器查询慢原因分析方法
mysql数据库在查询的时候会出现查询结果很慢,超过1秒,项目中需要找出执行慢的sql进行优化,应该怎么找呢,mysql数据库提供了一个很好的方法,如下: mysql5.0以上的版本可以支持将执行比较 ...
- babel7中 preset-env 完全使用
babel7中 preset-env 完全使用 const presets = [ ['@babel/env', { // chrome, opera, edge, firefox, safari, ...