单表查询:
SELECT * FROM 数据名;
简单的获取表中的所有数据
SELECT 字段1,字段2.. FROM 表名;
简单的从表中查询指定的字段
SELECT * FROM 表名 ORDER BY 字段 [DESC] [LIMIT 偏移量 返回的最大数目];
查询表中数据,并以某字段进行排序,默认是降序,如果后边加入DESC,则变成升序,limit指定了查询从何处开始,到何处结束
SELECT * FROM 表名 WHERE 属性(>,=,<,AND,OR);
查询表中符合属性的字段
SELECT * FROM 表名 LIKE 条件 或 REGEXP 正则表达式
查询符合LIKE条件或正则表达式的字段
SELECT * FROM 表名 WHERE字段名 IN、NOT(字段1,字段5..字段n) ;
以某字段名查询表中某字段的字段1、字段5、字段n 或相反的字段
SELECT DISTICT 字段 FROM 表名;
去除表中重复的某字段,只打印一次
SELECT [MAX(字段)/MIN(字段)/SUM(字段)/字段] FROM 表名 GROUP BY 字段(可以是多个字段)
将查询结果分组
多表查询:
内连接:把查询结果作为WHERE子句的查询条件即称为内连接
SELECT 列名 FROM table1 [INNER] JOIN table2 ON table1.column1 = table2.column1
INNER表示使用的是内连接
外链接:
1)LEFT OUTER JOIN表示表之间通过左连接方式相互连接,也可简写成LEFT JOIN,它是以左侧的表为基准故称左连接,左侧表中所有信息将被全部输出,而右侧表信息则只会输出符合条件的信息,对不符合条件的信息则返回NULL
SELECT a.name,a.address,b.math,b.english FROM tb_demo065 AS A LEFT OUTER JOIN tb_demo065_tel AS b ON a.id=b.id
2)RIGHT OUTER JOIN表示表之间通过右连接方式相互连接,也可简写成RIGHT JOIN,它是以右侧的表为基准故称右连接,右侧表中所有信息将被全部输出,而左侧表信息则只会输出符合条件的信息,对不符合条件的信息则返回NULL
SELECT a.name,a.address,b.math,b.english FROM tb_demo065 AS A RIGHT OUTER JOIN tb_demo065_tel AS b ON a.id=b.id
子查询:子查询是一个SELECT查询,返回单个值且嵌套在SELECT、INSERT、UPDATE和DELETE语句或其它查询语句中,任何可以使用表达式的地方都可以使用子查询
SELECT * FROM 表名1 WHERE条件 比较运算符(指>、=、<、IN、ALL、ANY、SOME) (SELECT * FROM 表名2)
SELECT 字段名 FROM 表名1,表名2 WHERE条件 AND 其他查询条件
注:在实际开发中不应该这样使用,最好用主外键约束来实现
查询结果合并输出:
UNION:利用该关键字可以将多个SELECT 语句的查询结果合并输出,并删除重复行
ALL:利用该关键字可以将多个SELECT 语句的查询结果合并输出,但不会删除重复行
但应注意,在使用UNION,ALL的时候,两表的结构必须相同、数据类型需要兼容,在使用UNION时应额外注意,两表的字段数也必须相同
使用别名查询:
SELECT a.id,a.name,a.address,b.math,b.english,b.chinese FROM tb_demo065 [AS] a,tb_demo065_tel [AS] b WHERE a.id=b.id AND b.id='$_POST[textid]'
使用别名的时候要注意,定义过别名后,不能再使用原有表名;同时如果连接中的多个表中有相同的名称列存在,必须用表名或表的别名限定列名
HAVING语句:
HAVING子句用于指定组或聚合的搜索条件,HAVING通常与GROUP BY 语句一起使用,如果SQL语句中不含GROUP BY子句,则HAVING的行为与WHERE子句一样.
SELECT name,math FROM tb_demo083 GROUP BY id HAVING math > '95
参考文献:http://blog.sina.com.cn/s/blog_6ad62438010168lg.html