
数据库
文章平均质量分 89
MySQL、MongoDB...
-代号9527
逢山开路,遇水搭桥!纸上得来终觉浅,绝知此事要躬行。
展开
-
ER图自动生成与表结构生成
【代码】ER图自动生成与表结构生成。原创 2024-07-02 17:45:52 · 3796 阅读 · 0 评论 -
MySQL视图
在关于可更新视图的WITH CHECK OPTION子句中,当视图是根据另一个视图定义的时,LOCAL和CASCADED关键字决定了检查测试的范围。如果未给定任一关键字,默认值为CASCADED。对于可更新视图,可给定WITH CHECK OPTION子句来防止插入或更新行,除非作用在行上的select_statement中的WHERE子句为“真”。默认select语句后面的列名做为视图的列名,想自定义列名就用column_list,列名由逗号隔开,且数量等于SELECT语句检索的列数。原创 2023-07-01 23:39:57 · 202 阅读 · 0 评论 -
MySQL5.7递归查询与CTE递归查询
MySQL 5.7递归查询,MySQL8.0的CET递归查询, This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA原创 2023-05-28 19:01:46 · 9376 阅读 · 1 评论 -
Excel中的数据如何导入MySQL
首先是使用工具来完成,常见的比较成熟的数据库管理软件都有这个功能,MySQL Workbench、Navict、DataGrip、DBeaver。比如我excel只有name和description两列数据,而库表中要四个字段,只管按csv的顺序分给表中的字段即可,其余字段没有就空着,不用管。有的可视化数据库连接工具不支持load data local infile指令,换个命令行窗口执行SQL就行。原创 2023-04-23 23:47:43 · 16259 阅读 · 0 评论 -
【事务】本地事务和分布式事务的区别
事务A开启后,不管过多久,每一次在事务A中读到的数据中都是一致的,即使在操作同一张表的事务B将表中的数据修改并且提交,A读到的数据还是刚开始的数据。这个级别解决了不可重复读取的问题,但出现幻影读,即每次读到的数据都是幻想,不一定真实,永远读取的都是刚开启事务时的数据(对开启事务时的数据做了备份或快照,然后读备份),这是Mysql的默认级别。本地事务的情况下,所有数据都会落到同一个DB中,但是,在分布式的情况下,就会出现数据可能要落到多个DB,或者还会落到Redis,落到MQ等中。此时应该追求一致性。原创 2023-04-12 00:08:47 · 2248 阅读 · 2 评论 -
MySQL表设计---字典表的设计与接口实现
但此时有新的问题了,国籍、学历也是可以枚举完的字段,那再加个学历类型表?字典中定义好数据了,再写一个对应于dict_type的枚举类,枚举类中定义值,方便后面代码中调用枚举值做业务处理。定义接口,查询不同类型下的字典的key和value,给前端展示(当然前端也可以用html定义下拉框选项写死几个)中查,如果有,直接返回,如果缓存中没有,则调mapper层去数据库查,并把结果查询结果写进缓存备用。基于以上一个简单的背景,来看若依框架提供的字典表结构:ruoyi有两张字典相关表,一个。,将字典定义和数据分开。原创 2023-03-24 00:58:20 · 22376 阅读 · 16 评论 -
MySQL表设计思路(一对多、多对多...)
一对多,两张表,多的表加外键多对多,三张表,关系表加外键命名规范,表名以t_或者tbl_开头,增加可读性,字段采用下划线命名,避免用保留字,如select、desc主键索引名为pk_字段名,唯一索引名为uk_字段名,普通索引名为idx_字段名数据类型选择时,金额类不能选择float、double,选decimal,防止精度丢失主键的设计最好设业务主键,最好是一串无意义且不重复的数字,可采用UUID或者Auto_increment自增。原创 2023-03-23 23:19:01 · 6770 阅读 · 0 评论 -
【MyBatisPlus】MyBatisPlus
当查询条件变多的时候,支持链式编程,使用and和or进行连接。创建代码生成器对象,说明相关配置后,执行execute方法。设置MP分页拦截器作为Spring管理的Bean。想看封装背后所执行的SQL,可以开启日志来调试。如果每个属性都加注解,会很烦,@TableId注解。原创 2023-03-17 00:13:48 · 327 阅读 · 0 评论 -
【JDBC下篇】PreparedStatement类 && JDBC事务
之前有的网站,当输入上面这种非法密码的时候,会直接锁定这个用户账户。但这样带来的问题是:如果我知道某人的账户名,再输入非法密码,岂不是可以锁别人的账户。被分成了两块,一块放在获取(预编译的)数据库操作对象前,一部分放在了执行SQL前,即setString传值。但实际的业务中,通常都是N条DML语句共同联合才能完成一个业务,因此,必须保证这些DML语句在同一个事务中同时成功或者同时失败。因此,Statement极少用,只有当业务方面要求支持SQL注入,或者要进行SQL拼接的时候,才用Statement。原创 2022-12-13 23:45:13 · 647 阅读 · 0 评论 -
【JDBC上篇】什么是JDBC
既然是一套接口,接口都有调用者和实现者,面向接口调用,面向接口写实现类,都属于面向接口编程。面向接口编程的优势是解耦合,降低程序的耦合度,提高程序的扩展力。数据库的驱动大多以jar包的形式存在,解压后得到很多class文件,这些class文件就是对JDBC接口的实现,驱动由各大数据库厂家提供。getString方法传入列名的时候,传入的是查询结果集的列名。getString方法可以传入列的下标(JDBC中下标从1开始),也可以传入列名,但后者更加健壮。实际开发中,不要把数据库的信息写死在Java程序中。原创 2022-12-12 20:25:33 · 672 阅读 · 0 评论 -
【MyBatis】篇四.MyBatis缓存和逆向工程
通过同一个SqlSessionFactory创建的SqlSession查询的结果会被缓存。此后若再次执行相同的查询语句,结果就会从缓存中获取。LRU(Least Recently Used) – 最近最少使用的:移除最长时间不被使用的对象,默认的是 LRU。,通过同一个SqlSession查询的数据会被缓存,下次查询相同的数据,就会从缓存中直接获取,不会从数据库重新访问。这提供了很重要的性能优势。缓存,即将当前查询出来的数据做一个记录,等下一次查询相同数据的时候,直接在缓存中拿数据,而不用重新去数据库。原创 2023-03-12 16:27:34 · 580 阅读 · 0 评论 -
【MyBatis】篇三.自定义映射resultMap和动态SQL
若字段名和实体类的属性名不一致,则需要自定义映射。原创 2023-03-08 23:19:56 · 1561 阅读 · 1 评论 -
【MyBatis】篇二.MyBatis查询与特殊SQL
实体类类型的参数使用@Param注解标识参数。原创 2023-03-07 17:33:58 · 595 阅读 · 0 评论 -
【MyBatis】篇一.MyBatis环境搭建与增删改查
认识:JavaEE开发的一个套件SSM,即:MyBatis是一个持久层的框架,是对JDBC的一个封装,是一个半自动的ORM框架。ORM即实体类对象和数据库中的数据的一个映射关系,当操作数据库中的数据的时候,就像是操作实体类对象一样。//MyBatis下载 https : / / github . com / mybatis / mybatis - 3当然jar包开发中都是通过Maven来添加的。SQL夹杂在Java代码中,耦合度高,导致硬编码内伤。原创 2023-03-03 17:18:08 · 631 阅读 · 0 评论