Home » 2014 » Октомври » 11 » Урок №9 Командата SELECT в MySQL
1:21 PM
Урок №9 Командата SELECT в MySQL

SQL командата SELECT се използва за извличане на данни от MySQL бази

данни. Можете да ползвате тази команда и в mysql> prompt както и чрез PHP

скрипт.

Синтаксис:

Това е генералния SQL синтаксис на командата SELECT за извличане на

данни от MySQL таблица:

SELECT поле1, поле2,...fieldN table_name1, 
table_name2...
[WHERE Clause]
[OFFSET M ][LIMIT N]

 

  • Можете да използвате една или повече таблици разделяйки ги със

  • запетаи (,) за да включите вариация от условия използвайки каузата

  • WHERE, но каузата WHERE е част от командата SELECT.

  • Можете да извадите едно или повече полета в една SELECT команда.

  • Можете да сложите звездичка (*) на мястото на полетата. В този случай, SELECT ще върне всички полета.

  • Можете да зададете всякакво условие използвайки WHERE клаузата.

  • Можете да зададете компенсиране използвайки OFFSET там откъдето започва командата SELECT ще започне да връща записите. По подразбиране offset е 0.

  • Можете да зададете лимит на броя на returns (връщания) като използвате атрибута LIMIT

Извличане на данни чрез Command Prompt:

В този пример ще използваме SQL командата SELECT за да извлечем данни

от MySQL таблицата tutorials_tbl

Пример:

Този пример ще върне (return) всички записи от таблицата tutorials_tbl:

 

root@host# mysql -u root -p password;
Enter password:*******
mysql> use TUTORIALS;
Database changed
mysql> SELECT * from tutorials_tbl 
+-------------+----------------+-----------------+
-----------------+
| tutorial_id | tutorial_title | tutorial_author 
| submission_date |
+-------------+----------------+-----------------+
-----------------+
| 1 | Learn PHP | knif3r | 2014-10-08 |
| 2 | Learn MySQL | knif3r | 2014-10-11 |
| 3 | JAVA Tutorial | knif3r | 2014-10-09 |
+-------------+----------------+-----------------+
-----------------+
3 rows in set (0.01 sec)

mysql>

Извличане на данни използвайки PHP скрипт:

Можете да използвате същата SQL SELECT команда в PHP функцията

mysql_query(). Тази функция се използва за изпълняване на SQL команди и

след това друга PHP функция mysql_fetch_array() може да се използва за да

се извлекат всички избрани данни. Тази функция връща ред като асоциативен

масив, числов масив или и двете.Тази функция връща FALSE ако няма повече

редове.

Ето и прост пример в който ще извлечен записи от tutorials_tbl таблицата.

Пример:

Този пример ще покаже всички записи от таблицата tutorials_tbl ако името на

вашата таблица е различно от това трябва да редактирате кода!

<?php
$dbhost = 'localhost:3036';
$dbuser = 'root';
$dbpass = 'rootpassword';
$conn = mysql_connect($dbhost, $dbuser, $dbpass);
if(! $conn )
{
 die('Could not connect: ' . mysql_error());
}
$sql = 'SELECT tutorial_id, tutorial_title, 
 tutorial_author, submission_date
 FROM tutorials_tbl';

mysql_select_db('TUTORIALS');
$retval = mysql_query( $sql, $conn );
if(! $retval )
{
 die('Could not get data: ' . mysql_error());
}
while($row = mysql_fetch_array($retval, 
MYSQL_ASSOC))
{
 echo "Tutorial ID :{$row['tutorial_id']} <br> ".
 "Title: {$row['tutorial_title']} <br> ".
 "Author: {$row['tutorial_author']} <br> ".
 "Submission Date : {$row['submission_date']} 
<br> ".
 "--------------------------------<br>";
} 
echo "Fetched data successfully\n";
mysql_close($conn);
?>

Съдържанието на редовете са възложени на променливата $row тогава

стойностите на този ред се показват.

Бележка: Винаги поставяйте "къдравите" скоби { } когато искате да искате да

вмъкнете масив за стойност директно в низ.

В горния пример, константата MYSQL_ASSOC се използва като вторият

аргумент в PHP функцията mysql_fetch_array(), и така връща реда като

асоциативен масив. С асоциативен масив можете да стигате до поле като

използвате неговото име вместо индекса.

PHP предлага и още една функция наречена mysql_fetch_assoc(), която също

