MariaDB 连接
在之前的讨论和示例中,我们研究了从单个表中检索数据,或从多个来源检索多个值。大多数实际的数据操作都更加复杂,需要聚合、比较和从多个表中检索数据。
JOINs(连接) 允许将两个或多个表合并成一个单一的对象。它们通过SELECT、UPDATE和DELETE语句来使用。
请查看下面所示使用JOIN的语句的一般语法 −
SELECT column
FROM table_name1
INNER JOIN table_name2
ON table_name1.column = table_name2.column;
注意旧的JOINS语法使用隐式连接和无关键字。可以使用WHERE子句来实现连接,但关键字对于可读性、维护性和最佳实践效果最好。
JOINS有很多形式,例如左连接、右连接或内连接。不同类型的连接基于共享值或特征提供不同类型的聚合。
可以在命令提示符或使用PHP脚本中使用JOIN。
命令提示符
在命令提示符下,只需使用标准语句 –
root@host# mysql -u root -p password;
Enter password:*******
mysql> use PRODUCTS;
Database changed
mysql> SELECT products.ID_number, products.Nomenclature, inventory.inventory_ct
FROM products
INNER JOIN inventory
ON products.ID_numbeer = inventory.ID_number;
+-------------+----------------+-----------------+
| ID_number | Nomenclature | Inventory Count |
+-------------+----------------+-----------------+
| 12345 | Orbitron 4000 | 150 |
+-------------+----------------+-----------------+
| 12346 | Orbitron 3000 | 200 |
+-------------+----------------+-----------------+
| 12347 | Orbitron 1000 | 0 |
+-------------+----------------+-----------------+
PHP使用JOIN的脚本
使用 mysql_query() 函数执行JOIN操作-
<?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.product_id, a.product_manufacturer, b.product_count FROM products_tbl a, pcount_tbl b WHERE a.product_manufacturer = b.product_manufacturer';
mysql_select_db('PRODUCTS');retval = mysql_query( sql,conn );
if(! retval ) {
die('Could not get data: ' . mysql_error());
}
while(row = mysql_fetch_array(retval, MYSQL_ASSOC)) {
echo "Manufacturer:{row['product_manufacturer']} <br> ".
"Count: {row['product_count']} <br> ".
"Product ID: {row['product_id']} <br> ".
"--------------------------------<br>";
}
echo "Fetched data successfully\n";
mysql_close($conn);
?>
当成功检索数据时,您将看到以下输出−
ID Number: 12345
Nomenclature: Orbitron 4000
Inventory Count: 150
--------------------------------------
ID Number: 12346
Nomenclature: Orbitron 3000
Inventory Count: 200
--------------------------------------
ID Number: 12347
Nomenclature: Orbitron 1000
Inventory Count: 0
--------------------------------------
mysql> Fetched data successfully