我创建了两个表user和contact。用户是父表,联系人是子表。我将userId称为联系表中的外键。我已经通过以下查询。
CREATE TABLE user(
userId INT NOT NULL AUTO_INCREMENT,
name VARCHAR(50) NULL,
phone VARCHAR(50) NULL,
email VARCHAR(50) NULL,
address VARCHAR(150) NULL,
loginName VARCHAR(45) NOT NULL,
password VARCHAR(50) NOT NULL,
role INT(1) NOT NULL DEFAULT 2,
loginStatus INT(1) NOT NULL DEFAULT 1,
PRIMARY KEY(userId),
);
Run Code Online (Sandbox Code Playgroud)
=====第二张表==========
CREATE TABLE contact(
contactId INT NOT NULL AUTO_INCREMENT,
userId INT NULL,
name VARCHAR(50) NULL,
phone VARCHAR(50) NULL,
email VARCHAR(50) NULL,
address VARCHAR(150) NULL,
remark VARCHAR(150) NULL,
PRIMARY KEY(contactId),
CONSTRAINT fk_con_userId FOREIGN KEY (userId)
REFERENCES user …Run Code Online (Sandbox Code Playgroud) 我每行有三个字段,我想将它们连接起来,按升序排列:
select * concat(field1, field2, field3) AS result
from tbl
Run Code Online (Sandbox Code Playgroud)
我的数据是:
field1, field2, field3
7 2 9
4 7 8
6 3 2
Run Code Online (Sandbox Code Playgroud)
预期的结果是:
field1, field2, field3 result
7 2 9 279
4 7 8 478
6 3 2 236
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?
我有一个600毫秒的查询.如何改进它 - 我认为与日期比较的线是关键
select
sensor_id,
sum(val)
from tests
where
sensor_id in (34,35) --index on this column
and date_trunc('month', audit_date) = date_trunc('month', current_date)
group by sensor_id;
Run Code Online (Sandbox Code Playgroud)
我正在尝试为我的数据库编写一些日志过程。我用以下语句创建一个过程:
create procedure prc_wirte_log (
in p_schema varchar(255),
in p_item varchar(255),
in p_message varchar(255)
)
begin
insert into weather.log (`schema`, item, message) values (p_schema, p_item, p_message);
end;
Run Code Online (Sandbox Code Playgroud)
我得到错误 Error Code: 1064. You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '' at line 7 0.063 sec
为什么?MySQL Workbench的意思是Incomplet Statment: excepting ;在插入查询之后。
我能做什么?
我有一个与此格式字符串列的表:{1,4,5}。它们可以是任意长度,我想将ID表与该ID在该字符串中的任何值连接起来。
这是第一张桌子
name id count
apple {1,3,6} 5
orange {5,3,1} 3
potato {8,1,9} 3
Run Code Online (Sandbox Code Playgroud)
这是第二张表-
id2 category
1 foo
2 foobar
3 candy
4 candybar
5 oreo
6 pistachio
Run Code Online (Sandbox Code Playgroud)
我想为第一个表中列出的每个ID都具有一行,该ID具有第二个表中的类别。我希望他们看起来像这样-
id2 name id count
1 apple {1,3,6} 5
1 orange {5,3,1} 3
1 potato {8,1,9} 3
3 apple {1,3,6} 5
3 orange {5,3,1} 3
8 potato {8,1,9} 3
9 potato {8,1,9} 3
Run Code Online (Sandbox Code Playgroud)
这就是到目前为止。我可以说一个联接过滤器join if the value is included吗?
select id2, name, id, count
from table2 as …Run Code Online (Sandbox Code Playgroud) 首先,这个项目对我来说就像是好奇。
我正在为实用程序库编写一些代码,并添加了用于运行各种SQL连接语句的方法。一切都很好,但是在某个时候,我遇到UNION JOIN了SQL-92规范(第179页)中包含的晦涩的子句。
我不知道它有多有用(我从未使用过),并且仅在HyperSQL中实现(AFAIK)。
作为记录,这是它的工作方式。如果我们有两个表T和U,且具有任意数量的列/行:
====== T ===== === U ===
a b c d e
---- ---- ---- ---- ----
1 2 3 10 11
4 5 6 12 13
Run Code Online (Sandbox Code Playgroud)
然后:
select * from T union join U
Run Code Online (Sandbox Code Playgroud)
产生(没有特定的行顺序):
a b c d e
---- ---- ---- ---- ----
1 2 3 null null
4 5 6 null null
null null null 10 11
null null null 12 13
Run Code Online (Sandbox Code Playgroud)
无论如何,我想知道哪些数据库确实支持它,或者您是否曾经在野外看到它。
我当时也在考虑问它有什么好处,但是我不希望这个问题以“基于首要观点”结束。
根据我自己的研究,我了解单个数据库(非分布式)上的 SQL 连接算法背后的基本思想 - 例如。散列连接、合并连接、循环连接。分布式连接算法是否类似于非分布式数据库上的连接算法?
例如,如果我有一个具有以下属性的用户表: - User_id - Age
我有一个带有属性的 Comments 表: - User_id - Comment_id - Comment
假设分布式数据库使用User_id对Users表进行分片,使用Comment_id对Comments表进行分片。
那么当您调用 SQL 查询时实际发生了什么:
SELECT * FROM Users INNER JOIN Comments ON Users.User_id = Comments.User_id
Run Code Online (Sandbox Code Playgroud)
? 是否将 User 表和 Comment 表整理到一台机器上,然后执行 JOIN?或者,即使它是分布式的,您是否也可以通过某种方式进行 JOIN?
我是新手,有一个问题寻求您的帮助。非常感谢!
我有一张这样的桌子。
它实际上是一个从 A 到 B 到 C 到 D 的字符串。在“开始日期”之前,A 被选为“原始字符串”,因为它是第一个出现的。根据该要求,桌子应该像这样固定
表中还有其他类似的字符串,我必须正确识别和串接它们。这里的任何人都可以帮助我在SQL Oracle上做这件事吗?我无法循环解决。非常感谢您的关心!
我知道Mysql中使用锁或者MVCC可以实现并发控制,比如可重复读。但我不知道MVCC如何避免幻读。在其他地方了解到一般是通过MVCC和Gap-Lock来实现的,但是目前我理解的是MVCC不需要锁,即更新和删除都是使用undo-log来实现的。如果是的话,MVCC和锁机制是如何协同工作的呢?
例如,为了避免幻读,MVCC 会在 T1 中的某些行上添加间隙锁吗?如果是这样,当 T2 中发生更新时,MVCC 会如何处理,通常只是附加更新撤消日志?或阻止它?
我试图在 Oracle 中使用唯一索引强制每个客户端只使用一个活动电话,但无法使其工作。这在 PostgreSQL 和 DB2 中完美无缺,但在 Oracle 中似乎不起作用。
这是示例:
create table phone (
client_id number(6) not null,
active number(1) not null check (active in (0, 1)),
value varchar2(15)
);
insert into phone (client_id, active, value) values (10, 0, '1111');
insert into phone (client_id, active, value) values (10, 1, '3333');
insert into phone (client_id, active, value) values (15, 0, '5555');
insert into phone (client_id, active, value) values (15, 1, '6666');
insert into phone (client_id, active, value) values (15, 0, '7777'); …Run Code Online (Sandbox Code Playgroud)