Rumah Peranti teknologi industri IT Memahami Elixir ' s ecto pertanyaan DSL: asas -asas

Memahami Elixir ' s ecto pertanyaan DSL: asas -asas

Feb 18, 2025 pm 12:03 PM

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, dan distinct 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:

Understanding Elixir's Ecto Querying DSL: The Basics

Pertanyaan Asas:

mari kita mulakan dengan pertanyaan mudah. Ingatlah untuk mengimport

dalam shell Elixir (Ecto.Query). iex -S mix

Ambil semua pengguna:

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 kata kunci):

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;
Kesimpulan:

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)
Pengenalan ini meliputi asas -asas pertanyaan Ecto. Langkah seterusnya melibatkan meneroka gabungan, pertanyaan kompleks, dan teknik lanjutan. Rujuk dokumentasi ECTO untuk panduan komprehensif.

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!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Stock Market GPT

Stock Market GPT

Penyelidikan pelaburan dikuasakan AI untuk keputusan yang lebih bijak

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Kekurangan kemahiran AI diperburuk dengan melonjak permintaan gaji Kekurangan kemahiran AI diperburuk dengan melonjak permintaan gaji Sep 07, 2025 am 12:54 AM

Perbelanjaan yang berkaitan

10 chatgpt meminta untuk meneruskan penulisan untuk sebarang peranan 10 chatgpt meminta untuk meneruskan penulisan untuk sebarang peranan Sep 06, 2025 am 02:42 AM

Dalam pasaran yang pantas, kompetitif, resume anda bukan sekadar dokumen. Ia adalah kerja sepanjang hidup anda yang dinyatakan dalam beberapa baris - jenama pemasaran peribadi anda. Dengan pengambilan pengurus membelanjakan purata a

Kawalan ibu bapa yang baru dan rsquo; s dan perlindungan kesihatan mental untuk ChatGPT bertujuan untuk menjadikan AI lebih selamat untuk remaja. Kawalan ibu bapa yang baru dan rsquo; s dan perlindungan kesihatan mental untuk ChatGPT bertujuan untuk menjadikan AI lebih selamat untuk remaja. Sep 15, 2025 am 12:06 AM

Openai menggulung kawalan ibu bapa untuk chatgptarents kini boleh berhubung dengan akaun remaja mereka, had ciri, dan mendapatkan makluman jika tekanan emosi dikesan perbualan berisiko akan dikendalikan oleh model khas yang dilatih untuk menyokong penggunaan

Hos Podcast AI Google Notebooklm kini boleh menjadi hujah mengenai nota anda Hos Podcast AI Google Notebooklm kini boleh menjadi hujah mengenai nota anda Sep 16, 2025 am 07:12 AM

NotebookLM oleh Google Now mempunyai format gambaran audio baru: penambahan ringkas, kritikan, dan debatethese membawa interaksi yang lebih baik dan perbincangan berstruktur untuk memuat naik kandungan yang ditingkatkan mendorong alat lebih dekat ke interaktif, gaya podcast AI

Microsoft memberi amaran tentang lalu lintas azure yang perlahan Microsoft memberi amaran tentang lalu lintas azure yang perlahan Sep 17, 2025 am 05:33 AM

Microsoft telah mengeluarkan amaran mengenai latensi rangkaian yang lebih tinggi yang mempengaruhi perkhidmatan Azure kerana gangguan di bawah kabel bawah laut yang terletak di Laut Merah, memaksa syarikat itu mengalihkan trafik melalui laluan alternatif. "Walaupun sambungan rangkaian

GPT 5 vs GPT 4O: Mana yang lebih baik? GPT 5 vs GPT 4O: Mana yang lebih baik? Sep 18, 2025 am 03:21 AM

Pembebasan terbaru GPT-5 telah mengambil dunia dengan ribut. Model perdana terbaru Openai telah menerima ulasan bercampur - sementara beberapa memuji keupayaannya, yang lain menyerlahkan kekurangannya. Ini membuat saya tertanya-tanya: Adakah GPT-

Codex Cli vs Gemini Cli vs Claude Code: Mana yang terbaik? Codex Cli vs Gemini Cli vs Claude Code: Mana yang terbaik? Sep 18, 2025 am 04:06 AM

Pada tahun 2025, beberapa pembantu pengaturcaraan AI yang boleh diakses terus dari terminal akan dikeluarkan satu demi satu. Codex CLI, Gemini CLI, dan Kod Claude adalah beberapa alat popular yang membenamkan model bahasa besar ke dalam alur kerja baris arahan. Alat pengaturcaraan ini mampu menghasilkan dan membaiki kod melalui arahan bahasa semulajadi, dan sangat kuat. Kami mengkaji prestasi ketiga -tiga alat ini dalam tugas yang berbeza untuk menentukan yang mana lebih praktikal. Setiap pembantu didasarkan pada model AI canggih seperti O4-Mini, Gemini 2.5 Pro atau Claude Sonnet 4, yang direka untuk meningkatkan kecekapan pembangunan. Kami meletakkan tiga dalam persekitaran yang sama dan menggunakan metrik tertentu

Paradoks AI Trust: Bagaimana Industri Terkawal Boleh Dipercayai Di Dunia yang Dipandang AI Paradoks AI Trust: Bagaimana Industri Terkawal Boleh Dipercayai Di Dunia yang Dipandang AI Sep 21, 2025 am 12:36 AM

Sekiranya anda memberitahu bilik yang penuh dengan eksekutif insurans yang tidak berisiko lima tahun yang lalu bahawa hampir separuh daripada pengguna UK akan segera mengalu-alukan nasihat kesihatan dari AI, anda akan bertemu dengan keraguan yang serius, jika tidak ketawa.

See all articles