SqlServer2012——Select,分组,排序、插入

Easter79
• 阅读 738

1、select 简单语句

--select语句
select 12*13
--select子句

select 12*13 AS result
--select子句,可以将结果保存在result中
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

select * From table_name
--查询table_name所有信息

select name From table_name
--查询table_name表中name

select name as 学生姓名 From table_name
--查询table_name表中name且列名字以“学生姓名”显示

select name,Gender,Address From table_name
--查询table_name的姓名,性别,地址
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

select distinct name From table_name
--查询table_name的姓名且去除重复信息(此例时去除重复name)

2、设置查询条件

select * From table_name where name='张三'
精确查询

select * From table_name where name='张三' AND Gender='女'
精确查询 需要同时满足name='张三' 和 Gender='女'

select * From table_name where name='张三' OR Gender='女'
精确查询 满足name='张三' 和 Gender='女'任一条件就可

select * From table_name where Age>18 and Age<=45
精确查询 满足任一条件就可
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

select * From table_name where Address like '河南%'
精确查询 %为通配符,like用于模糊查询,此语句满足以河南开头的住址

select * From 成绩查询 where 考试编号='0802' AND (分数  between 90 and 95)
--查询考试编号为0802且 分数位于90~95之间的分数

select * From 成绩查询 where 考试编号='0802' AND (分数  % 5=0)
--查询考试编号为0802且 分数除以5的余数为0(求余是0)

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
select * From 成绩查询 where 考试编号='0802' AND 分数 in (85,86,87,90)
--查询考试编号为0802且 分数是85(86或87或90)

select * From 成绩查询 where 考试编号='0802' AND 分数 not in (85,86,87,90)
--查询考试编号为0802且 分数不是85、86、87、90
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

3、排序

select * From table_name where 考试编号=‘0801’
order by 分数
-->查询考试编号为0801的成绩,按分数默认(升序)排序

select * From table_name where 考试编号=‘0801’
order by 分数 ASC
-->查询考试编号为0801的成绩,按分数  升序  排序

select * From table_name where 考试编号=‘0801’
order by 分数 DESC
-->查询考试编号为0801的成绩,按分数默认  降序  排序

select * From table_name where 考试编号=‘0801’
order by 分数 DESC,学生编号 ASC(可不写)
-->查询考试编号为0801的成绩,按分数默认  降序  排序,(成绩相同的)学生编号按  升序  排序

4、使用函数

select * From 成绩查询 where 考试编号='0801' AND 课程编号='2'
--查询考试编号='0801' AND 课程编号='2'的成绩查询表

select Max(分数) From 成绩查询 where 考试编号='0801' AND 课程编号='2'
--查询考试编号='0801' AND 课程编号='2'的成绩查询表的最高分数

select Min(分数) From 成绩查询 where 考试编号='0801' AND 课程编号='2'
--查询考试编号='0801' AND 课程编号='2'的成绩查询表的最低分数

select AVG(分数) From 成绩查询 where 考试编号='0801' AND 课程编号='2'
--查询考试编号='0801' AND 课程编号='2'的成绩查询表的平均分数

select SUM(分数) From 成绩查询 where 考试编号='0801' AND 课程编号='2'
--查询考试编号='0801' AND 课程编号='2'的成绩查询表的求和
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

select top 3 分数 From 成绩查询 where 考试编号='0801' AND 课程编号='2'
order by 分数 DESC
--top函数:查询考试编号='0801' AND 课程编号='2'的成绩查询表的前三个数据并降序排列(前三名)

5、分组

select 课程编号,AVG(分数) From 成绩查询 where 考试编号='0801' Group by 课程编号
--查询考试编号为0801且以课程编号分组的平均成绩

SqlServer2012——Select,分组,排序、插入

注意分组的group的关键字rollup和cube

select 课程编号,AVG(分数) From 成绩查询 where 考试编号='0801' Group by rollup(课程编号)
--查询考试编号为0801且以课程编号分组的平均成绩,且最后有个总成绩的平均值

