Memahami Elixir ' s ecto pertanyaan DSL: asas -asas
ecto pertanyaan dalam elixir: Panduan pemula
Artikel ini memperkenalkan bahasa pertanyaan Ecto, Elixir, membimbing anda melalui teknik pertanyaan asas. Kami akan meliputi gabungan, persatuan, pengagregatan, dan banyak lagi, dengan menganggap pemahaman asas mengenai fundamental elixir dan Ecto.
Konsep Utama:
- ecto adalah DSL Elixir untuk interaksi pangkalan data, mencerminkan SQL.
- Ia menawarkan sintaks Kata Kunci dan makro pertanyaan, bersamaan dengan fungsi tetapi berbeza dalam gaya.
- fungsi teras seperti
where
,limit
,offset
, dandistinct
membolehkan pemilihan data yang tepat. - Fungsi Agregasi (
group_by
,having
,count
,avg
,sum
,min
,max
) Dayakan pengiraan data kompleks.
Bermula dengan aplikasi ectoing
:
Contoh menggunakan aplikasi ectoing
. Klon, sediakan, dan berhijrah pangkalan data seperti berikut:
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
(MySQL digunakan di sini; sementara yang boleh disesuaikan dengan pangkalan data lain, beberapa contoh kemudian mungkin MySQL-spesifik.)
Skema pangkalan data:
Pertanyaan Asas:
mari kita mulakan dengan pertanyaan mudah. Ingatlah untuk mengimport dalam shell Elixir (Ecto.Query
). iex -S mix
SQL:
ecto (sintaks kata kunci):
SELECT * FROM users;
ecto (sintaks makro):
query = Ectoing.User Ectoing.Repo.all(query)
memilih medan tertentu (nama pertama, nama keluarga):
query = Ectoing.User |> Ecto.Query.all() Ectoing.Repo.all(query)
SQL:
ecto (sintaks kata kunci):
SELECT firstname, surname FROM users;
ecto (sintaks makro):
query = from u in Ectoing.User, select: [u.firstname, u.surname] Ectoing.Repo.all(query)
Hasilnya akan menjadi senarai senarai, tuples, atau peta bergantung kepada struktur klausa
.query = Ectoing.User |> Ecto.Query.select([u], [u.firstname, u.surname]) Ectoing.Repo.all(query)
select
penapisan dan penyesuaian hasil:
mari memperbaiki pertanyaan untuk memilih subset data. memilih pengguna dengan nama keluarga "Doe":
SQL:
ecto (sintaks kata kunci):
ecto (sintaks makro):
SELECT * FROM users WHERE surname = "doe";
Memilih nama keluarga yang berbeza, diperintahkan, dan terhad:
surname = "doe" query = from u in Ectoing.User, where: u.surname == ^surname Ectoing.Repo.all(query)
SQL:
surname = "doe" query = Ectoing.User |> Ecto.Query.where([u], u.surname == ^surname) Ectoing.Repo.all(query)
ecto (sintaks makro):
SELECT DISTINCT surname FROM users LIMIT 3 ORDER BY surname;
Pertanyaan Agregasi:
query = from u in Ectoing.User, select: u.surname, distinct: true, limit: 3, order_by: u.surname Ectoing.Repo.all(query)
Ecto menyokong fungsi agregasi.
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)
Mencari pengguna dengan penilaian rakan rata -rata 4 atau lebih besar:
SQL:
ecto (sintaks kata kunci):
ecto (sintaks makro): (struktur yang serupa dengan sintaks kata kunci, menggunakan operator paip)
SELECT friend_id, avg(friend_rating) AS avg_rating FROM friends GROUP BY friend_id HAVING avg_rating >= 4 ORDER BY avg_rating DESC;
query = from f in Ectoing.Friend, select: %{friend_id: f.friend_id, avg_rating: avg(f.friend_rating)}, group_by: f.friend_id, having: avg(f.friend_rating) >= 4, order_by: [desc: avg(f.friend_rating)] Ectoing.Repo.all(query)
Atas ialah kandungan terperinci Memahami Elixir ' s ecto pertanyaan DSL: asas -asas. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas











Program perintis ini, kerjasama antara CNCF (Yayasan Pengkomputeran Native Cloud), pengkomputeran ampere, equinix metal, dan digerakkan, menyelaraskan ARM64 CI/CD untuk projek GitHub CNCF. Inisiatif ini menangani kebimbangan keselamatan dan prestasi lim

Tutorial ini membimbing anda melalui membina saluran paip pemprosesan imej tanpa pelayan menggunakan perkhidmatan AWS. Kami akan membuat frontend next.js yang digunakan pada kluster ECS Fargate, berinteraksi dengan Gateway API, Fungsi Lambda, Bucket S3, dan DynamoDB. Th

Tinggal maklumat mengenai trend teknologi terkini dengan surat berita pemaju teratas ini! Senarai ini menawarkan sesuatu untuk semua orang, dari peminat AI ke pemaju backend dan frontend yang berpengalaman. Pilih kegemaran anda dan menjimatkan masa mencari rel
