数据库
文章平均质量分 93
MelonSuika
这个作者很懒,什么都没留下…
展开
-
初识Transact-SQL
编写T-SQL语句的教程到此就结束了。本教程只是一个简短的概述,并没有描述使用语句的所有选项。设计和创建高效的数据库结构并配置对数据库的安全访问需要比本教程中所示的更复杂的数据库,得在实践中慢慢掌握。原创 2022-10-19 13:35:23 · 953 阅读 · 0 评论 -
初识SQL Server代理&作业
别人写的程序在数据库中生成了一些表,并且会不停更新表中数据。现在有个需求,定期根据表中的数据做一些运算,然后重新生成一张表。我将新表的表名、字段给第三方使用。关键是,我无法修改别人的代码,好在我可以登录该系统所运行电脑的数据库。经过一番搜索后,我发现了触发器和SQL Server代理这两种工具。进一步分析后,觉得SQL Server代理可能更符合我的需求。❗注意本文不讨论多SQL Server实例的情况。原创 2022-10-13 14:01:49 · 6058 阅读 · 0 评论 -
《数据库系统概念》——实体-联系模型
最近在学习如何使用.NET中的EF Core来访问数据,从一开始的SQL语句直接访问到后来的EF Core(O/RM)访问,再到EF Core用了一段时间后,发现数据表及关系设计也很关键。其实只是访问数据库一点问题都没有,问题是随着理解变深,数据变复杂,我的数据表还有表间的关系到底该怎么设计,怎么设计才能访问的更舒服,还有表与表之间的联系本质到底是什么。本以为学了EF Core,会简单使用就好了,结果发现用的过程中问题越来越多,疑惑越来越大。所以只能继续对概念进行深入学习理解。正好前段时间看到《数据库系统原创 2022-07-10 12:34:41 · 4870 阅读 · 0 评论 -
EFCore学习笔记(9)——加载关联数据
如果完全跟着微软文档来学EF Core,那等学完,项目都凉透了。光一个创建模型都有十几二十节。所以应根据实际需要,对重点章节进行学习,一些知识点比较细的、深入的等后续要用到再学。对我来说,除了基本的CRUD,还有一个很重要的功能就是访问相关联的表。就是点击表上的某个字段,可以跳转查看该字段相关联的表的详细信息。而我在Query data章节中,发现了Load related data这一节,节中内容与这个功能有很大相关性。EF Core允许你在model中使用导航属性来加载关联的实体。下面是三种常用原创 2022-07-07 23:28:30 · 826 阅读 · 0 评论 -
EFCore学习笔记(8)——关系
关系(relationship)定义了两个实体(entity)之间是怎样联系的。在关系数据库中,这是由外键约束(foreign key constraint)来表示的。1. 术语的定义用来描述关系的术语有许多:以下代码展示了Blog和Post之间一对多的关系:其中,Post是一个从实体。将上面两实体类用二维表的形式表示,Blog是主实体。Blog.BlogId是主体键(该场景中,它是主键而不是候补键)。Post.BlogId是外键。Post.Blog是引用导航属性。Blog.Posts是集合导航原创 2022-07-05 14:57:39 · 1168 阅读 · 0 评论 -
《数据库系统概念》——关系数据库
前面根据网上资料拼凑,已经写过一篇关系数据库的文章了。但是总感觉有些概念模糊不清,甚至部分概念都没有介绍。虽然对整个关系数据库已经有了大概认识,但从它作为当下最主流的数据库之一这点来讲,这个理解程度应该是远远不够的。所以这次主要对《数据库系统概念》(第六版)的第一、二章——关系数据库及关系模型进行学习。这类书可能不那么有趣,但是概念上的完整性,逻辑的严谨度是有保障的。数据模型是描述数据、数据联系、数据语义以及一致性约束的概念工具的集合。关系模型现已称为主要的数据模型。之所以占据主要位置,是因为与早期的数据模原创 2022-07-04 11:30:00 · 1439 阅读 · 0 评论 -
EFCore学习笔记(7)——影子属性和索引属性
影子属性(Shadow properties),影子属性是一种属性,它不在.NET实体类中定义,而是在EF Core模型中为该实体类型定义的。影子属性的值和状态完全是在更改追踪器(Change Tracker)中维护的。当数据库中有不应该在映射的实体类上公开的数据时,影子属性是很有用的。索引器属性(Indexer properties),索引器属性是实体类型属性,由.NET实体类中索引器支持。可以使用.NET类实例上的索引器访问它们。它还允许你在不更改CLR类的情况下向型添加属性。影子属性最常用于外原创 2022-07-03 15:15:11 · 1057 阅读 · 0 评论 -
EFCore学习笔记(6)——EF6中使用DbContext
前面几篇EF Core相关的学习笔记讲了不少EF Core中概念性的东西,但没有实际编程操作过。这篇算是开始简单使用DbContext的基本功能。相信通过前面文章对实体、上下文、数据标注这些基本概念有一定了解后,能很快地上手使用DbContext来访问数据。如果对这些概念没有太多了解也没事,因为本文是偏应用型的。那么为了使用EF来操作.NET对象进行查询、插入、更新和删除数据,首先需要创建一个Model,这个Model将定义在其中的实体和关系映射到数据库中的表上。一旦你有了一个Model,与应用程序交互的基原创 2022-07-02 22:14:35 · 2359 阅读 · 0 评论 -
EFCore学习笔记(5)——生成值
有多种方式可以生成数据库列的值:主键列通常是自动递增的整数,其他列有默认值或一些计算值等等。本文详细介绍了使用EF Core生成各种配置值的各种模式。在关系数据库中,可以用默认值去配置列;如果在该列插入的行没有设置该列的值(就是插入一行,但没手动设置值,那就会用默认值),那么就会使用默认值。可以用以下方式给属性配置默认值:还可以指定SQL片段来计算默认值:2. 计算列在大多数关系数据库中,一列可被配置成在数据库中计算它的值,通常会使用一个引用其他列的表达式:上面代码创建了一个虚拟计算列,每次从数据库原创 2022-07-01 21:55:04 · 867 阅读 · 0 评论 -
EFCore学习笔记(4)——键
前面学了关系数据库中键这个概念之后,再回过来看,EF Core中的键与关系数据库中的键可以说是一样的。键(也称码、或者关键字)。键是用作每个实体实例的唯一标识符的。EF中的大部分实体都有一个键,它会映射到关系数据库中的主键(primary key,简称PK)这个概念(还有一部分实体是可以没有键的,称为无键实体,这边不展开讲)。实体还可以拥有除了主键外的其他键(候补键,或称候补码)。按照约定,一个属性命名为Id或者 Id就会被配置成实体的主键。你可以按以下方式将单个属性配置为主...........原创 2022-07-01 07:06:10 · 1238 阅读 · 0 评论 -
初识关系数据库
写程序时,如果有存储的需求,那往往会用到数据库。如果你是初次使用,或者是半路出家,那在数据库选型时可能就会纠结,这么多数据库,到底该选哪种呢?一般来讲,都是会选比较主流的,如MySQL、SQL Server、Oracle、SQLite等(当然具体还是得根据你的需求来),其实不管是这里的哪种,你在查询相关资料时,总能发现它的介绍是一种关于xxx的关系数据库。如果把关系两字去掉,变成它是一种xx的数据库,那我就不会有什么疑问了。数据库嘛,不就是存储数据的,很好理解啊。那关系两字的意义何在?为什么好多主流数原创 2022-06-30 17:16:34 · 426 阅读 · 0 评论 -
EFCore学习笔记(3)——实体属性
上一篇文学习了实体类型,知道了实体类型就是那个DbSet里泛型位置的类,也是面向对象的方法对现实世界事物的抽象类。在EF Core中使用模型访问数据库时,你还可以认为实体类与数据库中的数据表对应(当然这种映射关系需要用一些手段)。那这篇文来讲更加细化的实体类,对实体类中的属性进行学习。在你的模型中,每个实体类都会有一系列属性,EF Core能从数据库中读写它们。若你使用的是关系数据库,实体属性将映射到数据表的列。按照约定,所有带有getter和setter的公开属性都将被包含在模型中。可以通过以下方...原创 2022-06-27 17:21:41 · 1236 阅读 · 0 评论 -
EFCore学习笔记(2)——实体类型
上下文(Context的派生类)中包含一种类型的DbSet意味着它存在于EF Core的模型中;通常称这样的类型为实体(Entity)(所以实体就是那个类,而不是DbSet xxx)。EF Core能从数据库中读数据至实体的实例或将实体实例写入数据库,并且如果你用的是关系数据库,EF Core能通过migrations为你的实体建表。按照约定(指的是EF Core这套技术设计/使用上的规定),在你定义的上下文中的DbSet属性暴露的类型会作为实体被包含在model中。在OnModelCreating...原创 2022-06-27 10:51:19 · 1288 阅读 · 0 评论 -
EFCore学习笔记(1)——初识EFCore
最近在用MVVM模式开发一个项目,UI和业务逻辑部分写的差不多了,两部分对应到MVVM就是View和ViewModel(在三层架构中可以认为是UI呈现层和BLL业务逻辑层)。接着开始写数据访问,但数据访问部分,我没系统地研究过该怎么写,之前都是直接写在VM中和业务代码交织在一起的,去网上查询了一番之后,发现在三层架构中往往会将其写在DAL层(所以很多开源项目就项目目录下会有UI、BLL、DAL三个文件夹),在MVVM模式中会写在Model中(也有写在VM中的,但是从我对MVVM的认识来看,VM是处理业务逻辑原创 2022-06-25 14:37:09 · 1038 阅读 · 0 评论 -
Navicat Premium简易报表
前言 Navicat Premium可以做简易的数据报表,当数据量相对比较大,excel处理不过来,而又没有充足的时间给你写代码的时候,你可以使用它。使用方法 右键你的数据库,新建报表, 在设计窗口区,可以往里面拖入各种内容模块, 选择数据窗口区时,你可以新建数据查询向导(数据管道), 它可以将你需要的数据从数据库中筛选出来,供你在设计区导入到图表中,生成可视化图表。 筛选过...原创 2020-02-19 14:52:24 · 4287 阅读 · 0 评论 -
Qt数据库翻页Demo
引言 当数据库记录数很多的时候,如果将它全部显示到一个视图(view)中,长长的滚轮,拖动看起来会很累。这个时候给数据表加一个翻页的功能,每页限制显示一定数量的记录,这样会显得更合理一点。 于是我这边就写了个小Demo,用来实现一个简易的翻页功能。效果思路 主要用了SQL中的LIMIT项。LIMIT简单用法 LIMIT子句用于对整个SELECT语句返回的行数设置限制。 看下两个小...原创 2020-01-03 13:06:25 · 876 阅读 · 1 评论 -
Qt数据库连接
Qt数据库连接 Qt是通过数据库连接来进行数据库访问的。 QSqlDatabase类提供了连接访问数据库的接口。QSqlDatabase简介 一个QSqlDatabase的实例表示一个数据库的连接。每个连接通过Qt所支持的数据库驱动提供对数据库的访问(数据库驱动程序派生自QSqlDriver)。你也可以编写自己的数据库驱动。 通过调用静态addDatabase()函数中的一个来指定要使用...原创 2019-12-27 09:59:54 · 987 阅读 · 0 评论 -
SQLite DateTime存储的一些反思
引言 文名用的反思,说明之前在使用的时候踩了一些坑,然后回过头来才想起总结一下,以防下次犯同样的错误。 之前写过一个功能,将数据存储到数据库中,并且要标记每条记录(document)存储的时间,于是随手加了一个DateTime字段(field),用来标记存储时间。因为使用的是Qt,所以写的时候也是很简单,就按下面这样写了。 sqlQuery.exec(QString("INSERT INTO...原创 2019-12-11 09:43:23 · 715 阅读 · 0 评论 -
Qt数据库和SQLite介绍
SQL数据库驱动 Qt SQL模块使用驱动插件(driver plugins)与数据库API进行通信。 由于Qt的SQL模块API是与数据库无关的,所以所有特定的数据库代码都包含在驱动程序中。Qt提供了一些驱动,你也可以自己添加驱动。 下表是Qt包含的驱动:Driver nameDBMSQDB2IBM DB2(v7.1 and above)QIBASEBor...原创 2019-11-18 16:48:56 · 1194 阅读 · 8 评论