查询数据表中的记录
除非最终检索它们并利用它们来做点事情,否则将记录放入数据库没什么好处。这就是 SELECT 语句的用途,即帮助取出数据。SELECT 大概是 SQL 语言中最常用的语句,而且怎样使用它也最为讲究;用它来选择记录可能相当复杂,可能会涉及许多表中列之间的比较。
SELECT语法:
SELECT selection_list 选择哪些列
FROM table_list 从何处选择行
WHERE primary_constraint 行必须满足什么条件
GROUP BY grouping_columns 怎样对结果分组
HAVING secondary_constraint 行必须满足的第二条件
ORDER BY sorting_columns 怎样对结果排序
LIMIT count 结果限定
所有使用的关键词必须精确地以上面的顺序给出。例如,一个HAVING 子句必须跟在GROUP BY子句之后和ORDER BY子句之前。除了词“SELECT”和说明希望检索什么的selection _list 部分外,语法中的每样东西都是可选的。有的数据库还需要 FROM 子句。MySQL 有所不同,它允许对表达式求值而不引用任何表。
普通查询
全检索
特定查询
查询特定列
表达式计算
MySQL允许作为一个公式的结果来计算输出列的值。表达式可以简单也可以复杂。下面的查询求一个简单表达式的值(常量)以及一个涉及几个算术运算符和两个函数调用的较复杂的表达式的值。例如,计算Browser生活的天数:
条件查询
不必每次查询都返回所有的行记录,你能从你的表中只选择特定的行。为此你需要使用WHERE或者HAVING从句。HAVING从句与WHERE从句的区别是,HAVING表达的是第二条件,在与其他从句配合使用,显然不能在WHERE子句中的项目使用HAVING。
查询雄性猫或者雌性狗,and 和 or的组合使用
查询排序
使用ORDER BY子句对查询返回的结果按一列或多列排序。其中ASC表示升序,为默认值,DESC为降序。
多个列上排序
先按照动物种类排序,然后再显示该种类的最年轻的动物
注意DESC关键词仅适用于紧跟在它之前的列名字(birth);species值仍然以升序被排序。输出首先按照species排序,然后具有相同species的宠物再按照birth降序排列。
查询分组与行计数
GROUP BY 从句根据所给的列名返回分组的查询结果,可用于查询具有相同值的列。
查询显示结果时,被分组的列如果有重复的值,只返回靠前的记录,并且返回的记录集是排序的。这并不是一个很好的结果。仅仅使用GROUP BY从句并没有什么意义,该从句的真正作用在于与各种组合函数配合,用于行计数。
如计算每个主人有多少宠物
每种宠物的个数
按种类和性别组合的查询