sql数据库

SQL count(*) 和count(1)的区别

拜拜、爱过 提交于 2020-04-07 02:01:12
开发中经常会使用这两个聚合函数,作用都是用来统计记录行,今天查找资料发现,其实这两个函数并没有区别, 实践才是检验的标准,首先看执行计划(表是我自己建立的): 可以看到,两个执行计划完全一样,后来查找资料,有人用模拟百万的数据重新来模拟,发现两者的速度几乎没有,select count(1)稍微比select count(*)快不超过0.5秒,数据量越大的时候,反而有时候select count(*)更快,可见现在数据库的版本对select count(*)已经优化很好了,在实际开发中选择其中一种都可以。 来源: oschina 链接: https://my.oschina.net/u/3497902/blog/2208655

Transact SQL 常用语句以及函数

末鹿安然 提交于 2020-04-07 00:54:24
Transact SQL 语 句 功 能 ========================================================================    -- 数据操作    SELECT -- 从数据库表中检索数据行和列        INSERT -- 向数据库表添加新数据行        DELETE -- 从数据库表中删除数据行        UPDATE -- 更新数据库表中的数据    -- 数据定义    CREATE TABLE -- 创建一个数据库表        DROP TABLE -- 从数据库中删除表        ALTER TABLE -- 修改数据库表结构        CREATE VIEW -- 创建一个视图        DROP VIEW -- 从数据库中删除视图        CREATE INDEX -- 为数据库表创建一个索引        DROP INDEX -- 从数据库中删除索引        CREATE PROCEDURE -- 创建一个存储过程        DROP PROCEDURE -- 从数据库中删除存储过程        CREATE TRIGGER -- 创建一个触发器        DROP TRIGGER -- 从数据库中删除触发器        CREATE

Transact SQL 常用语句以及函数

狂风中的少年 提交于 2020-04-07 00:06:11
Transact SQL 语 句 功 能 ========================================================================    -- 数据操作    SELECT -- 从数据库表中检索数据行和列        INSERT -- 向数据库表添加新数据行        DELETE -- 从数据库表中删除数据行        UPDATE -- 更新数据库表中的数据    -- 数据定义    CREATE TABLE -- 创建一个数据库表        DROP TABLE -- 从数据库中删除表        ALTER TABLE -- 修改数据库表结构        CREATE VIEW -- 创建一个视图        DROP VIEW -- 从数据库中删除视图        CREATE INDEX -- 为数据库表创建一个索引        DROP INDEX -- 从数据库中删除索引        CREATE PROCEDURE -- 创建一个存储过程        DROP PROCEDURE -- 从数据库中删除存储过程        CREATE TRIGGER -- 创建一个触发器        DROP TRIGGER -- 从数据库中删除触发器        CREATE

MySQL数据迁移到SQL Server

别来无恙 提交于 2020-04-06 19:28:18
数据迁移的工具有很多,基本SSMA团队已经考虑到其他数据库到SQL Server迁移的需求了,所以已经开发了相关的迁移工具来支持。 此博客主要介绍MySQL到SQL Server数据迁移的工具: SQL Server Migration Assistant for MySQL 的使用. 从上面链接的官网下载安装. 第一步:创建一个迁移工程 需要注意的是你需要选择迁移到的SQL Server数据库的版本,目前支持:SQL Azure,SQL Server 2005,SQL Server2008,SQL Server 2012,SQL Server2014,根据实际需要选择你要迁移到目标数据库的版本。 第二步:连接源数据库和目标数据库 上面的是源:MySql,下面的是目标:SQL Server 第三步:选择需要迁移的数据库创建迁移分析报告 此报告会分析当前需要迁移的数据库中的所有表结构并会生成一个可行性报告 生成的报告如下:分析需要转换的对象,表,数据库有多少个,是否存在不可转换的对象等信息,如有检查错误会下下面输出 第四步: 转换schema 也就是数据库结构 迁移分两步:1.转换数据库结构,2.迁移数据 第五步:在源数据库转换完schema之后记得在目标数据库上执行同步schema操作 否则转换的数据库结构是不会到目标数据库的 点击同步之后同样会有一个同步的报告:

