SqlServer2012——Select,分组,排序、插入
1、select 简单语句
--select语句
select *
--select子句 select * 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> and Age<=
精确查询 满足任一条件就可
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ select * From table_name where Address like '河南%'
精确查询 %为通配符,like用于模糊查询,此语句满足以河南开头的住址
select * From 成绩查询 where 考试编号='' AND (分数 between 90 and 95)
--查询考试编号为0802且 分数位于90~95之间的分数 select * From 成绩查询 where 考试编号='' AND (分数 % 5=0)
--查询考试编号为0802且 分数除以5的余数为0(求余是0) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
select * From 成绩查询 where 考试编号='' AND 分数 in (85,86,87,90)
--查询考试编号为0802且 分数是85(86或87或90) select * From 成绩查询 where 考试编号='' AND 分数 not in (85,86,87,90)
--查询考试编号为0802且 分数不是85、86、87、90
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
3、排序
select * From table_name where 考试编号=‘’
order by 分数
-->查询考试编号为0801的成绩,按分数默认(升序)排序 select * From table_name where 考试编号=‘’
order by 分数 ASC
-->查询考试编号为0801的成绩,按分数 升序 排序 select * From table_name where 考试编号=‘’
order by 分数 DESC
-->查询考试编号为0801的成绩,按分数默认 降序 排序 select * From table_name where 考试编号=‘’
order by 分数 DESC,学生编号 ASC(可不写)
-->查询考试编号为0801的成绩,按分数默认 降序 排序,(成绩相同的)学生编号按 升序 排序
4、使用函数
select * From 成绩查询 where 考试编号='' AND 课程编号=''
--查询考试编号='' AND 课程编号=''的成绩查询表 select Max(分数) From 成绩查询 where 考试编号='' AND 课程编号=''
--查询考试编号='' AND 课程编号=''的成绩查询表的最高分数 select Min(分数) From 成绩查询 where 考试编号='' AND 课程编号=''
--查询考试编号='' AND 课程编号=''的成绩查询表的最低分数 select AVG(分数) From 成绩查询 where 考试编号='' AND 课程编号=''
--查询考试编号='' AND 课程编号=''的成绩查询表的平均分数 select SUM(分数) From 成绩查询 where 考试编号='' AND 课程编号=''
--查询考试编号='' AND 课程编号=''的成绩查询表的求和
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ select top 分数 From 成绩查询 where 考试编号='' AND 课程编号=''
order by 分数 DESC
--top函数:查询考试编号='' AND 课程编号=''的成绩查询表的前三个数据并降序排列(前三名)
5、分组
select 课程编号,AVG(分数) From 成绩查询 where 考试编号='' Group by 课程编号
--查询考试编号为0801且以课程编号分组的平均成绩
注意分组的group的关键字rollup和cube
select 课程编号,AVG(分数) From 成绩查询 where 考试编号='' Group by rollup(课程编号)
--查询考试编号为0801且以课程编号分组的平均成绩,且最后有个总成绩的平均值 select 课程编号,AVG(分数) From 成绩查询 where 考试编号='' Group by cube(课程编号)
--查询考试编号为0801且以课程编号分组的平均成绩,且最后有个总成绩的平均值
千万注意rollup和cube的区别
select 考试编号,课程编号,AVG(分数) From 成绩查询 Group by 考试编号,课程编号
--查询考试编号,课程编号和课程编号且以此分组的平均成绩, select 考试编号,课程编号,AVG(分数) From 成绩查询 Group by rollup(考试编号,课程编号)
--查询考试编号,课程编号和课程编号且以此分组的平均成绩,且以考试编号进行汇总,后面有总汇总 select 考试编号,课程编号,AVG(分数) From 成绩查询 Group by cube(考试编号,课程编号)
--查询考试编号,课程编号和课程编号且以此分组的平均成绩,且以课程编号进行汇总,后面有总汇总
6、Having子句
select 考试编号,课程编号,AVG(分数) From 成绩查询 Group by 考试编号,课程编号
order by 考试编号
--查询考试编号,课程编号和课程编号且以此分组的平均成绩, select 考试编号,课程编号,AVG(分数) From 成绩查询 Group by 考试编号,课程编号
Having AVG(分数) >=90
order by 考试编号
--查询考试编号,课程编号和课程编号且以此分组的平均成绩,增加having条件
7、插入语句
Insert,插入数据,手动指定
Insert
Insert into table_name VALUES('xx','xxx'......)
--不写列,代表向表中全部的列都插入数据
例如:
Insert into 学生信息 VALUES('','李白',’男‘,’1999-10-21‘,'汉','河南郑州') Insert into table_name (column1,column2...) VALUES('xx','xxx'......)
Insert into 学生信息 (学号,姓名,地址) VALUES('','李白','河南郑州')
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 学号='' Update 学生信息
set 姓名='杜甫',出生日期='2000-8-9'
where 学号=''
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'
SqlServer2012——Select,分组,排序、插入的更多相关文章
- mysql 分组排序前n + 长表转宽表
MySQL数据库优化的八种方式(经典必看) 建表 CREATE TABLE if not EXISTS `bb` ( `id` int not null primary key auto_increm ...
- Winform中GridView分组排序实现功能
由于客户最近要扩充公司的业务,之前基于Winform+web开发混合式的系统已经不能满足他们的需求,需要从新对系统进行分区处理. 考虑到系统模块里面用到的GridView视图比较多,我就结合了DevE ...
- mysql分组排序加序号(不用存储过程,就简简单单sql语句哦)
做前端好长时间了,好久没动sql了.在追一个喜欢的女孩,做测试的,有这么个需求求助与本屌丝,机会难得,开始折腾起来,配置mysql,建库,建表.... 一 建表 CREATE TABLE `my_te ...
- 一条Sql语句分组排序并且限制显示的数据条数
如果我想得到这样一个结果集:分组排序,并且每组限定记录集的数量,用一条SQL语句能办到吗? 比如说,我想找出学生期末考试中,每科的前3名,并按成绩排序,只用一条SQL语句,该怎么写? 表[TScore ...
- SQL语句分组排序,多表关联排序
SQL语句分组排序,多表关联排序总结几种常见的方法: 案例一: 在查询结果中按人数降序排列,若人数相同,则按课程号升序排列? 分析:单个表内的多个字段排序,一般可以直接用逗号分割实现. select ...
- oracle 分组排序函数
项目开发中,我们有时会碰到需要分组排序来解决问题的情况:1.要求取出按field1分组后,并在每组中按照field2排序:2.亦或更加要求取出1中已经分组排序好的前多少行的数据 这里通过一张表的示例和 ...
- oracle中分组排序函数用法 - 转
项目开发中,我们有时会碰到需要分组排序来解决问题的情况,如:1.要求取出按field1分组后,并在每组中按照field2排序:2.亦或更加要求取出1中已经分组排序好的前多少行的数据 这里通过一张表的示 ...
- MYSQL-实现ORACLE- row_number() over(partition by ) 分组排序功能
MYSQL-实现ORACLE- row_number() over(partition by ) 分组排序功能 由于MYSQL没有提供类似ORACLE中OVER()这样丰富的分析函数. 所以在MYSQ ...
- row_number() over (partition by....order by...)用法 分组排序
row_number() over (partition by....order by...)用法 分组排序 row_number() OVER (PARTITION BY COL1 ORDER BY ...
- hive 分组排序,topN
hive 分组排序,topN 语法格式:row_number() OVER (partition by COL1 order by COL2 desc ) rankpartition by:类似hiv ...
随机推荐
- TFS 解除独占锁定
cmd 进入Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE tf workspace /delete 工作区名;创建的用户 / ...
- JavaSE 文件递归之删除&获取文件夹文件夹中全部的以.jpg的文件的绝对路径
1.递归删除文件 假设一个文件夹以下还有子文件夹,进行删除的话会 报错,这个时候要使用递归的方式来删除这个文件文件夹中的全部文件以及文件夹 package cn.itcast.digui; impor ...
- Linux把查询结果写入到文本
在Linux命令模式下,可以将查询结果写入文件.大概有两种方式,增量写入和覆盖写入. 增量写入: #iostat -m >> /tmp/iostat.txt 覆盖写入: #iostat - ...
- CentOS 安装和配置 Mantis
Mantis是一个基于PHP技术的轻量级的开源缺陷跟踪系统,以Web操作的形式提供项目管理及缺陷跟踪服务.在功能上.实用性上足以满足中小型项目的管理及跟踪.更重要的是其开源,不需要负担任何费用. 1. ...
- Winform拖拽改变无边框窗体大小
大家在进行Winform开发过程中,很容易就可以完成一个窗口的布局工作,但现在的软件界面美化效果一个比一个好,很多软件都是无边框的,于是乎,你是不是也感叹:winform的带边框的窗体如此丑陋,我一定 ...
- mac 中安装redis 以及 安装php-redis扩展过程详细记录
1. 通过homebrew 安装 redis sodu brew install redis 2. 安装后执行开启redis,采用默认配置, 默认配置只有本地(127.0.0.1)可以访问.需要远程访 ...
- android通过DialogFragment实现时间选择
在android开发中,时间控件是不可或缺的一部分,特别是在设置个人生日或按时间进行搜索时都要用到.Android有内置的DatePicker和timePicker,使用起来也是相当的方便,既可以在布 ...
- WebDriver API——javascript的相关操作
有些时候webdriver是没法操作元素或浏览器的,这时候我们可以通过javascript来进行相关的操作,昨天在群里一个朋友定位一个显示框,总是无法定位点击,或者是点击无效,这个时候就可以用java ...
- H5与native有啥区别?
app测试,H5与native有啥区别? native是使用原生系统内核的,相当于直接在系统上操作.是我们传统意义上的软件,更加稳定. 但是H5的APP先得调用系统的浏览器内核,相当于是在网页中进行操 ...
- C++中对类的提前引用声明注意事项
//或许,友元是VC++6.0心里永远的痛,对于这个BUG我一直很介意.//注:这个程序在VC++6.0里是行不通的,在VS2008里是可以的.#include <iostream> #i ...