Sei sulla pagina 1di 20

.: Aprendendo Banco de Dados :.

: sql


.: Aprendendo Banco de Dados :.

TPICOS PRINCIPAIS
Mostrando postagens com marcador sql. Mostrar todas as postagens
.: Instalao do MySQL 5.5 :.
.: Instalao do MySQL Workbench QUARTA-FEIRA, 14 DE AGOSTO DE 2013
5.2 :.
.: Ementa e Plano de Ensino - Ano
2015 :.
.: Conceitos Bsicos :.
Linguagem SQL
.: Modelo Entidade-Relacionamento :.
SQL - Structured Query Language (Linguagem de Consulta Estruturada) a linguagem
declarativa para banco de dados relacional. Muitas das caractersticas originais do SQL foram
inspiradas na lgebra relacional proposta por Edgar F. Codd em 1970.
QUEM SOU EU

Prof. Claudio DML - Data Manipulation Language(Linguagem de Manipulao de Dados) um subconjunto
Hirose da linguagem SQL que utilizado para realizar incluses, atualizaes/alteraes, excluses e
Visualizar meu perfil completo consultas de registros de dados armazenados em tabelas. Essas tarefas podem ser realizadas
sobrevrios registros de diversas tabelas ao mesmo tempo. Os comandos que realizam
respectivamente asoperaes acimacitadas so INSERT, UPDATE, DELETE e SELECT.

ARQUIVO DO BLOG

2011
(13) Exemplos:

2012
(7) -- Inserir o aluno 'Jos da Silva' com RA '2013001'

2013
(5) INSERT INTO alunos(ra, nome) VALUES ('2013001', 'Jos da Silva');

2015
(4)

Maro
(1) -- Alterar o nome do aluno com RA '2013123' com o nome 'Maria Aparecida da Silva'
UPDATE alunos SET nome='Maria Aparecida da Silva' WHERE ra='2013123';

Setembro
(1)

Outubro
(1) -- Remover o registro cujo aluno tenha RA igual a '2013171'

Novembro
(1) DELETE FROM alunos WHERE ra='2013171';
Artigos sobre Normalizao

DDL - Data Definition Language (Linguagem de Definio de Dados) um subconjunto da


linguagem SQL que permite criar, modificar e removerobjetos (databases, tabelas,
MARCADORES usurios)dentro dobanco de dados relacional. A maioria dos bancos de dados de SQL
alter
(1) comerciais tem extenses proprietrias no DDL.

create
(2)
Os comandos que realizam as operaes acima citadas so respectivamente: CREATE, ALTER e
dcl
(1) DROP.
ddl
(9)
Exemplos:
dml
(4)
drop
(2) -- Criar uma tabela aluno
ementa
(1) CREATE TABLE aluno (
histrico
(1) ra INTEGER UNSIGNED NOT NULL,
nome VARCHAR(100) NOT NULL,
instalao
(2)
CONSTRAINT pk_aluno PRIMARY KEY(aluno)
mer
(3)
);
mr
(1)
mysql
(12) -- Adicionando um campo na tabela aluno
mysql workbench
(1) ALTER TABLE aluno ADD sexo CHAR(1) NOT NULL;
objetivo
(1)
plano de ensino
(1) -- Removendo a tabela aluno
sgbd
(1) DROP TABLE aluno;
sql
(11)
windows
(2)
DCL - Data Control Language (Linguagem de Controle de Dados) umsubconjunto da
linguagem SQL que permite controlar as permisses de acesso, de execuoe de manipulao de
SEGUIDORES dados dentro do banco de dados. O comando GRANT concede permisses, e o comando REVOKE
remove/restringe o acessos operaes DML e DDL.
Exemplos:
GOOGLE+ FOLLOWERS
-- Criar o usurio 'jsilva' com acesso somente local - este comando DDL!!!!
CREATE USER 'jsilva'@'localhost' IDENTIFIED BY 'senhasecreta';

-- Conceder permisso de consulta no database 'sisdb' para o usurio 'jsilva'


GRANT SELECT ON sisdb.* TO 'jsilva'@'localhost';

-- Revogar a permisso de consulta no database 'sisdb' para o usurio 'jsilva'


REVOKE SELECT ON sisdb.* FROM 'jsilva'@'localhost';

http://aprendendo-bd.blogspot.pt/search/label/sql[07/08/2017 17:14:11]
.: Aprendendo Banco de Dados :.: sql


Comandos DDL para MySQL
DDL :: Create Database
DDL :: Drop Database
DDL :: Create Table
DDL :: Alter Table
DDL :: Drop Table


Postado por
Prof. Claudio Hirose
s
18:27
0
comentrios


Marcadores:
dcl,
ddl,
dml,
mysql,
sql

SEGUNDA-FEIRA, 19 DE SETEMBRO DE 2011

Funes Agregadas

As funes agregadas executam um clculo em um conjunto de valores e retornam um nico
valor. Com exceo de COUNT, as funes agregadas ignoram valores nulos. As funes
agregadas normalmente so usadas com a clusula GROUP BY da instruo SELECT.

Tabela "Usurio"
id_usuario nome data_admissao salario
1 Emlio Fenandes 2010-09-01 3500.00
2 Francisco Gomes 2009-07-11 4800.00
3 Daniel Estrada 2010-09-01 3500.00
4 Clio Drummond 2009-07-11 6145.00
5 Abelardo Barbosa 2010-09-01 2100.00
6 Bernardo Costa 2011-05-05 5575.00

create table usuarios (


id_usuario integer not null,
nome varchar(50) not null,
data_admissao date not null,
salario decimal(10,2) not null,
primary key(id_usuario)
);

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');

Funo AVG

Esta funo retorna a mdia aritmtica de um campo numrico.

SELECT AVG(<campo>) FROM <tabela>


Exemplo:

SELECT AVG(salario) AS 'Mdia Salarial' FROM usuarios

Mdia Salarial
4220.00

Funo COUNT

Esta funo retorna a quantidade de registros que combinam com um determinado critrio de
seleo.

