javaee 第11周
1.JPQL查询
- 查询用的 SELECT 语法
- 更新用的 UPDATE 语法
- 删除用的 DELETE 语法
u是个路径表示(path expression),路径表示有三种:范围变数(Range
variable)路径表示、群集成员(Collection member)路径表示与关联导览(Association
traversing)表示。User u是范围变数路径表示的一个例子,指定查询的实体为User与别名为u。
一个群集成员路径表示用来指定物件中的群集成员,例如:
比较陈述 | =、>、>=、<、<=、<> |
BETWEEN 陈述 | [NOT BETWEEN |
LIKE 陈述 | [NOT] LIKE |
IN 陈述 | [NOT] IN |
NULL 陈述 | IS [NOT] NULL |
EMPTY 陈述 | IS [NOT] EMPTY |
EXISTS 陈述 | [NOT] EXISTS |
关联导览表示则提供SQL语法中JOIN的功能,包括了INNER JOIN、LEFT OUTER JOIN、FETCH等,以下为INNER JOIN的实际例子:
可以对查询结果使用ORDER BY进行排序:
选择查询
聚合查询
更新查询
删除查询
结构化查询语言(Structured
Query
Language,简称SQL)是一种介于关系代数与关系演算之间的语言,是一种用来与关系数据库管理系统通信的标准计算机语言。其功能包括数据查询、数据操纵、数据定义和数据控制4个方面,是一个通用的、功能极强的关系数据库语言。目前已成为关系数据库的标准语言。
1 SQL基本功能
SQL语言集数据查询(Data Query)、数据操纵(Data Manipulation)、数据定义(Data Definition)和数据控制(Data Control)功能于一体,充分体现了关系数据语言的特点和优点。
1.数据定义功能
通过DDL(Data Definition Language)语言来实现。可用来支持定义或建立数据库对象(如表、索引、序列、视图等),定义关系数据库的模式、外模式、内模式。常用DDL语句为不同形式的CREATE、ALTER、 DROP命令。
2.数据操纵功能
数据操纵功能通过DML(Data Manipulation Language)语言来实现,DML包括数据查询和数据更新两种语句,数据查询指对数据库中的数据进行查询、统计、排序、分组、检索等操作.数据更新指对数据的更新、删除、修改等操作。
3.数据控制功能
数据库的数据控制功能指数据的安全性和完整性。通过数据控制语句DCL(Data Control Language)来实现。
2、SQL语言的特点
1.语言简洁、易学易用
2.高度非过程化
用户只需提出“做什么”就可以得到预期的结果,至于“怎么做”则由RDBMS完成,并且其处理过程对用户隐藏
3.SQL语言既可交互式使用,也可以以嵌入形式使用
前者主要用于数据库管理者等数据库用户,允许用户直接对DBMS发出SQL命令,受到运行后的结果,或者主要嵌入(C、C++)等宿主语言中,被程序员用来开发数据库应用程序。而在两种不同的使用方式下,SQL语言的语法结构基本上是一致的。这种以统一的语法结构提供两种不同的使用方式的作法,为用户提供了极大的灵活性与方便性。
4.面向集合的操作方式
SQL语言采用集合操作方式,不仅查找结果可以是元组的集合,而且一次插入、删除、更新操作的对象也可以是元组的集合。
5.SQL语言支持关系数据库三级模式结构
数据库三级模式指:内模式对应于存储文件,模式对应于基本表,外模式对应于视图。基本表是本身独立存在的表,视图是从基本表或其他视图中导出的表,它本身不独立存储在数据库中,也就是说数据库中只存放视图的定义而不存放视图对应的数据,这些数据仍存放在导出视图的基本表中,因此视图是一个虚表。用户可以用SQL语言对视图和基本表进行查询。在用户眼中,视图和基本表都是关系,而存储文件对用户是透明的。
6.综合统一
①
SQL语言集数据定义语言DDL、数据操纵语言DML、数据控制语言DCL的功能于一体,语言风格统一,可以独立完成数据库生命周期中的全部活动,包括定义关系模式、录入数据以建立数据库、查询、更新、维护、数据库重构、数据库安全性控制等一系列操作要求,这就为数据库应用系统开发提供了良好的环境,例如用户在数据库投入运行后,还可根据需要随时地逐步地修改模式,并不影响数据库的运行,从而使系统具有良好的可扩充性。
② 在关系模型中实体和实体间的联系均用关系表示,这种数据结构的单一性带来了数据操作符的统一,即对实体及实体间的联系的每一种操作(如:查找、插入、删除、修改)都只需要一种操作符
Query
Language)查询提供了更加丰富的和灵活的查询特性,因此Hibernate将HQL查询方式立为官方推荐的标准查询方式,HQL查询在涵盖Criteria查询的所有功能的前提下,提供了类似标准SQL语句的查询方式,同时也提供了更加面向对象的封装。完整的HQL语句形式如下:
Select/update/delete…… from …… where …… group by …… having …… order by
…… asc/desc
其中的update/delete为Hibernate3中所新添加的功能,可见HQL查询非常类似于标准SQL查询。HQL查询在整个Hibernate实体操作体系中站核心地位。
AND 和 OR 可在 WHERE 子语句中把两个或多个条件结合起来。
使用OR关键字时:
- 只要符合这几个查询条件的其中一个条件,这样的记录就会被查询出来。
- 如果不符合这些查询条件中的任何一条,这样的记录将被排除掉。
使用and关键字时:
- 需要符合所有条件,这样的记录就会被查询出来。
- 如果有任何一个条件不符合,这样的记录将被排除掉。
mysql and与or实例
本实例中需要使用到的表数据如下:
title | content | category | seo_name |
---|---|---|---|
php数组 | php数组使用分析 | 1 | php |
mysql distinct | mysql distinct实例 | 2 | mysql |
java array | java array使用方法 | 3 | java |
php input | php input如何获值 | 4 | php |
(1)AND条件查询运算符实例:
使用 AND 来显示所有title为 "php数组" 并且category为1的数据:
SELECT * FROM ar WHERE title='php数组' AND category='1'
结果:
title | content | category | seo_name |
---|---|---|---|
php数组 | php数组使用分析 | 1 | php |
(2)OR条件运算符实例
使用 OR 来显示所有title为 "java array" 或者seo_name为 "php" 的数据:
SELECT * FROM ar WHERE title='java array' OR seo_name='php'
结果:
title | content | category | seo_name |
---|---|---|---|
php数组 | php数组使用分析 | 1 | php |
java array | java array使用方法 | 3 | java |
php input | php input如何获值 | 4 | php |
(3)结合 AND 和 OR 运算符
我们也可以把 AND 和 OR 结合起来(使用圆括号来组成复杂的表达式):
SELECT * FROM ar WHERE (title='java array' OR category='4')
AND seo_name='php'
结果:
title | content | category | seo_name |
---|---|---|---|
php input | php input如何获值 | 4 | php |
and与or优先级
在where中可以包含任意数目的and和or操作符,在没有任何其他符号的时候,例如括号,SQL会首先执行and条件,然后才执行or语句,如:
select * from table from id=1 or id=2 and price>=10;
/* http://www.manongjc.com/article/1439.html */
这条语句默认执行的是id=2并且price大于等于10的,或者是id=1。
如果加上括号:
select * from table from (id=1 or id=2) and price>=10;
则这条语句执行的是id=1或id=2,并且price大于等于10。
javaee 第11周的更多相关文章
- 201521123082 《Java程序设计》第11周学习总结
201521123082 <Java程序设计>第11周学习总结 标签(空格分隔):java 1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多线程相关内容. Answe ...
- 201521123107 《Java程序设计》第11周学习总结
第11周作业-多线程 1.本周学习总结 2.书面作业 本次PTA作业题集多线程 1.互斥访问与同步访问 完成题集4-4(互斥访问)与4-5(同步访问) 1.1 除了使用synchronized修饰方法 ...
- 201521123067 《Java程序设计》第11周学习总结
201521123067 <Java程序设计>第11周学习总结 1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多线程相关内容. 2. 书面作业 本次PTA作业题集多线 ...
- 201521123045 <java程序设计>第11周学习总结
201521123045 <java程序设计>第11周学习总结 1. 本周学习总结 2. 书面作业 2. 书面作业 Q1.1.互斥访问与同步访问完成题集4-4(互斥访问)与4-5(同步访问 ...
- 2018面向对象程序设计(Java)第11周学习指导及要求
2018面向对象程序设计(Java)第11周学习指导及要求 (2018.11.8-2018.11.11) 学习目标 (1) 掌握Vetor.Stack.Hashtable三个类的用途及常用API: ...
- 20172333 2017-2018-2 《Java程序设计》第11周学习总结
20172333 2017-2018-2 <Java程序设计>第11周学习总结 教材学习内容 对于Android Studio的安装以及对安卓的一些基本组成,比如说四大组件Acticity ...
- 20145202马超 2016-2017-2 《Java程序设计》第11周学习总结
20145202马超 2016-2017-2 <Java程序设计>第11周学习总结 教材学习内容总结 XX 教材学习中的问题和解决过程 教材学习有问题先去https://shimo.im/ ...
- 分享Kali Linux 2017年第11周镜像文件
分享Kali Linux 2017年第11周镜像文件 Kali?Linux官方于3月12日发布2017年的第11周镜像.这次维持了11个镜像文件的规模.默认的Gnome桌面的4个镜像,E17.KDE ...
- 面向对象程序设计(JAVA) 第11周学习指导及要求
2019面向对象程序设计(Java)第11周学习指导及要求 (2019.11.8-2018.11.11) 学习目标 理解泛型概念: 掌握泛型类的定义与使用: 掌握泛型方法的声明与使用: 掌握泛型接 ...
随机推荐
- 基于redis实现tomcat8的tomcat集群的session持久化实现(tomcat-redis-session-manager二次开发)
前言: 本项目是基于jcoleman的tomcat-redis-session-manager二次开发版本 1.修改了小部分实现逻辑 2.去除对juni.jar包的依赖 3.去除无效代码和老版本tom ...
- IOS:程序的退出、App间的跳转
今天在做一个音乐播放器的项目,发现这个点击退出程序的功能不能实现终于找到了一些有用的资料,就去网上看了半天资料,下面是退出程序的代码: 在动画里面可以自己添加一些,动画,达到相应的效果. AppDel ...
- 使用JavaScript实现弹出层效果的简单实例
转自:https://www.jb51.net/article/85475.htm 实现弹出层效果的思路非常简单:将待显示的内容先隐藏,在触发某种条件后(如点击按钮),将原本隐藏的内容显示出来. 实现 ...
- 修改CentOS系统的默认启动级别
======修改CentOS系统的默认启动级别====== 现在的Linux系统安装完后就运行在第5个级别,即系统启动后直接进入图形界面,而不用在字符模式下登录后用startx或者xinit来起动图形 ...
- mql4入门(1)
博主比较忙,因此也就抽空写写.等最后全部写完了再汇总一下. 说到金融,我想肯定有很多人印象里就是一个不太大的大厅,一群交易员望着一堆背景为黑的曲线图的场景. 比如这样 但是试想一下,交 ...
- JAVA多线程(三) 线程池和锁的深度化
github演示代码地址:https://github.com/showkawa/springBoot_2017/tree/master/spb-demo/spb-brian-query-servic ...
- hdu 2189 悼念512汶川大地震遇难同胞——来生一起走 基础母函数
#include <iostream> #include <algorithm> #include <cstring> using namespace std; ] ...
- Hexo瞎折腾系列(6) - 将博客同时部署到Github和Coding
前言 由于本人只是将Hexo博客同时部署到 Github 和 Coding.net ,所以这里只介绍怎么同时部署到这两个网站的pages. 之所以选择这两个网站,是因为国外用户可以访问 Github, ...
- Centos6.8 配置 Tomcat
1.安装Tomcat,安装之前必须先安装Java,先安装java 下载地址:http://www.oracle.com/technetwork/java/javase/downloads/index. ...
- _bzoj1029 [JSOI2007]建筑抢修【贪心 堆】
传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=1029 经典的贪心问题,不解释. #include <cstdio> #inclu ...