1. 概觀
attach-stmt
hide
ATTACH
DATABASE
expr
AS
schema-name
expr
show
literal-value
bind-parameter
schema-name
.
table-name
.
column-name
unary-operator
expr
expr
binary-operator
expr
function-name
(
function-arguments
)
filter-clause
over-clause
(
expr
)
,
CAST
(
expr
AS
type-name
)
expr
COLLATE
collation-name
expr
NOT
LIKE
GLOB
REGEXP
MATCH
expr
expr
ESCAPE
expr
expr
ISNULL
NOTNULL
NOT
NULL
expr
IS
NOT
DISTINCT
FROM
expr
expr
NOT
BETWEEN
expr
AND
expr
expr
NOT
IN
(
select-stmt
)
expr
,
schema-name
.
table-function
(
expr
)
table-name
,
NOT
EXISTS
(
select-stmt
)
CASE
expr
WHEN
expr
THEN
expr
ELSE
expr
END
raise-function
filter-clause
show
function-arguments
show
DISTINCT
expr
,
*
ORDER
BY
ordering-term
,
ordering-term
show
expr
COLLATE
collation-name
DESC
ASC
NULLS
FIRST
NULLS
LAST
literal-value
show
CURRENT_TIMESTAMP
numeric-literal
string-literal
blob-literal
NULL
TRUE
FALSE
CURRENT_TIME
CURRENT_DATE
over-clause
show
OVER
window-name
(
base-window-name
PARTITION
BY
expr
,
ORDER
BY
ordering-term
,
frame-spec
)
frame-spec
show
GROUPS
BETWEEN
UNBOUNDED
PRECEDING
AND
UNBOUNDED
FOLLOWING
RANGE
ROWS
UNBOUNDED
PRECEDING
expr
PRECEDING
CURRENT
ROW
expr
PRECEDING
CURRENT
ROW
expr
FOLLOWING
expr
PRECEDING
CURRENT
ROW
expr
FOLLOWING
EXCLUDE
CURRENT
ROW
EXCLUDE
GROUP
EXCLUDE
TIES
EXCLUDE
NO
OTHERS
ordering-term
show
expr
COLLATE
collation-name
DESC
ASC
NULLS
FIRST
NULLS
LAST
raise-function
show
RAISE
(
ROLLBACK
,
error-message
)
IGNORE
ABORT
FAIL
select-stmt
show
WITH
RECURSIVE
common-table-expression
,
SELECT
DISTINCT
result-column
,
ALL
FROM
table-or-subquery
join-clause
,
WHERE
expr
GROUP
BY
expr
HAVING
expr
,
WINDOW
window-name
AS
window-defn
,
VALUES
(
expr
)
,
,
compound-operator
select-core
ORDER
BY
LIMIT
expr
ordering-term
,
OFFSET
expr
,
expr
common-table-expression
show
table-name
(
column-name
)
AS
NOT
MATERIALIZED
(
select-stmt
)
,
compound-operator
show
UNION
UNION
INTERSECT
EXCEPT
ALL
join-clause
show
table-or-subquery
join-operator
table-or-subquery
join-constraint
join-constraint
show
USING
(
column-name
)
,
ON
expr
join-operator
show
NATURAL
LEFT
OUTER
JOIN
,
RIGHT
FULL
INNER
CROSS
ordering-term
show
expr
COLLATE
collation-name
DESC
ASC
NULLS
FIRST
NULLS
LAST
result-column
show
expr
AS
column-alias
*
table-name
.
*
table-or-subquery
show
schema-name
.
table-name
AS
table-alias
INDEXED
BY
index-name
NOT
INDEXED
table-function-name
(
expr
)
,
AS
table-alias
(
select-stmt
)
(
table-or-subquery
)
,
join-clause
window-defn
show
(
base-window-name
PARTITION
BY
expr
,
ORDER
BY
ordering-term
,
frame-spec
)
frame-spec
show
GROUPS
BETWEEN
UNBOUNDED
PRECEDING
AND
UNBOUNDED
FOLLOWING
RANGE
ROWS
UNBOUNDED
PRECEDING
expr
PRECEDING
CURRENT
ROW
expr
PRECEDING
CURRENT
ROW
expr
FOLLOWING
expr
PRECEDING
CURRENT
ROW
expr
FOLLOWING
EXCLUDE
CURRENT
ROW
EXCLUDE
GROUP
EXCLUDE
TIES
EXCLUDE
NO
OTHERS
type-name
show
name
(
signed-number
,
signed-number
)
(
signed-number
)
signed-number
show
ATTACH DATABASE 敘述會將另一個資料庫檔案新增到目前的 資料庫連線 。先前已附加的資料庫檔案可以使用 DETACH DATABASE 指令移除。
2. 詳細資料
要附加的資料庫檔案名稱為出現在 AS 關鍵字之前的表達式值。資料庫的檔案名稱遵循與 sqlite3_open() 和 sqlite3_open_v2() 的檔案名稱引數相同的語意;特殊名稱 ":memory: " 會產生 記憶體中資料庫 ,而空字串會產生新的暫時資料庫。如果資料庫連線已啟用 URI 檔案名稱處理,則檔案名稱引數可以是 URI 檔案名稱 。預設行為是停用 URI 檔案名稱,不過這可能會在未來的 SQLite 版本中變更,因此建議應用程式開發人員做好相應的規劃。
AS 關鍵字後的名稱是 SQLite 內部使用的資料庫名稱。架構名稱「main」和「temp」分別指主資料庫和用於暫時性資料表的資料庫。主資料庫和暫時性資料庫無法附加或分離。
可使用語法 schema-name.table-name 參照附加資料庫中的資料表。如果資料表的名稱在所有附加資料庫和主資料庫與暫時性資料庫中都是唯一的,則不需要 schema-name 前綴。如果不同資料庫中的兩個或多個資料表具有相同的名稱,且資料表參照中未使用 schema-name 前綴,則會選擇最近附加的資料庫中的資料表。
涉及多個附加資料庫的事務是原子的,假設主資料庫不是「:memory: 」,且 journal_mode 不是 WAL 。如果主資料庫是「:memory:」或 journal_mode 是 WAL,則事務會持續在每個個別資料庫檔案中保持原子性。但是,如果主機電腦在 COMMIT 中途當兩個或多個資料庫檔案更新時發生故障,其中一些檔案可能會取得變更,而其他檔案則可能不會。
有一個限制,使用 sqlite3_limit() 和 SQLITE_LIMIT_ATTACHED 設定,限制可以同時附加到單一資料庫連線的資料庫數量。
此頁面最後修改於 2023-12-05 14:43:20 UTC