SELECT COUNT(<campo>) FROM <tabela>

http://aprendendo-bd.blogspot.pt/search/label/sql[07/08/2017 17:14:11]
.: Aprendendo Banco de Dados :.: sql


Exemplo:

SELECT COUNT(*) AS 'Quantidade' FROM usuarios

Quantidade
6

Funo MAX

Esta funo retorna o maior valor de um determinado campo selecionado.

SELECT MAX(<campo>) FROM <tabela>


Exemplo:

SELECT MAX(salario) AS 'Maior Salrio' FROM usuarios

Maior Salrio
6145.00

SELECT MAX(nome) AS 'ltimo Nome' FROM usuarios

ltimo Nome
Francisco Gomes

Funo MIN

Esta funo retorna o menor valor de um determinado campo selecionado.

SELECT MIN(<campo>) FROM <tabela>


Exemplo:

SELECT MIN(salario) AS 'Menor Salrio' FROM usuarios

Menor Salrio
2100.00

Funo SUM

Esta funo retorna a soma total de um campo numrico.

SELECT SUM(<campo>) FROM <tabela>


Exemplo:

SELECT SUM(salario) AS 'Total' FROM usuarios

total
25320.00

Clusula GROUP BY

A clusula GROUP BY utilizada para agrupar registros (agregar) com campos semelhantes.
Normalmente utilizada em conjunto com as funes de agregao.

SELECT <campo/valor agregado>


FROM <tabela>
WHERE <condio>
GROUP BY <campo a ser agregado>


Exemplo:


Mostrar a soma de salrios agrupados por data de admisso

SELECT data_admissao, SUM(salario) AS 'Total'


FROM usuarios

http://aprendendo-bd.blogspot.pt/search/label/sql[07/08/2017 17:14:11]
.: Aprendendo Banco de Dados :.: sql

GROUP BY data_admissao

data_admissao Total
2009-07-11 10945.00
2010-09-01 9100.00
2011-05-05 5575.00


Perceba que o resultado diferente de

SELECT data_admissao, SUM(salario) AS 'Total'


FROM usuarios

data_admissao Total
2010-09-01 25620.00

Clusula HAVING

A clusula HAVING utilizada em conjunto com a clusula GROUP BY. a expresso condicional
para campos e valores agregados, pois a clusula WHERE trabalha somente com valores no
agregados (simples).

SELECT <campo/valor agregado>


FROM <tabela>
WHERE <condio>
GROUP BY <campo a ser agregado>
HAVING <condio agregada>


Exemplos:


Mostrar a soma de salrios agrupados por data de admisso e cuja soma salarial seja maior que
10000.00:

SELECT data_admissao, SUM(salario) AS 'Total'


FROM usuarios
GROUP BY data_admissao
HAVING SUM(salario) > 10000

data_admissao Total
2009-07-11 10945.00


Mostrar a soma de salrios agrupados por data de admisso e cuja soma salarial seja maior que
100.00 e nome do funcionrio comeando pela letra 'F':

SELECT data_admissao, SUM(salario) AS 'Total'


FROM usuarios
WHERE nome like 'F%'
GROUP BY data_admissao
HAVING SUM(salario) > 100

data_admissao Total
2009-07-11 4800.00

Exerccios:
1) Faa uma consulta que mostre os anos de admisso e seus respectivos montantes de salrios.

2) Faa uma consulta que recupere os meses que possuem mais de 2 usurios admitidos.

Mostre os meses e suas respectivas quantidades de usurios.

3) Faa uma consulta que recupere a mdia salarial dos usurios que comeam com a letra "F".

4) Faa uma consulta que mostre todos os usurios com seus respectivos salrios que so
maiores que a mdia salarial.

5) Faa uma consulta que recupere o ms que possui a maior soma de salrios.

Mostre o ms e seu respectivo salrio acumulado.

http://aprendendo-bd.blogspot.pt/search/label/sql[07/08/2017 17:14:11]
.: Aprendendo Banco de Dados :.: sql

Dica: select * from usuario limit 1


-

Postado por
Prof. Claudio Hirose
s
16:06
14
comentrios


Marcadores:
dml,
mysql,
sql

SEGUNDA-FEIRA, 12 DE SETEMBRO DE 2011

2011 - 4 Semana - SQL com MySQL

Sistema de um Minimundo de Vendas

Lembrete: O tipo padro "timestamp" definido como "datetime" no MySQL.


Todos os campos so obrigatrios.

Exerccios:
1) Crie o script de criao das tabelas definidas no diagrama acima.
2) Popular as tabelas criadas:

-----------------
CATEGORIA
-----------------
100, CAMISETA
200, CALA JEANS
300, CAMISA POLO
400, CAMISA SOCIAL
500, JAQUETA

-----------------
PRODUTO
-----------------
1001, 100, CAMISETA COR BRANCA, 12-SET-2011, 12-SET-2011, 20.00
1002, 100, CAMISETA COR PRETA, 12-SET-2011, 12-SET-2011, 20.00
1003, 100, CAMISETA COR AZUL, 12-SET-2011, 12-SET-2011, 20.00
1004, 100, CAMISETA COR VERMELHA, 12-SET-2011, 12-SET-2011, 20.00
2001, 200, CALA JEANS PRETA, 12-SET-2011, 12-SET-2011, 70.00
2002, 200, CALA JEANS AZUL, 12-SET-2011, 12-SET-2011, 70.00
2003, 200, CALA JEANS LAVADA, 12-SET-2011, 12-SET-2011, 90.00
3001, 300, CAMISA POLO MANGA CURTA, 12-SET-2011, 12-SET-2011, 50.00
3002, 300, CAMISA POLO MANGA LONGA, 12-SET-2011, 12-SET-2011, 60.00
4001, 400, CAMISA SOCIAL TIPO A, 12-SET-2011, 12-SET-2011, 60.00
4002, 400, CAMISA SOCIAL TIPO B, 12-SET-2011, 12-SET-2011, 65.00
4003, 400, CAMISA SOCIAL TIPO C, 12-SET-2011, 12-SET-2011, 67.00
4004, 400, CAMISA SOCIAL TIPO D, 12-SET-2011, 12-SET-2011, 67.00
5001, 500, JAQUETA JEANS TIPO A, 12-SET-2011, 12-SET-2011, 150.00
5002, 500, JAQUETA JEANS TIPO B, 12-SET-2011, 12-SET-2011, 160.00
5003, 500, JAQUETA JEANS TIPO C, 12-SET-2011, 12-SET-2011, 165.00

