PostgreSQL 支持 SQL 规范的VALUES表达式,规范称为<table value constructor>
SELECT *
FROM (VALUES
(1, 'one'),
(2, 'two'),
(3, 'three')
) AS t(num,letter);
num | letter
-----+--------
1 | one
2 | two
3 | three
(3 rows)
Run Code Online (Sandbox Code Playgroud)
在dbfiddle上尝试,我无法让它在 Oracle 中工作。我不断得到
ORA-00903: 无效的表名
Oracle 是否支持VALUES ( expression [, ...] )? 如果不是,从查询中提供的行文字创建虚拟表的替代方法是什么?
serial我的应用程序表中有一个ID。但是,我想插入一个0id 记录来表示全局。
有没有一种方法可以将它插入我的桌子而不影响计数器?
紧接着这个问题,
如果引用表中的值ENUM比被引用表的值多或少,MySQL 如何工作?它是否仅基于全局ENUM文本密钥(符号)来验证完整性?还是底层的整数值?
我对如何做某事没有疑问,但我是否应该这样做。抱歉,如果有更合适的论坛。
我有一个功能:
CREATE OR REPLACE FUNCTION get_name(user_id UUID) RETURNS TEXT AS $$
SELECT username
FROM users
WHERE users.id=user_id
$$ LANGUAGE 'sql';
Run Code Online (Sandbox Code Playgroud)
我喜欢使用这个函数在其他查询中从 user_id 转换为用户名。这是一个常见的操作,我认为一个函数会加快开发时间,以查找一次性统计数据以进行数据分析。我不关心查询速度。这是使用函数来执行此操作的好习惯还是我应该只执行连接?
我对此很陌生,我的同事说将函数用于常规选择/连接可以执行的操作是不好的做法。他还提到,函数最好用于常规选择无法完成的事情。所以我想问其他人什么是好的做法?
编辑:如果这是一种不好的做法,那么对于函数执行稍微复杂一些的常见操作的情况是否更合理?
在这个答案中, Erwin 将IMMUTABLE函数分解为可以内联的函数和不能内联的函数。他有一个例子to_char(),表明IMMUTABLE函数 overto_char()实际上会更慢。
不过这很有趣,因为我什至不知道to_char()不是IMMUTABLE。此外,我不知道这IMMUTABLE会让任何事情变得更慢。我现在的问题是,如何确定标记为IMMUTABLE内联的函数是否被内联?
postgresql performance optimization execution-plan functions
在 Oracle 中,我使用
SELECT * FROM table1...JOIN...
Run Code Online (Sandbox Code Playgroud)
其中点表示连接类型或连接条件。
这是 ANSI 89 语法吗?如果没有,那么如果我使用 ANSI 89,我将如何执行连接?
下面的简单查询有什么问题?我试着用谷歌搜索但没有找到
IF 1 = 1 THEN
SELECT 1;
ELSE
SELECT 12;
END IF;
Run Code Online (Sandbox Code Playgroud) 我想创建一个圣经经文表,其中有一个字段代表一系列圣经经文。目前我将此范围表示为一对值(VerseBegId 和 VerseEndId)。我想要类似 Sql Server 空间数据类型的东西
代替
CREATE TABLE BibleVerse AS TABLE
(
VerseBegId int NOT NULL,
VerseEndId int NOT NULL
)
Run Code Online (Sandbox Code Playgroud)
我想要
CREATE TABLE BibleVerse AS TABLE
(
VerseRange ??? NOT NULL
)
Run Code Online (Sandbox Code Playgroud) PostgreSQL 有一个特殊的功能,称为COMMENT将元数据附加到标识符或任何类型(模式、表、列、函数、类型、域等)。看起来像这样,
COMMENT ON TABLE mytable IS 'This is my table.';
Run Code Online (Sandbox Code Playgroud)
评论有最大尺寸吗?
我正在使用以下命令向 PostGIS-2.1.3 (PostgreSQL-9.1.14) 中的光栅图像之一添加约束。
ALTER TABLE schema1.table1 ADD CONSTRAINT enforce_scalex_rast unique (rast);
Run Code Online (Sandbox Code Playgroud)
但得到以下错误:
ERROR: data type raster has no default operator class for access method "btree"
HINT: You must specify an operator class for the index or define a default operator class for the data type.
Run Code Online (Sandbox Code Playgroud)
请有人帮我解决这个错误。我对运算符类没有基本的了解。谢谢。
齐亚。
postgresql ×5
functions ×2
mysql ×2
case ×1
comments ×1
constraint ×1
enum ×1
foreign-key ×1
insert ×1
join ×1
mariadb ×1
metadata ×1
optimization ×1
oracle ×1
performance ×1
postgis ×1
range-types ×1
raster ×1
sequence ×1
sql-server ×1
sql-standard ×1