2020-04-25 13:14:49
走到天涯海角
码龄4年
关注
增删改查中最简单的功能是删除,通过Id来删除单表或者多表都是可以的。
增删改查中最重要的功能是查询,因为不仅仅是单表查询、连表查询需要用到查询,新增前和修改前也要使用到查询。
查询遇到的业务比如:
1.登录:通过查询用户名和密码来找出用户,密码可以重复,但是用户名必须唯一,否则没办法找出单个用户。
(重要) 只要查询的字段是唯一的,都可以通过这个字段来查询出对应的单个对象或者集合。
什么字段是唯一的呢?
如:用户名必须唯一,文件名必须唯一,主键ID必须唯一等等,一时半会想不起来。
新增前,通过查询获得如:下拉框中的数据等
在新增时,通过获取下拉框的值或者输入框的值,就可以保存新增。
新增也会遇到循环插入的情况,如新增角色和修改角色,要循环插入数据到角色菜单关系表中。
循环插入数据的做法,我是用过两种方法,一种方法是使用c3p0,另一种是使用mybatis的foreach标签
修改前,通过查询,获得如:用户的信息,然后放到修改输入框,提高用户的使用体验。
修改时,通过隐藏区的Id,和输入框或者下拉框中的值,来进行保存修改。
文章知识点与官方知识档案匹配
Java技能树首页概览
92024 人正在系统学习中
打开CSDN APP,看更多技术内容
JavaWeb实现简单对数据库的增删改查_向晚而生的博客_web实现数...
数据库:MySQL 连接池:Druid连接池 Github仓库地址:点我 jar包下载:点我!提取码:y4ef 参考:Javaweb实现增删改查 *** 作 *** 作 用JavaWeb部分知识实现对数据库的增删改查 只展示Student和Teacher的相关代码 一、效果图 二、数据库实现 1. ...
继续访问
Web对数据库的增删改查(servlet+jsp+javaBean增删改查)
1.开始之前的准备(servlet+jsp+javaBean增删改查) jsp:页面的请求和展示 在前台主要学了jsp进行页面的请求和展示 java后台 mysql数据库 学习了java如何进行数据库增删改查 JDBC重构Dao Dao进行sql语句 将数据库的获取结果响应到页面上 ...
继续访问
最新发布 javaweb极简登录注册增删改查
javaweb极简登录注册增删改查
继续访问
简单的JavaWeb项目,基本的增删改查和分页查询等功能。
简单的JavaWeb项目,刘意老师整理,拥有登录,添加,删除,修改,分页查询,删除选中,复杂分页查询功能。
JavaWeb阶段案例--简易版管理图书系统(增删改查)
超详细JavaWeb阶段项目 --图书管理系统 -- 连接数据库在网页上实现图书的增删改查
继续访问
笔记--MySQL相关 *** 作
一 登录数据库 1 用户无密码: mysql -uroot -p mysql->2 用户有密码: MySQL -root -p[passwd] mysql->二 创建数据库: 查询: mysql>show databases+--------------------+ | Database ...
继续访问
Javaweb--通过网页实现对数据库的增删查改
文章目录Javaweb--通过网页实现对数据库的增删查改1、功能需求2、技术选型2、最终效果图3、数据库准备4、前端开发5、后端开发 Javaweb–通过网页实现对数据库的增删查改 通常在写一些后台管理系统的时候,一定会有关于数据表格的增删查改的功能实现。最近也是闲来无事,做了这个小案例,希望能帮到有写这方面需求的朋友们。 1、功能需求 这次以单个的员工数据表为例,实现以下功能需求: 1、能够正常从数据库中读取相应数据。 2、设置分页,能够通过点击页码,进行数据更新,同时支持输入页码更新数据
继续访问
让我们在网页中实现数据库的增删改查~
目录主要思路首先让我们链接自己的数据库 index.js对数据库设定一些用户规则 user.js做一个添加数据的静态网页 add.html做一个主页面 list.html最最最主要的js代码自我激励 主要思路 搭建网站服务器,实现客户端与服务器端的通信 连接数据库, 创建用户集合, 向集合中插入文档 当用户访问 /list时,将所有用户信息查询出来 1.实现路由功能 1.呈现用户列表页面 1. 再点击修改按钮的时 将用户ID传递到当前页面 2. 从数据库中查询当前用户信息 将用户信息展示到页面中 2.从数据
继续访问
JavaWeb 增删改查快速开发总结
JavaWeb增删改查基本都是那一套,其中最繁琐 变动的便是围绕SQL语句、Servlet来展开,下面是我对这些左到一个小总结,希望能对您有所帮助首先项目搭建好之后就是最关键的SQL语句 Servlet代码 Servlet方法 然后是前端methods()方法 删除和批量删除(这里用element做了个删除提示)...
继续访问
Java web阶段学习总结(华清远见)
经过web前端的学习之后,我们开启了Java web后端的学习。学习一样新的东西首先要了解它的原理,以及所要具备的一些条件。对于Servlet 的开发步骤一般有:新建一个Java web项目工程 -->创建servlet类继承Http Servlet,重写service方法 -->在web.xml中做地址映射 -->打包 -->部署 -->启动容器。这样就可以在浏览器中访问web程序。了解步骤之后就可以动手敲了。
继续访问
javaWeb反思与总结
javaWeb的回顾总结
继续访问
javaweb mysql增删改查_超详细的JavaWeb用户的增删改查实现总结
前言本文是基于单体架构实现的角色的增删改查的功能。前台使用Bootstrap+Ajax+Jsp , 后端使用Spring+SpringMvc+MyBatis进行开发,相信使用过这些技术的小伙伴应该很好的理解以下的内容,也希望看了这篇文章小伙伴们有所收获。准备工作后端技术技术说明官网SpringSpring是一个轻量级控制反转(IoC)和面向切面(AOP)的容器框架。SpringMvcMVC框架ht...
继续访问
Javaee增删改查学习心得
这是我学习完Javaee增删改查后的一些经验心得,在这里记录加深一下印象。 1、创建一个web项目,在左侧项目区域右键创建新的web项目,如果没找到选择最下方other,搜索dy,点击创建web项目。 2、导入相应的jar包,oracle数据库导入oracle的jdbc连接jar包,mysql数据库导入mysql的jdbc连接jar包。在lib文件夹下导入。如需j导入s或css的jar包则最好新建...
继续访问
MySQL学习笔记(一) 下载安装+基本增删改查 + 事务
mysql笔记,内容包含下载安装,DDL,DML,DQL,DCL语法,约束,多表查询等
继续访问
简易的JavaWeb实现增删查改(附数据库)
一、概述 时隔一年,重回博客,应许多初学的同学要求,实现简单的增删查改功能的小程序,具体请详看下面的截图~~~ 二、开发环境 语言:JavaWeb、JSP、CSS 数据库:MySQL 开发工具:Eclipse 三、部分截图展示 四、代码片段 @Override public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletExceptio...
继续访问
PHP网页设计实现增删改查,包含报告实训内容
运用PHP技术和MySQL数据库实现对一个数据库表格的 *** 作。 实验环境 1.DreamweaverCS6软件2.phpStudy2018软件(包含Web服务器Apache、数据库服务器MySQL、PHP语言引擎) 实验内容安排 1.选择学习或生活环境中的一个数据表格并构造符合SQL格式的初始数据2.通过浏览器对这个数据表格进行查找、显示、修改、增添、删除5项 *** 作...
继续访问
增删查改
增删查改 增删查改在所有的语言代码中都是最基础和重要的,增删查改在代码中担任着不可缺少的一部分,整个代码项目都是靠着增删查改。“增删查改”就如同字面意思一样,增:新增(insert),删:删除(delete),查:查询(select),改:修改(update),代码做出来的东西大部分都是靠着“增删查改”来运行的! 先说的就是增:新增(insert),最简单的意思就是用原来的数据来新增一条或多条新的数据,这就是新增。首先要有一个写一个模态框才能在模...
继续访问
JavaWeb实现简单对数据库的增删改查
通过JavaWeb实现简单的对数据库的增删改查
继续访问
热门推荐 java web基本增删改查 *** 作
这是一个结合mysql数据库,java后端和jsp页面的综合案例: 声明:学习本文时,需要有一定的基础,例如jsp,jquery,servlet,Java,jdbc等基础,如果不懂的希望从基础学起,加油! 在代码中有对应的注释说明,所以我就直接上代码了 大致流程是: 首先访问到servlet层,在servlet层里调用StudentRepository的各个方法,然后展示到jsp页面中。所以浏览器访问路径是servlet层里StudentServlet中@WebServlet("/student")的路径(
继续访问
关于Javaweb课程设计的心得体会.docx
关于Javaweb课程设计的心得体会.docx关于Javaweb课程设计的心得体会.docx关于Javaweb课程设计的心得体会.docx关于Javaweb课程设计的心得体会.docx关于Javaweb课程设计的心得体会.docx关于Javaweb课程设计的心得体会.docx关于Javaweb课程设计的心得体会.docx关于Javaweb课程设计的心得体会.docx关于Javaweb课程设计的心得体会.docx
记录一下springboot+mybatis实现增删改查的基本流程和心得
记录一下springboot+mybatis实现增删改查的基本流程和心得 springboot是一个spring家族中举足轻重的那一个,也是在javaweb实际开发过程经常使用到的一个框架,熟练使用springboot是在实际工作中非常重要的。(在一开始中我认为要先学会如何使用,而不是深究底层原理和代码,毕竟一般的java开发工作中只会项目经理只会不停给你分配增删改查的功能任务,当然,随着开发经验的不断提升,只止步于增删改查会很难得到工作地位提升的机会) 第一步:导入pom.xml依赖 <!--spr
继续访问
java的开发环境和运行环境,年薪60W必备
四面阿里 面试岗位是研发工程师,直接找蚂蚁金服的大佬进行内推,参与了阿里巴巴中间件部门的提前批面试,一共经历了四次面试,拿到了口头offer。 一面: 自我介绍 项目中做了什么,难点呢。 Java的线程池说一下,各个参数的作用,如何进行的。 Redis讲一下 分布式系统的全局id如何实现。用zookeeper如何实现的呢,机器号+时间戳即可。 分布式锁的方案,redis和zookeeper那个好,如果是集群部署,高并发情况下哪个性能更好。 kafka了解么,了解哪些消息队列。 想做业务还是研究。 然后出了
继续访问
web增删改查数据库实验总结
java
写评论
当咱们设计一个关系型数据库时,着手点是系统中的对象(Entities),再为对象加上属性描述,从而转换为表设计。在关系型数据库中咱们不会考虑表的行,由于肯定表的字段名称以后,数据逐行写入,数据库会管理行数据空间。数据库宽行仍是窄行(Wild Rows or Skinny Rows)apache
但在Cassandra里,咱们必须在设计时考虑列族的行数,这取决于定义的列的数目。一般会有两种选择:数据结构
宽行(Wild Rows):在每行中包含数量巨大(一般会达到百万 级之多)的列,但只有不多的行数;less
窄行(Skinny Rows):比较像关系型数据库的使用方法,有少许较为固定的列,使用不一样、不断增长的行来存储。数据库设计
列排序(Column Sorting)ide
Cassandra不支持查询语言,也不支持查询时使用Order By对数据进行排序,排序是须要设计时考虑。在定义列族时,能够包含一个名为CompareWith的元素,这个元素决定了此列族的排序规则。Cassandra提供的排序支持如下几种数据类型,包含了字符、字节、数字和日期时间:AsciiType, BytesType, LexicalUUIDType, Integer Type, LongType, TimeUUIDType, or UTF8Type.ui
设计原则(Design Principles)spa
Cassandra的数据结构设计与关系型数据库彻底不一样,核心有三大设计原则:物化视图、无值列和复合键。设计
物化视图(Materialized View)rest
在关系型数据库中,咱们一般会使用Where条件查询表的部分结果集,好比咱们设计了Users表,有一个City字段,而后使用Where City = 'New York'来进行查询。
SELECT * FROM USERS WHERE CITY = "New York"
在Cassandra中,咱们会直接建立一个新的列族名为CityUsers,以City为行名称,列为全部在这个City中的Users.
$ create column family CityUser
$ set CityUsers["NewYork"]["UserID"] = "1, 2, 3, 4"
这在Cassandra里是一种很是广泛和常见的设计,物化视图为查询而设计一份映射数据,而不是从原始数据中去寻找。
无值列(Valueless Column)
以上面的Users/CityUsers为例,咱们设计了行名为City,列为Users的列族,由于数据是从Users列族中映射过来的,其实咱们并不须要为列指定内容,它能够直接引用Users表中的数据。
复合键(Aggregate Key)在《Cassandra – 理解关键概念和数据模型》为你们介绍过复合键的用法,在Cassandra中,大量使用复合键也是设计原则之一。 在设计Cassandra数据结构时,应当紧紧把握的两点:
从查询开始:Cassandra不是为对象而设计,而是为查询而设计。先看看系统中须要的查询是什么样的,再着手设计;
系统时间:由于Cassandra的列结构包含时间戳,因此你必须考虑从不一样客户端过来的时间格式,有必要指定一个统一的标准时间,固然,这将带来本地时间转换问题。
数据设计示例(Data Design Sample)
需求
查询指定地区的酒店
查询指定酒店的信息,包括名称和所在地区
查询酒店附近有趣的地点
查询指定日期区间可预订的房间
查询房间的评分
提交客户信息预订房间
关系型数据库设计
Screen Shot 2013-12-01 at 10.32.08 AM
Cassandra数据结构设计
Screen Shot 2013-12-01 at 10.34.12 AM
设计思路:
建立数据库结构;
建立酒店和附近场所的数据结构。酒店是普通列族,附近场所是超级列族;
查询指定地区的酒店,使用第二簇索引完成;
查询一个酒店,而后查询附近场所;
预订酒店时,向Reservation列族写入行数据。
Cassandra.yaml
keyspaces:
- name: Hotelier
replica_placement_strategy: org.apache.cassandra.locator.RackUnawareStrategy
replication_factor: 1
column_families:
- name: Hotel
compare_with: UTF8Type
- name: HotelByCity
compare_with: UTF8Type
- name: Guest
compare_with: BytesType
- name: Reservation
compare_with: TimeUUIDType
- name: PointOfInterest
column_type: Super
compare_with: UTF8Type
compare_subcolumns_with: UTF8Type
- name: Room
column_type: Super
compare_with: BytesType
compare_subcolumns_with: BytesType
- name: RoomAvailability
column_type: Super
compare_with: BytesType
compare_subcolumns_with: BytesType
本文参考自《Cassandra: The Definitive Guide》
原文连接:Cassandra – 数据结构设计概念和原则
相关文章
1. 数据库 - 概念结构设计
2. 数据库设计----概念结构设计(概念模型、E—R模型、概念结构设计)
3. 数据库原理 概念结构设计的方法
4. 数据库原理(十 一)- 概念结构设计
5. 数据库结构设计概念设计
6. 数据库设计(1)_概念结构设计
7. 【数据库原理】概念结构、逻辑结构设计案例
8. 数据库原理 概念结构设计-E-R图及其设计
9. 设计模式-----原则概念
10. 数据库学习笔记(四)数据库设计——概念结构设计
更多相关文章...
• 数据库是什么?数据库的概念 - MySQL教程
• Web 创建设计 - 网站建设指南
• TiDB 在摩拜单车在线数据业务的应用和实践
• Flink 数据传输及反压详解
大家好呀,这节课学习 HiveSQL 的常用优化技巧。由于 Hive 主要用来处理非常大的数据,运行过程由于通常要经过 MapReduce 的过程,因此不像 MySQL 一样很快出结果。而使用不同方法写出来的 HiveSQL 语句执行效率也是不一样的,因此为了减少等待的时间,提高服务器的运行效率,我们需要在 HiveSQL 的语句上进行一些优化。
本节课的主要内容 :
引言
1、技巧一:列裁剪和分区裁剪
(1)列裁剪
(2)分区裁剪
2、技巧二:排序技巧——sort by代替order by
3、技巧三:去重技巧——用group by来替换distinct
4、技巧四:聚合技巧——grouping sets、cube、rollup
(1)grouping sets
(2)cube
(3)rollup
5、技巧五:换个思路解题
6、技巧六:union all时可以开启并发执行
7、技巧七:表连接优化
8、技巧八:遵循严格模式
Hive 作为大数据领域常用的数据仓库组件,在平时设计和查询时要特别注意效率。影响Hive效率的几乎从不是数据量过大,而是数据倾斜、数据冗余、job 或 I/O 过多、MapReduce 分配不合理等等。对 Hive 的调优既包含对HiveSQL 语句本身的优化,也包含 Hive 配置项和 MR 方面的调整。
列裁剪就是在查询时只读取需要的列。当列很多或者数据量很大时,如果select 所有的列或者不指定分区,导致的全表扫描和全分区扫描效率都很低。Hive中与列裁剪优化相关的配置项是 hive.optimize.cp ,默认是 true 。
分区裁剪就是在查询时只读需要的分区。Hive中与分区裁剪优化相关的则是 hive.optimize.pruner ,默认是 true 。
HiveSQL中的 order by 与其他 SQL 语言中的功能一样,就是将结果按某个字段全局排序,这会导致所有map端数据都进入一个 reduce 中,在数据量大时可能会长时间计算不完。
如果使用 sort by ,那么就会视情况启动多个 reducer 进行排序,并且保证每个 reducer 内局部有序。为了控制 map 端数据分配到 reduce 的 key,往往还要配合 distribute by 一同使用。如果不加 distribute by 的话,map 端数据就会随机分配给 reducer。
这里需要解释一下, distribute by 和 sort by 结合使用是如何相较于 order by 提升运行效率的。
假如我们要对一张很大的用户信息表按照年龄进行分组,优化前的写法是直接 order by age 。使用 distribute by 和 sort by 结合进行优化的时候, sort by 后面还是 age 这个排序字段, distribute by 后面选择一个没有重复值的均匀字段,比如 user_id 。
这样做的原因是,通常用户的年龄分布是不均匀的,比如20岁以下和50岁以上的人非常少,中间几个年龄段的人又非常多,在 Map 阶段就会造成有些任务很大,有些任务很小。那通过 distribute by 一个均匀字段,就可以让系统均匀地进行“分桶”,对每个桶进行排序,最后再组合,这样就能从整体上提升 MapReduce 的效率。
取出 user_trade 表中全部支付用户:
原有写法的执行时长:
优化写法的执行时长:
考虑对之前的案例进行优化:
注意: 在极大的数据量(且很多重复值)时,可以先 group by 去重,再 count() 计数,效率高于直接 count(distinct **) 。
如果我们想知道用户的性别分布、城市分布、等级分布,你会怎么写?
通常写法:
缺点 :要分别写三次SQL,需要执行三次,重复工作,且费时。
那该怎么优化呢?
注意 :这个聚合结果相当于纵向地堆在一起了(Union all),分类字段用不同列来进行区分,也就是每一行数据都包含 4 列,前三列是分类字段,最后一列是聚合计算的结果。
GROUPING SETS() :在 group by 查询中,根据不同的维度组合进行聚合,等价于将不同维度的 group by 结果集进行 union all。聚合规则在括号中进行指定。
如果我们想知道用户的性别分布以及每个性别的城市分布,你会怎么写?
那该怎么优化呢?
注意: 第二列为NULL的,就是性别的用户分布,其余有城市的均为每个性别的城市分布。
cube:根据 group by 维度的所有组合进行聚合
注意 :跑完数据后,整理很关键!!!
rollup:以最左侧的维度为主,进行层级聚合,是cube的子集。
如果我想同时计算出,每个月的支付金额,以及每年的总支付金额,该怎么办?
那应该如何优化呢?
条条大路通罗马,写SQL亦是如此,能达到同样效果的SQL有很多种,要学会思路转换,灵活应用。
来看一个我们之前做过的案例:
有没有别的写法呢?
Hive 中互相没有依赖关系的 job 间是可以并行执行的,最典型的就是
多个子查询union all。在集群资源相对充足的情况下,可以开启并
行执行。参数设置: set hive.exec.parallel=true
时间对比:
所谓严格模式,就是强制不允许用户执行3种有风险的 HiveSQL 语句,一旦执行会直接报错。
要开启严格模式,需要将参数 hive.mapred.mode 设为 strict 。
好啦,这节课的内容就是这些。以上优化技巧需要大家在平时的练习和使用中有意识地去注意自己的语句,不断改进,就能掌握最优的写法。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)