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

Avatar for Lucas Hiago de Moura Vilela

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