Você está na página 1de 50

Estrutura de Dados e Consultas

Nilton Kazuo

Banco de Dados
Local onde se encontram concentradas as tabelas (estruturas de dados) que serviro de base para o armazenamento de registros.

Criar um Banco de Dados


CREATE DATABASE <nome do banco>;
CREATE DATABASE = instruo sql nome do banco = nome para identificao do BD. ; (ponto e virgula)= finaliza a linha de instruo. Query OK, 1 row affected (0.02 sec) = Informao retornada pelo MySQL.
Cria um banco de dados no servidor MySQL.

Criar um Banco de Dados


CREATE DATABASE [IF NOT EXISTS] <nome do banco>;
CREATE DATABASE IF NOT EXIXTS = instruo sql nome do banco = nome para identificao do BD ; (ponto e virgula)= finaliza a linha de instruo Query OK, 1 row affected, 1 warning (0.01 sec) = Informao retornada pelo MySQL.
Cria um banco de dados, mas s se no existir um com nome igual no servidor MySQL.

Visualiza BD no Servidor MySQL


SHOW DATABASES;
SHOW DATABASE = instruo SQL ;(ponto e virgula) = finaliza a linha de instruo mysql> show databases; +--------------------+ | Database +--------------------+ | information_schema | locadora | mysql | performance_schema | sakila | sakila_port | scadabr | test | world +--------------------+ 9 rows in set (0.00 sec)
Mostra todos os bancos de dados criados no servidor MySQL.

Uso do Banco de Dados


USE <nome do banco>;
USE = instruo SQL nome do banco = nome do banco a ser utilizado. ;(ponto e virgula) = finaliza a linha de instruo. Database changed = Informao retornada pelo MySQL.
Abre o banco de dados para que seja utilizado na criao de tabelas e demais elementos de trabalho

Remoo de BD no Servidor MySQL


DROP DATABASE <nome do banco>;
DROP DATABASE = instruo SQL. nome do banco = nome do banco a ser excluido. ;(ponto e virgula) = finaliza a linha de instruo. Database changed = Informao retornada pelo MySQL. Query OK, 1 row affected, 1 warning (0.01 sec) = Informao retornada pelo MySQL.
Remove o banco de dados do servidor MySQL.

Exerccios Criao de Banco de Dados


A empresa Virtual Ltda. Solicitou o desenvolvimento de um pequeno sistema de informao integrada que possa ajud-la a gerenciar suas operaes dirias.
Crie um banco de dados chamado virtual para a utilizao das diversas operaes a serem definidas para a empresa.

Tabelas e Registros
Tabelas:
Local onde uma coleo de dados inserida (registros), componente mais importante para o trabalho de manuteno do banco.

Criao de Tabelas
CREATE TABLE [IF NOT EXISTS] <tabela>( <coluna> <tipo coluna>[NULL/NOT NULL] [DEFAULT ,<valor>] [AUTO_INCREMENT] [PRIMARY KEY] );

CREATE TABLE [IF NOT EXISTS] = instruo SQL. <tabela> = nome da tabela a ser criada. ((parentes) = que inicia a construo dos campos da tabela. <coluna> = nome do campo da tabela. <tipo coluna> = tipo de dado a ser guardado no campo [NULL/NOT NULL] = instruo SQL que indica se o campo aceita ou no valores nulos.

Criao de Tabelas
CREATE TABLE [IF NOT EXISTS] <tabela>( <coluna> <tipo coluna>[NULL/NOT NULL] [DEFAULT ,<valor>] [AUTO_INCREMENT] [PRIMARY KEY] );

[DEFAULT ,<valor>] = instruo SQL que determinar um valor padro para o campo. <valor> = valor desejado que seja inserido como padro para o campo. [AUTO_INCREMENT] = instruo SQL que determina que o campo ser preenchido automaticamente quando nele foram entrados valores do tipo zero ou NULL (validos apenas para campos que aceitem valores inteiros). [PRIMARY KEY] = instruo SQL que determina que o campo chave primria da tabela. ) (parentes) = finaliza a construo dos campos da tabela ;(ponto e virgula) = finaliza a linha de instruo.