http://aprendendo-bd.blogspot.pt/search/label/sql[07/08/2017 17:14:11]
.: Aprendendo Banco de Dados :.: sql

-----------------
CLIENTE
-----------------
100, JOS DA SILVA, NOW()
200, MARIA APARECIDA DA COSTA, NOW()
300, ANA LCIA PEREIRA, NOW()
400, PEDRO OLIVEIRA, NOW()

-----------------
VENDA
-----------------
1, NOW(), 100
2, NOW(), 300
3, NOW(), 300
4, NOW(), 400

-----------------
ITEM_VENDA
-----------------
1, 1001, 20.00, 3
1, 1002, 20.00, 1
2, 3001, 50.00, 2
2, 1002, 20.00, 2
3, 1001, 20.00, 5
3, 5001, 150.00, 1
4, 4001, 50.00, 2


Postado por
Prof. Claudio Hirose
s
17:45
0
comentrios


Marcadores:
ddl,
dml,
mysql,
sql

SEGUNDA-FEIRA, 29 DE AGOSTO DE 2011

2011 - 3 Semana - SQL com MySQL

CREATE DATABASE biblioteca;

USE biblioteca;

SET STORAGE_ENGINE=InnoDB;

SET NAMES 'utf8';

CREATE TABLE categoria (


id_categoria INTEGER NOT NULL,
categoria VARCHAR(100) NOT NULL,
PRIMARY KEY (id_categoria)
);

CREATE TABLE livro (


id_livro INTEGER NOT NULL,
titulo VARCHAR(200) NOT NULL,
id_categoria INTEGER NOT NULL,
PRIMARY KEY (id_livro),
CONSTRAINT categoria_livro_fk
FOREIGN KEY (id_categoria)

http://aprendendo-bd.blogspot.pt/search/label/sql[07/08/2017 17:14:11]
.: Aprendendo Banco de Dados :.: sql

REFERENCES categoria (id_categoria)


ON DELETE NO ACTION
ON UPDATE NO ACTION
);

CREATE TABLE aluno (


id_aluno INTEGER NOT NULL,
nome VARCHAR(100) NOT NULL,
PRIMARY KEY (id_aluno)
);

CREATE TABLE emprestimo (


id_emprestimo INTEGER AUTO_INCREMENT NOT NULL,
id_aluno INTEGER NOT NULL,
id_livro INTEGER NOT NULL,
data_emprestimo DATE NOT NULL,
data_devolucao DATE,
PRIMARY KEY (id_emprestimo),
CONSTRAINT emprestimo_uk
UNIQUE KEY( id_aluno, id_livro, data_emprestimo ),
CONSTRAINT livro_emprestimo_fk
FOREIGN KEY (id_livro)
REFERENCES livro (id_livro),
CONSTRAINT aluno_emprestimo_fk
FOREIGN KEY (id_aluno)
REFERENCES aluno (id_aluno)
);

INSERT INTO aluno VALUES (100, 'Zacarias da Mata');


INSERT INTO aluno VALUES (200, 'Yolanda Costa Matheus');
INSERT INTO aluno VALUES (300, 'Xisto Gonalves');
INSERT INTO aluno VALUES (400, 'William Henry Gates');
INSERT INTO aluno VALUES (500, 'Vilma Oliveira Dias');
INSERT INTO aluno VALUES (600, 'rsula Pereira');
INSERT INTO aluno VALUES (700, 'Teodoro Silva dos Santos');
INSERT INTO aluno VALUES (800, 'Salom Souza Lima');
INSERT INTO aluno VALUES (900, 'Ranulfo Jorge da Silva');

INSERT INTO categoria VALUES (10, 'Romance');


INSERT INTO categoria VALUES (20, 'Fico');
INSERT INTO categoria VALUES (30, 'Comdia');
INSERT INTO categoria VALUES (40, 'Infanto Juvenil');
INSERT INTO categoria VALUES (50, 'Drama');
INSERT INTO categoria VALUES (60, 'Policial');

INSERT INTO livro VALUES (1000, 'Um romance qualquer', 10);


INSERT INTO livro VALUES (1010, 'Um outro romance qualquer', 10);
INSERT INTO livro VALUES (1020, 'Uma fico baseada em fatos reais', 20);
INSERT INTO livro VALUES (1030, 'Eram os deuses astronautas?', 20);
INSERT INTO livro VALUES (1040, 'Cachinhos Dourados', 40);
INSERT INTO livro VALUES (1050, 'Chapeuzinho Vermelho', 40);
INSERT INTO livro VALUES (1060, 'Os trs porquinhos', 40);
INSERT INTO livro VALUES (1070, 'Se eu chorasse uma vez', 50);
INSERT INTO livro VALUES (1080, 'Um novo amor', 10);
INSERT INTO livro VALUES (1090, 'A dvida', 50);
INSERT INTO livro VALUES (1100, 'A morte do senhor vereador', 60);
INSERT INTO livro VALUES (1110, 'O mistrio dos 5 mentirosos', 60);
INSERT INTO livro VALUES (1120, 'O rob', 20);
INSERT INTO livro VALUES (1130, 'Poeiras em alto mar', 50);
INSERT INTO livro VALUES (1140, 'A volta dos que no foram', 50);
INSERT INTO livro VALUES (1150, 'O prncipe e o mendigo', 40);

INSERT INTO emprestimo (id_aluno, id_livro, data_emprestimo)