Oracle Optimizer CBO RBO

邮差的信 提交于 2020-04-06 17:15:49
之前整理的一篇有关 CBO 和 RBO 文章: Oracle CBO 与 RBO http://blog.csdn.net/tianlesoftware/archive/2010/07/11/5709784.aspx Oracle 数据库中优化器( Optimizer )是 SQL 分析和执行的优化工具,它负责指定 SQL 的执行计划,也就是它负责保证 SQL 执行的效率最高,比如优化器决定 Oracle 以什么样的方式来访问数据,是全表扫描( Full Table Scan ),索引范围扫描( Index Range Scan )还是全索引快速扫描( INDEX Fast Full Scan : INDEX_FFS ) ; 对于表关联查询,它负责确定表之间以一种什么方式来关联,比如 HASH_JOHN 还是 NESTED LOOPS 或者 MERGE JOIN 。 这些因素直接决定 SQL 的执行效率,所以优化器是 SQL 执行的核心,它做出的执行计划好坏,直接决定着 SQL 的执行效率。 Oracle 的优化器有两种: RBO( Rule-Based Optimization ): 基于规则的优化器 CBO( Cost-Based Optimization ): 基于代价的优化器 从 Oracle 10g 开始, RBO 已经被弃用,但是我们依然可以通过 Hint 方式来使用它

Oracle Optimizer CBO RBO

﹥>﹥吖頭↗ 提交于 2020-04-06 17:15:29
之前整理的一篇有关 CBO 和 RBO 文章: Oracle CBO 与 RBO http://blog.csdn.net/tianlesoftware/archive/2010/07/11/5709784.aspx Oracle 数据库中优化器( Optimizer )是 SQL 分析和执行的优化工具,它负责指定 SQL 的执行计划,也就是它负责保证 SQL 执行的效率最高,比如优化器决定 Oracle 以什么样的方式来访问数据,是全表扫描( Full Table Scan ),索引范围扫描( Index Range Scan )还是全索引快速扫描( INDEX Fast Full Scan : INDEX_FFS ) ; 对于表关联查询,它负责确定表之间以一种什么方式来关联,比如 HASH_JOHN 还是 NESTED LOOPS 或者 MERGE JOIN 。 这些因素直接决定 SQL 的执行效率,所以优化器是 SQL 执行的核心,它做出的执行计划好坏,直接决定着 SQL 的执行效率。 Oracle 的优化器有两种: RBO( Rule-Based Optimization ): 基于规则的优化器 CBO( Cost-Based Optimization ): 基于代价的优化器 从 Oracle 10g 开始, RBO 已经被弃用,但是我们依然可以通过 Hint 方式来使用它

Oracle Optimizer CBO RBO

六月ゝ 毕业季﹏ 提交于 2020-04-06 17:15:02
之前整理的一篇有关 CBO 和 RBO 文章: Oracle CBO 与 RBO http://blog.csdn.net/tianlesoftware/archive/2010/07/11/5709784.aspx Oracle 数据库中优化器( Optimizer )是 SQL 分析和执行的优化工具,它负责指定 SQL 的执行计划,也就是它负责保证 SQL 执行的效率最高,比如优化器决定 Oracle 以什么样的方式来访问数据,是全表扫描( Full Table Scan ),索引范围扫描( Index Range Scan )还是全索引快速扫描( INDEX Fast Full Scan : INDEX_FFS ) ; 对于表关联查询,它负责确定表之间以一种什么方式来关联,比如 HASH_JOHN 还是 NESTED LOOPS 或者 MERGE JOIN 。 这些因素直接决定 SQL 的执行效率,所以优化器是 SQL 执行的核心,它做出的执行计划好坏,直接决定着 SQL 的执行效率。 Oracle 的优化器有两种: RBO( Rule-Based Optimization ): 基于规则的优化器 CBO( Cost-Based Optimization ): 基于代价的优化器 从 Oracle 10g 开始, RBO 已经被弃用,但是我们依然可以通过 Hint 方式来使用它

