Latest web development tutorials

Usando a conexão Mysql

Nos capítulos anteriores, nós aprendemos que, se ler os dados em uma tabela, que é relativamente simples, mas muitas vezes precisa ler dados de várias tabelas em uma aplicação real.

Este capítulo vamos mostrar-lhe como usar o MySQL Cadastre dados de consulta em duas ou mais tabelas.

Você pode usar o MySQL no SELECT, UPDATE e DELETE JOIN consultas multi-tabelas comuns.

Cadastre-se de acordo com a função dividida em três categorias a seguir:

  • (Ligação interna, ou a conexão equivalente) INNER JOIN: obter o registro dois campos na tabela corresponde relações.
  • LEFT JOIN (conexão à esquerda): Comece todos os registros da tabela esquerda, tabela à direita, mesmo se não houver nenhum registro correspondente correspondentes.
  • RIGHT JOIN (conexão à direita): Em contraste com o LEFT JOIN, obter a tabela da direita para todos os registros, mesmo se a tabela esquerda não tem registos correspondentes correspondentes.

estrutura de banco de dados e dos dados utilizados nesta seção Download: w3big.sql .


Use INNER JOIN prompt de comando

Temos duas tabelas tcount_tbl e w3big_tbl na base de dados w3big. Dois dados de tabelas de dados são os seguintes:

Exemplos

Tente os seguintes exemplos:

root@host# mysql -u root -p password;
Enter password:*******
mysql> use w3big;
Database changed
mysql> SELECT * FROM tcount_tbl;
+-----------------+----------------+
| w3big_author | w3big_count |
+-----------------+----------------+
| mahran          |             20 |
| mahnaz          |           NULL |
| Jen             |           NULL |
| Gill            |             20 |
| John Poul       |              1 |
| Sanjay          |              1 |
+-----------------+----------------+
6 rows in set (0.01 sec)
mysql> SELECT * from w3big_tbl;
+-------------+----------------+-----------------+-----------------+
| w3big_id | w3big_title | w3big_author | submission_date |
+-------------+----------------+-----------------+-----------------+
|           1 | Learn PHP      | John Poul       | 2007-05-24      |
|           2 | Learn MySQL    | Abdul S         | 2007-05-24      |
|           3 | JAVA Tutorial  | Sanjay          | 2007-05-06      |
+-------------+----------------+-----------------+-----------------+
3 rows in set (0.00 sec)
mysql>

Em seguida, vêm para conectar mais de duas tabelas na tabela para ler w3big_tbl todos os valores de campo w3big_count campo w3big_author correspondentes à tabela no tcount_tbl usando MySQL INNER JOIN (uso pode ser omitido INNER JOIN, o mesmo efeito):

mysql> SELECT a.w3big_id, a.w3big_author, b.w3big_count FROM w3big_tbl a INNER JOIN tcount_tbl b ON a.w3big_author = b.w3big_author;
+-----------+---------------+--------------+
| w3big_id | w3big_author | w3big_count |
+-----------+---------------+--------------+
|         1 | John Poul     |            1 |
|         3 | Sanjay        |            1 |
+-----------+---------------+--------------+
2 rows in set (0.00 sec)

Acima de instrução SQL é equivalente a:

mysql> SELECT a.w3big_id, a.w3big_author, b.w3big_count FROM w3big_tbl a, tcount_tbl b WHERE a.w3big_author = b.w3big_author;
+-------------+-----------------+----------------+
| w3big_id | w3big_author | w3big_count |
+-------------+-----------------+----------------+
|           1 | John Poul       |              1 |
|           3 | Sanjay          |              1 |
+-------------+-----------------+----------------+
2 rows in set (0.01 sec)
mysql>


MySQL LEFT JOIN

MySQL LEFT JOIN e junte-se diferente. MySQL LEFT JOIN vai ler todos os dados da tabela de dados do lado esquerdo, o lado direito da tabela, mesmo se não há dados correspondentes.

Exemplos

Experimente os exemplos a seguir, w3big_tbl tabela à esquerda, tcount_tbl a tabela à direita, para entender MySQL LEFT JOIN aplicações:

root@host# mysql -u root -p password;
Enter password:*******
mysql> use w3big;
Database changed
mysql> SELECT a.w3big_id, a.w3big_author, b.w3big_count FROM w3big_tbl a LEFT JOIN tcount_tbl b ON a.w3big_author = b.w3big_author;
+-------------+-----------------+----------------+
| w3big_id | w3big_author | w3big_count |
+-------------+-----------------+----------------+
|           1 | John Poul       |              1 |
|           2 | Abdul S         |           NULL |
|           3 | Sanjay          |              1 |
+-------------+-----------------+----------------+
3 rows in set (0.02 sec)

Os exemplos acima usam o LEFT JOIN, a instrução lê todo o campo de dados selecionado para a esquerda do w3big_tbl tabela de dados, mesmo se não houver uma correspondente tabela tcount_tbl direita no valor do campo w3big_author.


MySQL RIGHT JOIN

MySQL RIGHT JOIN lê todos os dados à direita da tabela de dados no lado esquerdo da tabela mesmo se não há dados correspondentes.

Exemplos

Experimente os exemplos a seguir, tcount_tbl tabela à esquerda, w3big_tbl a tabela à direita, para entender MySQL RIGHT JOIN aplicações:

root@host# mysql -u root -p password;
Enter password:*******
mysql> use w3big;
Database changed
mysql> SELECT b.w3big_id, b.w3big_author, a.w3big_count FROM tcount_tbl a RIGHT JOIN w3big_tbl b ON a.w3big_author = b.w3big_author;
+-------------+-----------------+----------------+
| w3big_id | w3big_author | w3big_count |
+-------------+-----------------+----------------+
|           1 | John Poul       |              1 |
|           2 | Abdul S         |           NULL |
|           3 | Sanjay          |              1 |
+-------------+-----------------+----------------+
3 rows in set (0.02 sec)

Os exemplos acima usam uma RIGHT JOIN, a instrução lê todo o campo de dados selecionado para o direito do w3big_tbl tabela de dados, mesmo se não houver nenhuma tabela correspondente no tcount_tbl esquerda no valor do campo w3big_author.


Cadastre uso em scripts PHP

uso PHP mysql_query () para executar instruções SQL, você pode usar mais do que a mesma instrução SQL como mysql_query (parâmetros de função).

Tente os seguintes exemplos:

<?php
$dbhost = 'localhost:3036';
$dbuser = 'root';
$dbpass = 'rootpassword';
$conn = mysql_connect($dbhost, $dbuser, $dbpass);
if(! $conn )
{
  die('Could not connect: ' . mysql_error());
}
$sql = 'SELECT a.w3big_id, a.w3big_author, b.w3big_count FROM w3big_tbl a INNER JOIN tcount_tbl b ON a.w3big_author = b.w3big_author';

mysql_select_db('w3big');
$retval = mysql_query( $sql, $conn );
if(! $retval )
{
  die('Could not get data: ' . mysql_error());
}
while($row = mysql_fetch_array($retval, MYSQL_ASSOC))
{
    echo "Author:{$row['w3big_author']}  <br> ".
         "Count: {$row['w3big_count']} <br> ".
         "Tutorial ID: {$row['w3big_id']} <br> ".
         "--------------------------------<br>";
} 
echo "Fetched data successfully\n";
mysql_close($conn);
?>