VALUES (100, 1000, '2010-08-13');
INSERT INTO emprestimo (id_aluno, id_livro, data_emprestimo)
VALUES (100, 1080, '2010-08-14');
INSERT INTO emprestimo (id_aluno, id_livro, data_emprestimo)
VALUES (200, 1110, '2010-08-15');
INSERT INTO emprestimo (id_aluno, id_livro, data_emprestimo)
VALUES (300, 1150, '2010-08-15');
INSERT INTO emprestimo (id_aluno, id_livro, data_emprestimo)
VALUES (500, 1120, '2010-08-16');
INSERT INTO emprestimo (id_aluno, id_livro, data_emprestimo)
VALUES (500, 1130, '2010-08-16');
INSERT INTO emprestimo (id_aluno, id_livro, data_emprestimo)
VALUES (600, 1010, '2010-08-16');

http://aprendendo-bd.blogspot.pt/search/label/sql[07/08/2017 17:14:11]
.: Aprendendo Banco de Dados :.: sql

INSERT INTO emprestimo (id_aluno, id_livro, data_emprestimo)


VALUES (700, 1020, '2010-08-16');
INSERT INTO emprestimo (id_aluno, id_livro, data_emprestimo)
VALUES (800, 1040, '2010-08-15');

/********************
* CONSULTAS
********************/
-- Mostrando todos os livros que possuem categoria
-- Clusula ON
SELECT
l.id_livro,
l.titulo,
c.id_categoria,
c.categoria
FROM livro l
INNER JOIN categoria c
ON l.id_categoria = c.id_categoria;

-- Mostrando todos os livros que possuem categoria


-- Clusula USING

-- A clusula USING pode ser usada quando a chave primria


-- igual a chave estrangeira
SELECT
l.id_livro,
l.titulo,
c.id_categoria,
c.categoria
FROM livro l
INNER JOIN categoria c
USING (id_categoria);

-- Mostrando os livros que possuem e que no possuem categoria


SELECT
l.id_livro,
l.titulo,
c.id_categoria,
c.categoria
FROM livro l
LEFT OUTER JOIN categoria c
USING (id_categoria);

-- Mostrando todas as categorias que possuem e que no possuem livros.


SELECT
l.id_livro,
l.titulo,
c.id_categoria,
c.categoria
FROM livro l
RIGHT OUTER JOIN categoria c
USING (id_categoria);

-- Mostrando todos os alunos que fizeram emprstimos


SELECT
a.id_aluno,
a.nome,
e.data_emprestimo,
e.data_devolucao
FROM aluno a
INNER JOIN emprestimo e
ON a.id_aluno = e.id_aluno;

-- Mostrando todos os alunos que fizeram e que no fizeram emprstimos.


SELECT
a.id_aluno,
a.nome,
e.data_emprestimo,
e.data_devolucao
FROM aluno a
LEFT OUTER JOIN emprestimo e
ON a.id_aluno = e.id_aluno;

-- Mostrando todos os emprstimos que possuem e que no possuem alunos


SELECT
a.id_aluno,
a.nome,
e.data_emprestimo,

http://aprendendo-bd.blogspot.pt/search/label/sql[07/08/2017 17:14:11]
.: Aprendendo Banco de Dados :.: sql

e.data_devolucao
FROM aluno a
RIGHT OUTER JOIN emprestimo e
ON a.id_aluno = e.id_aluno;


Reservado para um grfico.

-- Mostrando todos os livros que os alunos pegaram emprestados

SELECT
a.id_aluno,
a.nome,
l.id_livro,
l.titulo,
e.data_emprestimo,
e.data_devolucao
FROM aluno a
INNER JOIN emprestimo e
ON a.id_aluno = e.id_aluno
INNER JOIN livro l
ON e.id_livro = l.id_livro;

-- Mostrando todos os livros que os alunos pegaram emprestados.


-- Mostrar tambm as categorias de cada livro.

SELECT
a.id_aluno,
a.nome,
l.id_livro,
l.titulo,
c.id_categoria,
c.categoria,
e.data_emprestimo,
e.data_devolucao
FROM aluno a
INNER JOIN emprestimo e
ON a.id_aluno = e.id_aluno
INNER JOIN livro l
ON e.id_livro = l.id_livro
INNER JOIN categoria c
ON l.id_categoria = c.id_categoria;

-- Mostrando todos os livros que os alunos pegaram emprestados.


-- Mostrar tambm as categorias de cada livro.
-- Se o aluno no pegou um livro, mostrar tambm.

SELECT
a.id_aluno,
a.nome,
l.id_livro,
l.titulo,
c.id_categoria,
c.categoria,
e.data_emprestimo,
e.data_devolucao
FROM aluno a
LEFT JOIN emprestimo e
ON a.id_aluno = e.id_aluno
LEFT JOIN livro l
ON e.id_livro = l.id_livro
LEFT JOIN categoria c
ON l.id_categoria = c.id_categoria;


Postado por
Prof. Claudio Hirose
s
18:37
0
comentrios


Marcadores:
ddl,
dml,
mysql,
sql

SEGUNDA-FEIRA, 15 DE AGOSTO DE 2011

2011 - 2 Semana - SQL com MySQL


Tabela Dependente (Entidade Fraca)

http://aprendendo-bd.blogspot.pt/search/label/sql[07/08/2017 17:14:11]
.: Aprendendo Banco de Dados :.: sql

CREATE DATABASE aula02;

USE aula02;

CREATE TABLE socio (


id_socio INTEGER NOT NULL,
nome VARCHAR(100) NOT NULL,
data_cadastro DATE NOT NULL,
PRIMARY KEY (id_socio)
);

CREATE TABLE dependente (


id_socio INTEGER NOT NULL,
sequencia INTEGER NOT NULL,
nome VARCHAR(100) NOT NULL,
data_cadastro DATE NOT NULL,
PRIMARY KEY (id_socio, sequencia),
CONSTRAINT socio_dependente_fk
FOREIGN KEY (id_socio)
REFERENCES socio (id_socio)
ON DELETE NO ACTION
ON UPDATE NO ACTION
);

1.1) Inserindo dados na tabela "socio":

