Vamos aprender um pouco de MySQL…
Como sabemos, as bases de dados são normalmente o repositório de toda a informação de muitas aplicações e sites. O MySQL é provavelmente o motor de base de dados mais usada em todo o mundo, dando suporte aos mais diversos serviços. Tudo o que é plataformas open source como é o caso do wordpress, Joomla ou Drupal, recorrem ao MySQL como base de dados. Hoje deixamos aqui algumas dicas para quem se quiser iniciar no mundo do MySQL via linha de comandos.
O MySQL é multiplataforma, estando disponível para os principais sistemas operativos. Durante a instalação, o utilizador poderá definir uma password para acesso ao MySQL. Vamos então considerar que vamos criar a base de base com o nome Pplware e que servirá apenas para registar o nome e morada dos colaboradores.
Dica 1 – Aceder ao MySQL
Para aceder ao MySQL, devem usar via linha de comandos/terminal e inserir o seguinte comando (Nota: será solicitado a password de acesso ao MySQL uma vez que temos o argumento p:
mysql -u root -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 13761 Server version: 5.0.77 Source distribution Type 'help;' or '\h' for help. Type '\c' to clear the buffer. mysql> |
Dica 2 – Criar uma base de dados com o nome dbPplware
mysql> CREATE DATABASE dbPplware; Query OK, 1 row affected (0.00 sec) |
Dica 3 – Criação da estrutura da base de dados
Como referido, vamos criar apenas uma tabela para registar o idColaborador, NOME e MORADA
|idColaborador|NOME|Morada
create table COLABORADORES ( idColaborador int NOT NULL, NOME varchar(15) NOT NULL, MORADA varchar(100) NOT NULL, primary key (idColaborador ) ); |
Dica 4 – Ver estrutura da tabela criada (tabela Colaboradores)
mysql> desc COLABORADORES;
Dica 5 – Carregar dados usando a instrução INSERT
INSERT INTO COLABORADORES VALUES (10, ‘Pedro Pinto’, 'Porto'); INSERT INTO COLABORADORES VALUES (20, ‘Marisa Pinto’, 'Mealhada'); INSERT INTO COLABORADORES VALUES (30, ‘Vitor Martins’, 'Coimbra'); |
Dica 6 – Ver dados inseridos na tabela COLABORADORES
Dica 7 – Eliminar a base de dados dbPplware
mysql> drop database dbPplware; Query OK, 1 row affected (0.00 sec) |
Estas são algumas dicas básicas para quem se inicia no MySQL. De referir que algumas destas dicas são importantíssimas , por exemplo, para quem pretende instalar plataformas OpenSource onde necessita inicialmente de criar pelo menos uma base de dados.
Conhecem outros comandos que possam ser interessante e uteis?
Este artigo tem mais de um ano
Bom dia.
Sim:
UPDATE – UPDATE COLABORADORES SET NOME = ‘Paulo Cunha’ WHERE ID = ’10’
DELETE – DELETE FROM COLABORADORES WHERE + CONDIÇÃO;
SELECT – SELECT * FROM COLABORADORES
, etc. etc.
Bom posto!
Gosto do facto de neste momento estar a fazer um projecto de SQL e de repente aparecer este post xD
Embora saiba tudo o que já está aqui é uma boa sugestão para quem está a pensar entrar neste campo de base de dados.
Força com isto! 😉
PS: Expliquem um pouco o que é que consiste algumas keywords que foram postas.
Por ex:
primary key – serve para definir uma chave primária que identifica inequivocamente a tabela que se está a criar.
not null – diz que aquele campo nunca pode ter valores nulos, ou seja, tem que ter sempre um valor.
PedroT
A primary Key não serve para identificar inequivocamente a tabela que se está a criar.
Irá garantir que determinado valor ou conjunto de valores não se irá repetir num ou mais campos da tabela.
boas…
…. AUTO_INCREMENT ,
cmps
Rui Costa, isso não é bem assim.
O que referes é o parâmetro UNIQUE. Esse sim garante que não há repetições nos valores da coluna.
Primary Key é isso e muito mais, pois, como foi dito acima correctamente pelo PedroT, identifica a inequivocamente a tabela.
Com uma Primary Key podes fazer Foreign keys, por exemplo. Para quem não sabe, Foreign Keys são campos em tabelas que apontam para uma coluna que seja Primary key noutra tabela. Serve para fazer relações entre os elementos das tabelas.
Penso que é uma questão de Português. O que o Rui Costa diz é que a Primary key não identifica inequivocamente a TABELA. Primary key serve como identificação de cada registo, único (como uma constraint UNIQUE) e “melhora” a pesquisa na tabela sobre essa coluna (indices) … e outras coisas que não vamos entrar em pormenores.
boas..
defacto o unique garante isso, podes usar também o auto_increment(no caso que idealizei, inteiros sem nenhuma restrição), pois com ele também PODES garantir que estas a colocar tuplos com ids diferentes, dependendo da query de insert que fizeres…
…no entanto, penso que possa ser perigoso, pois se na altura do insert inserires dados na coluna idColaborador…podes duplicar ids…acho eu?!
sendo que o auto_increment o que faz é imediatamente antes de inserir incrementa o valor…se a seguir introduzires um numero na coluna que já exista fica duplicado…
cmps
O Pplware não dorme 🙂
Se me permites a correcção,
“primary key – serve para definir uma chave primária que identifica inequivocamente a tabela que se está a criar.”
não identifica inequivocamente a tabela, mas um registo na tabela.
Pessoalmente não gosto da linha de comandos e trabalho em ambiente Windows utilizo um editor de Mysql (www.heidisql.com)
È free, leve (3.3MB) e fácil de utilizar.
Uso-o para aceder ao MS SQL Server. Grande ferramenta.
Um ambiente muito bom para trabalhar com mysql é o MYSQL Workbench
aí fica uma lista extensa de comandos mysql 🙂
http://www.pantz.org/software/mysql/mysqlcommands.html
Thanks Alex17
era mesmo o que estava a procura, afinal de contas la aparece no meio disto tudo uma msg em condiçoes 😉
obrigado pelo link, ai ja da para começar a aprender kk coisinha 😉
Uma dica que fica para quem vai utilizar queries em software em vez de estar a trabalhar directamente no mysql: quando se faz um insert, usar os nomes dos campos. Não é obrigatório (como se pode ver no exemplo do artigo) mas assim a query irá funcionar sempre, mesmo que se altere a ordem dos campos da tabela ou se insira algum campo novo no meio dos já existentes. Usando o exemplo acima, seria assim:
INSERT INTO COLABORADORES (idColaborador, NOME, MORADA) VALUES (10, ‘Pedro Pinto’, ‘Porto’);
Por outro lado é possível usar apenas um INSERT para inserir vários registos:
INSERT INTO COLABORADORES (idColaborador, NOME, MORADA) VALUES (10, ‘Pedro Pinto’, ‘Porto’), (20, ‘Marisa Pinto’, ‘Mealhada’), (30, ‘Vitor Martins’, ‘Coimbra’);
penso que seria melhor não colocares valores na chave primaria e coloca-la como auto_increment…acho mais seguro visto que não existe unique…
cmps
essencialmente utilizo uma ferramenta gráfica para fácil de administração do meu servidor mysql.
https://www.mysql.com/products/workbench/
outra solução é ter um servidor web activo também e instalar o phpmyadmin.
O MySql Workbench é uma maravilha, só aconselho é a se ir gravando sempre os projectos em cada alteração pois tem tendencia a encravar ou estourar de vez em quando 😉
Não considero que seja assim tão grande maravilha, para mim tem um se não…resoluções inferiores a 800×600, deixas de ver o quer que seja.
O Pplware ja analisou esse fantástico software
https://pplware.sapo.pt/windows/software/mysql-workbench-desenhe-base-de-dados/
também uso esse e também tens o MySQLAdministrator
esse penso que vai ser descontinuado. Mas também da jeito sometimes 😉
boas…
nada melhor que a consola…
mysql -u root -pxpto
show databases;
🙂
cmps
+1
sim a consola resolve se estiveres a interagir com servidores sem ambiente gráfico 😉
Status e show status dão sempre jeito também, nem que seja para ver se a base de dados “caiu” alguma vez, atraves do uptime
Bom dia,
Tenho algumas informações sobre MySQL neste blog abaixo:
http://pessoalex.wordpress.com/mysql/
Acredito que vão ter informações bem uteis sobre este SGBD.
Tornou-se logo desinteressante quando abriste a linha de comandos.
Isto e chover no molhado basta um pouco de pesquisa na net. E que tal um truques e dicas ou coisas novas e importantes, quem quer aprender mysql de certeza que nao vai ser no pplware.
Boas Henrique,
Se ja sabes, deixo os outros aprenderem…já agora queres escrever um artigo sobre computação quântica?
Maldoso!!!
lol
boas…
desinteressante porquê?
se ja sabes deixa os outros aprenderem…o melhor partido de uma bd tira-se na consola e não em aplicações graficas 😉
cmps
Mysql é por linha de comandos.
Se vais usar um interface qualquer em que só precisas de carregar em botões, estás a aprender a usar um interface e nao mysql 🙂
completamente, e a noção que tens sobre o controlo da bd é pouco ou nenhum.
cmps
Estava mesmo a precisar era de um ferramente de administração free do PostgreSQL, e já agora de umas dicas esse SGBD.
Já dei por lá umas bicadas mas não pesco nada daquilo.
Estou habituado ao Microsoft SQLServer e Postgre é totalmente diferente.
Já agora, malta Pro em SGBDs.
Qual acham que é melhor, o MySQL ou o PostgreSQL?
Tenho ideia que é o PostgreSQL…mas bom bom é Oracle 🙂
Tem que se ter em atenção que existem varias versões do MySql.
MySQL Community Edition
MySQL Standard Edition
MySQL Enterprise Edition
MySQL Cluster Carrier Grade Edition
MySQL Embedded (OEM/ISV)
Contudo, a Oracle foi a minha escolha.
Tem procedimentos e funções guardadas na base de dados, tem transacções, tem queryes com sub selects, primary Keys, foreign keys, check constraints, triggers, cursors, etc
O MySQL tem tudo isso também…
são conceitos diferentes…acho eu, que não conheço, mas por aquilo que me dizem, Postgresql é mais tolerante a falhas, mas é mais lenta que mysql…
cmps
no entanto se estiveres a fazer log das querys todas para o binlog, e se uma tabela crashar podes reparar a tabela em mysql….partindo do principio que estas a fazer log das querys…caso contrario fica-se a ver navios como é obvio…
MariaDB é mais a frente pois permite usar motores xtradb
que são baseados em innodb, mas que escalam melhor que innodb, ficando entre innodb e myisam…o que é muito bom visto poderes ter os benefícios de innodb, com a performance do myisam…mais ou menos nem é carne nem peixe, mas escala melhor.
cmps
A ideia que tenho é que para pequenos/médios volumes de dados, o Mysql é um pouco mais rápido.
Para BD com maior volume de dados (10TB por ex.), o POSTGRE dá-se melhor.
pois talvez…não uso de momento db’s maiores que ~17GB e nunca usei Postgre, mas a ideia que tenho é de que se a tua info for extremamente importante e a velocidade não é tudo, então use Postgre caso contrario Mysql.
Da experiência que tenho posso dizer que podes aplicar mysql a qualquer caso, pois mesmo com as diversas tentativas de rebentar com a coisa feitas pelos developers…até hoje nunca fiquei na mão :), tenho redundância, e ja aconteceu pegar fogo a um Rack e limpar-me alguns 6 servidores dos quais 2-3 eram de bds e como estão distribuidas por diversos racks, só mesmo se queima-se o datacenter lol…
cmps
O que falei, foi do que li e não de experiência pessoal. Também nunca usei PostgreSQL e apenas o MySQL.
Quase todas as BD que usei eram bem pequenas o que não deu para testar a veracidade da afirmação que fiz anteriormente. A ser verdade o que disse acima, isso significa que o MySQL serve em 99% das situações.
boas…
a minha percepção sobre Postgre também é baseada naquilo que li e ouvi.
Não tenho nenhum termo de comparação a nível de recuperação em caso de catástrofe, por erro humano, ou por acidente…ou que seja… 😉
Em relação ao mysql, acho-o seguro, é evidente que as boas praticas exigem redundância, além de replicação para outros servidores, e por esses motivos acho que podemos considerar que mysql pode ser usado em qualquer lado 😉
cmps
A primeira “dica” tem obviamente o texto errado. O comando deve ser : mysql -u root -p.
Deviam corrigir, para os leigos.
Gosto muito das vossas tutorias:
linux para tótós
Dicas do Microsoft Excel é ao Domingo…
Asp.net
PHP é a Quinta-Feira
força pplware estou convosco todos os santos dias 🙂
Criar bases de dados MySql por linha de comandos não é coisa para mim 😉 No entanto trabalho bastante com Mysql, integrado no MS Access com uma performance bastante interessante!
boas…
É igual criar via cliente gráfico ou via consola…os comandos são os mesmos, é a mesma coisa, no entanto na consola obtens(se quiseres ) muito mais informação e controlo sobre a base de dados, no entanto para developers uma aplicação gráfica é o mais usado, os sysadmins é que como teem um controlo absoluto sobre os sistemas usam a consola pois precisam de mais controlo…
Acho que é muito gratificante usar a consola 😉
cmps
Gratificante, é, mas o tempo que perdes a escrever num bloco de notas ou mesmo directamente na linha, podes aproveitar para outras coisas no ambiente gráfico 🙂
Perde-se tempo, mas se guardarmos os comandos em ficheiros, basta executá-los como se fosse um .bat do windows. Ou seja, apenas se perde tempo uma vez. Depois é só ajustar parâmetros, mas isso também teria de ser feito em ambiente gráfico.
Penso que o trabalho em linhas de comandos, se bem organizado, é uma falsa questão.
Por outro lado, para quem desenvolve aplicações web, não tem outro remédio senão escrever todos os comandos.
Para quem quiser testar MySQL ou outro sistema de Base de Dados Online: http://sqlfiddle.com/.
Alguns comandos interessantes:
CREATE TABLE LIKE – Cria uma tabela exactamente igual a uma já existente.
EXPLAIN – Quando usado antes de uma query SQL, mostra o passos para a execução da query. Muito útil para identificar problemas de performance, e indexs a serem usados.
SHOW CREATE [TABLE|PROCEDURE|FUNCTION|TRIGGER|VIEW] – Mostra o SQL necessário para criar uma tabela, stored procedure, função, trigger ou view existente.
Mas como chegar até aqui?
Não falta um tutorial antes? Ou foi minha culpa :).
É que realmente ando aqui a bulha com uma instalação do mysql :).
Thanks
nao é por nada mas isto é para aprender? é que em primeiro lugar:
o codigo acima escrito nao funciona, nao sei se é por ter ja outras tabelas na db, mas quando faço o segundo codigo recebo a seguinte msg…
ERROR 1046 (3D000): No database selected
em segundo lugar, se isto é para iniciantes, que raio tao vcs todos prai a falar? xines? as msgs que aqui vejo é tudo xines, pois eu considero me um iniciante e nao percebi patavina das msgs…
limitem se a dizer, se esta correto ou nao o codigo, quanto a novos comandos simplesmente comentem nos post s corretos e nao no primeiro post que supostamente é para iniciantes, ou ainda confundem mais o people…
just saying…