се връща реда като асоциатен масив.

Пример:

Ако опитате този пример ще се покажат всички записи от таблицата

tutorial_tbl или името на вашата таблица като използваме функцията

mysql_fetch_assoc():

<?php
$dbhost = 'localhost:3036';
$dbuser = 'root';
$dbpass = 'rootpassword';
$conn = mysql_connect($dbhost, $dbuser, $dbpass);
if(! $conn )
{
 die('Could not connect: ' . mysql_error());
}
$sql = 'SELECT tutorial_id, tutorial_title, 
 tutorial_author, submission_date
 FROM tutorials_tbl';

mysql_select_db('TUTORIALS');
$retval = mysql_query( $sql, $conn );
if(! $retval )
{
 die('Could not get data: ' . mysql_error());
}
while($row = mysql_fetch_assoc($retval))
{
 echo "Tutorial ID :{$row['tutorial_id']} <br> ".
 "Title: {$row['tutorial_title']} <br> ".
 "Author: {$row['tutorial_author']} <br> ".
 "Submission Date : {$row['submission_date']} 
<br> ".
 "--------------------------------<br>";
} 
echo "Fetched data successfully\n";
mysql_close($conn);
?>

Можете също да използвате константата MYSQL_NUM като втори аргумент на

PHP функцията mysql_fetch_array(), това ще накара функцията да върне масив

с числова стойност.

Пример:

Аргумента MYSQL_NUM:

<?php
$dbhost = 'localhost:3036';
$dbuser = 'root';
$dbpass = 'rootpassword';
$conn = mysql_connect($dbhost, $dbuser, $dbpass);
if(! $conn )
{
 die('Could not connect: ' . mysql_error());
}
$sql = 'SELECT tutorial_id, tutorial_title, 
 tutorial_author, submission_date
 FROM tutorials_tbl';

mysql_select_db('TUTORIALS');
$retval = mysql_query( $sql, $conn );
if(! $retval )
{
 die('Could not get data: ' . mysql_error());
}
while($row = mysql_fetch_array($retval, MYSQL_NUM))
{
 echo "Tutorial ID :{$row[0]} <br> ".
 "Title: {$row[1]} <br> ".
 "Author: {$row[2]} <br> ".
 "Submission Date : {$row[3]} <br> ".
 "--------------------------------<br>";
}
echo "Fetched data successfully\n";
mysql_close($conn);
?>

 

И трите горе посочени примера ще доведат до един и същи резултат..

Освобождаване на паметта:

Добра практика е да освобождавате паметта на курсора в края на всяко

SELECT изявление. Можете да го направите като използвате PHP функцията

mysql_free_result().

Пример:

С този пример можете да освободите паметта на курсора:

 

<?php
$dbhost = 'localhost:3036';
$dbuser = 'root';
$dbpass = 'rootpassword';
$conn = mysql_connect($dbhost, $dbuser, $dbpass);
if(! $conn )
{
 die('Could not connect: ' . mysql_error());
}
$sql = 'SELECT tutorial_id, tutorial_title, 
 tutorial_author, submission_date
 FROM tutorials_tbl';

mysql_select_db('TUTORIALS');
$retval = mysql_query( $sql, $conn );
if(! $retval )
{
 die('Could not get data: ' . mysql_error());
}
while($row = mysql_fetch_array($retval, 
MYSQL_NUM))
{
 echo "Tutorial ID :{$row[0]} <br> ".
 "Title: {$row[1]} <br> ".
 "Author: {$row[2]} <br> ".
 "Submission Date : {$row[3]} <br> ".
 "--------------------------------<br>";
}
mysql_free_result($retval);
echo "Fetched data successfully\n";
mysql_close($conn);
?>

При извличането на данни, можете да използвате толкова сложен SQL колкото

вие прецените. Процедурата си остава същата като горе посочената.

Ако имате въпроси или искате да допълните нещо моля направете го в

коментарите след урока.

 

Категория: MySQL | Преглеждания: 964 | Довавено от: knif3r | Оценка: 5.0 | Гласували :2

Ако урокът ви е харесал можете да го споделите с вашите приятели във фейсбук :
Всички коментари: 0
avatar
Социални Мрежи

PC-Tools.inc | Copyright © 2014-2015
DMCA.com Protection Status Mozilla Firefox+4.0 Chrome+13.2 Opera+5.6 IE+7.9 Safari+2.0