MySQL SELECT语句
Posted 邀魂斩月
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL SELECT语句相关的知识,希望对你有一定的参考价值。
说明:mysql的offset第一行是0
位置指的是在SELECT语句中第几个出现的字段,如:1,则代表用第一个出现的字段来分组。
SELECT语句:
SELECT select_expr1 【,select_expr2......】
【
FROM 表名
【WHERE where_condition】
【GROUP BY {列名|位置} 【ASC | DESC】,.....】 //对查询结果进行分组,如:SELECT sex,id FROM tb1 GROUP BY sex;
【HAVING where_condition】 //分组条件,如:SELECT sex FROM tb1 GROUP BY sex HAVING count(id) >2;对tb1表中id列的值大于2的sex列进行分组
【ORDER BY {列名|expr|位置}】 【ASC | DESC】,.....】 //对查询结果进行排序,如:SELECT * FROM tb1 ORDER BY id DESC,sex ASC;把行先按id降序排列,
不满足条件的再按sex升序排列。
【LIMIT {【offset,】 行数 | 行数 OFFSET offset}】 //限制查询结果的返回数量,如:SELECT * FROM tb1 LIMIT 2;返回前两行
SELECT * FROM tb1 LIMIT 2,2;从第二行开始,返回2行
】
select_expr的顺序将影响结果的排列顺序,如:SELECT id,username FROM tb1;和SELECT username,id FROM tb1;结果是不一样的。
select_expr可以使用【AS】 alias_name为其赋予别名,字段的别名将影响结果集,别名可用于GROUP BY,ORDRE BY或HAVING,如:SELECT id AS userid,username AS uname FROM tb1;
*表示所有的列,tbl_name.*可以表示数据表下的所有列,如:tb1.id表示数据表tb1下的id列。
where_condition中可以使用MySQL支持的函数或运算符。
通过连接来显示多张表的内容:
连接的语法结构:
表1 {【INNER | CROSS】 JOIN | {LEFT | RIGHT} 【OUTER】JOIN} 表2 ON conditional_expr(连接条件)
连接类型:
INNER JOIN等同于JOIN等同于CROSS JOIN等同于INNER JOIN 称为内连接
LEFT 【OUTER】JOIN 称为左外连接
RIGHT 【OUTER】JOIN 称为右外连接
SELECT ...... INNER JOIN ......【INNER JOIN ......】 显示左表及右表符合连接条件的记录
SELECT ...... LEFT JOIN ......【LEFT JOIN ......】显示左表的全部记录及右表符合链接条件的记录
SELECT ...... RIGHT JOIN ......【RIGHT JOIN ......】显示右表的全部记录及左表符合链接条件的记录
通过CREATE...SELECT来创建数据表并且同时写入SELECT查询到的记录:
>CREATE TABLE tdb_goods_brands (
->brand_id SMALLINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
->brand_name VARCHAR(40) NOT NULL
->) SELECT brand_name FROM tdb_goods GROUP BY brand_name;
自身连接:
-- 查找所有分类及其父类
SELECT s.type_id,s.type_name,p.type_name FROM tdb_goods_types AS s LEFT JOIN tdb_goods_types AS p ON s.parent_id = p.type_id;
-- 查找所有分类及其子类
SELECT p.type_id,p.type_name,s.type_name FROM tdb_goods_types AS p LEFT JOIN tdb_goods_types AS s ON s.parent_id = p.type_id;
以上是关于MySQL SELECT语句的主要内容,如果未能解决你的问题,请参考以下文章