Linguagem Técnica de Programação III Manipulação de Dados Thiago Leite [email protected] quarta-feira, 5 de junho de 13 1 Manipulação de Dados • PHP conecta-se a uma enorme variedade de bancos de dados • Oracle, SQL Server, PostgreSQL, MySQL Interbase, DB2... quarta-feira, 5 de junho de 13 2 Manipulação de Dados • Existem frameworks para desenvolvimentos dos modelos entidades-relacionamento • Workbench • Open ModelSphere • RISE Editor • SQL Power Architect • ... quarta-feira, 5 de junho de 13 3 Manipulação de Dados • Para a manipulação de cada banco de dados existem funções específicas • funções de consulta, conexão, desconexão, retorno... Banco Site Sybase SQL Server MySQL MySQL>=4.1 Frontbase Interbase http://www.php.net/manual/pt_BR/refs.database.php ODBC Informix Oracle PostgreSQL SQLite quarta-feira, 5 de junho de 13 4 Manipulação de Dados • Manipulação de banco de dados • Linguagem SQL (Structured Query Language) • Linguagem para manipulação de dados em sistemas gestores de banco de dados relacionais (SGBDR) quarta-feira, 5 de junho de 13 5 Manipulação de Dados • Conectando a uma base de dados MySQL e inserindo comandos SQL para criação de uma base de dados # mysql -­‐u root -­‐p mysql> CREATE DATABASE carros; Query OK, 1 row affected (0,12 sec) quarta-feira, 5 de junho de 13 6 Manipulação de Dados • Listando base de dados disponíveis mysql> SHOW DATABASES; +-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+ | Database | +-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+ | information_schema | | carros | | gmgnm | | mysql | | performance_schema | +-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+ 5 rows in set (0,10 sec) quarta-feira, 5 de junho de 13 7 Manipulação de Dados • Utilizando uma base de dados mysql> use carros; Database changed quarta-feira, 5 de junho de 13 8 Manipulação de Dados • Criar tabelas em um SGBD MySQL mysql> CREATE TABLE tipos_de_carros (id integer, nome varchar(255)); Query OK, 0 rows affected (0,17 sec) quarta-feira, 5 de junho de 13 9 Manipulação de Dados • Código em PHP que insere dados em uma base de dados MySQL <?php $conn = mysql_connect(‘localhost’, ‘root’, ‘root’); mysql_select_db(‘carros’, $conn); mysql_query(“INSERT INTO tipos_de_carros (id, nome) VALUES (1, ‘esportivo’)”, $conn); mysql_query(“INSERT INTO tipos_de_carros (id, nome) VALUES (2, ‘popular’)”, $conn); mysql_query(“INSERT INTO tipos_de_carros (id, nome) VALUES (3, ‘caminhao’)”, $conn); mysql_close($conn); ?> quarta-feira, 5 de junho de 13 10 Manipulação de Dados • Comandos SQL de consulta ao banco de dados MySQL mysql> SELECT id,nome FROM tipos_de_carros; +-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+ | id | nome | +-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+ | 1 | esportivo | | 2 | popular | | 3 | caminhao | +-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+ 3 rows in set (0,06 sec) quarta-feira, 5 de junho de 13 11 Manipulação de Dados • Código em PHP para consulta ao banco MySQL <?php $conn = mysql_connect(‘localhost’, ‘root’, ‘root’); mysql_select_db(‘carros’, $conn); $results = mysql_query(“SELECT id,nome FROM tipos_de_carros”, $conn); if ($results) { while ($row = mysql_fetch_assoc($results)) { echo “Registro: ”.$row[‘id’].” - ”. $row[‘nome’].”<br>\n”; } } mysql_close($conn); ?> quarta-feira, 5 de junho de 13 12 Manipulação de Dados • Linguagem SQL • sintaxe da função SELECT ‣ SELECT <coluna1>,<coluna2> ‣ FROM <tabela1>,<tabela2> ‣ WHERE <condições> BY <coluna2>, <coluna1> ASC| ‣ ORDER DESC quarta-feira, 5 de junho de 13 13 Manipulação de Dados • Linguagem SQL • sintaxe da função INSERT ‣ INSERT INTO <tabela> (<coluna1>, <coluna2>) ‣ VALUES (<valor1>, <valor2>) quarta-feira, 5 de junho de 13 14 Manipulação de Dados • Linguagem SQL • sintaxe da função UPDATE ‣ UPDATE <tabela> ‣ SET <coluna1> = <valor1>, <coluna2> = <valor2> ‣ WHERE <condição> quarta-feira, 5 de junho de 13 15 Manipulação de Dados • Linguagem SQL • sintaxe da função DELETE ‣ DELETE FROM <tabela> ‣ WHERE <condição> quarta-feira, 5 de junho de 13 16 Manipulação de Dados • Criar banco de dados para o código de conta bancária quarta-feira, 5 de junho de 13 17 Revisão • Framework de banco de dados • SQL • SELECT • INSERT • UPDATE • DELETE quarta-feira, 5 de junho de 13 18 Agente de Defensoria quarta-feira, 5 de junho de 13 19 (continuação) (FCC) Uma instrução SQL correta para criar a tabela NOTAFISCAL apresentada no modelo é: a) CREATE TABLE NOTAFISCAL (idNOTAFISCAL INTEGER NOT NULL, dataEmissao DATE NULL, PRIMARY KEY(idNOTAFISCAL)); b) CREATE TABLE NOTAFISCAL (idNOTAFISCAL INTEGER NULL AUTOINCREMENT, dataEmissao DATE NULL, PRIMARY KEY(idNOTAFISCAL)); c) CREATE SCHEMA NOTAFISCAL (idNOTAFISCAL INTEGER NOT NULL AUTO_INCREMENT, dataEmissao DATE NOT NULL, PRIMARY KEY(idNOTAFISCAL)); d) CREATE TABLE NOTAFISCAL (idNOTAFISCAL INTEGER NULL, dataEmissao DATE NOT NULL, CONSTRAINT UNIQUE KEY(idNOTAFISCAL)); e) CREATE TABLE NOTAFISCAL (idNOTAFISCAL INTEGER NULL CONSTRAINT PRIMARY KEY, dataEmissao DATE NULL); quarta-feira, 5 de junho de 13 20 (continuação) (FCC) Uma instrução SQL correta para criar a tabela NOTAFISCAL apresentada no modelo é: a) CREATE TABLE NOTAFISCAL (idNOTAFISCAL INTEGER NOT NULL, dataEmissao DATE NULL, PRIMARY KEY(idNOTAFISCAL)); b) CREATE TABLE NOTAFISCAL (idNOTAFISCAL INTEGER NULL AUTOINCREMENT, dataEmissao DATE NULL, PRIMARY KEY(idNOTAFISCAL)); c) CREATE SCHEMA NOTAFISCAL (idNOTAFISCAL INTEGER NOT NULL AUTO_INCREMENT, dataEmissao DATE NOT NULL, PRIMARY KEY(idNOTAFISCAL)); d) CREATE TABLE NOTAFISCAL (idNOTAFISCAL INTEGER NULL, dataEmissao DATE NOT NULL, CONSTRAINT UNIQUE KEY(idNOTAFISCAL)); e) CREATE TABLE NOTAFISCAL (idNOTAFISCAL INTEGER NULL CONSTRAINT PRIMARY KEY, dataEmissao DATE NULL); quarta-feira, 5 de junho de 13 20 SPTrans (VUNESP) Em uma instrução SQL, o caractere utilizado para representar qualquer caractere em uma consulta é o: a) % b) $ c) # d) * e) & quarta-feira, 5 de junho de 13 21 SPTrans (VUNESP) Em uma instrução SQL, o caractere utilizado para representar qualquer caractere em uma consulta é o: a) % b) $ c) # d) * e) & quarta-feira, 5 de junho de 13 21 TCE-AM (FCC adaptada) Considere o seguinte fragmento de linguagem SQL: CREATE TABLE Carros (Codigo INTEGER PRIMARY KEY AUTO_INCREMENT, TEXT Modelo); INSERT INTO Carros VALUES (NULL, "Alfa Romeo"); Após a execução da primeira linha do código acima, ao ser executado o código presente na segunda linha, será: quarta-feira, 5 de junho de 13 22 (continuação) a) inserida uma nova linha na coluna Modelo b) inserida uma nova linha na tabela Carros. c) inserida uma nova coluna na linha Carros. d) inserida uma nova coluna na linha Modelo. e) exibida uma mensagem de erro, pois a coluna Código não pode conter um valor indeterminado (NULL). quarta-feira, 5 de junho de 13 23 (continuação) a) inserida uma nova linha na coluna Modelo b) inserida uma nova linha na tabela Carros. c) inserida uma nova coluna na linha Carros. d) inserida uma nova coluna na linha Modelo. e) exibida uma mensagem de erro, pois a coluna Código não pode conter um valor indeterminado (NULL). quarta-feira, 5 de junho de 13 23