Tipos de Dados
BIGINT[(tamanho)] [UNSIGNED] [ZEROFILL]
Um inteiro grande. A faixa com sinal de 9223372036854775808 a 9223372036854775807. tamanho = mximo do valor a ser inserido (255) sendo opcional sua utilizao. UNSIGNED = define que o valor usado vai ser positivo na faixa de 0 a 18446744073709551615. ZEROFILL = preenche com zero se o campo for deixado em branco.

Tipos de Dados
AUTO_INCREMENT
usado para gerar uma identificao nica para um novo registro:

CHAR (tamanho) ou CHARACTER(tamanho)


Sequncia de caracter de tamanho mximo de 255 caracteres de comprimento. tamanho = mximo do valor a ser inserido (255).

DATE
Data do calendrio no formato de AAAA-MM-DD

Tipos de Dados
DECIMAL[(tamanho[,decimal])] [UNSIGNED] [ZEROFILL]
Quando necessrio usar valores com ponto flutuante como se fossem uma sequncia de caracteres do tipo char. tamanho = mximo do valor a ser inserido (255) Decimal = n de casas decimais UNSIGNED = define que o valor usado vai ser positivo. ZEROFILL = preenche com zero se o campo for deixado em branco.

Tipos de Dados
DOUBLE[(tamanho,decimal)] [UNSIGNED] [ZEROFILL]
Quando necessrio usar valores de tamanho normal (dupla-preciso). Na faixa de valores de 1.7976931348623157E+308 e -2.2250738585072014E-308, 0 e entre 2.2250738585072014E-308 e 1.7976931348623157E+308.

tamanho = mximo do valor a ser inserido decimal = n de casas decimais UNSIGNED = define que o valor usado vai ser positivo. ZEROFILL = preenche com zero se o campo for deixado em branco.

Tipos de Dados
ENUM('valor1','valor2',...)
Usado como uma lista de valores do tipo string. O campo do tipo enum pode possuir no mximo 65535 valores diferentes.

FLOAT[(tamanho,Decimal)] [UNSIGNED] [ZEROFILL]


Usado com valores de ponto flutuante pequeno, preciso simples entre 3.402823466E+38 e -1.175494351E-38, 0 e entre1.175494351E-38 e 3.402823466E+38.

Tipos de Dados
FLOAT[(tamanho,Decimal)] [UNSIGNED] [ZEROFILL]
Usado com valores de ponto flutuante pequeno, preciso simples entre -3.402823466E+38 e 1.175494351E-38, 0 e entre1.175494351E-38 e 3.402823466E+38.

tamanho = mximo do valor a ser inserido decimal = n de casas decimais UNSIGNED = define que o valor usado vai ser positivo. ZEROFILL = preenche com zero se o campo for deixado em branco.

Tipos de Dados
INTEGER[(tamanho)] [UNSIGNED] [ZEROFILL]
Usado com valores inteiros longos na faixa de 2147483648 at 2147483647, a faixa sem sinal de 0 a 4294967295.
tamanho = mximo do valor a ser inserido (opcional). UNSIGNED = define que o valor usado vai ser positivo. ZEROFILL = preenche com zero se o campo for deixado em branco.

Tipos de Dados
SMALLINT[(tamanho)] [UNSIGNED] [ZEROFILL]
Usados quando necessrio inteiro curto na faixa de -32768 at 32767, a faixa sem sinal de 0 a 65535.3 tamanho = mximo do valor a ser inserido (opcional) UNSIGNED = define que o valor usado vai ser positivo. ZEROFILL = preenche com zero se o campo for deixado em branco.

Tipos de Dados
TIME
Usado quando necessidade de usar uma informao relacionada a horrio de relogio no intervalo de tempo de -838:59:59' e '838:59:59'. Os valores TIME so mostrados no formato 'HH:MM:SS', mas permite atribuir valores para as colunas usando strings ou nmeros.

