
数据库
文章平均质量分 70
六月·飞雪
这个作者很懒,什么都没留下…
展开
-
1000000条数据同时插入! 强大的Mysql数据库是这样运作的
MySQL插入数据在写阶段是独占的,但是插入一条数据仍然需要解析、计算、最后才进行写处理,比如要给每一条记录分配自增id,校验主键唯一键属性,或者其他一些逻辑处理,都是需要计算的,所以说多线程能够提高效率。使用PreparedStatement接口允许数据库预编译SQL语句,以后只需传入参数,避免了数据库每次都编译SQL语句,因此性能更好。使用多值插入SQL,SQL语句的总长度减少,即减少了网络IO,同时也降低了连接次数,数据库一次SQL解析,能够插入多条数据。多插入操作 (10% * 词条数目)原创 2022-12-30 11:08:37 · 1330 阅读 · 0 评论 -
MySQL优化
如果连接方式是inner join,在没有其他过滤条件的情况下MySQL会自动选择小表作为驱动表,但是left join在驱动表的选择上遵循的是左边驱动右边的原则,即left join左边的表名为驱动表。区分in和exists主要是造成了驱动顺序的改变(这是性能变化的关键),如果是exists,那么以外层表为驱动表,先被访问,如果是IN,那么先执行子查询。优化的方法如下:可以取前一页的最大行数的id,然后根据这个最大的id来限制下一页的起点。同时需要注意的是查询语句的写法与普通索引的区别。原创 2022-12-08 22:59:55 · 201 阅读 · 0 评论 -
SQL 中 JOIN 的用法
JOIN对于接触过数据库的人,这个词都不陌生,而且很多人很清楚各种JOIN,还有很多人对这个理解也不是很透彻,这次就说说JOIN操作。图片是很容易被接受和理解,所以尝试使用图片来说明一下。客官:小二,上JOIN分类!……小二:客官,新鲜出炉的JOIN分类图片来喽。客官:小二,速速详细道来!小二:现在让小二来给您详细介绍。仅仅返回两个表中,匹配列相同的列值,所在行的数据。左外连接:返回左表的所有数据,并且在右表中不能匹配的列值,其坐在行则使用空值。返回和右表不匹配的所有数据行右外连接:返回右表的所有数据,并且原创 2022-12-05 23:25:10 · 21220 阅读 · 0 评论 -
MySQL索引优化
本文主要讨论MySQL索引的部分知识。将会从MySQL索引基础、索引优化实战和数据库索引背后的数据结构三部分相关内容,下面一一展开。一、MySQL——索引基础首先,我们将从索引基础开始介绍一下什么是索引,分析索引的几种类型,并探讨一下如何创建索引以及索引设计的基本原则。此部分用于测试索引创建的user表的结构如下:1、什么是索引“索引(在MySQL中也叫“键key”)是存储引擎快速找到记录的一种数据结构。”——《高性能MySQL》我们需要知道索引其实是一种数据结构,其功能是帮助我们快速匹配查找到需要的数据行原创 2022-12-04 16:51:38 · 1295 阅读 · 0 评论 -
Mysql的group_concat函数长度限制
GROUP_CONCAT还可以对字段属性进行排序、去重、自定义拼接分隔符。MySQL5.7及以上版本有GROUP_CONCAT函数,其作用是返回一个组合所有值的字符串。GROUP_CONCAT其他语法。去重、升序、使用&符号分割查询。去重、降序、使用逗号分割查询。当再查询时,拼接的结果被截断。...原创 2022-08-09 00:24:48 · 2646 阅读 · 0 评论 -
mysql练习题
insertinto022Studentvalues('01','赵雷','1990-01-01','男');insertinto022Studentvalues('12','赵六','2017-01-01','女');insertinto022Studentvalues('13','孙七','2022-01-01','女');select*from022studentswheres.SnameREGEXP'.*风.*';原创 2022-07-31 23:46:28 · 267 阅读 · 0 评论 -
关于开窗函数的使用 over (partition by order by)
开窗函数功能很强大Oracle数据库是支持这种写法的,mysql的话要8版本或以上才支持PARTITION 中文是分割的意思,ORDER 是排序的意思,把一组数据按照制定的字段进行分割成各种组,然后组内按照某个字段排序简而言之就是分组后对组内数据排序写法:select id,name,class_id,score,lag(score,1,0)over (partition by class_id order by score desc) before_score from t_s原创 2022-04-19 23:08:21 · 4091 阅读 · 0 评论 -
mysql8.0版本支持递归,递归写法
mysql8支持了递归,写法如下WITH RECURSIVE cte (n) AS( SELECT 1 UNION ALL SELECT n + 1 FROM cte WHERE n < 5)SELECT * FROM cte;以后遍历菜单,遍历目录等很方便原创 2022-04-18 18:00:35 · 1338 阅读 · 0 评论 -
sql语句执行顺序
sql的执行顺序(重点中的重点,实践知真知)(1)from(2) join(3) on(4),(5) where(6)group by(开始使用select中的别名,后面的语句中都可以使用)(7) avg,sum,count,min,max(8)having(9) select(10) distinct(11) order by(12)limit从这...原创 2020-03-26 16:58:46 · 330 阅读 · 0 评论 -
left join,right join,full join 中的 on与where的区别
对于left join,不管on后面跟什么条件,左表的数据全部查出来,因此要想过滤需把条件放到where后面对于inner join或者是,号隔开的表,满足on后面的条件表的数据才能查出,可以起到过滤作用。也可以把条件放到where后面。数据库在通过连接两张或多张表来返回记录时,都会生成一张中间的临时表,然后再将这张临时表返回给用户。在使用left jion时,on和where条件的区别如...原创 2020-03-17 21:49:37 · 870 阅读 · 2 评论 -
关于sql语句中子查询的位置总结
在sql语句中,我们经常用到子查询,在工作中也是非常的实用,对于子查询做了以下几点总结。1. select (select ....) as 别名 from table第一种,在from前面的(select)子查询。这种子查询的结果只能是单行单列的,可以传递from后面表的参数进去,表示查询出来的每一行数据都是由这个查询当做一列的。2. select * from (selec...原创 2019-12-30 17:54:36 · 3801 阅读 · 2 评论 -
关于sql语句中的count(*),count(1),count(具体字段)的介绍
在sql语句中有一个聚合函数count();这个函数里面可以写*,可以写数字(不仅仅只可以写1),可以写具体字段,他们之间有什么区别呢?查阅资料得知,count(*)与count(1)在各种数据库服务器底层中,效果是一样的。就是分组后,能查出数据,就会记录1条,依次往上加。所以就算只有一个字段有值,也会被+1。在外连接查询的时候,经常会碰到很多字段为空(null)的情况。所以这个时候就得根据需...原创 2019-12-28 23:13:38 · 5190 阅读 · 0 评论 -
Oracle导出导入可执行文件路径
导入imp:~app\Administrator\product\11.1.0\db_1\BIN\imp.exe导出exp:~app\Administrator\product\11.1.0\db_1\BIN\exp.exe可执行文件下载:需要的留言或者从这里下载:https://download.youkuaiyun.com/download/z_ssyy/12034878...原创 2019-12-16 15:54:54 · 5899 阅读 · 3 评论 -
Oracle的一些细节问题-insert语句报非法字段
今天在工作中碰到了一个Oracle的问题场景是这样的,建了一个表,往表里插数据,却发现insert语言报错非法字段。后来,进过一天的实践,发现了是字段里包含了Oracle关键字所致,例如:insert_date 这种的,也是包含Oracle关键字的。总结:当Oracle数据库,表中出现出现了Oracle关键字的时候,insert into table(这里的表字段必须带双引号)value...原创 2019-12-12 09:19:13 · 1167 阅读 · 0 评论 -
关于Oracle导入数据的问题——sqlplus导入
sqlplus是Oracle客户端工具之一当用这个导入数据时候,需要注意的是,配置一个环境变量变量名:NLS_LANG变量值:为Oracle的字符编码值当设置了这个的时候,写sqlplus脚本有一个小bug,就是不能嵌套调用文件,比如A.bat是脚本文件,A需要调用B.sql,而,B.sql需要调用C.sql,这样就是嵌套套用,会出现一个bug,那就是会卡死在小黑屏中,不动了。具体原...原创 2019-09-19 14:50:33 · 407 阅读 · 0 评论 -
关于sqlplus配置与乱码问题
Oracle数据库编码集:AMERICAN_AMERICA.AL32UTF8下面根据配置各种环境变量来看结果是怎样的:NLS_LANG:AMERICAN_AMERICA.AL32UTF8(运行几句创建表语句就会卡死,运行插入语句不会卡死,用手动命令行不会卡死,所以用windows脚本写,别用sqlplus脚本写(这种方式创建表时会卡死(不知道为什么),)所以就配这种是最好的,顶多重写下运行脚...原创 2019-09-11 14:12:26 · 946 阅读 · 0 评论 -
jdbc连接各种数据库的写法
1.Mysql连接加载驱动的字符串为:com.mysql.jdbc.DriverURL连接为:jdbc:mysql://localhost:3306/zzzz如果是本地的话可以省略数据库服务器地址:jdbc:mysql:///zzzz后面还可以加参数:jdbc:mysql:///zzzz?characterEncoding=utf8&useSSL=true2.Oracl...原创 2018-10-04 16:09:00 · 1245 阅读 · 0 评论