-
在mysql中 更新数据中where_SQL中使用UPDATE更新数据时一定要记得WHERE子句
2021-01-19 21:07:04Servlet访问第一次500,刷新后404的解决办法第一次运行错误:... 什么是数字签名? 数字签名就是为你的程序打上一种标记,来作为你自己的标识,当别人看...Servlet访问第一次500,刷新后404的解决办法
第一次运行错误:HTTP Status 500 - --------------------------------------------type Exception reportmessage ...
【转】Android APK的数字签名的作用和意义
1. 什么是数字签名? 数字签名就是为你的程序打上一种标记,来作为你自己的标识,当别人看到签名的时候会知道它是与你相关的 2. 为什么要数字签名? 最简单直接的回答: 系统要求的. Andr ...
HDU 5093 Battle ships(二分图最大匹配)
题意:一个m行n列的图由#.*.o三种符号组成,分别代表冰山.海域.浮冰,问最多可放的炮舰数(要求满足以下条件) 1.炮舰只可放在海域处 2.两个炮舰不能放在同一行或同一列(除非中间隔着一个或多个冰山 ...
如何用C#检查硬盘是否是固态硬盘SSD
博客搬到了fresky.github.io - Dawei XU,请各位看官挪步.最新的一篇是:如何用C#检查硬盘是否是固态硬盘SSD.
最牛B的编码套路 【转】
原文:http://blog.csdn.net/happydeer/article/details/17023229 最近,我大量阅读了Steve Yegge的文章.其中有一篇叫“Practicing ...
Android Jni引用第三方库
在jni下新建文件夹(jniLib)用来存放第三方so库: 将so拷贝到jniLib下,新建一个Android.mk文件: LOCAL_PATH:= $(call my-dir) include $( ...
IntelliJIDEA中如何使用JavaDoc
IntelliJ IDEA 12.1.6,本身提供了很好的 JavaDoc 生成功能,以及标准 JavaDoc 注释转换功能,其实质是在代码编写过程中,按照标准 JavaDoc 的注释要求,为需要暴露 ...
JDK源码——单例模式
JDK源码中单例模式的应用 1.Runtime类 Runtime类封装了Java运行时的环境.每一个java程序实际上都是启动了一个JVM进程,那么每个JVM进程都是对应这一个Runtime实例,此实 ...
Docker Registry私有仓库搭建
部署registry 准备一个registry.mydocker.com 的证书 对私有registry取名registry.mydocker.com 目录规划 仓库数据目录:/data/docker ...
范数(norm) 几种范数的简单介绍
-
MyBatis 中有哪些动态 SQL 标签?它们的作用分别是什么?如何实现的?
2020-10-11 13:02:289 种动态 SQL 标签:if、choose、when、otherwise... where: where 元素只会在子元素返回任何内容的情况下才插入 “WHERE” 子句,若子句的开头为 “AND” 或 “OR”,where 元素也会将它们去除 trim: 定制类似 wh9 种动态 SQL 标签:if、choose、when、otherwise、trim、where、set、foreach、bind
1 种注解中使用动态 SQL 标签:script
-
if: 根据条件判断
-
choose、when、otherwise: 组合使用,选择多个条件中的一个
-
where: where 元素只会在子元素返回任何内容的情况下才插入 “WHERE” 子句,若子句的开头为 “AND” 或 “OR”,where 元素也会将它们去除
-
trim: 定制类似 where 标签的功能
-
set: 用于动态包含需要更新的列,忽略其它不更新的列
-
foreach: 对集合进行遍历
-
bind: 允许你在 OGNL 表达式以外创建一个变量,并将其绑定到当前的上下文
-
script: 要在带注解的映射器接口类中使用动态 SQL,可以使用 script 元素
官方说明文档:
https://mybatis.org/mybatis-3/zh/dynamic-sql.html
源码实现的入口在这里 XMLScriptBuilder 类中
protected MixedSqlNode parseDynamicTags(XNode node) { List< SqlNode> contents = new ArrayList< >(); NodeList children = node.getNode().getChildNodes(); for (int i = 0; i < children.getLength(); i++) { XNode child = node.newXNode(children.item(i)); if (child.getNode().getNodeType() == Node.CDATA_SECTION_NODE || child.getNode().getNodeType() == Node.TEXT_NODE) { ... } else if (child.getNode().getNodeType() == Node.ELEMENT_NODE) { // issue #628 //根据 node 名称获取对应 handler String nodeName = child.getNode().getNodeName(); NodeHandler handler = nodeHandlerMap.get(nodeName); if (handler == null) { throw new BuilderException("Unknown element <" + nodeName + "> in SQL statement."); } handler.handleNode(child, contents); isDynamic = true; } } return new MixedSqlNode(contents); }
【Java面试题与答案】整理推荐
-
-
什么是索引,索引的作用,什么时候需要使用索引,什么时候不需要使用索引
2018-11-28 19:47:26索引是一种单独的、物理的对数据库表中一列或多列的值进行排序的一种存储结构,相 当于图书上的目录,可以加快查询速度,但会使修改、...1.where子句、group子句中出现的字段,要创建索引 2.order by子句的字段...索引是一种单独的、物理的对数据库表中一列或多列的值进行排序的一种存储结构,相 当于图书上的目录,可以加快查询速度,但会使修改、插入、删除操作变慢,同时还会 占用较大的磁盘空间 。
可以通过explain语句对SQL语句进行分析,来决定哪些字段需要创建索引,一般情 况下,可得出以下结论:
必须创建索引的情况:
1.where子句、group子句中出现的字段,要创建索引
2.order by子句的字段,要创建索引
3.统计聚合函数中的字段,要创建索引。比如count(字段) 、max(字段)不需要创建索引的情况:
1.如果需要取到表中所有记录,则没必要创建索引
2.对非唯一有大量重复值的字段,没必要创建索引,如性别
3.经常进行修改、删除等操作的字段,没必要创建索引
4.记录比较少的表,没必要创建索引 -
java mysql作用是什么意思_Java -->MySQL
2021-01-27 01:21:24java036子查询可以将子查询放在许多的 SQL 子句中,包括:WHERE 子句、HAVING 子句 、FROM 子句使用子查询的原则1)子查询放在圆括号中。2)将子查询放在比较条件的右边。3)在单行子查询中用单行运算符,在多行子查询...java036
子查询
可以将子查询放在许多的 SQL 子句中,包括:
WHERE 子句、HAVING 子句 、FROM 子句
使用子查询的原则
1)子查询放在圆括号中。
2)将子查询放在比较条件的右边。
3)在单行子查询中用单行运算符,在多行子查询中用多行运算符。
MySQL 中的正则表达式
1)MySQL 中允许使用正则表达式定义字符串的搜索条件,性能要高于 like。
2)MySQL 中的正则表达式可以对整数类型或者字符类型检索。
3)使用 regexp 关键字表示正则匹配。
4)默认忽略大小写,如果要区分大小写,使用 binary 关键字 。
正则表达式的模式及其含义
索引
索引作用:MySQL 索引的建立对于 MySQL 的高效运行是很重要的,索引可以大大提高 MySQL的检索速度。
MySQL 中的索引类型
普通索引 、 唯一索引 、主键索引 、组合索引 、全文索引
普通索引
1)是最基本的索引,它没有任何限制。
2)在创建索引时,可以指定索引长度。length 为可选参数,表示索引的长度,只有字符串类型的字段才能指定索引长度,如果是 BLOB 和 TEXT 类型,必须指定 length。
创建索引时需要注意:
如果指定单列索引长度,length 必须小于这个字段所允许的最大字符个数。
查询索引:SHOW INDEX FROM 索引名;
直接创建索引
create index 索引名 on 表名(列名);
示例:
需求:为 emp3 表中的 name 创建一个索引,索引名为 emp3_name_index
create index emp3_name_index on emp3(name);
修改表添加索引
alter table表名 add index 索引名 (列命(length));
示例:
需求:修改 emp3 表,为 addrees 列添加索引,索引名为 emp3_address_index
alter table emp3 add index emp3_address_index(address);
删除索引
drop index 索引名 on 表名;
示例:
需求:删除 mep3 表中索引名为 emp3_address_index 的索引
drop index emp3_address_index on emp3 ;
用户管理
使用语句创建用户:
create user 用户名 identified by '密码';
查看用户:
select user,nost from 用户名;
分配权限:
grant 限权 on 数据库.表 to 用户名@登录主机 identified by '密码';
新用户创建完后是无法登陆的,需要分配权限。
GRANT 权限 ON 数据库.表 TO 用户名@登录主机 IDENTIFIED BY "密码"
GRANT ALL PRIVILEGES ON *.* TO 'username'@'localhost' IDENTIFIED BY 'password'
登陆主机:
% 匹配所有主机 ``
localhost localhost 不会被解析成 IP 地址,直接通过 UNIXsocket 连接
127.0.0.1 会通过 TCP/IP 协议连接,并且只能在本机访问;
::1 ::1 就是兼容支持 ipv6 的,表示同 ipv4 的 127.0.0.1
ALTER: 修改表和索引。
CREATE: 创建数据库和表。
DELETE: 删除表中已有的记录。
DROP: 删除数据库和表。
INDEX: 创建或删除索引。
INSERT: 向表中插入新行。
SELECT: 检索表中的记录。
UPDATE: 修改现存表记录。FILE: 读或写服务器上的文件。
PROCESS: 查看服务器中执行的线程信息或杀死线程。
RELOAD: 重载授权表或清空日志、主机缓存或表缓存。
SHUTDOWN: 关闭服务器。
ALL: 所有权限,ALL PRIVILEGES 同义词。
USAGE: 特殊的 "无权限" 权限
删除用户:
drop user 用户名@登录主机;
MySQL 分页查询
MySQL使用 limit 关键字实现分页。
limit 偏离量,展示的条数(分页单位) 偏移量= (当前页-1)*分页单位。
MySQL 分页查询原则
1)在 MySQL 数据库中使用 LIMIT 子句进行分页查询。
2)MySQL 分页中开始位置为 0。
3)分页子句在查询语句的最后侧。
语法格式
SELECT 投影列 FROM 表名 WHERE 条件 ORDER BY LIMIT 开始位置,查询数量。
示例 :
需求:查询雇员表中所有数据按 id 排序,实现分页查询,每次返回两条结果。
select * from employees order by employees_id limit 0,2
MySQL 中的执行计划
在 MySQL 中可以通过 explain 关键字模拟优化器执行 SQL 语句,从而知道 MySQL 是如何处理 SQL 语句的。
MySQL 整个查询执行过程
1)客户端向 MySQL 服务器发送一条查询请求 。
2)服务器首先检查查询缓存,如果命中缓存,则立刻返回存储在缓存中的结果。否则进入下一阶段 。
3)服务器进行 SQL 解析、预处理、再由优化器生成对应的执行计划 。
4)MySQL 根据执行计划,调用存储引擎的 API 来执行查询 。
5)将结果返回给客户端,同时缓存查询结果。
启动执行计划
EXPLAIN SELECT 投影列 FROM 表名 WHERE 条件 ;
MySQL 数据库引擎
ISAM(Indexed Sequential Access Method)
ISAM 是一个定义明确且历经时间考验的数据表格管理方法,它在设计之时就考虑到数据库被查询的次数要远大于更新的次数。因此,ISAM 执行读取操作的速度很快,而且不占用大量的内存和存储资源。ISAM 的两个主要不足之处在于,它不支持事务处理,也不能够容错。如果你的硬盘崩溃了,那么数据文件就无法恢复了。
MyISAM
MYISAM 强调了快速读取操作,这可能就是为什么 MySQL 受到了 WEB 开发如此青睐的主要原因:在 WEB 开发中你所进行的大量数据操作都是读取操作。
如果使用该数据库引擎,会生成三个文件:
.frm:表结构信息
.MYD:数据文件
.MYI:表的索引信息
InnoDB
1)InnoDB 数据库引擎都是造就 MySQL 灵活性的技术的直接产品,这项技术就是 MYSQL++ API。
2)在使用 MYSQL 的时候,你所面对的每一个挑战几乎都源于 ISAM 和 MyISAM 数据库引擎不支持事务处理(transaction process)也不支持外键。
3)MySQL 官方对 InnoDB 是这样解释的:InnoDB 给 MySQL 提供了具有提交、回滚和崩溃恢复能力的事务安全(ACID 兼容)存储引擎。
innodb 与 myisam 区别
1. InnoDB 支持事务,MyISAM 不支持,对于 InnoDB 每一条 SQL 语言都默认封装成事务,自动提交,这样会影响速度,所以最好把多条 SQL 语言放在 begin 和 commit 之间,组成一个事务;
2. InnoDB 支持外键,而 MyISAM 不支持。对一个包含外键的 InnoDB 表转为 MYISAM会失败;
3. InnoDB 是聚集索引,数据文件是和索引绑在一起的,必须要有主键,通过主键索引效率很高。但是辅助索引需要两次查询,先查询到主键,然后再通过主键查询到数据。因此,主键不应该过大,因为主键太大,其他索引也都会很大。而 MyISAM 是非聚集索引,数据文件是分离的,索引保存的是数据文件的指针。主键索引和辅助索引是独立的。
4. InnoDB 不保存表的具体行数,执行 select count(*) from table 时需要全表扫描。而 MyISAM 用一个变量保存了整个表的行数,执行上述语句时只需要读出该变量即可,速度很快;
5. Innodb 不支持全文索引,而 MyISAM 支持全文索引,查询效率上 MyISAM 要高;(在 MySQL5.7 版本中已经支持全文索引)
如何选择:
1. 是否要支持事务,如果要请选择 innodb,如果不需要可以考虑 MyISAM
2. 如果表中绝大多数都只是读查询,可以考虑 MyISAM,如果既有读写也挺频繁,请使用 InnoDB。
3. 系统奔溃后,MyISAM 恢复起来更困难,能否接受;
4. MySQL5.5 版本开始 Innodb 已经成为 Mysql 的默认引擎(之前是 MyISAM),说明其优势是有目共睹的,如果你不知道用什么,那就用 InnoDB,至少不会差。
数据库设计范式
数据库设计范式:就是数据库的设计规范。
数据库设计范式作用:数据库的规范设计可以提高开发效率和运行效率。
数据库设计范式:
第一范式:对表中的列进行规范的约束。
最基本的范式,数据库表每一列都是不可分割的基本数据项,需要确保每列保持原子性,第一范式的合理遵循需要根据系统的实际需求来定。
第三范式:对 多对多表关系进行规范的约束。
第二范式需要确保数据库表中的每一列都和主键相关,而不能只和主键的某一部分相关。
第三范式:对 一对多表关系进行规范的约束。
确保数据表中的每一列数据都和主键直接相关而不能间接相关。
-
数据库之SQL(该列没有包含在聚合函数或 GROUP BY 子句中)
2018-07-03 11:16:22最近在看数据库视频-第六章第四节“分组”内容的时候遇到了一个问题提示:该列没有包含在聚合函数或group by 子句中。看到这个问题后我的思考是:问题一:什么是聚合函数?...where 子句的作用是在... -
mysql字段枚举的作用及好处_MySQL中的enum类型有什么优点
2021-01-18 19:22:58用户在rule.xml中配置枚举值文件路径和分片索引是字符串还是数字,DBLE在启动时会将枚举值文件加载到内存中,形成一个映射表在DBLE的运行过程中,用户访问使用这个算法的表时,WHERE子句中的分片索引值会被提取出来... -
游标的作用及概念详解
2014-10-19 22:02:40由SELECT 语句返回的行集合包括满足该语句的WHERE 子句所列条件的所有行。由该语句返回完整的行集合叫做结果集。 应用程序,尤其是互动和在线应用程序,把完整的结果集作为一个单元处理并不总是有效的。 ... -
mysql正则表达式是什么意思_mysql正则表达式
2021-01-28 04:59:45MySQL对正则表达式的支持用where子句来实现,允许用正则表达式过滤SELECT检索出的数据。MySQL仅支持多数正则表达式实现的一个很小的子集。一、基本类型匹配MySQL中的正则表达式匹配不区分大小写。为区分大小写,可... -
选择一个面上所有节点_从零开始学K8s: 15.什么是标签选择器
2021-01-03 12:50:45上一节学习了标签的知识,了解了如何为Pod添加标签、更新标签。这一节我们来学习标签选择器。如果单看标签的话,似乎作用不太明显,...标签选择器其实就是一个选择标准(或选择条件),类似SQL语言中WHERE子句后面的条... -
SQL 在什么什么之间 BETWEEN 操作符
2018-11-23 09:40:38BETWEEN 操作符在 WHERE 子句中使用,作用是选取介于两个值之间的数据范围。 BETWEEN 操作符 操作符 BETWEEN ... AND 会选取介于两个值之间的数据范围。这些值可以是数值、文本或者日期。 SQL BETWEEN 语法 ... -
SQL中的聚合函数使用总结
2017-09-13 23:40:27一般在书写sql的是时候很多时候会误将聚合函数放到where后面作为条件查询,事实证明... where 子句的作用是在对查询结果进行分组前,将不符合where条件的行去掉,即在分组之前过滤数据,条件中不能包含聚组函数,使... -
mysql数据库表示创建表的关键字的是_创建数据表时,使用( )关键字表示创建临时表。_学小易找答案...
2021-02-06 02:17:20【单选题】以下删除表中数据的正确语句是 ( ):【单选题】delete from employee 语句的作用是 ( )【单选题】以下删除记录正确的 ( )【单选题】建表语句中的 not null ,该代码表示的含义是:【单选题... -
SQL中的聚集函数注意点
2018-04-06 16:24:30其原因很简单:1、having放在group by 的后面2、group by 后面只能放非聚合函数的列3、where 子句的作用是在对查询结果进行分组前,将不符合where条件的行去掉,即在分组之前过滤数据,条件中不能包含聚组函数,使用... -
SQL Subquery的用法
2009-12-27 22:41:00我们可以在一个 SQL 语句中放入另一个 SQL 语句。... Subquery 的作用是什么呢?第一,它可以被用来连接表格。另外,有的时候 subquery 是唯一能够连接两个表格的方式。 Subquery 的语法如下: SELECT "栏位1 -
SQL Server的条件索引、include索引
2018-01-24 10:23:13SQL Server中创建索引时,有2个...加上where子句,创建的索引就是条件索引,索引中只包含满足条件的数据,这样会使得索引的体积更小,不管是索引扫描,还是查找,需要访问的页数也就更少。 举例: create in -
mybatis Example Criteria like 模糊查询
2018-09-18 15:34:02用Mybatis代码生成工具会产生很多个XXXExample类,这些类的作用是什么? 查阅了很多资料,在这里总结归纳一下 简介 XXXExample类用于构造复杂的筛选条件 它包含一个名为Criteria的内部静态类,它包含将在where子句中... -
数据库中的索引index对象
2018-06-16 23:55:45索引也是数据库中的一个对象,它独立于表结构,主要作用是用来提高查找的速度。 索引适用范围 适用索引的情况 列中的值的分布范围很广时 经常在WHERE子句或连接条件中出现时 表经常被访问并且数据量巨大,... -
SQL指令— 嵌套查询
2007-08-03 18:37:00SQL指令— 嵌套查询 我们可以在一个 SQL 语句中放入另一个 SQL 语句。当我们在 WHERE 子句或 WHERE 子句或 HAVING 子句中插入另一个 SQL 语句时,我们... Subquery 的作用是什么呢?第一,它可以被用来连 -
MySQL分组过滤函数_mysql数据分组:过滤分组
2021-01-21 17:44:32mysql过滤分组除了能用group by分组...我们已经看到了where子句的作用。但是,在这个例子中where不能完成任务,因为where过滤指定的是行而不是分组。事实上,where没有分组概念。那么,不使用where使用什么呢?My... -
mysql 分组 组内过滤_mysql数据分组:过滤分组
2021-01-19 12:19:25mysql过滤分组除了能用group by分组...我们已经看到了where子句的作用。但是,在这个例子中where不能完成任务,因为where过滤指定的是行而不是分组。事实上,where没有分组概念。那么,不使用where使用什么呢?My... -
SQL Subquery
2009-05-08 10:04:00我们可以在一个 SQL 语句中放入另一个 SQL 语句。... Subquery 的作用是什么呢?第一,它可以被用来连接表格。另外,有的时候 subquery 是唯一能够连接两个表格的方式。 Subquery 的语法如下: SELECT "栏位1 -
subquery 框架
2009-02-25 11:39:00我们可以在一个 SQL 语句中放入另一个 SQL 语句。... Subquery 的作用是什么呢?第一,它可以被用来连接表格。另外,有的时候 subquery 是唯一能够连接两个表格的方式。 Subquery 的语法如下: SELECT "栏位1 -
SQL的SubQuery
2014-07-04 10:57:18我们可以在一个 SQL 语句中放入... Subquery 的作用是什么呢?第一,它可以被用来连接表格。另外,有的时候 subquery 是唯一能够连接两个表格的方式。 Subquery 的语法如下: SELECT "栏位1" FROM "表格 -
Mysql之limit语句
2019-11-29 20:38:19LIMIT是限制的意思,所以LIMIT的作用就是限制查询记录的条数。 SELECT *|字段列表 [as 别名] FROM 表名 [WHERE子句] [GROUP BY子句][HAVING子句][ORDER BY子句][LIMIT子句]; 思考:limit子句为什么排在最后? 因为... -
ADO 对象的游标类型(CursorTypeEnum)游标位置(CursorLocation)锁定方法(LockTypeEnum)的超详解析以及使用...
2018-04-23 22:25:48由 SELECT 语句返回的行集包括满足该语句的 WHERE 子句中条件的所有行。 这种由语句返回的完整行集称为结果集。 (对于)应用程序,特别是那些处于交互式并处于联机状态(的应用),并不能总是有效地把整个结果集作为一... -
C#5.0本质论第四版(因文件较大传的是百度网盘地址)
2015-10-16 10:14:5114.3 是什么使类成为集合:IEnumerable 392 14.3.1 foreach和数组 392 14.3.2 foreach和IEnumerable 393 14.3.3 foreach循环内不要修改集合 396 14.4 标准查询操作符 397 14.4.1 使用Where()来... -
2020-06-28
2020-06-28 18:25:04子查询的作用 是什么呢?第一,它可以被用来连接表格。另外,有的时候子查询是唯一能够连接两个表格的方式。 子查询的语法如下: SELECT “栏位 1” FROM “表格” WHERE “栏位 2” [比较运算素] (SELECT “栏位 1... -
数据库学习笔记和小练习(3)数据查询
2016-11-05 11:01:54本文章参考自《数据库系统概论》 数据查询是数据库的核心...where子句还可以有条件表达式,先符合条件再选。 group by子句和having短语可以分组,通常在每组中作用聚集函数 最后才是order by子句,确定是升序还是降序。