INSERT INTO socio VALUES (100, 'Ana Lcia Mathias', '2011-08-05');


INSERT INTO socio VALUES (200, 'Beatriz Costa', '2011-08-05');
INSERT INTO socio VALUES (300, 'Carlos Augusto Silva','2011-08-11');
INSERT INTO socio VALUES (400, 'Daniel Oliveira', '2011-08-12');
INSERT INTO socio VALUES (500, 'Everaldo D''vila', '2011-08-12');

1.2) Inserindo dados na tabela "dependente":

INSERT INTO dependente VALUES (100, 1, 'Pedro Lus Mathias', '2011-08-06');


INSERT INTO dependente VALUES (100, 2, 'Maria Isabel Mathias','2011-08-06');
INSERT INTO dependente VALUES (200, 1, 'Luis Pedro Costa', '2011-08-08');
INSERT INTO dependente VALUES (200, 2, 'Maria Jlia Costa', '2011-08-09');
INSERT INTO dependente VALUES (200, 3, 'Ana Alice Costa', '2011-08-10');
INSERT INTO dependente VALUES (400, 1, 'Manuela Oliveira', '2011-08-13');

1.3) Visualizando os dados da tabela "socio":

SELECT * FROM socio;

1.4) Visualizando os dados da tabela "dependente":

SELECT * FROM dependente;

1.5) Visualizando a estrutura da tabela "socio":

DESCRIBE socio;

1.6) Visualizando a estrutura da tabela "dependente":

DESCRIBE dependente;

1.7) Visualizando a estrutura de criao da tabela "socio":

SHOW CREATE TABLE socio;

1.8) Visualizando a estrutura de criao da tabela "dependente":

SHOW CREATE TABLE dependente;

http://aprendendo-bd.blogspot.pt/search/label/sql[07/08/2017 17:14:11]
.: Aprendendo Banco de Dados :.: sql

1.9)Visualizando cdigo e nome do scio e seus respectivos dependentes:

SELECT
s.id_socio as 'ID do Scio' ,
s.nome as 'Nome do Scio',
d.sequencia as 'Sequncia',
d.nome as 'Nome do Dependente'
FROM
socio s
INNER JOIN dependente d
ON s.id_socio=d.id_socio
ORDER BY
s.id_socio, d.sequencia;


OU

SELECT
s.id_socio as 'ID do Scio' ,
s.nome as 'Nome do Scio',
d.sequencia as 'Sequencia',
d.nome as 'Nome do Dependente'
FROM
socio s,
dependente d
WHERE
s.id_socio=d.id_socio
ORDER BY
s.id_socio, d.sequencia;

1.10) Visualizando cdigo e nome do scio e seus respectivos dependentes. Caso no haja
dependente, mostrar o scio tambm.

SELECT
s.id_socio as 'ID do Scio' ,
s.nome as 'Nome do Scio',
d.sequencia as 'Sequencia',
d.nome as 'Nome do Dependente'
FROM
socio s
LEFT JOIN dependente d
ON s.id_socio=d.id_socio
ORDER BY
s.id_socio, d.sequencia;

1.11) O que acontece se tentarmos fazer o RIGHT JOIN?.

http://aprendendo-bd.blogspot.pt/search/label/sql[07/08/2017 17:14:11]
.: Aprendendo Banco de Dados :.: sql

SELECT
s.id_socio as 'ID do Scio' ,
s.nome as 'Nome do Scio',
d.sequencia as 'Sequencia',
d.nome as 'Nome do Dependente'
FROM
socio s
RIGHT JOIN dependente d
ON s.id_socio=d.id_socio
ORDER BY
s.id_socio, d.sequencia;

Auto-relacionamento

USE aula02;

CREATE TABLE funcionario (


cod_funcionario INTEGER NOT NULL,
nome VARCHAR(100) NOT NULL,
data_cadastro DATE,
cod_chefe INTEGER,
PRIMARY KEY (cod_funcionario),
FOREIGN KEY (cod_chefe)
REFERENCES funcionario (cod_funcionario)
ON DELETE NO ACTION
ON UPDATE NO ACTION
);

2.1) Inserindo dados na tabela "funcionario":

INSERT INTO funcionario VALUES (100, 'Paulo Luiz da Silva', '2011-08-10', NULL);
INSERT INTO funcionario VALUES (200, 'Maria Cndida da Costa', '2011-08-12', 100);
INSERT INTO funcionario VALUES (300, 'Otvio Silveira', '2011-08-12', 100);
INSERT INTO funcionario VALUES (400, 'Jlio Matias Dantas', '2011-08-13', NULL);
INSERT INTO funcionario VALUES (500, 'Mara Medeiros', '2011-08-14', 200);

2.2) Visualizando os dados da tabela "funcionario":

SELECT * FROM funcionario;

2.3) Visualizando cdigo e nome do funcionrio e seu respectivo chefe:

SELECT
f.cod_funcionario as 'Cdigo do Funcionrio' ,
f.nome as 'Nome do Funcionrio',
c.cod_funcionario as 'Cdigo do Chefe',
c.nome as 'Nome do Chefe'
FROM
funcionario f
INNER JOIN funcionario c
ON f.cod_chefe=c.cod_funcionario;

2.4) Visualizando cdigo e nome do chefe e seus respectivos subordinados:

SELECT
c.cod_funcionario as 'Cdigo do Chefe',
c.nome as 'Nome do Chefe',
f.cod_funcionario as 'Cdigo do Funcionrio' ,

http://aprendendo-bd.blogspot.pt/search/label/sql[07/08/2017 17:14:11]
.: Aprendendo Banco de Dados :.: sql

f.nome as 'Nome do Funcionrio'


FROM
funcionario f
INNER JOIN funcionario c
ON f.cod_chefe=c.cod_funcionario
ORDER BY
c.cod_funcionario;

2.5) Qual a diferena entre os itens 3 e 4?

2.6) Visualizando cdigo e nome do funcionrio e seu respectivo chefe. Caso no haja chefe,
mostr-lo tambm.

