SQL
文章平均质量分 70
Smilecoc
这个作者很懒,什么都没留下…
展开
-
FOR XML PATH 函数与同一分组下的字符串拼接
FOR XML PATH 语句是将查询结果集以XML形式展现,通常情况下最常见的用法就是将多行的结果,拼接展示在同一行。原创 2024-01-22 14:58:19 · 1422 阅读 · 0 评论 -
SQL Povit函数使用及实例
PIVOT函数用法与实例原创 2024-01-18 14:21:41 · 2315 阅读 · 0 评论 -
SQL server使用CTE时报错:Incorrect syntax near the keyword ‘with‘.
在SQL server中使用CTE报错:Incorrect syntax near the keyword ‘with’. If this statement is a common table expression WITH RowOrder AS (SELECT [Chart Number] FROM [dbo].[Patient] ) 出现这种情况一般在With语句前还有其他的语句,在With前的语句末尾或者With前加上分号;即可...原创 2021-12-03 18:53:21 · 3756 阅读 · 0 评论 -
SQL Server 行转列,列转行,多行转成一列
目录一、多行转成一列(并以","隔开)二、一列转成多行三、行转列1、建立表格2、使用SQL Server 2000静态SQL四、行转列结果加上总分、平均分1、使用SQL Server 2000静态SQL2、使用SQL Server 2000动态SQL3、使用SQL Server 2005静态SQL4、使用SQL Server 2005动态SQL五、列转行1、建立表格2、使用SQL Server 2000静态SQL2、使用SQL Server 2000动态SQL3、使用SQL Server 2005静态SQL转载 2021-03-18 11:11:13 · 5793 阅读 · 0 评论 -
SqlServer为不同的数据库配置指定的帐号,密码
上述操作完成后虽然未授权的用户没有办法访问未授权的数据库,但是仍然可以看到所有的数据库情况,那么如何让其他未授权的数据库直接不可见?执行sql脚本USE masterGO--将所有数据库的查看权限给Public角色,每个登录用户只能查看指定的数据库--此语句会导致服务器上所有的用户在没有设置数据库权限的情况下不会显示任何数据库,有可能会影响正常使用DENY VIEW any DATABASE TO PUBLIC;--将数据库Test的所有权给TestUser用户--TestUser用...转载 2021-02-20 14:32:10 · 1170 阅读 · 0 评论 -
SQL Server 创建索引
索引的简介索引分为聚集索引和非聚集索引,数据库中的索引类似于一本书的目录,在一本书中通过目录可以快速找到你想要的信息,而不需要读完全书。索引主要目的是提高了SQL Server系统的性能,加快数据的查询速度与减少系统的响应时间 。但是索引对于提高查询性能也不是万能的,也不是建立越多的索引就越好。索引建少了,用 WHERE 子句找数据效率低,不利于查找数据。索引建多了,不利于新增、修改和删除等操作,因为做这些操作时,SQL SERVER 除了要更新数据表本身,还要连带立即更新所有的相关索引,而且过多的索转载 2020-12-01 17:56:39 · 727 阅读 · 0 评论 -
SQL SERVER执行计划详解
序言本篇主要目的有二:1、看懂t-sql的执行计划,明白执行计划中的一些常识。2、能够分析执行计划,找到优化sql性能的思路或方案。如果你对sql查询优化的理解或常识不是很深入,那么推荐几骗博文给你:SqlServer性能检测和优化工具使用详细 ,sql语句的优化分析,T-sql语句查询执行顺序。执行计划简介1、什么是执行计划?提交的sql语句会通过数据库查询优化器,经过分析生成多个数据库可以识别的高效执行查询方式。然后优化器会在众多执行计划中找出一个资源使用最少,而不是最快的执行方案,给你展转载 2020-11-22 00:25:45 · 6907 阅读 · 1 评论 -
SQL面试题整理:进阶部分
现有原始数据表如下所示,包含一个时间段内每天的预算金额与所属分类信息:表名:databasetable+───────────+──────────+───────────+| Date | buget | category |+───────────+──────────+───────────+| 2020-8-4 | 2574.2 | A || 2020-8-5 | 260.38 | A || 2020-8-6 | 9045原创 2020-11-15 23:56:33 · 3589 阅读 · 0 评论 -
SQL语句优化
SQL查询中为了提高查询效率,我们常常会采取一些措施对查询语句进行sql优化,下面总结一些方法,供大家参考。01对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。02应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使用索引而进行全表扫描。03应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如:select id from twhere num is nu转载 2020-11-15 22:36:08 · 134 阅读 · 0 评论 -
如何从0开始建立数据库(六):数据库建表/SQL/索引规范
本篇文章作为从0开始建立数据库系列的补充,详细说明了一些数据库建表/SQL语句/索引规范一、建表规约【强制】(1) 存储引擎必须使用InnoDB解读: InnoDB支持事物、行级锁、并发性能更好,CPU及内存缓存页优化使得资源利用率更高。【强制】(2)每张表必须设置一个主键ID,且这个主键ID使用自增主键(在满足需要的情况下尽量短),除非在分库分表环境下。解读: 由于InnoDB组织数据的方式决定了需要有一个主键,而且若是这个主键ID是单调递增的可以有效提高插入的性能,避免过多的页分裂、减少表碎片转载 2020-11-15 16:41:23 · 428 阅读 · 0 评论 -
SQL查询众数与中位数
注意:本文均为SQL Server代码,其他数据库可能需要根据对应语法进行修改创建测试用表:# 创建学生成绩表:create table #grade(id int,name varchar(10),score int) # 向成绩表中插入数据:insert into #grade values(1,'Kevin',85),(2,'Mary',59),(3,'Andy',60),(4,'Tony',79),(5,'Lucky',90),(6,'Bob',60),(7,'T原创 2020-09-24 19:09:08 · 5508 阅读 · 0 评论 -
SQL Server日期函数详解与实战
阅读目录获取时间函数getdate()函数SYSDATETIME()函数格式化函数CONVERT()函数FORMAT()函数日期的拆分与拼接(构造)DATEPART()YEAR(date),MONTH(date),DAY(date)等函数返回年,月,日DATENAME()函数,编写SQL中经常可以遇到日期的格式化与日期相关函数,这篇文章中我们将整理一下相关函数并给出一些实例供参考获取时间函数getdate()函数getdate()函数获取当前的日期与时间。返回的为datetime类型select原创 2020-09-24 11:04:03 · 659 阅读 · 0 评论 -
SQL Server 公用表表达式(CTE)
简介对于SELECT查询语句来说,通常情况下,为了使T-SQL代码更加简洁和可读,在一个查询中引用另外的结果集都是通过视图而不是子查询来进行分解的.但是,视图是作为系统对象存在数据库中,那对于结果集仅仅需要在存储过程或是用户自定义函数中使用一次的时候,使用视图就显得有些奢侈了.公用表表达式(Common Table Expression)是SQL SERVER 2005版本之后引入的一个特性.CTE可以看作是一个临时的结果集,可以在接下来的一个SELECT,INSERT,UPDATE,DELETE,ME转载 2020-09-23 17:49:08 · 3247 阅读 · 0 评论 -
关于SQL Server中变量前加上 N与其他使用情况解析
插入、更新数据当原始数据中有中文的时候插入到SQL server数据库中会产生中文乱码,解决方法为:第一步将需要存储中文的字段设置为nvarchar类型 alter table Test_Info alter column name nvarchar(50)第二步在插入是数据前加N:insert into Test_Info(name) values(N'猫')注意两者缺一不可,否则都会导致中文乱码现象的出现!加N后代表这个字符串是一个nvarchar类型,在字符串前面加N可以把字符串转换原创 2020-08-21 16:23:38 · 3466 阅读 · 0 评论 -
SQL实现筛选出连续3天登录用户与窗口函数
阅读目录还原试题SQL窗口函数一.窗口函数有什么用二.什么是窗口函数三.如何使用1.专用窗口函数rank2.其他专业窗口函数3.聚合函数作为窗口函数4.注意事项四.总结解题思路代码实现其他解法与延展还原试题首先新建一张表来还原一下试题:CREATE TABLE last_3_day_test_table( user_id varchar(300), login_date date);INSERT INTO last_3_day_test_table ( user_id原创 2020-08-10 23:33:40 · 7688 阅读 · 7 评论 -
如何从0开始建立数据库(五):数据库系统的实现
本文转载于https://www.cnblogs.com/muchen/p/5291325.html,仅做学习参考使用,侵删前言前面的文章中,主要都是在围绕关系数据库理论进行研究,没有涉及到数据库系统的具体实现。虽说数据库系统的具体实现因业务环境,RDBMS等因素而异,但总体开发流程,以及开发过程中所涉及到的一些问题,也具有不少统一的套路、标准。本文主要讨论数据库系统实现过程中的重点环节、基本开发流程、数据库管理以及数据质量工程等话题。参照完整性约束对更新删除操作的影响在第三篇中,我们已经讨论过转载 2020-08-06 19:45:22 · 3096 阅读 · 0 评论 -
如何从0开始建立数据库(四):SQL
本文转载于https://www.cnblogs.com/muchen/p/5286769.html,仅做学习参考使用,侵删前言确实,关于SQL的学习资料,各类文档在网上到处都是。但它们绝大多数的出发点都局限在旧有关系数据库里,内容近乎千篇一律。而在当今大数据的浪潮下,SQL早就被赋予了新的责任和意义。本篇中,笔者将结合过去在A公司和T公司大数据部门的学习工作经历,对传统SQL语法进行一次回顾性学习。同时,思考这门语言在大数据时代的重要意义。大数据技术中SQL的作用SQL的全称为Structure转载 2020-08-07 11:43:09 · 521 阅读 · 0 评论 -
如何从0开始建立数据库(三):更新异常与规范化设计
本文转载于https://www.cnblogs.com/muchen/p/5272620.html,仅做学习参考使用,侵删阅读目录更新异常与规范化设计前言更新异常1.插入异常(insertion anomaly)2.删除异常(deletion anomaly)3.修改异常(modification anomaly)函数依赖1. 平凡函数依赖(trivial functional dependency)2. 增广函数依赖(augmented functional dependency)3. 等价函数依赖(转载 2020-08-06 15:05:14 · 740 阅读 · 0 评论 -
如何从0开始建立数据库(二):数据库关系建模
阅读目录数据库关系建模前言基本概念1. 关系(relation)2. 列(column)3. 行(row)4. 关系表 VS 一般的表5. 主码(primary key)6. 实体完整性约束(entity integrity constraint)7. 外码(foreign key)8. 参照完整性约束(reference integrity constraints)ER模型到关系表的映射1. 将常规实体映射为关系2. 将具有复合属性的实体映射为关系3. 将具有唯一复合属性的实体映射为关系4. 将具有可选属转载 2020-08-05 19:04:48 · 1039 阅读 · 0 评论 -
如何从0开始建立数据库(一):数据库需求与ER建模
本文转载于https://www.cnblogs.com/muchen/p/5258197.html,仅做学习参考使用,侵删数据库需求与ER建模前言在数据库建设过程中,哪一步最重要?绝大多数资料会告诉你,是需求分析阶段。这一步的好坏甚至直接决定数据库项目的成败。需求分析阶段,也被称为ER建模(entity-relationship modeling)阶段,也常被称为需求可视化,概念建模等。这一阶段数据库系统开发人员将协同需求方以ER图的方式对业务需求进行可视化展现。首先我们详细介绍ER符号体系,并转载 2020-08-05 18:20:37 · 1155 阅读 · 0 评论 -
Sql server bulk insert语句:将数据从文件导入数据库中
Sql server 的bulk insert语句可以高效的导入大数据量的平面文件(txt,csv文件)到数据库的一张表中--创建虚拟表create table #tmptable( Date varchar(10), Receipt varchar(50), Description varchar(100), [Card_Member] varchar(50), [Account] varchar(17), Amount varchar(20)原创 2020-07-16 11:41:04 · 1453 阅读 · 0 评论 -
SQL Server报错:is of a type that is invalid for use as a key column in an index
出现这个报错的原因是主键约束或者唯一约束设置的字段类型超过了最大的长度。唯一约束和主键约束字段不能超过每行8000个字节,并且即使到那时也仅会使用前900个字节,因此密钥的最安全最大大小为varchar(900) 或者nvarchar(450),而不应该设置为varchar(max)或者nvarchar(max)...原创 2020-07-15 13:51:34 · 1184 阅读 · 0 评论 -
SQL Server将表结果输出到文件(Excel/csv)中保存
1. 手动方法在SSMS中,查询出结果后,右键点击"copy/copy with headers"可以复制结果,打开空白csv/Excel后粘贴即可在SSMS中,查询出结果后,右键点击"save result as"(结果另存为)并保存即可注意按照这种方法保存的结果是没有字段名称的,相当于上一种方法中的copy2. 使用SQL CMD脚本在SSMS中点击"Query"菜单"SQLCMD mode",这样可以进入SQL Server的命令行模式新建查询::OUT c:\testresu原创 2020-07-01 12:25:18 · 21761 阅读 · 4 评论 -
mysql 事务中如果有sql语句出错,会导致自动回滚吗?
事务,我们都知道具有原子性,操作要么全部成功,要么全部失败。但是有可能会造成误解。我们先准备一张表,来进行测试CREATE TABLE `name` ( `id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT 'ID', `name` varchar(32) DEFAULT '' COMMENT '名称', PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;一、如果事务转载 2020-06-30 12:43:25 · 2924 阅读 · 1 评论 -
left join on and 与 left join on where的区别及面试例题
数据库在通过连接两张或多张表来返回记录时,都会生成一张中间的临时表,然后再将这张临时表返回给用户。在使用left jion时,on和where条件的区别如下:1、 on条件是在生成临时表时使用的条件,它不管on中的条件是否为真,都会返回左边表中的记录。2、where条件是在临时表生成好后,再对临时表进行过滤的条件。临时表中数据条件不为真的就全部过滤掉。之后再返回对临时表中过滤后的结果假设现在有两张表:表1 tab1:idsize110220330表2原创 2020-06-30 10:48:23 · 372 阅读 · 0 评论 -
一些简单的SQL语句或者脚本汇总
--***********一些简单的SQL语句或者脚本汇总***********----1.截取字符串 /****** SUBSTRING函数:返回字符、binary、text 或 image 表达式的一部分 语法 SUBSTRING ( expression , start , length ) 参数 expression 是字符串、二进制字符串、text、image、列或包含列的表达式。不要使用包含聚合函数的表达式。 start 是一个整数,指定子串的开始位置。 len原创 2020-06-23 12:31:58 · 333 阅读 · 0 评论 -
SQL server中的模式/架构(schema)
sql server 修改表的模式schemause myDB --使用的数据库go create schema myschema --如果没有此schema就先建立go alter schema myschema transfer dbo.myTable --移动对象至建立的schema下go原创 2020-06-22 23:14:06 · 4628 阅读 · 0 评论 -
SQL server中的GO详解
经常看到各种SQL语句中间夹杂着那么几个看似毫无意义的GO,这个Go的作用是什么呢?官方说法是:GO只是SQL Server管理器(SSMS)中用来提交T-SQL语句的一个标志我的理解是:GO相当于一个.sql文件的结束标记我这么说大家可能不是很清楚我想表达的意思,下面我来解释一下:大家都用过这个按钮吧,这儿按钮就是新建一个.sql后缀名的SQL语句脚本文件,通常情况下,我们会在里面打各种SQL语句,然后按一下F5或者去执行这些语句。下面我们来输入一些语句看一下不使用GO和使用GO的区别:dec转载 2020-06-22 14:09:53 · 5221 阅读 · 0 评论 -
数据库设计范式--如何设计一个数据库结构
范式:英文名称是 Normal Form,它是英国人 E.F.Codd(关系数据库的老祖宗)在上个世纪70年代提出关系数据库模型后总结出来的,范式是关系数据库理论的基础,也是我们在设计数据库结构过程中所要遵循的规则和指导方法。目前有迹可寻的共有8种范式,依次是:1NF,2NF,3NF,BCNF,4NF,5NF,DKNF,6NF。通常所用到的只是前三个范式,即:第一范式(1NF),第二范式(2NF),第三范式(3NF)。设计关系数据库时,遵从不同的规范要求,设计出合理的关系型数据库,这些不同的规范要求被称为原创 2020-06-17 00:19:18 · 201 阅读 · 0 评论 -
count(*) 和 count(1)和count(列名)区别
基本含义上:count(1),其实就是计算一共有多少符合条件的行。1并不是表示第一个字段,而是表示一个固定值。其实就可以想成表中有这么一个字段,这个字段就是固定值1,count(1),就是计算一共有多少个1.同理,count(2),也可以,得到的值完全一样,count(‘x’),count(‘y’)都是可以的。一样的理解方式,返回的值完全是一样的。就是计数。count(*),执行时会把星号翻译成字段的具体名字,效果也是一样的,不过多了一个翻译的动作,比固定值的方式效率稍微低一些count(字段)转载 2020-06-16 16:35:24 · 435 阅读 · 0 评论 -
SQL注入攻击常见方式及测试方法
如何理解SQL注入(攻击)?SQL注入是一种将SQL代码添加到输入参数中,传递到服务器解析并执行的一种攻击手法。SQL注入攻击是输入参数未经过滤,然后直接拼接到SQL语句当中解析,执行达到预想之外的一种行为,称之为SQL注入攻击。SQL注入是怎么产生的?WEB开发人员无法保证所有的输入都已经过滤攻击者利用发送给SQL服务器的输入参数构造可执行的SQL代码(可加入到get请求、post请求、http头信息、cookie中)数据库未做相应的安全配置如何进行SQL注入攻击?以php转载 2020-06-15 12:16:54 · 1466 阅读 · 0 评论 -
SQL Server存储过程详解
一、 创建带参数的存储过程创建带参数的存储过程首先要在存储过程中声明该参数,每个存储过程参数都必须用唯一的名称进行定义。与T-SQL变量相同,参数名必须以@为前缀,并且遵从标识符规则。当用户不提供该参数的值时可以使用一个默认值来代替。1.不带默认值的参数创建一个参数不带默认值的存储过程,在调用该存储过程时,必须对存储过程中的所有参数进行赋值,如果有一个参数没有赋值,则无法调用该存储过程。例如...原创 2020-04-14 18:36:10 · 968 阅读 · 1 评论 -
SQL资源汇总
1.SQL习题练习网站,可以在线练习sqlhttps://sqlzoo.net/2.一个可以在线编辑SQL的编辑器http://www.sqlfiddle.com/优点:不需要安装数据库即可直接在上面写代码支持多种数据库支持快速创建表结构和插入数据支持查看执行计划支持手机端代码输入和执行缺点:不支持中文字符,如果你输入中文,执行结果会以?显示没有缓存功能,关闭窗口后需...原创 2020-04-04 23:20:53 · 242 阅读 · 0 评论