精华内容
下载资源
问答
  • 临时空间主要用于临时段,而临时段由数据库根据需要创建、管理和删除的,这些临时段的生成通常与排序之类的操作有关系。例如 1.select distinct不重复检索 2.union联合查询 3.minus计算 4.analyze分析 5.连接两...

    临时表空间

    临时表空间是一个磁盘空间,主要用于内存排序区不够而必须将数据写到磁盘的某个逻辑区域,由于该空间在排序操作完成后可以由oracle系统自动释放,所以也称作临时表空间
    临时表空间主要用于临时段,而临时段是由数据库根据需要创建、管理和删除的,这些临时段的生成通常与排序之类的操作有关系。例如
    1.select distinct不重复检索
    2.union联合查询
    3.minus计算
    4.analyze分析
    5.连接两个没有索引的表

    创建临时表空间

    1. 创建一个临时表空间。空间大小为300Mb
    create temporary tablespace temp_01 tempfile 'D:\oraclefiles\tempfiles\tem_01.tpf' size 300m;
    
    1. 修改临时表空间
    alter database default temporary tablespace temp_01;
    

    查询临时表空间

    oracle11g将临时表空间与相应的临时文件信息存放在DBA_TEMP_FILES数据字典中,在v$tempfiles试图中。

    select file_name,bytes,tablesapce_name from dba_temp_files;
    
    展开全文
  • SQLinq一个用于在运行时生成临时的强类型SQL代码的库。 然后,可以直接使用ADO.NET针对SQL数据库执行生成SQL代码,也可以使用SQLinq Dapper nuget软件包使用Dapper.NET针对SQL数据库执行生成SQL代码。 SQLinq的...
  • 在Web应用的场景中,也通常用来和前端做数据交互jOOQ的代码生成器能够帮我们根据结构生成对应的POJO,能很大程度上减少我们自己创建POJO的工作量,当然,此功能也大部分ORM框架的必备功能...

    289421a975167f99aa8117b52ec2d03c.png

    完整教程:https://jooq.diamondfsd.com

    POJO是一个简单的Java对象,主要是包含一些属性和 getter/setter 方法,在业务中常用到的是用于传输数据以及作为参数传递。 在Web应用的场景中,也通常用来和前端做数据交互

    jOOQ的代码生成器能够帮我们根据表结构生成对应的POJO,能很大程度上减少我们自己创建POJO的工作量,当然,此功能也是大部分ORM框架的必备功能。本章主要讲解各种方式将数据结果转换为我们想要的格式

    Fetch 系列 API

    查询操作通常以fetch API 作为结束API,例如常用的有,所有的读取类方法都差不多,掌握一个就能很快的举一反三

    • 读取多条
      • fetch 读取集合
      • fetchSet 读取并返回一个Set集合,常用于去重
      • fetchArray 读取并返回一个数组
    • 读取单条
      • fetchOne 读取单条记录,如果记录超过一条会报错
      • fetchAny 读取单条记录,如果有多条,会取第一条数据
      • fetchSingle 读取单条记录,如果记录为空或者记录超过一条会报错
    • 读取并返回Map
      • fetchMap 读取并返回一个Map
      • fetchGroups 读取并返回一个分组Map

    fetch

    作为一个常用的读取多条记录的API,其他几个读取多条的方法和这个方法类似,只是返回值不同

    fetchSet, fetchArray 方法和 fetch 方法一样,都是返回多条数据,只是返回的格式不同,fetch通常返回List或者jOOQ的Result对象

    接下来介绍一下几个方法重载的返回值

    • fetch() 无参调用此方法,返回的是一个Result<Record>结果集对象
    Result<Record> records = dslContext.select().from(S1_USER).fetch();
    • fetch(RecordMapper mapper) RecordMapper接口的提供map方法,用于来返回数据。map 方法传入一个 Record 对象。可以使用lambda表达式将 Record 对象转换成一个指定类型的POJO
    List<S1UserPojo> userPojoList = dslContext.select()
                .from(S1_USER)
                .where(S1_USER.ID.eq(1))
                .fetch(r -> r.into(S1UserPojo.class));
    多表查询字段相同时直接用into方法将结果集转换为POJO时相同字段名称的方法会以最后一个字段值为准这时候我们可以现将结果集通过 `into(Table table)` 方法将结果集转换为指定表的`Record`对象然后再`into`进指定的POJO类中
    // 多表关联查询,查询s2_user_message.id = 2的数据,直接into的结果getId()却是1
    // 这是因为同时关联查询了s1_user表,该表的id字段值为1
    List<S2UserMessage> userMessage = dslContext.select().from(S2_USER_MESSAGE)
            .leftJoin(S1_USER).on(S1_USER.ID.eq(S2_USER_MESSAGE.USER_ID))
            .where(S2_USER_MESSAGE.ID.eq(2))
            .fetch(r -> r.into(S2UserMessage.class));
    // userMessage.getId() == 1
    
    // 将结果集into进指定的表描述中,然后在into至指定的POJO类
    List<S2UserMessage> userMessage2 = dslContext.select().from(S2_USER_MESSAGE)
            .leftJoin(S1_USER).on(S1_USER.ID.eq(S2_USER_MESSAGE.USER_ID))
            .where(S2_USER_MESSAGE.ID.eq(2))
            .fetch(r -> {
                S2UserMessage fetchUserMessage = r.into(S2_USER_MESSAGE).into(S2UserMessage.class);
                fetchUserMessage.setUsername(r.get(S1_USER.USERNAME));
                return fetchUserMessage;
            });
    // userMessage.getId() == 2
    • fetch(Field<?> field) Field是一个接口,代码生成器生成的表字段常量例如 S1_USER.ID, 都实现了 Field 接口,这个重载可以直接取出指定表字段,会自动根据传入的字段推测其类型
    List<Integer> id = dslContext.select().from(S1_USER).where(S1_USER.ID.eq(1))
            .fetch(S1_USER.ID);
    • fetch(String fieldName, Class<?> type) 可以直接通过字段名称字符串获取指定字段值,可以通过第二个参数指定返回值,如果不指定,返回Object
    List<Integer> idList = dslContext.select().from(S1_USER).where(S1_USER.ID.eq(1))
            .fetch("id", Integer.class);
    • fetch(int fieldIndex, Class<?> type) 可以通过查询字段下标顺序进行查询指定字段,可以通过第二个参数指定返回值,如果不指定,返回Object
    List<Integer> idList = dslContext.select(S1_USER.ID, S1_USER.USERNAME)
            .from(S1_USER).where(S1_USER.ID.eq(1)).fetch(0, Integer.class);

    fetch*

    fetchSet, fetchArray, fetchAny, fetchOne, fetchSingle 这几个方法的和 fetch 方法的用法一致,只是返回值不同,这里不做详解

    fetchAny, fetchOne, fetchSingle 方法返回单条数据,但是对于 数据为空、SQL结果为多条数据 的情况下,处理方式各不相同

    fd57f5acbeda37c8ca398484410b68ef.png
    • org.jooq.exception.TooManyRowsException 多条数据时抛出异常
    • org.jooq.exception.NoDataFoundException 无数据时抛出异常

    fetchMap

    此方法可以将结果集处理为一个Map格式,此方法有很多重载,这里介绍几个常用的,注意,此方法作为key的字段必须确定是在当前结果集中是唯一的,如果出现重复key,此方法会抛出异常

    • fetchMap(Field<K> field, Class<V> type) 以表字段值为key,返回一个 K:V 的Map对象
    Map<Integer, S1UserPojo> idUserPojoMap = dslContext.select().from(S1_USER)
                    .fetchMap(S1_USER.ID, S1UserPojo.class);
    • fetchMap(Feild<K> field, Field<V> field) 以表字段值为key,返回一个 K:V 的Map对象
    Map<Integer, String> idUserNameMap = dslContext.select().from(S1_USER)
                    .fetchMap(S1_USER.ID, S1_USER.USERNAME);

    fetchGroups

    此方法可以将结果集处理为一个Map格式,和fetchMap类似,只不过这里的值为一个指定类型的集合,通常在处理一对多数据时会用到

    • fetchGroups(Field<K> field, Class<V> type) 以表字段值为Key,返回一个K:List<V> 的Map对象
    Map<Integer, List<S2UserMessage>> userIdUserMessageMap = dslContext.select().from(S2_USER_MESSAGE)
                    .fetchGroups(S2_USER_MESSAGE.USER_ID, S2UserMessage.class);
    • fetchGroups(Field<K> keyField, Field<V> valueField)
    • 以表字段值为Key,返回一个K:List<V> 的Map对象
    Map<Integer, List<Integer>> userIdUserMessageIdMap = dslContext.select().from(S2_USER_MESSAGE)
                    .fetchGroups(S2_USER_MESSAGE.USER_ID, S2_USER_MESSAGE.ID);

    内容总结

    本章源码: https://github.com/k55k32/learn-jooq/tree/master/section-3

    文章主要讲解的是各种类型的读取API,掌握好这些API对于jOOQ的使用很有帮助

    本章中出现的一下几个接口可能是在编码过程中经常遇到的

    • Field<T> 接口 由代码生成器生成的所有表字段常量,都是此接口的实现类,包含了字段一些基本信息,例如字段名称,字段数据类型等,所有读取类方法都有基于此字段参数的重载
    • RecordMapper<? super R, E> mapper 接口 该接口很简单,主要是提供一个 map 方法给大家去实现。此接口只有一个方法,可以通过lambda表达式快速实现该接口。所有读取类方法都有基于此接口参数的重载
    public interface RecordMapper<R extends Record, E> {
        E map(R record);
    }
    展开全文
  • 在Web应用的场景中,也通常用来和前端做数据交互jOOQ的代码生成器能够帮我们根据结构生成对应的POJO,能很大程度上减少我们自己创建POJO的工作量,当然,此功能也大部分ORM框架的必备功能。本章主要讲解各种...

    POJO是一个简单的Java对象,主要是包含一些属性和 getter/setter 方法,在业务中常用到的是用于传输数据以及作为参数传递。 在Web应用的场景中,也通常用来和前端做数据交互

    jOOQ的代码生成器能够帮我们根据表结构生成对应的POJO,能很大程度上减少我们自己创建POJO的工作量,当然,此功能也是大部分ORM框架的必备功能。本章主要讲解各种方式将数据结果转换为我们想要的格式

    Fetch 系列 API

    查询操作通常以fetch API 作为结束API,例如常用的有,所有的读取类方法都差不多,掌握一个就能很快的举一反三

    读取多条

    fetch 读取集合

    fetchSet 读取并返回一个Set集合,常用于去重

    fetchArray 读取并返回一个数组

    读取单条

    fetchOne 读取单条记录,如果记录超过一条会报错

    fetchAny 读取单条记录,如果有多条,会取第一条数据

    fetchSingle 读取单条记录,如果记录为空或者记录超过一条会报错

    读取并返回Map

    fetchMap 读取并返回一个Map

    fetchGroups 读取并返回一个分组Map

    fetch

    作为一个常用的读取多条记录的API,其他几个读取多条的方法和这个方法类似,只是返回值不同

    fetchSet, fetchArray 方法和 fetch 方法一样,都是返回多条数据,只是返回的格式不同,fetch通常返回List或者jOOQ的Result对象

    接下来介绍一下几个方法重载的返回值

    fetch()

    无参调用此方法,返回的是一个Result结果集对象

    Resultrecords = dslContext.select().from(S1_USER).fetch();

    fetch(RecordMapper mapper)

    RecordMapper接口的提供map方法,用于来返回数据。map 方法传入一个 Record 对象。可以使用lambda表达式将 Record 对象转换成一个指定类型的POJO

    ListuserPojoList = dslContext.select()

    .from(S1_USER)

    .where(S1_USER.ID.eq(1))

    .fetch(r -> r.into(S1UserPojo.class));

    多表查询,字段相同时,直接用into方法将结果集转换为POJO时,相同字段名称的方法会以最后一个字段值为准。这时候,我们可以现将结果集通过 `into(Table table)` 方法将结果集转换为指定表的`Record`对象,然后再`into`进指定的POJO类中

    // 多表关联查询,查询s2_user_message.id = 2的数据,直接into的结果getId()却是1

    // 这是因为同时关联查询了s1_user表,该表的id字段值为1

    ListuserMessage = dslContext.select().from(S2_USER_MESSAGE)

    .leftJoin(S1_USER).on(S1_USER.ID.eq(S2_USER_MESSAGE.USER_ID))

    .where(S2_USER_MESSAGE.ID.eq(2))

    .fetch(r -> r.into(S2UserMessage.class));

    // userMessage.getId() == 1

    // 将结果集into进指定的表描述中,然后在into至指定的POJO类

    ListuserMessage2 = dslContext.select().from(S2_USER_MESSAGE)

    .leftJoin(S1_USER).on(S1_USER.ID.eq(S2_USER_MESSAGE.USER_ID))

    .where(S2_USER_MESSAGE.ID.eq(2))

    .fetch(r -> {

    S2UserMessage fetchUserMessage = r.into(S2_USER_MESSAGE).into(S2UserMessage.class);

    fetchUserMessage.setUsername(r.get(S1_USER.USERNAME));

    return fetchUserMessage;

    });

    // userMessage.getId() == 2

    fetch(Field> field)

    Field是一个接口,代码生成器生成的表字段常量例如 S1_USER.ID, 都实现了 Field 接口,这个重载可以直接取出指定表字段,会自动根据传入的字段推测其类型

    Listid = dslContext.select().from(S1_USER).where(S1_USER.ID.eq(1))

    .fetch(S1_USER.ID);

    fetch(String fieldName, Class> type)

    可以直接通过字段名称字符串获取指定字段值,可以通过第二个参数指定返回值,如果不指定,返回Object

    ListidList = dslContext.select().from(S1_USER).where(S1_USER.ID.eq(1))

    .fetch("id", Integer.class);

    fetch(int fieldIndex, Class> type)

    可以通过查询字段下标顺序进行查询指定字段,可以通过第二个参数指定返回值,如果不指定,返回Object

    ListidList = dslContext.select(S1_USER.ID, S1_USER.USERNAME)

    .from(S1_USER).where(S1_USER.ID.eq(1)).fetch(0, Integer.class);

    fetch*

    fetchSet, fetchArray, fetchAny, fetchOne, fetchSingle 这几个方法的和 fetch 方法的用法一致,只是返回值不同,这里不做详解

    fetchAny, fetchOne, fetchSingle 方法返回单条数据,但是对于 数据为空、SQL结果为多条数据 的情况下,处理方式各不相同

    方法名

    无数据

    多条数据

    单条数据

    fetchAny

    返回空

    返回第一条

    正常返回

    fetchOne

    返回空

    抛出异常

    正常返回

    fetchSingle

    抛出异常

    抛出异常

    正常返回

    org.jooq.exception.TooManyRowsException 多条数据时抛出异常

    org.jooq.exception.NoDataFoundException 无数据时抛出异常

    fetchMap

    此方法可以将结果集处理为一个Map格式,此方法有很多重载,这里介绍几个常用的,注意,此方法作为key的字段必须确定是在当前结果集中是唯一的,如果出现重复key,此方法会抛出异常

    fetchMap(Fieldfield, Classtype)

    以表字段值为key,返回一个 K:V 的Map对象

    MapidUserPojoMap = dslContext.select().from(S1_USER)

    .fetchMap(S1_USER.ID, S1UserPojo.class);

    fetchMap(Feildfield, Fieldfield)

    以表字段值为key,返回一个 K:V 的Map对象

    MapidUserNameMap = dslContext.select().from(S1_USER)

    .fetchMap(S1_USER.ID, S1_USER.USERNAME);

    fetchGroups

    此方法可以将结果集处理为一个Map格式,和fetchMap类似,只不过这里的值为一个指定类型的集合,通常在处理一对多数据时会用到

    fetchGroups(Fieldfield, Classtype)

    以表字段值为Key,返回一个K:List 的Map对象

    Map> userIdUserMessageMap = dslContext.select().from(S2_USER_MESSAGE)

    .fetchGroups(S2_USER_MESSAGE.USER_ID, S2UserMessage.class);

    fetchGroups(FieldkeyField, FieldvalueField)

    以表字段值为Key,返回一个K:List 的Map对象

    Map> userIdUserMessageIdMap = dslContext.select().from(S2_USER_MESSAGE)

    .fetchGroups(S2_USER_MESSAGE.USER_ID, S2_USER_MESSAGE.ID);

    内容总结

    文章主要讲解的是各种类型的读取API,掌握好这些API对于jOOQ的使用很有帮助

    本章中出现的一下几个接口可能是在编码过程中经常遇到的

    Field 接口

    由代码生成器生成的所有表字段常量,都是此接口的实现类,包含了字段一些基本信息,例如字段名称,字段数据类型等,所有读取类方法都有基于此字段参数的重载

    RecordMapper super R, E> mapper 接口

    该接口很简单,主要是提供一个 map 方法给大家去实现。此接口只有一个方法,可以通过lambda表达式快速实现该接口。所有读取类方法都有基于此接口参数的重载

    public interface RecordMapper{

    E map(R record);

    }

    文章来源: www.oschina.net,作者:DiamondFsd,版权归原作者所有,如需转载,请联系作者。

    原文链接:https://my.oschina.net/diamondfsd/blog/3167446

    展开全文
  • 只要在Oracle中执行如下SQL文件会自动创建用于练习的数据库 链接如下:Oracle数据库表生成文件 提取码:p98r Oracle练习的练习题 1.列出所有雇员的姓名及其直接上级的姓名 2.列出部门名称和这些部门的雇员,同时...

    Oracle练习的数据表

    只要在Oracle中执行如下SQL文件会自动创建用于练习的数据库表
    链接如下:Oracle数据库表生成文件
    提取码是:yjxt

    Oracle练习的练习题

    1.列出所有雇员的姓名及其直接上级的姓名
    2.列出部门名称和这些部门的雇员,同时列出那些没有雇员的部门;
    3.显示所有部门在"NEW YORK"(dept表 loc字段)的员工姓名
    4.显示员工"SMITH"的姓名,部门名称
    5.显示员工姓名,部门名称,工资,工资级别(salgrade表 grade字段),要求工资级别大于4级
    6.显示员工"KING"和"FORD"管理的员工姓名及其经理姓名
    7.显示员工名,参加工作时间,经理名,参加工作时间:参加工作时间比他的经理早
    8、求出部门名称中,带'S'字符的部门员工的工资总和 、部门人数
    9、列出所有员工的年工资,按年薪从低到高排序
    10、列出各种工作的最低工资以及从事此工作的雇员姓名
    11、列出所有部门的详细信息和部门人数
    12、列出所有员工的姓名、部门名称和工资
    13、查询员工信息: 员工的名字 老板的名字  
    14、要求查询出每一个雇员的编号、姓名、工资、部门名称、工资在所在公司的工资等级 
    15、按照职位分组,求出每个职位的最高工资、最低工资以及平均工资 
    16、统计平均工资大于2000的部门的详细信息
    

    Oracle练习的个人小结

    针对于如上练习的练习6,练习10以及练习11起初是没有写出来的,在参考了讲解后总结如下:

    1. 可以将查询结果作为from 的表,并进一步写语句,例如练习10,练习11
    2. 涉及多表查询,理清各个表格的字段之间关系,书写查询语句

    Oracle练习答案解析

    参考答案 提取码是:yjxt

    展开全文
  • 它将内省数据库(或许多),并将生成用于访问的工件。这减少了设置对象和配置文件以与数据库交互的初始麻烦。MBG寻求对简单CRUD(创建,检索,更新,删除)的大部分数据库操作产生重大影响。您仍然需要为...
  • 一、需求分析  日志数据在很多行业中都非常敏感的数据,它们不能删除只能保存和查看,这样日志就会越来越大,我们不可能... 针对当前系统来讲,可以这么做:每个月创建一张新表用于保存当月的日志数据。当然...
  • 这个类专门用来对这个单查询的类,就相当于,对该单的增删改查脱离sql性质的,直接在service 层就可以完成(当然这个sql逆向已经生过的) ---------------------------------------------------------...
  • 它通过查询数据库,逆向生成用于访问的代码(POJO, DAO层接口类和mapper)。 这大大减少了设置对象和配置文件与数据库进行交互的工作量。 MBG旨在对简单的CRUD操作(创建,检索,更新,删除)自动生成
  • 一、 更 新 查 询更新查询用于对一个或多个中的记录执行更新。更新查询主要对表中的数据进行批量的修改,会对表的数据产生实际的修改。二、 示 例 演 示上节中通过示例生成了新的图书数据,字段包括书名、...
  • Prisma初体验Prisma逆向生成数据模型1.创建工程目录2.项目初始化3.创建tsconfig.json4.创建Prisma schema文件5....它用于替代编写普通的SQL,或使用另一种数据库访问工具,如SQL查询生成器(如knex.js)或ORMs(如T
  • 临时的定义与普通类似,只是它们自动保存在tempdb数据库中(无论你在哪个数据库中创建它们)。临时通常用于以下一些情况: 替代游标。例如,可以生成一个临时来替代使用T-SQL游标的方式来遍历结果集。使用...
  • 公用表达式 (CTE) 可以认为在单个 SELECT、INSERT、UPDATE、DELETE 或 CREATE VIEW 语句的执行范围内定义的临时结果集。 CTE 与派生类似,具体表现在不存储为对象,并且只在查询期间有效。 与派生的不同之处...
  • 它将自动将查询数据库,并将生成用于访问的构件。这减少了设置对象和配置文件以与数据库交互的初始麻烦。MBG虽然减少了对于数据库简单的CRUD(创建、检索、更新、删除)大量代码,但是对于复杂的连接查询和...
  • 每个端口目录的内容用于生成端口构建。 阴谋:阴谋存储库包含所有构建,分为256个存储区目录。 这些单个文件构建为其创建软件的完整方法。 这些构建不希望直接查看,因为它们的信息可以通过ravenadm工具...
  • JOIN 按照功能大致分为如下三类:INNER JOIN(内连接,或等值连接):获取两个中字段匹配关系的记录。LEFT JOIN(左连接):获取左所有...1,首先创建2个,一个student,一个grades生成studentsql:DRO...
  • 索引一个单独的,存储在磁盘上的数据结构,它们包含则对数据表里所有记录的引用指针,使用索引用于快速找出在某个或多个列中有某一特定值的行,对相关列使用索引降低查询操作时间的最佳途径。索引包含由或视图...
  • Oracle(创建视图)

    2016-09-19 22:13:00
    概念: ...视图将一个查询的结果作为一个来使用,因此视图可以被看作存储查询结果的一个虚拟。视图来源于,所有对视图数据的修改最终都会被反映到视图的基表中,这些修改必须服从基表的完整...
  • Oracle的物化视图(Materialized View)包括一个查询结果的数据库对像,它远程数据的的本地副本,或者用来生成基于数据求和的汇总。 物化视图可以用于预先计算并保存连接或聚集等耗时较多的操作的结果,...
  • sql - 使用MySQL生成随机且唯一的8个字符串我正在开发一款涉及车辆的游戏。 我有一个名为“车辆”的MySQL... 我如何实现这一点的在Lua中使用while循环,这我正在编程的语言,用于生成字符串并查询DB以查看它...
  • 创建表查询 修改表查询 光标 临时表 交易管理 支持从标准输入加载数据 支持以下文件格式 CSV 硅通Kong LTSV 定长格式 JSON格式 支持以下文件编码 UTF-8 UTF-16 Shift_JIS JSON格式仅支持UTF-8。 参考手册 安装 ...
  • CTE(Common Table Expression) 公用表达式,它在单个语句的执行范围内定义的临时结果集,只在查询期间有效。... ⒈ 创建递归查询,这个应该CTE最好用的地方  ⒉ 在同一语句中多次引用生成...
  • CTE(公用表达式)

    2013-02-28 08:32:00
    可以认为在单个 SELECT、INSERT、UPDATE、DELETE 或 CREATE VIEW 语句的执行范围内定义的临时结果集。CTE 与派生类似,具体...创建递归查询(我个人认为CTE最好用的地方) 2.在同一语句中多次引用生成 CTE优点...
  • 在Web应用的场景中,也通常用来和前端做数据交互jOOQ的代码生成器能够帮我们根据结构生成对应的POJO,能很大程度上减少我们自己创建POJO的工作量,当然,此功能也大部分ORM框架的必备功能...

空空如也

空空如也

1 2 3 4 5 ... 14
收藏数 280
精华内容 112
关键字:

创建生成表查询是用于