SELECT
f.cod_funcionario as 'Cdigo do Funcionrio' ,
f.nome as 'Nome do Funcionrio',
c.cod_funcionario as 'Cdigo do Chefe',
c.nome as 'Nome do Chefe'
FROM
funcionario f
LEFT JOIN funcionario c
ON f.cod_chefe=c.cod_funcionario
ORDER BY
f.cod_funcionario;

Chave Primria Composta

USE aula02;

CREATE TABLE contacorrente (


cod_agencia NUMERIC(5) NOT NULL,
cod_conta NUMERIC(8) NOT NULL,
data_cadastro DATE NOT NULL,
nome_cliente VARCHAR(100) NOT NULL,
PRIMARY KEY (cod_agencia, cod_conta)
);

CREATE TABLE emprestimo (


cod_emprestimo INT NOT NULL,
cod_agencia NUMERIC(5) NOT NULL,
cod_conta NUMERIC(8) NOT NULL,
data_cadastro DATE NOT NULL,
valor_emprestimo NUMERIC(10,2) NOT NULL,
PRIMARY KEY (cod_emprestimo),
FOREIGN KEY (cod_agencia, cod_conta)
REFERENCES contacorrente (cod_agencia, cod_conta)
ON DELETE NO ACTION
ON UPDATE NO ACTION
);


Postado por
Prof. Claudio Hirose
s
18:43
0
comentrios


Marcadores:
ddl,
mysql,
sql

DOMINGO, 14 DE AGOSTO DE 2011

2011 - 1 Semana - SQL com MySQL

http://aprendendo-bd.blogspot.pt/search/label/sql[07/08/2017 17:14:11]
.: Aprendendo Banco de Dados :.: sql

1) Visualizar os databases existentes:

SHOW DATABASES;

2) Criar um database chamado "sistema":

CREATE DATABASE sistema;

3) Visualizar novamente os databases existentes e definir como padro o database "sistema":

SHOW DATABASES;
USE sistema;

4) Definir o mecanismo padro como InnoDB (transacional). Este comando funciona somente no
MySQL.

SET STORAGE_ENGINE=InnoDB;

5) Criar a tabela "departamento", conforme especificado no diagrama:

CREATE TABLE departamento (


id_departamento INTEGER NOT NULL,
nome VARCHAR(100) NOT NULL,
telefone CHAR(15),
PRIMARY KEY (id_departamento)
);

6)Visualizar a estrutura da tabela "departamento":

DESCRIBE departamento;

7)Criar a tabela "funcionario", conforme especificado no diagrama (observe a chave estrangeira


- Foreign Key):

CREATE TABLE funcionario (


id_funcionario INTEGER NOT NULL,
nome VARCHAR(100) NOT NULL,
id_departamento INTEGER NOT NULL,
data_cadastro DATE,
PRIMARY KEY (id_funcionario)
);

ALTER TABLE funcionario ADD


CONSTRAINT departamento_funcionario_fk
FOREIGN KEY (id_departamento)
REFERENCES departamento (id_departamento)
ON DELETE NO ACTION
ON UPDATE NO ACTION;

DESCRIBE funcionario;

8) Inserindo registros na tabela "departamento" (sem especificao dos campos):

INSERT INTO departamento VALUES (100, 'Departamento de Tecnologia', '3333-3333');


INSERT INTO departamento VALUES (200, 'Departamento de Recursos Humanos', NULL);

9) Inserindo registro na tabela "departamento" (com especificao dos campos):

INSERT INTO departamento (id_departamento, nome)


VALUES (300, 'Departamento de Vendas');
INSERT INTO departamento (id_departamento, nome, telefone)
VALUES (400, 'Departamento de Marketing', '4444-4444');

10) Recupera (mostra) todos os dados da tabela "departamento":

http://aprendendo-bd.blogspot.pt/search/label/sql[07/08/2017 17:14:11]
.: Aprendendo Banco de Dados :.: sql

SELECT * FROM departamento;

11) Recupera todos os campos e todos os atributos da tabela "departamento" em ordem


alfabtica de nome:

SELECT * FROM departamento ORDER BY nome;

12) Recupera os dados da tabela "departamento" em ordem decrescente de nome:

SELECT * FROM departamento ORDER BY nome DESC;

13) Recuperar os dados dos departamentos para os quais no foram atribudos telefones.

SELECT * FROM departamento WHERE telefone IS NULL;

14) Recuperar os dados dos departamentos que tenham telefones.

SELECT * FROM departamento WHERE telefone IS NOT NULL;

15) Recuperar os dados dos departamentos cujo cdigo seja igual a 300. Perceba que
"id_departamento" a chave primria.

SELECT * FROM departamento WHERE id_departamento = 300;

16)Recuperar os dados dos departamentos cujo nome comea com a letra "D":

SELECT * FROM departamento WHERE nome LIKE 'D%';

17) Recuperar os dados dos departamentos cujo nome termina com a palavra "Vendas":

SELECT * FROM departamento WHERE nome LIKE '%Vendas';

18) Recuperar os dados dos departamentos cujo nome contenha a palavra "de":

SELECT * FROM departamento WHERE nome LIKE '%de%';

19) Recuperar os dados dos departamentos cujo nome NO contenha a palavra "de":

SELECT * FROM departamento WHERE nome NOT LIKE '%de%';

20) Atualizar o telefone do departamento cujo cdigo identificador seja igual a 300:

UPDATE departamento SET telefone='7777-7777' WHERE id_departamento=300;

21) Apagar departamento cujo cdigo seja igual a 400:

DELETE FROM departamento WHERE id_departamento = 400;


Postado por
Prof. Claudio Hirose
s
23:03
0
comentrios


Marcadores:
mysql,
sql

SEGUNDA-FEIRA, 1 DE AGOSTO DE 2011

DDL :: Drop Table



Em MySQL 5.5, a sintaxe bsica para remover uma tabela :

DROP TABLE [IF EXISTS] nome_da_tabela [, nome_da_tabela,...] [RESTRICT | CASCADE]