Tipos de Dados
TINYINT[(tamanho)] [UNSIGNED] [ZEROFILL]
Usado quando precisar de inteiro muito pequeno. A faixa deste inteiro com sinal de -128 at 127, a faixa sem sinal de 0 at 255.

tamanho = mximo do valor a ser inserido (opcional). UNSIGNED = define que o valor usado vai ser positivo (255). ZEROFILL = preenche com zero se o campo for deixado em branco.

Tipos de Dados
VARCHAR(tamanho)
Usado quando necessita de uma string de tamanho varivel que esteja limitada a 255 caracteres de comprimento. Difere do tipo CHAR, pois despreza espaos em branco do lado direito da sequncia de caracteres. tamanho = mximo do valor a ser inserido da sequncia de caracteres.

Criando Tabelas
Campo CODFUN Tipo INTEGER Descrio Cdigo do funcionrio (no nulo)

NOME DEPTO
FUNCAO SALARIO CHAVE PRIMRIA

VARCHAR(40) CHAR(2)
CHAR(20) DECIMAL(10,2)

Nome do funcionrio(no nulo) Departamento onde est alocado o funcionrio


Funo do funcionrio Salrio do funcionrio

Ser o campo CodFun

CREATE TABLE cadfun( codfun INTEGER NOT NULL PRIMARY KEY, nome VARCHAR(40) NOT NULL, depto CHAR(2), funcao CHAR(20), salario DECIMAL(10,2) );

Chave Primria
conjuntos de um ou mais campos, cujos valores, considerando a combinao de valores de todos os campos da tupla, nunca se repetem e que podem ser usadas como um ndice para os demais campos da tabela do banco de dados. Em chaves primrias, no pode haver valores nulos nem repetio de tuplas.

AUTO_INCREMENT
O campo ser incrementado automaticamente quando inserido um novo registro.
CREATE TABLE cadfun2 ( codfun INT, AUTO_INCREMENT PRIMARY KEY, nome VARCHAR(40) NOT NULL, depto CHAR(2), funcao CHAR(20), salario DECIMAL(10,2) );

Visualizando Tabelas
SHOW TABLES;
Mostra as tabelas existentes no banco de dados.

Estrutura da Tabela
DESCRIBE <tabela>;
DESCRIBE = instruo SQL. <tabela> = nome da tabela a ser criada.

Estrutura da Tabela
DESCRIBE <tabela> [coluna];
DESCRIBE = instruo SQL. tabela = nome da tabela a ser criada. coluna = coluna desejada.

Insero de Registros
H duas forma de insero de dados em uma tabela, direta (INSERT INTO) e indireta (LOAD DATA).

INSERT INTO
INSERT INTO <tabela ( Campo1, Campo2, Campo3, CampoN )> VALUES<( Valor1, Valor2, Valor3, ValorN >);

INSERT INTO
Insert into usuarios values(1, 'Emlio Fenandes', '2010-09-01','3500.00'); insert into usuarios values(2, 'Francisco Gomes', '2009-07-11','4800.00'); insert into usuarios values(3, 'Daniel Estrada', '2010-09-01','3500.00'); insert into usuarios values(4, 'Clio Drummond', '2009-07-11','6145.00'); insert into usuarios values(5, 'Abelardo Barbosa','2010-09-01','2100.00'); insert into usuarios values(6, 'Bernardo Costa', '2011-05-05','5575.00');

INSERT INTO
INSERT INTO cadfun ( codfun, nome, depto, funcao, salario) VALUES( 12, Carlos Alberto, 3, Vendedor, 1530.00 ); INSERT INTO cadfun ( codfun, nome, depto, funcao, salario) VALUES( 13, Alberto, 5, Gerente, 2000.00 );

INSERT INTO - Simplificado


