SqlServer数据库
文章平均质量分 61
.NET跨平台
比较认真。编程就是算法和数据结构,算法和数据结构是编程的灵魂。
展开
-
数据分析中常用的SQL语句
分组选择数据问题1:如何获得每个分组前n项结果?场景:假设有一个表,记录了学生所有科目的成绩,那么现在要取出每个科目分数最高的2位同学的考试成绩。表名为student_grade表中字段为:course_id,course_name, student_id, student_name, grade方法一:利用row_number()函数select course_id,course_name, student_id, student_name, grade, row_number() o转载 2021-11-20 16:51:37 · 415 阅读 · 0 评论 -
mssql sqlserver 添加表注释和添加列注释
摘要:下文讲述使用sql脚本对数据表或数据列添加注释(备注说明)的方法分享,如下所示:实验环境:sql server 2008 r2实现思路:使用系统存储过程sys.sp_addextendedproperty对表和列的相关属性进行设置,达到为数据表或数据列添加注释的目的--数据表添加注释的方法分享EXEC sys.sp_addextendedproperty @name = N'MS_Description',@value = N'数据表注释说明', @level0type = N'SCHE转载 2021-10-05 14:58:09 · 1743 阅读 · 0 评论 -
SQL统计语句总结(运用场景:运营分析,财务分析等)
-- 统计三月的每天的数据量select count(*),substr(t.date,1,10) from table t where t.date like '2010-03%' group by substr(t.date,1,10) ; --统计从5月19到6月29的数据量SELECT substr(a.feed_publish_time,1, 10) AS '日期', count(*) AS '医说数' FROM xm_feed a WHERE a.feed_publish_timeBE转载 2021-09-08 23:59:18 · 4508 阅读 · 0 评论 -
几道常见的SQL面试题,看你能答对几道?
收集了几道比较常见的SQL面试题,在不看底部参考答案的情况下,看自己能做对几道。用一条SQL语句 查询出每门课都大于80 分的学生姓名--方法一:select distinct name from table where name not in (select distinct name from table where fenshu<=80)--方法二:select name from table group by name having min(fenshu)>转载 2021-04-17 16:32:20 · 328 阅读 · 0 评论 -
SQL---关联子查询(correlated subquery)
关联子查询和普通子查询的区别在于:1,关联子查询引用了外部查询的列。2,执行顺序不同。对于普通子查询,先执行普通子查询,再执行外层查询;而对于关联子查询,先执行外层查询,然后对所有通过过滤条件的记录执行内层查询。语法:SELECT column1, column2FROM table1 AS outerWHERE column1 operator (SELECT column1, column2 FROM table2 WHERE expr1 = oute转载 2021-04-17 15:15:21 · 5169 阅读 · 1 评论 -
sqlserver之group by 与over函数
group by 函数主要用来对数据进行分组,over()函数则是一个“开窗函数”,它更多的是与聚合函数如:sum()、max()、min()、avg()、count()等函数以及排名函数如:row_number()、rank()、dense_rank()、ntile()函数结合使用。1.group by 函数原始数据如下,数据表名为hr.employeee对以上数据按照city字段进行分组,并计算了每组中存在的行数: select city,count(city)as n from hr.em转载 2021-04-17 14:04:41 · 1553 阅读 · 0 评论 -
【SqlServer】JSON函数
1 概述本篇文件将结合MSDN简要分析Sqlserver中JSON函数,主要包括ISJSON,JSON_VALUE,JSON_MODIFY,JSON_QUERY。2 具体内容2.1 JSON 函数使用本节中页面中描述的功能来验证或更改JSON文本或提取简单或复杂的值。有关在SQL Server中内置JSON支持的更多信息,请参阅JSON数据(SQL Server)。2.2 ISJSON测试字符串是否包含有效的JSON。2.2.1 例子2.3 JSON_VALUE从JS转载 2021-04-05 01:00:42 · 679 阅读 · 0 评论 -
SQL Server output子句用法 output inserted.id 获取刚插入数据的id
--插入数据,并返回刚刚插入的数据idINSERT INTO [soloreztest] ([name]) output inserted.id VALUES ('solorez')--执行结果:--id---------------5(1 行受影响)第二种方法:insert into table1 values(colvalue1,colvalue2)select ident_current('table1')第三种方法:insert into table1 values(c转载 2021-04-04 16:06:15 · 3360 阅读 · 1 评论 -
SQL 深入“了解“ sqlserver 表连接 join 及性能调优化
问题 :什么是内连接(inner)和外联结(outer)SQL server 表连接 (FROM--AND 法, JOIN -- ON 法)的区别.表连接及多表连接的SQL语句执行顺序,和性能调优.1.第一个问题,首先要明白如何使用JOIN 和 ON 关键字作表连接。申明:下文中所用的等价,可能指的是逻辑上的等价(即产生相同的结果集),也可能是执行顺序上的等价,甚至是所产生的执行计划或者执行效率等价。因为很多时候用户只要写普通的sql,而sql server 会跟据自己的优化 配置和执行计划转载 2021-04-04 15:51:44 · 2458 阅读 · 0 评论 -
SQL server 中设置CHECK约束
1、启动Management Studio,连接到数据库在对象资源管理器中展开你想选择的数据库并创建表2、创建好表后对表的数据类型等进行设置3、将设计好的表保存在表内对想设置CHECK约束的属性右击,在弹出的选项卡中选择CHECK约束4、在检查约束的窗口中点击添加在右侧的界面进行约束设置写入约束表达式关于约束表达式的3个例子:性别:只能填写’男’和’女’(字段名='男’or 字段名=‘女’)注意:单引号里的值可以为其他任何字密码:规定密码长度不能小于6位数(l转载 2021-04-01 22:40:34 · 9787 阅读 · 1 评论 -
sql语言中group by和case when及sum(case when)的结合使用
group by和case when结合使用如下示代码块,group by 按case when得到的列分组计算,且select时,select 中的case when 与group by中保持一致。select case when substr(upper(depend_name),1,4)='JCW_' then lower(substr(depend_name,5,length(depend_name))) else lower(depend_name)end as table_name,转载 2021-04-01 17:01:33 · 15295 阅读 · 1 评论 -
sql 统计常用的sql
统计常用的sql语句:今天的所有数据:select * from 表名 where DateDiff(dd,datetime类型字段,getdate())=0昨天的所有数据:select * from 表名 where DateDiff(dd,datetime类型字段,getdate())=17天内的所有数据:select * from 表名 where DateDiff(dd,datetime类型字段,getdate())<=730天内的所有数据:select * from 表名 where转载 2021-03-30 17:23:24 · 2766 阅读 · 1 评论 -
SQL统计——按照各种维度
在SQLserver中可以按照各种维度进行统计,实现与EXCLE一样强大的功能。--==========================--Blog:<奔跑的金鱼>--Desc:<SQL统计>--Date:<2015-01-07>--==========================/*描述:不同员工在不同时间参加不同项目组中,获得的收入*/IF EXISTS(SELECT * FROM sysobjects where ID=OBJECT_ID(N'tb转载 2021-03-30 17:15:30 · 1336 阅读 · 1 评论 -
SQL Server 聚合函数 (方差和标准差)
方差和标准差只能用于数值型的列,NULL值会被忽略。一,方差和标准差总体方差的计算公式:在实际测试中,总体的均数难以得到,需要使用样本统计量代替总体参数,需要对数据进行校正,样本方差计算公式:方差的语法:VAR ( [ ALL | DISTINCT ] expression ) VARP ( [ ALL | DISTINCT ] expression ) 标准差的语法:STDEV ( [ ALL | DISTINCT ] expression ) STDEVP ( [ ALL | D转载 2021-03-21 21:45:50 · 14108 阅读 · 0 评论 -
SQL Server 根据日期分组、 根据时间段分组(每三个小时一组)
所用数据表:一、根据日期分组使用convert() 函数方式--根据年月select convert(varchar(7),CreatTime,120)日期,COUNT(*) 次数,sum(Money)总数 from Ordersgroup by convert(varchar(7),CreatTime,120)根据convert 的第一个参数,设置结果的长度达到更具年月分组或年月日分组等2017-09 长度 7 varchar(7)2017-09-01 长度10 varchar(转载 2021-03-21 21:31:52 · 10062 阅读 · 0 评论 -
sql语句中group by与case when的结合使用
有这么一个表Price,用来描述每天每种产品售出的金额,具体内容如表1.1所示,其中date字段代表日期,type字段表示产品类型,price字段表示产品售出金额。datetypeprice2020-07-13033.302020-07-13020.002020-07-12121.002020-07-13154.002020-07-12111.002020-07-12030.00现要做一个统计,统计每天每种产品类型的总售出金转载 2021-03-21 21:01:36 · 6673 阅读 · 2 评论 -
总结 group by 的用法
今天用实例总结一下group by的用法。归纳一下:group by:ALL ,Cube,RollUP,Compute,Compute by创建数据脚本Create Table SalesInfo(Ctiy nvarchar(50),OrderDate datetime,OrderID int)insert into SalesInfoselect N‘北京‘,‘2014-06-09‘,1001union allselect N‘北京‘,‘2014-08-09‘,1002unio转载 2021-03-21 16:38:54 · 3201 阅读 · 1 评论 -
update set from 语句用法
下面是这样一个例子:两个表a、b,想使b中的memo字段值等于a表中对应id的name值表a:id, name 1 王 2 李 3 张 表b:id,ClientName 1 2 3 (MS SQL Server)语句:update b set ClientName = a.name from a,b where a.id = b.id(Oralce)语句:update b set (ClientName) = (转载 2021-03-21 16:24:06 · 2406 阅读 · 0 评论 -
group by 和 over(partition by)的区别
1>建表并插入数据,因为over是开窗函数,mysql不支持开窗函数,其他如oracle,sql server,db2...等新版本都支持(这里借用他人的数据)CREATE TABLE Employee( ID number(10) not null primary key, EmpName varchar(20), EmpSalary varchar(10), EmpDepartment varchar(20)); insert all into Employee valu转载 2021-03-21 16:11:59 · 3854 阅读 · 8 评论 -
SQL count和case when配合统计给定条件下不重复的记录数
1、我们知道,SQL语句中用count函数统计记录数量,配合distinct关键字可以统计非重复的记录数量。例如:select count(*), count(city_name), count(distinct city_name) from tb_county 查询结果是:2534 2534 363增加查询条件可以查询不同条件下记录的数量,例如:select count(*), count(city_name), count(distinct city_name) from tb_转载 2021-03-21 15:33:33 · 4355 阅读 · 0 评论 -
Sql Prompt Snippets 快捷键学习
File Description------- -------------------------------------------------------------------------------ac ALTER COLUMNaf ALTER FUNCTIONap ALTER PROCEDUREat ALTER TABLEata Add columnatac Modify column atd Drop colum转载 2021-01-29 21:22:05 · 397 阅读 · 0 评论 -
SQL Prompt快捷键整理(使用帮助)
简介SQL的编写一直都是一个令人头大的问题,当系统内部数据内容越发庞大的时候,单凭记忆很难去记录所有的名称,这时候需要SQL给我们一些提醒,经推荐,使用了SQLPrompt这个SQL辅助工具.SQL Prompt不仅根据数据库对象名称,语法,代码片段进行自动检索匹配唯一合适的代码,还提供了丰富的快捷键,只需要写上两三个字符,按下回车,就可以为我们自动填写预设好的代码片段,大大提高了编写sql的效率.本来想在网上找一下看有没有相关的快捷键,结果找了半天,发现都没有类似内容,索性就自己整理一下.下面是整理转载 2021-01-29 21:21:21 · 743 阅读 · 0 评论 -
SqlServer分页存储过程示例
USE [Micro_Soft] go --存在就删除旧存储过程IF EXISTS (SELECT * FROM sys.objects WHERE object_id = Object_id(N'[dbo].[prPager]') AND type IN ( N'P', N'PC' )) DROP PROCEDURE [dbo].[prPager] go USE [Micro_Soft] g转载 2020-12-04 22:49:21 · 268 阅读 · 0 评论 -
Sqlsever 时间拆分存储过程
创建自定义的Split(表值函数)CREATE FUNCTION [dbo].[Split](@String VARCHAR(8000), @Delimiter CHAR(1)) returns @temptable TABLE ( items VARCHAR(8000)) AS BEGIN DECLARE @idx INT DECLARE @slice VARCHAR(8000)原创 2020-11-25 10:06:03 · 281 阅读 · 1 评论 -
如何在sqlserver 的函数或存储过程中抛出异常
raiserror 的作用: raiserror 是用于抛出一个错误。[ 以下资料来源于sql server 2005的帮助 ]其语法如下:RAISERROR ( { msg_id | msg_str | @local_variable } { ,severity ,state } [ ,argument [ ,...n ] ] ) [ WITH option [ ,...n ] ]转载 2020-11-17 17:51:22 · 2065 阅读 · 1 评论 -
sqlserver选择行号、随机查询
1、选择行号select row_number() over (order by colName) as rowNum,* from tableName2、随机排序select *,newid() randomId from tableName order by randomId 3、随机选取一行1)方式一,以 选择行号 为基础,过滤条件是 rowNum 等于一个随机的整数。select * from(select row_number() over (order by colName)转载 2020-11-11 21:54:59 · 1554 阅读 · 0 评论 -
SqlServer按指定顺序进行排序
sql一:select * from tabname where 1=1 order by CHARINDEX(RTRIM(CAST(列名 as NCHAR)),'北京,上海,广州') sql二:select * from tabname where id in(1,2,3,4,5) order by charindex(','+convert(varchar,id)+',','2,4,5,1,3') sql三:select * from tabname Where id IN (1转载 2020-11-10 22:27:44 · 7939 阅读 · 2 评论 -
数据库引擎错误
该表包含错误消息编号和描述,它是sys.messages目录视图中错误消息的文本。 如果适用,错误编号是指向更多信息的链接。此列表并不详尽。 有关所有错误的完整列表,请使用以下查询查询sys.messages目录视图:SELECT message_id AS Error, severity AS Severity, [Event Logged] = CASE is_event_logged WHEN 0 THEN 'No' ELSE 'Yes' END,text AS [Description]转载 2020-11-09 22:15:01 · 4747 阅读 · 2 评论 -
Sql中CHARINDEX用法
CHARINDEX作用写SQL语句我们经常需要判断一个字符串中是否包含另一个字符串,但是SQL SERVER中并没有像C#提供了Contains函数,不过SQL SERVER中提供了一个叫CHAEINDX的函数,顾名思义就是找到字符(char)的位置(index),既然能够知道所在的位置,当然就可以判断是否包含在其中了。 通过CHARINDEX如果能够找到对应的字符串,则返回该字符串位置,否则返回0。 基本语法如下:CHARINDEX ( expressionToFind , express转载 2020-11-04 15:20:14 · 819 阅读 · 0 评论 -
SQLServer 根据表名生成实体类
declare @TableName sysname = 'T1'declare @Result varchar(max) = '/// <summary>/// ' + @TableName +'/// </summary>public class ' + @TableName + '{'select @Result = @Result + '/// <summary>/// ' + CONVERT(NVARCHAR(500), ISNULL(C转载 2020-11-01 19:45:48 · 461 阅读 · 0 评论 -
数据库的事务日志已满,起因为“LOG_BACKUP“
问题描述:数据库的事务日志已满,起因为"LOG_BACKUP"。解决方法:1).选择数据库–属性—选项—恢复模式–选择简单。2).收缩数据库后,再调回完整。USE[master] GO ALTER DATABASE 要清理的数据库名称 SET RECOVERY SIMPLE WITH NO_WAIT GO ALTER DATABASE 要清理的数据库名称 SET RECOVERY SIMPLE --简单模式 GO USE 要清理的数据库名称 GO DBCC SH转载 2020-07-08 13:39:14 · 2907 阅读 · 0 评论 -
partition by和group by对比
今天大概弄懂了partition by和group by的区别联系。group by是分组函数,partition by是分析函数(然后像sum()等是聚合函数);在执行顺序上,以下是常用sql关键字的优先级from > where > group by > having > order by而partition by应用在以上关键字之后,实际上就是...转载 2020-04-03 00:20:29 · 2424 阅读 · 0 评论 -
SQL Server中自定义函数:用指定的分隔符号分割字符串
微软SQL Server数据库中包含了很多内置的函数,入下图:它们用于处理日期、数学、元数据、字符串等。其中最为常用的就是处理字符串,里面包含了CharIndex()等函数,非常方便使用。但是对于特殊字符串的处理,比如:ISBN号 ‘978-7-5007-7234-7’,如果想获取第三个与第四个分割符号之间的数字,那么SQL 内置函数无法直接做到。这时就需要自定义函数。下面自定义三个函...转载 2020-03-30 11:23:27 · 1699 阅读 · 0 评论 -
mssql sqlserver 分组排序函数row_number、rank、dense_rank用法简介及说明
在实际的项目开发中,我们经常使用分组函数,对组内数据进行群组后,然后进行组内排序:如:1:取出一个客户一段时间内,最大订单数的行记录2: 取出一个客户一段时间内,最后一次销售记录的行记录下文将讲述三个分组函数 row_number rank dense_rank的用法 ,以上三个函数的功能为:返回行数据在”分组数据内”的排列值1:row_number() over() 函数简介row...转载 2020-03-28 22:07:06 · 440 阅读 · 0 评论 -
你不得不必须掌握的30种SQL语句优化
1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。2.应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使用索引而进行全表扫描。3.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如:select id from t where num is nul...转载 2020-03-14 11:42:04 · 270 阅读 · 0 评论 -
sql server order by 的一些高级用法
先创建一个表create table ai(id int not null,no varchar(10) not null)go往表中插入数据insert into aiselect 105,’2’union allselect 105,’1’union allselect 103,’1’union allselect 105,’4’go查询效果如下selec...转载 2019-12-28 12:16:43 · 1795 阅读 · 0 评论 -
索引 思维导图
索引使用场景mysql索引使用的场景数据库索引数据库索引详解MySql索引简述msyql索引使用的场景,查看索引使用情况,两个优化方法数据库索引mysql数据库索引的理论知识索引导图Mysql索引部分知识...转载 2019-12-26 22:39:45 · 652 阅读 · 0 评论 -
SQL优化 思维导图
常用SQL优化一些sql常见场景,比如插入,分组,分页,嵌套关联等的优化方式MySQL优化MYSQL优化知识集锦MySQL优化甜点之_调节磁盘和CPU速率不匹配的缓冲池MySQL优化前戏之_成本计算&统计数据MySQL优化前戏之_基于规则的优化(含子查询)MySQL优化正餐之_EXPLAIN执行计划...转载 2019-12-26 22:07:01 · 709 阅读 · 0 评论 -
深入理解SQL Server数据库Select查询原理(一)
使用SQL Server十年有余,但是一直对其Select查询机制原理一致不明,直到最近有个通讯录表,很简单的一张表(但因简单,所以当时并没有考虑按部门排序问题),结果想查询某个单位所有部门(不重复),结果出现查询的结果排序并不是自己当前数据存储的部门顺序。经过仔细核实发现,在Select中使用distinct时,就会触发中文排序,按照拼音字母的顺序进行排序。度娘后网上有类似文章,感谢网友的无私分...转载 2019-11-22 23:45:07 · 801 阅读 · 1 评论 -
ADO.NET数据连接池
21世纪什么最贵?数据库连接。对于以数据库做数据存储基石的应用系统来说,数据库连接是整个系统中最珍贵的资源之一。数据库连接池是为了更有效地利用数据库连接的最重要措施。它对于一个大型的应用系统的性能至关重要,特别是Web应用。ADO.NET Data Provider(以下简称Data Provider)会帮我们管理连接池,所以有人说使用连接池就像游儿童池一样轻松。但并不是说有了Data P转载 2016-06-14 10:46:34 · 1726 阅读 · 1 评论