MySQL中LIKE子句与排序

来源:互联网 发布:大数据岗位 编辑:程序博客网 时间:2024/06/13 11:08

MySQL中LIKE子句

我们知道在MySQL中使用 SQL SELECT 命令来读取数据, 同时我们可以在 SELECT 语句中使用 WHERE 子句来获取指定的记录。
WHERE 子句中可以使用等号 (=) 来设定获取数据的条件,如 “runoob_author = ‘Sanjay’”。
但是有时候我们需要获取 runoob_author 字段含有 “jay” 字符的所有记录,这时我们就需要在 WHERE 子句中使用 SQL LIKE 子句。
SQL LIKE 子句中使用百分号(%)字符来表示任意字符,类似于UNIX或正则表达式中的星号 (*)。
如果没有使用百分号(%), LIKE 子句与等号(=)的效果是一样的。

语法

SELECT field1, field2,...fieldN table_name1, table_name2...WHERE field1 LIKE condition1 [AND [OR]] filed2 = 'somevalue'
  • 你可以在WHERE子句中指定任何条件。
  • 你可以在WHERE子句中使用LIKE子句。
  • 你可以使用LIKE子句代替等号(=)。
  • LIKE 通常与 % 一同使用,类似于一个元字符的搜索。
  • 你可以使用AND或者OR指定一个或多个条件。
  • 你可以在 DELETE 或 UPDATE 命令中使用 WHERE…LIKE 子句来指定条件。

在命令提示符中使用 LIKE 子句
实例:

root@host# mysql -u root -p password;Enter password:*******mysql> use RUNOOB;Database changedmysql> SELECT * from runoob_tbl     -> WHERE runoob_author LIKE '%jay';+-------------+----------------+-----------------+-----------------+| runoob_id | runoob_title | runoob_author | submission_date |+-------------+----------------+-----------------+-----------------+|           3 | JAVA Tutorial  | Sanjay          | 2007-05-21      |+-------------+----------------+-----------------+-----------------+1 rows in set (0.01 sec)mysql>

在PHP脚本中使用 LIKE 子句

<?php$dbhost = 'localhost:3306';$dbuser = 'root';$dbpass = 'rootpassword';$conn = mysql_connect($dbhost, $dbuser, $dbpass);if(! $conn ){  die('Could not connect: ' . mysql_error());}$sql = 'SELECT runoob_id, runoob_title,                runoob_author, submission_date        FROM runoob_tbl        WHERE runoob_author LIKE "%jay%"';mysql_select_db('RUNOOB');$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['runoob_id']}  <br> ".         "Title: {$row['runoob_title']} <br> ".         "Author: {$row['runoob_author']} <br> ".         "Submission Date : {$row['submission_date']} <br> ".         "--------------------------------<br>";} echo "Fetched data successfully\n";mysql_close($conn);?>

MySQL 排序

我们知道从 MySQL 表中使用 SQL SELECT 语句来读取数据。
如果我们需要对读取的数据进行排序,我们就可以使用 MySQL 的 ORDER BY 子句来设定你想按哪个字段哪中方式来进行排序,再返回搜索结果。

语法

SELECT field1, field2,...fieldN table_name1, table_name2...ORDER BY field1, [field2...] [ASC [DESC]]
  • 你可以使用任何字段来作为排序的条件,从而返回排序后的查询结果。
  • 你可以设定多个字段来排序。
  • 你可以使用 ASC 或 DESC 关键字来设置查询结果是按升序或降序排列。 默认情况下,它是按升序排列。
  • 你可以添加 WHERE…LIKE 子句来设置条件。

在命令提示符中使用 ORDER BY 子句
实例:

root@host# mysql -u root -p password;Enter password:*******mysql> use RUNOOB;Database changedmysql> SELECT * from runoob_tbl ORDER BY runoob_author ASC;+-----------+---------------+---------------+-----------------+| runoob_id | runoob_title  | runoob_author | submission_date |+-----------+---------------+---------------+-----------------+|         2 | Learn MySQL   | Abdul S       | 2007-05-24      ||         1 | Learn PHP     | John Poul     | 2007-05-24      ||         3 | JAVA Tutorial | Sanjay        | 2007-05-06      |+-----------+---------------+---------------+-----------------+3 rows in set (0.00 sec)mysql> SELECT * from runoob_tbl ORDER BY runoob_author DESC;+-----------+---------------+---------------+-----------------+| runoob_id | runoob_title  | runoob_author | submission_date |+-----------+---------------+---------------+-----------------+|         3 | JAVA Tutorial | Sanjay        | 2007-05-06      ||         1 | Learn PHP     | John Poul     | 2007-05-24      ||         2 | Learn MySQL   | Abdul S       | 2007-05-24      |+-----------+---------------+---------------+-----------------+3 rows in set (0.00 sec)mysql> 

在PHP脚本中使用 ORDER BY 子句

<?php$dbhost = 'localhost:3306';$dbuser = 'root';$dbpass = 'rootpassword';$conn = mysql_connect($dbhost, $dbuser, $dbpass);if(! $conn ){  die('Could not connect: ' . mysql_error());}$sql = 'SELECT runoob_id, runoob_title,                runoob_author, submission_date        FROM runoob_tbl        ORDER BY  runoob_author DESC';mysql_select_db('RUNOOB');$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['runoob_id']}  <br> ".         "Title: {$row['runoob_title']} <br> ".         "Author: {$row['runoob_author']} <br> ".         "Submission Date : {$row['submission_date']} <br> ".         "--------------------------------<br>";} echo "Fetched data successfully\n";mysql_close($conn);?>
1 0