INSERT INTO cadfun VALUES( 17, Luiz, 6, Vendedor, 1700.00 ); INSERT INTO cadfun VALUES( 16, Pedro, 5, Vendedor, 2500.00 );

LOAD DATA
Cria-se um arquivo com texto puro e salvo com a extenso .txt, este arquivo e formado pelos dados a serem inseridos na mesma ordem dos campos da tabela. todos os dados da mesma linha tem que estar separados por uma marca de tabulao, tecla <TAB>.

LOAD DATA
4 25 3 10 CARLOS BASTOS PEDRO SILVA ANA BASTOS PAULO DA SILVA 5 SUPERVISOR 3 VENDEDOR 5 VENDEDORA 2 VENDEDOR 2500.00 1530.00 1530.00 1530.00

LOAD DATA
O arquivo dados.txt deve ser guardado na pasta bin.
C:\Program Files\MySQL\MySQL Server 5.6\bin

No prompt digite:
LOAD DATA LOCAL INFILE dados.txt INTO TABLE cadfun;
Caso seja necessrio um campo ser preenchido sem um valor, se deve indicar com \N para retornar como resultado o valor NULL(nulo).

Consultas de Registros
SELECT utilizado para retornar registros selecionados de uma ou mais tabelas.
SELECT [tipo] <campos> FROM <tabelas> [condio] SELECT = instruo SQL. [tipo] = tipo de registro a ser selecionado (opcional) podendo ser DISTINCT(registros distintos) OU ALL(todos os registros). <campos> = lista de campos a serem selecionados, pode se utilizar o valor * para representar todos os campos da tabela.

Consultas de Registros
SELECT [tipo] <campos> FROM <tabelas> [condio]
FROM = instruo SQL. <tabela> = nome da(s) tabelas que se obter o registro. [condio] = determina a condio da pesquisa (opcional), sendo aceitos valores :
WHERE: determina ao de trabalho de uma condio baseada em uma ao lgica. GROUP BY: indica o agrupamento de informaes baseados em valores comuns a partir de uma coluna informada, podendo ser ASC ascendente e DESC descendente. ORDER BY: define a forma de ordenao dos registros, podendo ser ASC ascendente e DESC descendente.

Consultas de Registros
SELECT * FROM cadfun;

Consultas de Registros
SELECT NOME, FUNCAO FROM cadfun;

Consultas de Registros
SELECT NOME FROM cadfun WHERE DEPTO = 3;

Consultas de Registros
SELECT NOME, SALARIO FROM cadfun ORDER BY NOME;

Consultas de Registros
SELECT NOME, SALARIO FROM cadfun ORDER BY NOME DESC;

Consultas de Registros
SELECT DEPTO, NOME FROM cadfun ORDER BY DEPTO, NOME DESC;

Departamento e nome ordenados por DEPTO em formato ascendente e campo NOME em formato descendente.

Consultas de Registros
SELECT NOME FROM cadfun WHERE DEPTO = 3 ORDER BY NOME;

Nomes ordenados em formato ascendente do departamento 3;

Consultas de Registros
SELECT AVG(salario) AS 'Mdia Salarial' FROM cadfun;

Funo AVG retorna a mdia aritmtica de um campo numrico.

Consultas de Registros
SELECT COUNT(*) AS 'Quantidade' FROM cadfun GROUP BY FUNCAO HAVING FUNCAO = VENDEDOR;
Esta funo retorna a quantidade de registros que combinam com um determinado critrio de seleo.

Consultas de Registros
SELECT MAX(salario) AS Maior Salario' FROM cadfun;
Esta funo retorna o maior valor de um determinado campo selecionado.

SELECT MAX(nome) AS Maior Salario' FROM cadfun;

Consultas de Registros
SELECT MIN(salario) AS Menor Salario' FROM cadfun;
Esta funo retorna o menor valor de um determinado campo selecionado.

Consultas de Registros
SELECT SUM(salario) AS Soma do Salario' FROM cadfun;
Esta funo retorna a soma total de um campo numrico.