Referncias
Portugus (MySQL 4.1): http://dev.mysql.com/doc/refman/4.1/pt/drop-table.html
Ingls (MySQL 5.5): http://dev.mysql.com/doc/refman/5.5/en/drop-table.html


Postado por
Prof. Claudio Hirose
s
16:57
0
comentrios


Marcadores:
ddl,
drop,
mysql,
sql

http://aprendendo-bd.blogspot.pt/search/label/sql[07/08/2017 17:14:11]
.: Aprendendo Banco de Dados :.: sql

DDL :: Alter Table



Em MySQL 5.5, a sintaxe bsica para alterar uma tabela :

ALTER [IGNORE] TABLE nome_tabela


especificao_alterao [, especificao_alterao ...]

especificao_alterao:
ADD [COLUMN] definio_da_coluna [FIRST | AFTER nome_da_coluna ]
| ADD [COLUMN] (definio_da_coluna, definio_da_coluna,...)
| ADD INDEX [nome_ndice] (nome_coluna_ndice,...)
| ADD [CONSTRAINT [nome_restrio]] PRIMARY KEY (nome_coluna_ndice,...)
| ADD [CONSTRAINT [nome_restrio]] UNIQUE [nome_ndice] (nome_coluna_ndice,...)
| ADD FULLTEXT [nome_ndice] (nome_coluna_ndice,...)
| ADD [CONSTRAINT [nome_restrio]] FOREIGN KEY [nome_ndice]
(nome_coluna_ndice,...) [definio_referncia]
| ALTER [COLUMN] nome_da_coluna {SET DEFAULT literal | DROP DEFAULT}
| CHANGE [COLUMN] nome_da_coluna_antiga definio_da_coluna
[FIRST | AFTER nome_da_coluna]
| MODIFY [COLUMN] definio_da_coluna [FIRST | AFTER nome_da_coluna]
| DROP [COLUMN] nome_da_coluna
| DROP PRIMARY KEY
| DROP INDEX nome_ndice
| DISABLE KEYS
| ENABLE KEYS
| RENAME [TO] nome_da_nova_tabela
| ORDER BY nome_coluna
| opes_da_tabela

definio_da_coluna:
nome_da_coluna definio_da_coluna
| [CONSTRAINT [nome_restrio]] PRIMARY KEY (nome_coluna_ndice,...)
| {INDEX|KEY} [nome_ndice] (nome_coluna_ndice,...)
| [CONSTRAINT [nome_restrio]] UNIQUE [INDEX|KEY]
[nome_ndice] (nome_coluna_ndice,...)
| [CONSTRAINT [nome_restrio]] FOREIGN KEY
[nome_ndice] (nome_coluna_ndice,...) definio_referncia
| CHECK (expresso)

definio_do_tipo_da_coluna:
tipo_de_dados [NOT NULL | NULL] [DEFAULT valor_padro]
[AUTO_INCREMENT] [UNIQUE [KEY] | [PRIMARY] KEY]
[COMMENT 'string']
[COLUMN_FORMAT {FIXED|DYNAMIC|DEFAULT}]
[definio_referncia]

tipo_de_dados:
BIT[(tamanho)]
| TINYINT[(tamanho)]
| SMALLINT[(tamanho)]
| MEDIUMINT[(tamanho)]
| INT[(tamanho)]
| INTEGER[(tamanho)]
| BIGINT[(tamanho)]
| REAL[(tamanho,decimais)]
| DOUBLE[(tamanho,decimais)]
| FLOAT[(tamanho,decimais)]
| DECIMAL[(tamanho[,decimais])]
| NUMERIC[(tamanho[,decimais])]
| DATE
| TIME
| TIMESTAMP
| DATETIME
| YEAR
| CHAR[(tamanho)]
| VARCHAR(tamanho)
| BINARY[(tamanho)]
| VARBINARY(tamanho)
| TINYBLOB
| BLOB
| MEDIUMBLOB
| LONGBLOB
| TINYTEXT [BINARY]
| TEXT [BINARY]

http://aprendendo-bd.blogspot.pt/search/label/sql[07/08/2017 17:14:11]
.: Aprendendo Banco de Dados :.: sql

| MEDIUMTEXT [BINARY]
| LONGTEXT [BINARY]
| ENUM(valor1,valor2,valor3,...)
| SET(valor1,valor2,valor3,...)

nome_coluna_ndice:
nome_coluna [(tamanho)] [ASC | DESC]

definio_referncia:
REFERENCES nome_tabela (nome_coluna_ndice,...)
[MATCH FULL | MATCH PARTIAL | MATCH SIMPLE]
[ON DELETE opo_referncia]
[ON UPDATE opo_referncia]

opo_referncia:
RESTRICT | CASCADE | SET NULL | NO ACTION

opes_da_tabela:
opo_tabela [[,] opo_tabela] ...

opo_tabela:
ENGINE [=] nome_mecanismo
| COMMENT [=] 'string'

nome_mecanismo:
MyISAM
| InnoDB

Referncias
Portugus (MySQL 4.1): http://dev.mysql.com/doc/refman/4.1/pt/alter-table.html
Ingls (MySQL 5.5): http://dev.mysql.com/doc/refman/5.5/en/alter-table.html


Postado por
Prof. Claudio Hirose
s
16:56
0
comentrios


Marcadores:
alter,
ddl,
mysql,
sql

DDL :: Create Table



Em MySQL 5.5, a sintaxe bsica para criar uma tabela :

CREATE TABLE [IF NOT EXISTS] nome_tabela


(
definio_da_coluna,
...
)
[opes_da_tabela]

definio_da_coluna:
nome_da_coluna definio_do_tipo_da_coluna
| [CONSTRAINT [nome_restrio]] PRIMARY KEY (nome_coluna_ndice,...)
| {INDEX|KEY} [nome_ndice] (nome_coluna_ndice,...)
| [CONSTRAINT [nome_restrio]] UNIQUE [INDEX|KEY]
[nome_ndice] (nome_coluna_ndice,...)
| [CONSTRAINT [nome_restrio]] FOREIGN KEY
[nome_ndice] (nome_coluna_ndice,...) definio_referncia
| CHECK (expresso)

