精华内容
下载资源
问答
  • Oracle数据库执行Sql脚本的方法

    万次阅读 2016-11-16 17:56:16
    Oracle数据库执行Sql文件的方法: 1、cmd 命令窗口: sqlplus →连接数据库→sql>@E:文件夹\*.sql 这样就能执行sql脚本了。 (PS:sql文件前面是\,不是/)。 2、工具连接数据库后执行脚本文件: PLSQL ...

    Oracle数据库执行Sql文件的方法:

    1、cmd 命令窗口:

          sqlplus →连接数据库→sql>@E:文件夹\*.sql   这样就能执行sql脚本了。

        (PS:sql文件前面是\,不是/)。

    2、工具连接数据库后执行脚本文件:

          PLSQL Developer:文件→打开→SQL脚本

          sqldeveloper:文件→打开

          这两个工具是这样的,其他工具的操作大同小异。

    批量执行Sql文件并输出执行日志:

    将以下内容写入一个sql文件中,按照上面的方法执行,就能批量执行sql文件了。

     

    spool E:\执行结果.log; 
    set feedback off; 
    set define off; 
    prompt -----初始化数据 start--- 
    @E :\文件夹\*1.sql 
    @E :\文件夹\*2.sql 
    @E :\文件夹\*3.sql 
     ...............
    prompt -----初始化数据 end--- 
    prompt done; 
    spool off; 

    下面是一些常用的语句及含义:

    set echo off; #控制start命令不列出命令文件中的每一命令
    set feedback off; #显示由查询返回的记录数 off等价为0
    set heading off; #报表中列标题不打印
    set pagesize off; #置 从顶部标题至页结束之间的行数
    set linesize off; #置一行中显示的字符总数
    set termout off; #由文件执行命令时不显示输出
    set trimout on; #每一显示行的末端去掉空格
    set trimspool on; #去掉spool输出时每行末端空格
    col eventtypeid format A10; #字段eventtypeid 输出时的格式设置为文字型,且占10个字符宽度,下面类似
    col eventtime format A10;
    col srcip format A16;
    col dstip format A16;
    col srcport format A10;
    col dstport format A16;
    spool d:/home/oracle/http.txt; #将下面开始的输出记录到这个文件
    select eventtypeid, eventtime,srcip, srcport, dstip, dstport , param from netids_eventlog t; #查询语句
    spool off; #输出记录结束


     

     

    展开全文
  • python 连接数据库执行sql 查询

    千次阅读 2017-08-30 10:22:48
    Python 连接数据库执行sql 操作

    Python 连接数据库执行sql 操作

    type_status_dict = {}
    with connections['default'].cursor() as cursor:
        cursor.execute(query, [school_id, year, semester, subject_id])
        alldata = cursor.fetchall()
        for i in alldata:
            type_status_dict[i[1]] = i[0]
    return type_status_dict

    with connection.cursor() as cursor:
        cursor.execute("SELECT cache_key FROM %s "
                       "WHERE cache_key = %%s and expires > %%s" % table,
                       [key, connection.ops.adapt_datetimefield_value(now)])
        return cursor.fetchone() is not None

    fetchone() :

    返回单个的元组,也就是一条记录(row),如果没有结果 则返回 None

    fetchone()用法:

    cur.execute("select host,user,password from user where user='%s'" %acc)
    jilu = cur.fetchone()  ##此时 通过 jilu[0],jilu[1],jilu[2]可以依次访问host,user,password


    fetchall() :

    返回多个元组,即返回多个记录(rows),如果没有结果 则返回 ()

    需要注明:在mysql中是NULL,而在python中则是None

    fetchall()用法:

    cur.execute("select * from user")

    如果select本身取的时候有多条数据时:

    cursor.fetchone():将只取最上面的第一条结果,返回单个元组如('id','title'),然后多次使用cursor.fetchone(),依次取得下一条结果,直到为空。

    cursor.fetchall() :将返回所有结果,返回二维元组,如(('id','title'),('id','title')),

    如果select本身取的时候只有一条数据时:

    cursor.fetchone():将只返回一条结果,返回单个元组如('id','title')。

    cursor.fetchall() :也将返回所有结果,返回二维元组,如(('id','title'),),

    python在mysql在使用fetchall或者是fetchone时,综合起来讲,fetchall返回二维元组(元组中含有元组),fetchone只返回一维元组


    展开全文
  • 查看MySQL数据库SQL语句的执行记录日志 方法1:可以使用processlist查看SQL执行语句,但是有个弊端,就是只能查看正在执行sql语句,无法查看历史执行的语句。 > use information_schema; > show ...

    查看MySQL数据库的SQL语句的执行记录日志

    方法1:可以使用processlist查看SQL执行语句,但是有个弊端,就是只能查看正在执行的sql语句,无法查看历史执行的语句。

    > use information_schema;

    > show processlist;
    或者
    > select * from information_schema.`PROCESSLIST` where info is not null;
    +--------+------+-----------+--------------------+---------+------+----------------------+-----------------------------------------------------------------------+---------+-------+-----------+----------+
    | ID     | USER | HOST      | DB                 | COMMAND | TIME | STATE                | INFO                                                                  | TIME_MS | STAGE | MAX_STAGE | PROGRESS |
    +--------+------+-----------+--------------------+---------+------+----------------------+-----------------------------------------------------------------------+---------+-------+-----------+----------+
    | 347182 | root | localhost | information_schema | Query   |    0 | Filling schema table | select * from information_schema.`PROCESSLIST` where info is not null |   0.502 |     0 |         0 |    0.000 |
    +--------+------+-----------+--------------------+---------+------+----------------------+-----------------------------------------------------------------------+---------+-------+-----------+----------+
    1 row in set (0.00 sec)


    方法2:开启数据库的日志模式,通过日志查看历史执行记录

    * 查看当前配置
    > show variables like '%log_output%'; 
    +---------------+-------+
    | Variable_name | Value |
    +---------------+-------+
    | log_output    | FILE  |
    +---------------+-------+

    > show variables like '%general_log%';
    +------------------+------------------------------+
    | Variable_name    | Value                        |
    +------------------+------------------------------+
    | general_log      | OFF                          |
    | general_log_file | /var/log/mariadb/mariadb.log |
    +------------------+------------------------------+

    * 开启&关闭日志模式(可选择输出到表或文件中):
    > SET GLOBAL log_output = 'FILE';  SET GLOBAL general_log = 'ON';   //日志开启(日志输出到文件)
    > SET GLOBAL log_output = 'FILE';  SET GLOBAL general_log = 'OFF';  //日志关闭
    或者
    > SET GLOBAL log_output = 'TABLE'; SET GLOBAL general_log = 'ON';   //日志开启(日志输出到表:mysql.general_log)
    > SET GLOBAL log_output = 'TABLE'; SET GLOBAL general_log = 'OFF';  //日志关闭

    > show variables like '%log_output%'; 
    +---------------+-------+
    | Variable_name | Value |
    +---------------+-------+
    | log_output    | FILE  |
    +---------------+-------+

    > show variables like '%general_log%';
    +------------------+------------------------------+
    | Variable_name    | Value                        |
    +------------------+------------------------------+
    | general_log      | ON                           |
    | general_log_file | /var/log/mariadb/mariadb.log |
    +------------------+------------------------------+


    * 查看日志文件中的执行记录:
    #tail -f /var/log/mariadb/mariadb.log
    ......
    347189 Query INSERT INTO `table_copy1` (`id`, `col02_str`, `col03_str`, `col04_int`, `col05_integer`, `col06_bigint`) 
     VALUES ( 1,  'aaaa',  'bbbbb',  20,  30,  655360),
            ( 2,  'xxxx',  'yyyy',  21,  333,  65536000),
            ( 3,  'asasdf',  'sdkfjdkf',  55,  900,  2222),
            ( 4,  'test',  'testaaa',  11,  22,  33),
            ( 5,  'test05',  'testssssss',  222,  222,  222),
            ( 6,  'test06',  'aaaa',  111,  111,  222),
            ( 7,  'aaaa',  'bbbb',  22,  22,  22),
            ( 8,  '你好',  'hello',  25,  25,  25),
            ( 9,  'aaa',  'aaa',  11,  11,  11),
            ( 10,  '',  'bbbbddddrrrrssss4444',  null,  null,  null),
    347189 Query    commit
    ......

    * 表查询执行记录:
    > SELECT * from mysql.general_log ORDER BY event_time DESC;

    * 日志查询执行记录
    > SELECT * from mysql.general_log ORDER BY event_time DESC;

    * 清空表
    > truncate table mysql.general_log;  //该表仅支持truncate不支持delete
     

    展开全文
  • 数据库SQL执行计划

    千次阅读 2018-10-11 23:40:13
    一条SQL如何执行?大概过程 MySQL本身的功能架构分为三个部分,分别是 应用层、逻辑层、物理层,不只是MySQL ,其他大多数数据库产品都是按这种架构来进行划分的。 应用层,主要负责与客户端进行交互...

    能写sql 只是程序员的基本功,能写出性能优异的SQL是优秀程序员的必备技能

    什么是Mysql的执行计划

    要对执行计划有个比较好的理解,需要先对MySQL的基础结构及查询基本原理有简单的了解。

    一条SQL如何执行?大概过程

    MySQL本身的功能架构分为三个部分,分别是 应用层、逻辑层、物理层,不只是MySQL ,其他大多数数据库产品都是按这种架构来进行划分的。

    • 应用层,主要负责与客户端进行交互,建立链接,记住链接状态,返回数据,响应请求,这一层是和客户端打交道的。

    • 逻辑层,主要负责查询处理、事务管理等其他数据库功能处理,以查询为例。

      • 首先接受到查询sql之后,数据库会立即分配一个线程对其进行处理;
      • 第一步查询处理器会对SQL查询进行优化,优化后会生成执行计划;
      • 然后交由计划执行器来执行。
      • 计划执行器需要访问更底层的事务管理器,存储管理器来操作数据,他们各自的分工各有不同;
      • 最终通过调用物理层的文件获取到查询结构信息,将最终结果响应给应用层。
    • 物理层,实际物理磁盘上存储的文件,主要分为数据文件,日志文件

    通过上面的描述,生成执行计划是执行一条SQL必不可少的步骤,一条SQL性能的好坏,可以通过查看执行计划很直观的看出来,执行计划提供了各种查询类型与级别,方面我们进行查看以及为作为性能分析的依据。

    所谓的执行计划,就是mysql如何执行一条Sql语句,包括sql查询的顺序、是否使用索引、以及使用索引信息的等等。

    如何分析执行计划,来帮助我们写出更好的Sql

    MySQL为我们提供了 explain 关键字来直观的查看一条SQL的执行计划。

    //1. 查询table_name
    select * from table_name where name="explain";
    
    //2. 查看上述语句的执行计划
    explain select * from table_name where name="explain";
    

    执行查看上述2语句后,我们可以得出以下执行计划结果

    idselect_typetablepartitionstypepossible_keyskeykey_lenrefrowsExtra
    1SIMPLEtable_nameALL1Using where

    上面这个执行计划给到的信息是: 这个结果通过一个简单的语句全表扫描,共扫描1行,使用where条件在t_base_user表中筛选出的。


    要想看懂执行计划,就要明白每一个参数的含义

    idselect_typetablepartitionstypepossible_keyskeykey_lenrefrowsExtra

    id

    有一组数字组成。表示一个查询中各个子查询的执行顺序;

    • id相同执行顺序由上至下。

    image

    • id不同,id值越大优先级越高,越先被执行。

    image

    • id为null时表示一个结果集,不需要使用它查询,常出现在包含union等查询语句中。

    image

    select_type

    每个子查询的查询类型,一些常见的查询类型。

    idselect_typedescription
    1SIMPLE不包含任何子查询或union等查询
    2PRIMARY包含子查询最外层查询就显示为 PRIMARY
    3SUBQUERY在select或 where字句中包含的查询
    4DERIVEDfrom字句中包含的查询
    5UNION出现在union后的查询语句中
    6UNION RESULT从UNION中获取结果集,例如上文的第三个例子

    table

    表示该语句查询的表

    partitions

    表分区、表创建的时候可以指定通过那个列进行表分区。 ex:

    create table tmp (
        id int unsigned not null AUTO_INCREMENT,
        name varchar(255),
        PRIMARY KEY (id)
    ) engine = innodb
    partition by key (id) partitions 5;
    

    image

    type

    访问类型

    • ALL 扫描全表数据
    • index 遍历索引
    • range 索引范围查找
    • index_subquery 在子查询中使用 ref
    • unique_subquery 在子查询中使用 eq_ref
    • ref_or_null对Null进行索引的优化的 ref
    • fulltext 使用全文索引
    • ref 使用非唯一索引查找数据
    • eq_refjoin查询中使用RIMARY KEY or UNIQUE NOT NULL索引关联。
    • const 使用主键或者唯一索引,且匹配的结果只有一条记录。
    • system const 连接类型的特例,查询的表为系统表。

    image

    possible_keys

    查询涉及到的字段上若存在索引,则该索引将被列出来。当该列为 NULL时就要考虑当前的SQL是否需要优化了。可能使用的索引,注意不一定会使用。

    key

    显示MySQL在查询中实际使用的索引,若没有使用索引,显示为NULL。

    Tips:查询中若使用了覆盖索引(覆盖索引:索引的数据覆盖了需要查询的所有数据),则该索引仅出现在key列表中

    key_length

    索引长度 char()、varchar()索引长度的计算公式:

    (Character Set:utf8mb4=4,utf8=3,gbk=2,latin1=1) * 列长度 + 1(允许null) + 2(变长列)
    

    其他类型索引长度的计算公式: ex:

    CREATE TABLE `student` (
      `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
      `name` varchar(128) NOT NULL DEFAULT '',
      `age` int(11),
      PRIMARY KEY (`id`),
      UNIQUE KEY `idx` (`name`),
      KEY `idx_age` (`age`)
    ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4;
    
    

    name 索引长度为: 编码为utf8mb4,列长为128,不允许为NULL,字段类型为varchar(128)。key_length = 128 * 4 + 0 + 2 = 514;

    image

    age 索引长度:int类型占4位,允许null,索引长度为5。
    image

    ref

    表示上述表的连接匹配条件,即哪些列或常量被用于查找索引列上的值

    rows

    扫描行数,也就是说,需要扫描多少行,采能获取目标行数,一般情况下会大于返回行数。通常情况下,rows越小,效率越高,也就有大部分SQL优化,都是在减少这个值的大小。

    Tips: 理想情况下扫描的行数与实际返回行数理论上是一致的,但这种情况及其少,如关联查询,扫描的行数就会比返回行数大大增加)

    extra

    extra的信息非常丰富,常见的有:

    • 1.Using index 使用覆盖索引
    • 2.Using where 使用了用where子句来过滤结果集
    • 3.Using filesort 使用文件排序,使用非索引列进行排序时出现,非常消耗性能,尽量优化。
    • 4.Using temporary 使用了临时表

    参考blog → 彻底读懂Mysql执行计划

    展开全文
  • MySQL数据库SQL语句的执行过程

    万次阅读 多人点赞 2021-02-22 03:59:20
    我们的系统在和 MySQL 数据库进行通信前,需要先和数据库建立连接,而这个功能就是由MySQL驱动底层帮我们完成的,建立完连接之后,我们只需要发送 SQL 语句就可以执行 CRUD 了。如下图所示: 一次 SQL 请求就会...
  • Mysql数据库查询sql执行日志

    千次阅读 2019-07-26 15:15:28
    mysql数据库查询sql执行日志(linux环境下)1、登录数据库确认是否开启了日志2、查询日志文件3、使用mysql自带的mysqlbinlog查询二进制文件 1、登录数据库确认是否开启了日志 mysql -uroot -p 登录成功之后查询操作...
  • python连接数据库执行SQL语句

    万次阅读 2018-08-04 11:06:15
    python连接数据库执行SQL语句 第一次发表博客,如果有什么错误请见谅 1.创建与数据库连接对象 2.建立游标对象 3.利用游标对象 执行SQL语句命令 4.#提交到数据库 5.关闭游标对象 6.关闭数据库连接 7.建立一个...
  • 数据库语言SQL

    千次阅读 2018-07-11 18:35:07
    数据库语言SQL SQL的发展 1974年,由Boyce和Chamberlin提出 1975~1979,IBM San Jose Research Lab的关系数据库管理系统原型System R实施了这种语言 SQL-86是第一个SQL标准 SQL-89、SQL-92(SQL2)、...
  • MySQL数据库中,如何记录SQL执行语句

    千次阅读 2010-10-09 16:58:00
    MySQL数据库中,如何记录SQL执行语句
  • 数据库SQL系列】sql语句执行顺序,你理解了吗

    万次阅读 多人点赞 2020-01-13 15:29:00
    1.序言 记得前几年,还是初级的时候,面试官问到,请你讲一下sql语句的执行顺序。当时我以为就是按照sql的关键字排列顺序来执行的。...了解一个sql语句的执行顺序,可以让我们清楚到sql执行时的操作顺序,进...
  • 最近在做项目时需要执行很多SQL文件,为了方便所以编写了一个shell脚本,并且把所有的错误信息都记录在一个日志文件中。 下面是详细的脚本,简单又适用。 #! /bin/sh logpath="log" filepath="/...
  • SQL数据库基础01】数据库SQL概述

    千次阅读 多人点赞 2021-05-26 11:21:35
    01 引入 保存数据的容器:有哪些? 数组 集合 ...DB 数据库(database):存储数据的“仓库”。...DBMS 数据库管理系统...SQL 结构化查询语言(Structure Query Language):专门用来与数据库通信的语 言 1.2.1 DBMS
  • 使用processlist,但是有个弊端,就是只能查看正在执行sql语句,对应历史记录,查看不到。好处是不用设置,不会保存。 跳转到information_schema表 -- 跳转到 information_schema 数据库 USE information_...
  • 假如说有一百多张表,不可能每次都一张表一张表的去查询然后记录,这时候就得有一个脚本可以自动执行。我在数据可视化工具上怎么试都不行,同时执行一百多个查询语句,数据可视化工具上会产生一百多个窗口,没有什么...
  • 查看DB2数据库sql执行情况

    千次阅读 2013-11-11 09:09:25
    在db2后台,通过db2top查看都是有哪些sql执行执行情况,操作步骤: 1.db2 connect to database user username using password 2.db2top -d database 3.shift+d(或者D) 4.出现的列表就是:你会看到sql执行...
  • 1、已系统用户登录数据库执行sql语句select * from v$sql,找到目标语句,复制sql_id; 2、执行select address from v$sql where sql_id='g84s7vp6uh2mc'; 复制address 3、执行select username,o
  • 查看Oracle数据库SQL执行历史

    千次阅读 2018-11-30 20:46:41
    查看Oracle数据库SQL执行历史 2015年03月26日 23:20:29 chinadm123 阅读数:14131 方法1:使用LogMiner工具 优点:可以完全挖掘日志内容,找出所有执行过的SQL语句 缺点: 如果没有启用归档日志,则只能对...
  • 数据库常用sql语句总结

    万次阅读 多人点赞 2018-12-14 16:16:32
    查看时右侧可以打开CSDN自带的目录,方便查看 目录 一、基础 1.SELECT 语句 2.SELECT DISTINCT 语句 3.WHERE 子句 4.AND 和 OR 运算符 5.ORDER BY 语句 6.INSERT INTO 语句 ...3.SQL 通配符 4.IN...
  • .版本 2 .支持库 mysql .程序集 窗口程序集_启动窗口 .子程序 _按钮1_被单击 .................局部变量 数据库名, 文本型 ...ip = 编辑框1....端口 = 到整数 (编辑框4....用户 = 编辑框2....数据库名 = 编辑框7.内容 句...
  • 查询SQLServer执行过的SQL记录(历史查询记录) SELECT TOP 1000 QS.creation_time, SUBSTRING(ST.text, (QS.statement_start_offset / 2) + 1, ((CASE QS.statement_end_offset WHEN - 1 THEN DATALENGT...
  • 数据库是极其重要的R语言数据导入源数据之地,读入包有sqldf、RODBC等...连接数据库(odbcConnect)、读入某张表(sqlFetch)、读某表某指标(sqlQuery)、关闭连接(close) 还有一些功能: 把R数据读入数据库sql
  • 日常进行K3相关操作需要对K3后台数据库逻辑进行监听的时候,需要启用SQL跟踪任务,通过跟踪任务可以获取实时的K3后台执行语句,进而研究其后台执行逻辑。记录一下sql跟踪的操作方法: 在任何一台可以正常连接数据库...
  • conn = psycopg2.connect(database="哪个数据库", user="用户名", password="密码", host="ip地址", port="端口") class connect: def __init__(self,conn): self.conn = conn self.cur = conn.curs
  • mysql数据库常用sql语句

    万次阅读 多人点赞 2018-11-03 21:10:01
    数据库可以用图形化工具来实现一系列操作,这里涉及一些cmd命令行 首先要配置好环境变量可以全局操作命令,不然只能在mysql的安装目录下进行操作,这里不再叙述 1. 进入数据库: mysql -u root -p (默认用户名为...
  • 最近在项目里遇到个问题,带日期的查询特别慢,但是语句单独提出来在数据库查询却是非常快。同样的条件,数据库查询出来三秒,程序里调试发现,需要20来秒。 SimpleDateFormat format = new SimpleDateFormat(...
  • python执行mysql数据库sql操作

    千次阅读 2017-08-02 14:56:10
    python操作mysql数据库 Python 标准数据库接口为 Python DB-API,Python DB-API为开发人员提供了数据库应用编程接口。 Python 数据库接口支持非常多的数据库,你可以选择...Microsoft SQL Server 2000 Informix In
  • Navicat Premium操作MySQL数据库---执行sql语句

    万次阅读 多人点赞 2018-06-05 16:07:44
    一. Navicat 简介 1. 什么是Navicat ? &...Navicat是一个强大的MySQL数据库管理和开发工具。Navicat为专业开发者提供了一套强大的足够尖端的工具,但它对于新用户仍然是易于学习。Navic

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 574,063
精华内容 229,625
关键字:

数据库的执行sql记录