SQL

Banco de dados

SQL?

Structured Query Language

Aqui é br: (Linguagem de Consulta Estruturada)

Pra que SQL?

Comandos importantes

  • CREATE DATABASE - cria um banco de dados
  • DROP DATABASE - exclui o banco de dados
  • CREATE TABLE - cria uma tabela
  • ALTER TABLE - modifica uma tabela
  • DROP TABLE - deleta uma tabela
  • SELECT - consulta dados da tabela
  • UPDATE - atualiza dados da tabela
  • DELETE - exclui dados da tabela
  • INSERT INTO - insere dados na tabela

Operações com o banco

Create database


                        CREATE DATABASE nome_do_banco;
                        

Drop database


                        DROP DATABASE nome_do_banco;
                        

Operações com a tabela

Create table


                        -
                        CREATE TABLE infojuniores
                        (
                        id int NOT NULL AUTO_INCREMENT,
                        nome varchar(255) NOT NULL,
                        cargo varchar(255),
                        idade int,
                        PRIMARY KEY (id)
                        )

                        

Drop table


                        DROP TABLE nome_da_tabela
                        

Alter table


                        ALTER TABLE nome_da_tabela ADD nome_da_coluna tipo_de_dado
                        

                        ALTER TABLE nome_da_tabela DROP COLUMN nome_da_coluna
                        

Operações mais usadas

Insert into


                        -
                        INSERT INTO infojuniores
                        (`nome`, `cargo`, `idade`)
                        VALUES
                        ('Iago', 'DGP', 12),
                        ('Bruno', 'DPRJ', 20),
                        ('Adeilson', 'DPRE', 21),
                        ('Karen', 'DAF', 18),
                        ('JP', 'Feirense', 20),
                        ('Jeff', 'mito', 18)
                        

Update


                        -
                        UPDATE nome_da_tabela 
                        SET coluna1=valor1,coluna2=valor2 
                        WHERE nome_da_coluna=valor;
                        

Delete


                        DELETE FROM nome_da__tabela WHERE nome_da_coluna=valor;
                        

Select


                        SELECT nome_da_coluna FROM nome_da_tabela;
                        

                        SELECT nome_da_coluna, nome_de_outra_coluna FROM nome_da_tabela;
                        

                        SELECT * FROM nome_da_tabela;
                        

O uso de consultas

Filtros de select


                        SELECT DISTINCT nome_da_coluna FROM nome_da_tabela;
                        

                        SELECT nome_da_coluna FROM nome_da_tabela 
                        WHERE nome_da_coluna operador valor;
                        

                        SELECT * FROM nome_da_tabela 
                        WHERE nome_da_coluna1= value1 
                        AND nome_da_coluna2= 'value2';
                        

                        SELECT * FROM nome_da_tabela WHERE nome_da_coluna LIKE 's%';
                        

Filtros de select


                        SELECT * FROM nome_da_tabela 
                        WHERE nome_da_coluna 
                        BETWEEN value1 AND value2;
                        

                        SELECT nome_da_coluna FROM nome_da_tabela 
                        WHERE nome_da_coluna IN (value1,value2,...);
                        

                        SELECT * FROM nome_da_tabela
                        ORDER BY nome_da_coluna1 
                        ASC, nome_da_coluna2 DESC;
                        

SQL Injection

É uma técnica onde os usuários mal-intencionados pode injetar comandos SQL em uma instrução SQL, através da entrada de página da web. Comandos SQL injetadas podem alterar instrução SQL e comprometer a segurança de uma aplicação web. As injeções mais comuns são por comparação e instrução em lote.

SQL Injection

Parametrizar é a solução!

PDO

PDO

Nada mais é do que uma interface para banco de dados. Podemos dizer que é uma "classe universal" que nos fornece uma camada de abstração para vários SGBD's (MySQL, PostgreSQL etc) diferentes.

Conexão com o banco de dados


                            //
                            try{
                              // Faz conexão com banco de daddos
                              $pdo = new PDO("mysql:host=localhost;dbname=info;","root", "");
                            }catch(PDOException $e){
                              // Caso ocorra algum erro na conexão com o banco, exibe a mensagem
                              echo 'Falha ao conectar no banco de dados: '.$e->getMessage();
                              die;
                            }
                        

mysql_connect, pg_connect

Função de inserir dados


                            //
                            public function insert($pdo){
                                $sth = $pdo->prepare("INSERT 
                                INTO infojuniores(nome,cargo,idade) 
                                VALUES (:nome,:cargo,:idade)");
                                $sth->BindValue(':nome',$this->nome,PDO::PARAM_STR);
                                $sth->BindValue(':cargo',$this->cargo,PDO::PARAM_STR);
                                $sth->BindValue(':idade',$this->idade,PDO::PARAM_STR);
                                return $sth->execute();
                            }
                        

Função de deletar dados


                            //
                            public static function delete($id,$pdo){
                                $sth = $pdo->prepare("DELETE FROM infojuniores 
                                WHERE id=:id LIMIT 1");
                                $sth->bindValue(":id", $id, PDO::PARAM_INT);
                                return $sth->execute();
                            }
                        

Função de selecionar todos


                            //
                            public static function selectAll($pdo){
                                $sth = $pdo->query("SELECT * FROM infojuniores 
                                ORDER BY nome ASC");
                                $sth->execute();
                                $results = $sth->fetchAll(PDO::FETCH_ASSOC);
                                return $results;
                            }
                        

Obrigado!