
数据库
数据库
32224047_yw
anyway
展开
-
MySQL索引优化注意事项整理(详细)
1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 orderby 涉及的列上建立索引。2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如:select id from t where num is null 可以在 num 上设置默认值 0,确保表中 num 列没有 null 值,然后这样查询:select id from t where num=03.应尽量避免在 where 子句中使用!=或<>原创 2020-10-09 19:24:39 · 320 阅读 · 0 评论 -
MySQL使用命令导出/导入数据
导出数据库文件常用命令 1 mysqldump -uroot -pMyPassword databaseName tableName1 tableName2 >/home/foo.sql mysqldump-u用户名-p数据库名 数据表名 >导出的文件名和路径导出整个数据库 1 mysqldump -u root -p databaseName >/home/test.sql (输入后会...转载 2020-07-15 13:10:32 · 170 阅读 · 0 评论 -
Mybatis与JDBC和Hibernate的比较
1.概述MyBatis是最近几年非常流行的数据访问层(DAO)框架,能够简单高效的实现对数据层访问2.Mybatis与JDBC和Hibernate的比较2.1JDBCjava原生的关系型数据库访问方式每次操作数据库都需要获取连接关闭连接,在大量访问数据库时,频繁的开关连接消耗性能。 需要手动编写sql,有学习成本 查询出的结果需要手动进行封装到bean 没有缓存处理机制 sql语句写死在程序中,需要修改sql必须修改源文件2.2Hibernate基于面向对象理念设计的DAO原创 2020-07-06 18:32:17 · 537 阅读 · 0 评论 -
把“SC”表中“叶平”老师教的课的成绩都更改为此课程的平均成绩
前言做数据库sql练习,遇到的此问题,自己第一次写有些复杂,想在网上搜寻下比较简洁高效的写法,但是几乎都是复制粘贴,错误的也在复制粘贴,半天找不到比较高质量的,还是自己写一下吧(建表语句不在此处列出),有更高效简洁的写法,欢迎留言评论。实现过程mysql实现#1.查询叶平的课程号SELECT c1.cno FROM course c1 ,teacher t1 WHERE c1.tno=t1.tno and t1.tname='叶平';#2.分别求成绩表SC中叶平的课程号对应课程.原创 2020-06-24 13:28:35 · 9177 阅读 · 5 评论 -
数据库中锁(简易描述,持续更新)
1.共享锁共享锁和共享锁可以共存,共享锁和排它锁不能共存,只有在serializable隔离级别下做查询会添加共享锁案例:打开两个客户端并都设置隔离级别为serializable,分别在两个客户端中进行查询实现步骤:1.打开2个窗口分别设置隔离级别都为serializable2.开启事务执行查询窗口1:窗口2:3.在 窗口2中执行更新操作,出现如下情况,进程被阻塞通过上面的测试可以得出结论:共享锁就是多个事务对于同一数据可以共享一把锁,都能访问到数据,但是只能原创 2020-06-23 20:45:55 · 234 阅读 · 0 评论 -
MySQL事务(transaction)的四大特性ACID、隔离性问题及隔离级别
1.事务的四大特性(ACID)原子性(atomicity):一个事务是不可分割的工作单位,事务中的操作要么一起发生,要么一起不发生一致性(consistency):事务前后的数据必须保持一致隔离性(isolation):多个事务之间数据要相互隔离持久性(durability):事务一旦被提交,改变是永久性的2.隔离性问题2.1隔离性分析隔离性问题本质上就是多线程的并发安全问题 如果两个线程并发修改,必然会产生多线程安全问题,必须隔离 如果两个线程并发查询,必然没有问题,不需要原创 2020-06-23 20:19:43 · 340 阅读 · 0 评论 -
MySQL事务(transaction)之手动控制sql事务及JDBC事务的开启
1.概念事务指逻辑上的一组操作,组成这组操作的各个单元,要么全部成功,要么全部不成功。2.管理事务2.1数据库默认的事务数据库默认支持事务,默认的事务是:一条sql一个事务。2.2手动控制事务sql控制事务开启事务:start transaction;开启事务后,在这条语句之后的所有sql都将处在同一个事务中提交事务:commit;从开启事务到提交事务之间的所有sql一起执行回滚事务:rollback;从开启事务到回滚事务之间的所有sql一起失效sql脚本原创 2020-06-23 19:45:41 · 3600 阅读 · 0 评论 -
C3P0数据库连接池的三种配置方式以及访问数据库的简单实现
1.配置方式c3p0的三种配置方式:1.setters一个个地设置各个配置项 2.类路径下提供一个c3p0.properties文件 3.类路径下提供一个c3p0-config.xml文件注意:编写配置文件,要求有固定的格式和固定的名字(c3p0-config.xml和c3p0.properties)该配置文件要放到项目的src目录下三中配置的优先级为:setters>c3p0-config.xml>c3p0.properties优先级的验证:情况一:无论如何配置c原创 2020-06-15 15:26:11 · 2232 阅读 · 0 评论 -
Statement与PreparedStatement批处理
1.为什么需要批处理如果有一大堆sql要到数据库执行,如果一条一条发送,效率太低,所以可以将一大堆sql添加到一个批中,一次性发送到数据库,数据库打开批依次执行。2.批处理的实现Statement实现批处理优点:一个批中可以有不同结构的sql缺点:不能防止注入攻击PreparedStatement实现批处理优点:可以防止注入攻击缺点:只能执行相同或者相似结构的sqlStatement 批处理的实现代码示例:2.1 工具类JDBCUtils提供了释放资源及获取连接的方法原创 2020-06-15 09:46:49 · 374 阅读 · 0 评论 -
一个简单的登陆案例模拟sql注入及Statement与PreparedStatement对比
1. sql注入由于后台的sql是拼接而来,其中的参数是用户提交的,如果用户在提交参数时,参杂了一些sql的关键字或者特殊符号,可能会导致sql语义的改变,从而造成一些意外的操作。2.StatementStatement主要用于执行静态sql语句,即内容固定不变的sql语句 Statement没执行一次都要对传入的sql语句编译一次,效率较差 某些情况下,sql语句只是其中的参数有所不同,其余子句完全相同,不适用于Statement 会被sql注入攻击模拟sql 注入的代码实现如下:原创 2020-06-15 00:22:03 · 697 阅读 · 0 评论 -
通过JDBC实现对数据库数据的增删改查操作
1.JDBC介绍Java数据库连接,(Java Database Connectivity,简称JDBC)是Java语言中用来规范客户端程序如何来访问数据库的应用程序接口,提供了诸如查询和更新数据库中数据的方法。由于各大数据库厂商提供的驱动各不相同,导致开发人员学习成本高,sun公司为了简化数据库的操作,提供了一套规范,本质上就是一堆接口,要求各大数据库厂商实现此接口,此后只需学会JDBC这套接口就可以使用所有的数据库驱动了。数据库驱动:数据库厂商提供的用来操作数据库的jar包(服务器通过jdbc访原创 2020-06-12 19:42:51 · 6573 阅读 · 0 评论