長生不老藥中的
> ecto查詢:初學者指南
>>本文介紹了Ecto,Ecto,Ecto,Ecto的查詢語言,為您提供基本的查詢技術。 我們將介紹對長生不老藥和ecto基本面的基本了解,聯合,協會,聚合等等。
密鑰概念:
where
,limit
,offset
>允許精確的數據選擇。 distinct
>
group_by
,having
,count
,avg
,sum
,min
,max
)啟用複雜的數據計算。
開始使用>應用程序:ectoing
>
>
ectoing
<code class="language-bash">git clone https://github.com/tpunt/ectoing cd ectoing mix deps.get # Update credentials in config/config.exs mix ecto.create mix ecto.migrate mix run priv/repo/seeds.exs</code>>
數據庫架構:
>讓我們從簡單的查詢開始。 切記在Elixir Shell()中導入
。獲取所有用戶:Ecto.Query
iex -S mix
> sql:
ecto(關鍵字語法):
ecto(宏語法):
<code class="language-sql">SELECT * FROM users;</code>
選擇特定字段(firstName,姓氏):
><code class="language-elixir">query = Ectoing.User Ectoing.Repo.all(query)</code>> sql:
<code class="language-elixir">query = Ectoing.User |> Ecto.Query.all() Ectoing.Repo.all(query)</code>ecto(關鍵字語法):
ecto(宏語法):
結果將是列表,元組或地圖的列表,具體取決於
<code class="language-sql">SELECT firstname, surname FROM users;</code>子句結構。 >過濾和自定義結果:
<code class="language-elixir">query = from u in Ectoing.User, select: [u.firstname, u.surname] Ectoing.Repo.all(query)</code>>
讓我們完善查詢以選擇數據的子集。
><code class="language-elixir">query = Ectoing.User |> Ecto.Query.select([u], [u.firstname, u.surname]) Ectoing.Repo.all(query)</code>選擇姓氏“ doe”的用戶:
select
> sql:
ecto(關鍵字語法):
選擇不同的姓氏,有序並有限:
> sql:
ecto(關鍵字語法):
<code class="language-sql">SELECT * FROM users WHERE surname = "doe";</code>
> ecto(宏語法):
<code class="language-elixir">surname = "doe" query = from u in Ectoing.User, where: u.surname == ^surname Ectoing.Repo.all(query)</code>
聚合查詢:
<code class="language-elixir">surname = "doe" query = Ectoing.User |> Ecto.Query.where([u], u.surname == ^surname) Ectoing.Repo.all(query)</code>
ecto支持聚合函數。
>找到一個普通朋友評級為4或更高的用戶:
><code class="language-sql">SELECT DISTINCT surname FROM users LIMIT 3 ORDER BY surname;</code>> sql:
<code class="language-elixir">query = from u in Ectoing.User, select: u.surname, distinct: true, limit: 3, order_by: u.surname Ectoing.Repo.all(query)</code>ecto(關鍵字語法):
> ecto(宏語法):(使用管道操作員使用與關鍵字語法相似的結構)
<code class="language-elixir">query = Ectoing.User |> Ecto.Query.select([u], u.surname) |> Ecto.Query.distinct(true) |> Ecto.Query.limit(3) |> Ecto.Query.order_by([u], u.surname) Ectoing.Repo.all(query)</code>>
結論:
以上是了解長生不老藥的ecto查詢DSL:基礎知識的詳細內容。更多資訊請關注PHP中文網其他相關文章!