Oracle Optimizer CBO RBO

℡╲_俬逩灬. 提交于 2020-04-06 17:14:31
之前整理的一篇有关 CBO 和 RBO 文章: Oracle CBO 与 RBO http://blog.csdn.net/tianlesoftware/archive/2010/07/11/5709784.aspx Oracle 数据库中优化器( Optimizer )是 SQL 分析和执行的优化工具,它负责指定 SQL 的执行计划,也就是它负责保证 SQL 执行的效率最高,比如优化器决定 Oracle 以什么样的方式来访问数据,是全表扫描( Full Table Scan ),索引范围扫描( Index Range Scan )还是全索引快速扫描( INDEX Fast Full Scan : INDEX_FFS ) ; 对于表关联查询,它负责确定表之间以一种什么方式来关联,比如 HASH_JOHN 还是 NESTED LOOPS 或者 MERGE JOIN 。 这些因素直接决定 SQL 的执行效率,所以优化器是 SQL 执行的核心,它做出的执行计划好坏,直接决定着 SQL 的执行效率。 Oracle 的优化器有两种: RBO( Rule-Based Optimization ): 基于规则的优化器 CBO( Cost-Based Optimization ): 基于代价的优化器 从 Oracle 10g 开始, RBO 已经被弃用,但是我们依然可以通过 Hint 方式来使用它

Oracle Optimizer CBO RBO

有些话、适合烂在心里 提交于 2020-04-06 17:13:55
之前整理的一篇有关 CBO 和 RBO 文章: Oracle CBO 与 RBO http://blog.csdn.net/tianlesoftware/archive/2010/07/11/5709784.aspx Oracle 数据库中优化器( Optimizer )是 SQL 分析和执行的优化工具,它负责指定 SQL 的执行计划,也就是它负责保证 SQL 执行的效率最高,比如优化器决定 Oracle 以什么样的方式来访问数据,是全表扫描( Full Table Scan ),索引范围扫描( Index Range Scan )还是全索引快速扫描( INDEX Fast Full Scan : INDEX_FFS ) ; 对于表关联查询,它负责确定表之间以一种什么方式来关联,比如 HASH_JOHN 还是 NESTED LOOPS 或者 MERGE JOIN 。 这些因素直接决定 SQL 的执行效率,所以优化器是 SQL 执行的核心,它做出的执行计划好坏,直接决定着 SQL 的执行效率。 Oracle 的优化器有两种: RBO( Rule-Based Optimization ): 基于规则的优化器 CBO( Cost-Based Optimization ): 基于代价的优化器 从 Oracle 10g 开始, RBO 已经被弃用,但是我们依然可以通过 Hint 方式来使用它

5分钟学会MySQL-this is incompatible with sql_mode=only_full_group_by错误解决方案

感情迁移 提交于 2020-04-06 15:51:20
一、原理层面 这个错误发生在mysql 5.7 版本及以上版本会出现的问题: mysql 5.7版本默认的sql配置是:sql_mode="ONLY_FULL_GROUP_BY",这个配置严格执行了"SQL92标准"。 很多从5.6升级到5.7时,为了语法兼容,大部分都会选择调整sql_mode,使其保持跟5.6一致,为了尽量兼容程序。 二、sql层面 在sql执行时,出现该原因: 简单来说就是:输出的结果是叫target list,就是select后面跟着的字段,还有一个地方group by column,就是 group by后面跟着的字段。由于开启了ONLY_FULL_GROUP_BY的设置,所以如果一个字段没有在target list 和group by字段中同时出现,或者是聚合函数的值的话,那么这条sql查询是被mysql认为非法的,会报错误。 一、查看sql_mode的语句如下 select @@GLOBAL.sql_mode; 二、解决方案-(推荐解决方案二) ①解决方案一:sql语句暂时性修改sql_mode set @@GLOBAL.sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE