Banco de Dados Principais Comandos SQL Usados no MySql O que é um SGBD? •Um Sistema Gerenciador de Banco de Dados (como no Brasil) ou Sistema Gestor de Base de Dados (SGBD) é o conjunto de programas de computador (softwares) responsáveis pelo gerenciamento de uma base de dados. O principal objetivo é retirar da aplicação cliente a responsabilidade de gerenciar o acesso, manipulação e organização dos dados. O SGBD disponibiliza uma interface para que os seus clientes possam incluir, alterar ou consultar dados. O que é o Mysql? É um servidor de bancos de dados SQL (Structured Query Language - Linguagem Estruturada para Pesquisas) muito rápido, multitarefa e multi-usuário. O MySQL foi desenvolvido pela TCX em 1996. Atualmente a MySQL AB(companhia dos fundadores e principais desenvolvedores) desenvolve o programa. Eles criaram-no porque precisavam de um banco de dados relacional que pudesse tratar grandes quantidades de dados em máquinas de custo relativamente barato. O MYSQL é um dos bancos de dados relacionais mais rápidos do mercado, apresenta quase todas as funcionalidades dos grandes bancos de dados . É executado principalmente nos sistemas que utilizam a tecnologia UNIX, embora também funcione com outros S.O.’s, o Windows por exemplo. Suas principais características: Professor Victor Sotero Banco de Dados ● Multi-plataforma ● Utiliza padrão ANSI/ISO SQL ● Open Source (GPL ou Comercial License) ● Rápido, confiável, e fácil de usar ● Suporte a operadores e funções ● Trabalha com bancos de dados enormes(mais de 60.000 tabelas e 5 milhões de registros) ● Até 32 índices por tabela (composto de 1 a16 colunas) ● Mensagens em vários idiomas ● Escolha de codificação para gravar dados ● API's em várias linguagens (p.e. C, C++, Eiffel, Java, Perl, PHP, Python, Ruby e Tcl) O mySql é gratuito? O MySQL é regido pela licença GPL, portanto é open source. Muitas pessoas confundem "free" com "grátis" o que é comum aqui no Brasil. Mas em se tratando de software este "free" é de open source e não gratuito. Para poder utilizar o MySQL sob a licença GPL e não precisar pagar, o produto desenvolvido precisa ser GPL também. Introdução Iniciando com o Mysql •Um comando normalmente consiste de uma instrução SQL Professor Victor Sotero Banco de Dados seguida por um ponto e vírgula(;). •Um comando não necessita estar todo em uma única linha, então comandos extensos que necessitam de várias linhas não são um problema. •O mysql determina onde sua instrução termina através do ponto e vírgula terminador, e não pelo final da linha de entrada. Comandos SQL • Mostrar todos os bancos de dados já criados dentro do MySQL. Show databases; • Abrindo(conectando a um banco de dados Use [nome do banco de dado]; Ex.: use escola; • Criando um banco de dados. Create database [nome do banco]; Ex.: create database faculdade; • Apagando um banco de dados. Drop database [nome do banco]; ex: drop database farmacia; • Apagando tabelas; drop table [nome da tabela]; ex: drop table produtos; • Mostrando as tabelas já existentes dentro do banco selecionado. Show tables; • Mostrando as colunas(atributos) de uma tabela. Show columns in [nome da tabela]; ou desc [nome da Professor Victor Sotero Banco de Dados tabela]; Ex.: show columns in aluno; ou desc aluno; • Criando tabelas. create table nome_da_tabela ( campo1 tipo_do_campo, campo2 tipo_do_campo ); Ex.: create table empregado( codigo int not null, nome varchar(45) not null, data_nasc date not null, cpf int not null); Observem que utilizamos um comando not null. Esse comando serve para especificar que não podemos aceitar valores nulos dentro daquele campo. Cada coluna(atributo) a ser criado, deve ser separado por um vírgula na hora de sua criação. Observem também os tipos de dados referentes a cada coluna específica, podemos limitar o tamanho de uma varchar, no nosso exemplo limitamos ao tamanho de 45 caracteres. • Nós também podemos criar tabelas com chave primária, aliás essa é uma ideia crucial na criação de um banco de dados correto. Professor Victor Sotero Banco de Dados Observe que agora foi utilizado uma cláusula AUTO_INCREMENT, isso se faz necessário quando utilizado em um campo que seja chave primária, pois assim garante que esse campo, seja incrementado automaticamente. • Criando tabelas com chave estrangeiras. Obs.: para criar uma chave estrangeira, é preciso que a mesma já tenha sido criada na sua tabela original como chave primária. • Inserindo valores. Levando em consideração que foi criado uma tabela disciplina, e que a mesma contém os seguintes atributos: codigo, nome e carga_horaria. Professor Victor Sotero Banco de Dados Insert into disciplina values(10,'Banco de Dados',120); outro exemplo insert into disciplina(nome,carga_horaria) values('Programacao',120); Observem que nesse segundo exemplo, eu selecionei os campos no qual eu gostaria de inserir os valores. Não selecionei o campo código, pois o mesmo será incrementado automaticamente. • Nós podemos também utilizar comandos para consultar dados dentro de uma tabela, isso é feito através do comando select. • Selecione tudo da tabela cliente. Select * from cliente; O asterisco representa dos os campos da tabela cliente. • Podemos também selecionar campos específicos de uma tabela. Ex: Mostrar somente o nome e a carga horária da tabela disciplina. Select nome,carga_horaria from cliente; • Você também pode utilizar operadores: =, <, >, <=, >= e !=. Ex: Mostrar o nome das disciplinas que tenham carga horária igual a 80. select nome from disciplinas where carga_horaria=80; A cláusula where significa ONDE. Outros exemplos: Professor Victor Sotero Banco de Dados Mostrar o nome e codigo dos clientes que tenham codigo maior ou igual a 100. select codigo,nome from clientes where codigo>=100; Mostrar os nomes dos empregados que ganham menos de 1000. select nome from empregados where salario<1000; Além dos operadores de comparação, nós também podemos utilizar os operadores lógicos, que são: and e or. Exemplo: Mostrar o código e nome das disciplinas que tenham codigo maior que 20 e também tenha carga horária igual a 120. select codigo,nome from disciplinas where codigo>20 and carga_horaria=120; Mostrar os nomes e codigos dos clientes que tenham nome igual a Carla ou codigo menor que 30. select codigo,nome from clientes where (nome='Carla') or (codigo<30); Mostrar os codigos, nomes e duração dos filmes que tenham duração menor que 90 minutos e também tenham o gênero comédia. Select codigo,nome,duracao from filmes where duracao<90 and genero='Comedia'; • Mostrando o resultado em ordem alfabética. Professor Victor Sotero Banco de Dados Exemplo: mostre os nomes dos alunos que não tenham cpf em ordem alfabética. Select nome from aluno where cpf=null order by nome; • Nós também podemos utilizar operadores aritméticos: +, -, / e *. Exemplo: Mostrar os nomes dos vendedores juntamente com seus salários multiplicados por 2. select nome, salario=(salario*2) from vendedor; • Muitas vezes se faz necessário mostrar o maior ou menor valor dentro de uma coluna, para isso nós utilizamos o MAX(maior) e o MIN(menor). Exemplo: mostre o maior e menor salário dos vendedores. Select max(salario),min(salario) from vendedor; • Mostrar o somatório de uma coluna(SUM). Exemplo: Selecione a quantidade total pedida para o produto 'LEITE', cujo código é igual a 78 na tabela pedido. Select sum(quantidade) from item_pedido • Algumas vezes poderemos mostrar a média dentro de alguma tabela, usamos então a função AVG. Exemplo: Qual a média dos salários dos funcionários? Select avg(salario) from funcionarios; Exemplo2: Qual a média das vendas do produto Professor Victor Sotero Banco de Dados 'REFRIGERANTE' de código 200? select avg(valor) from vendas where codigo=200; • Podemos mostrar também a quantidade de vezes que determinada coisa acontece dentro de uma tabela. Exemplo: Mostrar a quantidade de alunos que tem matricula maior que 200. select count(*) from aluno where matricula>200; Exemplo2: Mostrar a quantidade de alunos que não têm CPF. Select count(*) from aluno where cpf=null; • Nós também podemos fazer um select que não mostre valores repetitivos dentro de uma tabela. Exemplo: Mostrar todos os clientes sem repetição de nomes. Select distinct nome from clientes; Por enquanto até a prova, só será necessário utilizar esses comandos. Professor Victor Sotero