select 课程编号,AVG(分数) From 成绩查询 where 考试编号='0801' Group by cube(课程编号)
--查询考试编号为0801且以课程编号分组的平均成绩,且最后有个总成绩的平均值

SqlServer2012——Select,分组,排序、插入

千万注意rollup和cube的区别

select 考试编号,课程编号,AVG(分数) From 成绩查询 Group by 考试编号,课程编号
--查询考试编号,课程编号和课程编号且以此分组的平均成绩,

select 考试编号,课程编号,AVG(分数) From 成绩查询 Group by rollup(考试编号,课程编号)
--查询考试编号,课程编号和课程编号且以此分组的平均成绩,且以考试编号进行汇总,后面有总汇总

select 考试编号,课程编号,AVG(分数) From 成绩查询 Group by cube(考试编号,课程编号)
--查询考试编号,课程编号和课程编号且以此分组的平均成绩,且以课程编号进行汇总,后面有总汇总

SqlServer2012——Select,分组,排序、插入

6、Having子句

select 考试编号,课程编号,AVG(分数) From 成绩查询 Group by 考试编号,课程编号
order by 考试编号
--查询考试编号,课程编号和课程编号且以此分组的平均成绩,

select 考试编号,课程编号,AVG(分数) From 成绩查询 Group by 考试编号,课程编号
Having AVG(分数) >=90
order by 考试编号
--查询考试编号,课程编号和课程编号且以此分组的平均成绩,增加having条件

SqlServer2012——Select,分组,排序、插入

7、插入语句

Insert,插入数据,手动指定

Insert
Insert into table_name VALUES('xx','xxx'......)
--不写列,代表向表中全部的列都插入数据
例如:
Insert into 学生信息 VALUES('2019100101','李白',’男‘,’1999-10-21‘,'汉','河南郑州')

Insert into table_name (column1,column2...) VALUES('xx','xxx'......)
Insert into 学生信息 (学号,姓名,地址) VALUES('2019100101','李白','河南郑州')

Insert......Select:向数据表中插入从其他地方获取的值

语法:
Insert table_name [column_list]
select column
From table_list
Where search_condirions

例子:
Insert 学生信息1
select * From 学生信息

或者
Insert 学生信息1
select * From 学生信息 
where 地址 like ’%郑州‘

SELECT......INTO

--语法
Select <select_list>
Into new_table
From {<table_name>}
where <search_condition>
--这么做或新建一个表,把查询结果放到新表当中
--例子
select * 
into #学生信息2
from 学生信息 
where 性别='男'
--新建表就是不希望查询中新建实例表 

7、改语句:Update

---语法
Update [top] {table_name|view_name}
Set
{column_name{expression|DEFAULT|NULL}|@variable=expression}
where {search_condition}

--例子
Update 学生信息
set 姓名='杜甫'
where 学号='2019100101'

Update 学生信息
set 姓名='杜甫',出生日期='2000-8-9'
where 学号='2019100101'

update中使用From子句

update 学生信息
set s_sex=b.性别,s_address=b.家庭住址
from 学生信息 a join stuudent b on a.s_name = b.姓名
whhere b.性别='女'

8、删除语句:Delect

--语法
Delete From <table_name>
where <search_condition>

--例子:
delete From table_name
--或者
delete * From table_name
--删除所有行

delete From table_name
whhere 学号='2019-10010'
点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
待兔 待兔
3个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Jacquelyn38 Jacquelyn38
3年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
Stella981 Stella981
3年前
KVM调整cpu和内存
一.修改kvm虚拟机的配置1、virsheditcentos7找到“memory”和“vcpu”标签,将<namecentos7</name<uuid2220a6d1a36a4fbb8523e078b3dfe795</uuid
Wesley13 Wesley13
3年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Wesley13 Wesley13
3年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Stella981 Stella981
3年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
9个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这
Easter79
Easter79
Lv1
今生可爱与温柔,每一样都不能少。
文章
2.8k
粉丝
5
获赞
1.2k