博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

MySQL基础之第10章 查询数据

Posted on 2014-03-24 11:49  徐正柱-  阅读(485)  评论(0编辑  收藏  举报

10.1、基本查询语句

SELECT 属性列表 
FROM 表名和视图列表
[WHERE条件表达式1]
[GROUPBY 属性名1 [HAVING条件表达式2]]
[ORDERBY 属性名2[ASC|DESC]]

10.2、单表查询

列出所有字段
*
指定字段
指定记录

         WHERE 条件表达式
         =,<,>,!及其组合
         [NOT]BETWEEN AND
         [NOT]IN
         [NOT]LIKE

                   %

                   _
         IS[NOT] NULL
         AND,OR

SELECT DISTINCT 属性名
ORDER BY属性名[ASC|DESC]
GROUP BY, GROUP_CONTACT()函数非常好用

SELECTsex, GROUP_CONTACT(name) FROM employee GROUP BY sex;
GROUP BY与WITHROLLUP一起使用,多一行,加统计

SELECTsex COUNT(sex) FROM employee GROUP BY sex WITH ROLLUP;
LIMIT [初始位置,] 记录数

10.3、使用集合函数查询

  COUNT(), AVG(), MAX(),MIN(), SUM()

10.4、连接查询

10.4.1、内连接查询

         select a.*, b.* from a, b wherea.xid=b.xid

10.4.2、外连接查询

SELECT 属性名列表 FROM 表名1 LEFT|RIGHT JOIN 表名2
         ON 表名1.属性1=表名2.属性2;

LEFT JOIN          左表全记录,右表符合条件
RIGHT JOIN         右表全记录,左表符合条件

10.5、子查询

IN
EXISTS 表示存在,内层查询语句不返回查询的记录,而是返回一个真假值(true|false)
ANY任意一个值
         SELECT * FROM computer_stu WHERE scrore>=ANY(SELECT score FROM scholarship)
ALL 满足所有条件

10.6、合并查询结果

SELECT 语句1
         UNION | UNION ALL
SELECT 语句2

UNION 所有的查询结果合并到一起,去掉重复项
UNION ALL 简单合并

10.7、为表和字段取别名

  表名 表的别名
  属性名 [AS] 属性的别名

10.8、使用正则表达式查询

属性名 REGEXP ‘匹配方式’

^                         字符串开始
$                         字符串结束
.                           任意一个字符,包括回车和换行
[字符集合]            匹配字符集合中的任一字符
S1|S2|S3              三者之任一
*                          任意多个
+                         1+个
字符串{N}             字符串出现N次
字符串{M,N}         字符串出现至少M次,至多N次
SELECT * FROMinfo WHERE name REGEXP ‘ab{1,3}’;