definio_do_tipo_da_coluna:
tipo_de_dados [NOT NULL | NULL] [DEFAULT valor_padro]
[AUTO_INCREMENT] [UNIQUE [KEY] | [PRIMARY] KEY]
[COMMENT 'string']
[COLUMN_FORMAT {FIXED|DYNAMIC|DEFAULT}]
[definio_referncia]

tipo_de_dados:
BIT[(tamanho)]

http://aprendendo-bd.blogspot.pt/search/label/sql[07/08/2017 17:14:11]
.: Aprendendo Banco de Dados :.: sql

| TINYINT[(tamanho)]
| SMALLINT[(tamanho)]
| MEDIUMINT[(tamanho)]
| INT[(tamanho)]
| INTEGER[(tamanho)]
| BIGINT[(tamanho)]
| REAL[(tamanho,decimais)]
| DOUBLE[(tamanho,decimais)]
| FLOAT[(tamanho,decimais)]
| DECIMAL[(tamanho[,decimais])]
| NUMERIC[(tamanho[,decimais])]
| DATE
| TIME
| TIMESTAMP
| DATETIME
| YEAR
| CHAR[(tamanho)]
| VARCHAR(tamanho)
| BINARY[(tamanho)]
| VARBINARY(tamanho)
| TINYBLOB
| BLOB
| MEDIUMBLOB
| LONGBLOB
| TINYTEXT [BINARY]
| TEXT [BINARY]
| MEDIUMTEXT [BINARY]
| LONGTEXT [BINARY]
| ENUM(valor1,valor2,valor3,...)
| SET(valor1,valor2,valor3,...)

nome_coluna_ndice:
nome_coluna [(tamanho)] [ASC | DESC]

definio_referncia:
REFERENCES nome_tabela (nome_coluna_ndice,...)
[MATCH FULL | MATCH PARTIAL | MATCH SIMPLE]
[ON DELETE opo_referncia]
[ON UPDATE opo_referncia]

opo_referncia:
RESTRICT | CASCADE | SET NULL | NO ACTION

opes_da_tabela:
opo_tabela [[,] opo_tabela] ...

opo_tabela:
ENGINE [=] nome_mecanismo
| COMMENT [=] 'string'

nome_mecanismo:
MyISAM
| InnoDB

Referncias
Portugus (MySQL 4.1): http://dev.mysql.com/doc/refman/4.1/pt/create-table.html
Ingls (MySQL 5.5): http://dev.mysql.com/doc/refman/5.5/en/create-table.html


Postado por
Prof. Claudio Hirose
s
16:55
0
comentrios


Marcadores:
create,
ddl,
mysql,
sql

DDL :: Drop Database

ATENO!

Tome cuidado com este comando.

Aps a sua execuo, no h possibilidade de recuperao dos dados.

http://aprendendo-bd.blogspot.pt/search/label/sql[07/08/2017 17:14:11]
.: Aprendendo Banco de Dados :.: sql


Padro ANSI SQL3:

DROP DATABASE nome_database;


Em MySQL 5.5, a sintaxe para remover um database (base de dados):

DROP DATABASE [IF NOT EXISTS] nome_database;

ou

DROP SCHEMA [IF NOT EXISTS] nome_schema;

Exemplo:

> DROP DATABASE ALUNO;


Query OK, 2 rows affected (0.31 sec)


O comando DROP DATABASE ir retornar a quantidade de tabelas removidas. No exemplo
anterior, foram removidas duas tabelas.

Referncias
Portugus (MySQL 4.1): http://dev.mysql.com/doc/refman/4.1/pt/drop-database.html
Ingls (MySQL 5.5): http://dev.mysql.com/doc/refman/5.5/en/drop-database.html


Postado por
Prof. Claudio Hirose
s
14:25
0
comentrios


Marcadores:
ddl,
drop,
mysql,
sql

DDL :: Create Database



Padro ANSI SQL3:

CREATE DATABASE nome_database;


Em MySQL 5.5, a sintaxe para criar um database (base de dados):

CREATE DATABASE [IF NOT EXISTS] nome_database;

ou

CREATE SCHEMA [IF NOT EXISTS] nome_schema;


O nome do database deve ter no mximo 64 caracteres e suporta os seguintes caracteres ASCII:
[0-9,a-z,A-Z$_] (dgitos numricos,caracteres latinos, cifro ($) e sublinha (_)).

possvel colocar acento e cedilha nos nomes dos databases, porm, no recomendamos o seu
uso.

Exemplos:

> CREATE DATABASE ALUNO;


Query OK, 1 row affected (0.00 sec)

> CREATE DATABASE CURSO_DE_FERIAS;


Query OK, 1 row affected (0.00 sec)

> create database if not exists vendas_a_prazo;


Query OK, 1 row affected (0.00 sec)

Para visualizar os databases existentes no Banco de Dados, digite o comando "SHOW


DATABASES"

Exemplo:

http://aprendendo-bd.blogspot.pt/search/label/sql[07/08/2017 17:14:11]
.: Aprendendo Banco de Dados :.: sql

> show databases;


+--------------------+
| Database |
+--------------------+
| information_schema |
| aluno |
| curso_de_ferias |
| mysql |
| performance_schema |
| test |
| venda_a_prazo |
+--------------------+
7 rows in set (0.00 sec)

Referncias
Portugus (MySQL 4.1): http://dev.mysql.com/doc/refman/4.1/pt/create-database.html
Ingls (MySQL 5.5): http://dev.mysql.com/doc/refman/5.5/en/create-database.html


Postado por
Prof. Claudio Hirose
s
14:24
1 comentrios


Marcadores:
create,
ddl,
mysql,
sql

Pgina inicial Postagens mais antigas


Assinar:
Postagens (Atom)


Tema Janela de imagem. Tecnologia do Blogger.

http://aprendendo-bd.blogspot.pt/search/label/sql[07/08/2017 17:14:11]

Potrebbero piacerti anche