我可以理解,如果您更新TINYINT(1)列并传递1或0的值,它将分别将其转换为TRUE或FALSE。
我只是对当你用不同的值更新列时会发生什么感到困惑,比如2。换句话说,如果您更新TINYINT(1)值为2的列,这是TRUE还是FALSE?或者,这甚至可行吗?
我想向我的 Postgres 数据库添加一个类似触发器的函数。问题是该函数应该每天自动执行一次并更改指定表中的值。
是否可以通过 SQL 语法来执行此操作,还是最好编写一个带有我需要的一些查询的 bash 脚本?
当然是一个noobish 问题,但我还是会问它。也许别人会感激。^^
我对 MySQL 越来越熟悉,并且我试图理解创建结构良好的数据库的概念。目前我正在阅读实体关系图(ERD),我问自己:
如果我有三个由第四个链接的表格,例如: 由一个或多个作者撰写的一本书,并且每个作者都在一个或多个国家出版。
authors books countries
id | name id | book id | publishedInCountry
1 | ... 1 | ... 1 | ...
1 | ... 2 | ... 2 | ...
1 | ... 2 | ... 3 | ...
4 | ... 1 | ... 3 | ...
linkTable
idOfAuthor | idOfBook | idOfCountry
1 | 1 | 1
...
Run Code Online (Sandbox Code Playgroud)
这些 ERD 会是什么样子?
附加信息
我想到了:
[authors]-- < 是 > 的作者 -- [books] …
有没有办法做到这一点?我正在尝试做这样的事情:
SELECT x
FROM table
EXCEPT
WITH RECURSIVE ...();
Run Code Online (Sandbox Code Playgroud) 以下是相关表格:
Table_B
B_ID(PK) Name A_Id
1 A 1
2 B 1
Table_C
C_ID B_Id(FK)
1 1
2 1
Run Code Online (Sandbox Code Playgroud)
现在我想Table_B从它的子表中删除行Table_C。以下是我正在触发的查询:
delete from Table_B where A_Id = 1
Run Code Online (Sandbox Code Playgroud)
我也想从其子项中删除所有行。可以用触发器吗?我在 上做了一个触发器Table_B,但它只删除了一行;所以我必须运行一个循环。
谢谢。
我们正面临日志驱动器 ( E :) 经常被填满的问题。
我们的 DBMS 是设置了 AOAG 的 SQL Server 2014 SP1。
我们有每周维护任务:
我们没有看到任何繁重的事务处理。
但是我们可以看到E:被填满了。
以下是自动增长设置:
注意:由于这是 AOAG 环境,我们每 30 分钟安排一次事务日志备份。
我的问题:
在这种情况下,是什么让E:被填满了?
为什么我的日志没有被截断?
在这种情况下,我们需要扩展 E: 吗?
截断我的日志的行动计划应该是什么?
截至目前,在我们决定下一个扩展驱动器的计划之前,我们不时缩小文件以释放空间。
请建议。
sql-server backup transaction-log availability-groups sql-server-2014
我有一个查询,我想在其中检索不同的Child行,但按Parent. 如果我执行以下操作,则会收到错误消息,因为 中指定的列ORDER BY未包含在DISTINCT列表中:
SELECT
DISTINCT c.foo, c.bar
FROM Parent p
JOIN Child c on c.parentId = p.id
ORDER BY p.createdDate
Run Code Online (Sandbox Code Playgroud)
但是,如果我添加p.createdDate到选择列表中,我将失去Child行的独特性,因为p.createdDate它们都不同。
如果我使用 CTE 或子查询首先进行排序,然后从中选择不同的行,则外部查询不保证它将保持内部/cte 查询的顺序。
有没有办法实现这一目标?
在我们的整个业务中,我们有几个小批量 SQL Server 安装;添加,因为我们已经为业务开发/收购了新产品。每个都位于一个虚拟服务器上,为了争论,假设有 5 个这样的服务器,每个都分配了 8Gb RAM 和 4 个 CPU……在我看来,我认为将这些整理到一个服务器上会更有意义,增强了内存/CPU。
我认为这样做的优点在于它可以更轻松地跟踪服务器、维护它们、升级(在需要时)、分配权限会更容易并且性能可能会提高(通过添加额外的 RAM/CPU)。据推测,我们还可以让服务器复制/负载平衡以提供额外的弹性。
我这样认为正确吗?
反对这样做的考虑是什么?
我正在使用 MS SQL Server,但在一般数据库设计中,我想知道当数据库中的每一行都有其自动生成的代理键值时会出现什么问题。
我知道一些优点,比如主键不需要标识没有NULL的唯一列,不需要管理复合主键,范式更容易管理,唯一性有保证。
我想知道,是否有任何关于性能或索引结构等的充分理由应该使我们使用真实世界的事实键而不是代理键?
谢谢。
我想从一个名为 的表中检索一个包含所有相同重量的 Riders 的表Rider,该表是这样定义的:
CREATE TABLE Rider(
name VARCHAR(30),
weight REAL,
PRIMARY KEY(name)
) ENGINE=innodb;
Run Code Online (Sandbox Code Playgroud)
里面的数据是:
Alan 55
Ana 55
Anne 50
Bill 65
David 60
Julia 55
Peter 65
Stan 60
Run Code Online (Sandbox Code Playgroud)
我想要这样的结果:
50 Anne
55 Alan Ana Julia
60 David Stan
65 Bill Peter
Run Code Online (Sandbox Code Playgroud)
我不知道该怎么做。我只能设法按重量对它们进行排序:
SELECT weight, name
FROM Rider
GROUP BY weight;
Run Code Online (Sandbox Code Playgroud)
非常感谢所有帮助!
我有一个 PostgreSQL 设置,有一个主站和三个从站。它被配置为流式复制。
现在,我只想使用pglogical将几个表从主服务器复制到分析服务器。为此,我们需要启用逻辑wal_level. 那么如何在不破坏现有复制的情况下启用它呢?
我有这两个查询,它们从四个表中提取数据:
select files.id, files.name, dirs.dir
from files
inner join dirs on dirs.id = files.idDir
where files.id = 45
select label
from labels
inner join labels_files on labels_files.idLabel = labels.id
where labels_files.idFile = 45
Run Code Online (Sandbox Code Playgroud)
第一个查询返回 1 行。第二个查询返回 1 个或多个 row/s
我的目标是在结果集中获得一个查询和一行。说:
--------------------------------------------------
45 | test.txt | /home | label1, label2, labeln |
--------------------------------------------------
Run Code Online (Sandbox Code Playgroud)
我想我应该尝试派生表,但一直在尝试无济于事。
我试图忽略来自 CTE 的重复行,但我无法做到这一点,似乎 CTE 不允许使用ROWNUM()变量到WHERE子句,因为它在尝试这样做时显示“无效的列名 'numrows' ”错误.
SELECT在 a 中使用时如何忽略重复的行CTE?
SQL查询:
DECLARE @BatchID uniqueidentifier = NEWID();
DECLARE @ClusterID SMALLINT = 1;
DECLARE @BatchSize integer = 20000;
DECLARE @myTableVariable TABLE(
EventID BIGINT,
HotelID int,
BatchStatus varchar(50),
BatchID uniqueidentifier);
WITH PendingExtResSvcEventsData_Batch AS (
SELECT TOP (@BatchSize) t.EventID, t.HotelID, t.BatchStatus, t.BatchID,
ROW_NUMBER() OVER (PARTITION BY t.EventID ORDER BY t.EventID) numrows
FROM ExtResSvcPendingMsg t WITH (NOLOCK)
WHERE t.ClusterID = @ClusterID
AND numrows = 1
-- Exclude …Run Code Online (Sandbox Code Playgroud) sql-server ×5
mysql ×2
postgresql ×2
t-sql ×2
backup ×1
datatypes ×1
distinct ×1
erd ×1
except ×1
join ×1
mariadb ×1
mariadb-10.3 ×1
mysql-8.0 ×1
order-by ×1
primary-key ×1
replication ×1
scripting ×1
sqlite ×1
trigger ×1