Upgrade to Pro — share decks privately, control downloads, hide ads and more …

SQL com Arel no Rails

SQL com Arel no Rails

Talk in Gurupi-THE third edition. Available on Youtube

Lucas Hiago de Moura Vilela

August 08, 2020
Tweet

More Decks by Lucas Hiago de Moura Vilela

Other Decks in Technology

Transcript

  1. O que é o SQL? • Structured Query Language (ou,

    Linguagem de Consulta Estruturada) • Inspirada na Álgebra Relacional • Desenvolvida pela IBM • NoSQL
  2. Exemplos Leitura Escrita Atualização Deleção SELECT * FROM Customers; INSERT

    INTO Customers (CustomerName, ContactName, Address, City, PostalCode, Country) VALUES ('Cardinal','Tom B. Erichsen','Skagen 21','Stavanger','4006','Norway'); UPDATE Customers SET ContactName='Alfred Schmidt', City='Frankfurt' WHERE CustomerID=1; DELETE FROM Customers WHERE CustomerName='Alfreds Futterkiste';
  3. Active Record • Padrão de projeto • Patterns of Enterprise

    Application Architecture, por Martin Fowler • ORM • MVC
  4. Exemplos SQL Rails ActiveRecord SELECT 1 AS one FROM "users"

    WHERE "users"."email" = $1 LIMIT $2 [["email", "[email protected]"], ["LIMIT", 1]] INSERT INTO "users" ("email", "password", "name", "password_confirmation") VALUES ($1, $2, $3, $4) RETURNING "id" [["email", "[email protected]"], ["password", "123456"], ["name", "João das Neves"], ["password_confirmation", "123456"]] User.create(name: 'João das Neves', email: '[email protected]', password: '123456', password_confirmation: '123456')
  5. Arel • A principio, uma framework de framework • Álgebra

    relacional para Ruby • Gerenciamento da SQL AST • Mantida pela organização Rails
  6. User.where("age > ? OR (name = ? AND age <

    ?)", age1, name1, age2) User.where(column[:age].gt(age1).or(column[:name].eq(name1).and(column[: age2].lt(age2)))) private def column(symbol) User.arel_table[symbol] end