本文章介绍了mysql的一些查询语句,对于判断方面的知识不在赘述
mysql有关查询的语句分别有
SELECT
FROM (ON)
WHERE
GROUP BY
HAVING
ORDER BY (ASC|DESC)
一般来说执行顺序也是上面所写
下面将分别解释每个语句的使用方法,带*的为必写语句
SELECT*
select中文意思为选择,即为从表中选择处列以显示(输出),用法如下
SELECT [列名],[列名],[列名]
SELECT后必跟着要显示(输出)的列名,输出多个列名需以“,”分割
如果要去重,需在类名前加DISTINCT
如果要重命名,则需要用AS,用法如下
[原列名] AS [新列名]
FROM*
FROM中文意思来自,对应选择语句,就是选择列从表中,用法如下
FROM [table]
FROM后必跟表名
如果要连接(表行结合,也可以说是笛卡尔积)多个表,则需要配合JOIN(连接)和ON(连接条件),JOIN有4个,先以INNER JOIN解释一下ON,看例子(将表table1和table2以两表的cloumn1相等为条件连接,选择4列):
SELECT t1.column1,t1.column2,t2.column1,t2.column2
FROM table1 AS t1 INNER JOIN table2 AS t2
ON t1.column1 = t2.column1
由例子可见,如果FROM语句里引用了多个表(一般来说,引用多个表都要重命名,方便区分不同表),则需要列名前加“.”和新命名的表名加以区分来自不同表的相同列名
由例子总结,引用多个表的格式如下
FROM [表名] INNER JOIN [表名]
连接后需要筛选出连接后的满足条件的表,通过加ON来限制,由例子总结,ON限制格式如下
ON [筛选条件]
下面解释一下四种JOIN(取材于原文链接,感谢博主通俗的解释)
JOIN分四种,INNER JOIN(简单JOIN),LEFT JOIN,RIGHT JOIN,FULL JOIN,其中,第一个是内连接,后三个是外连接
INNER JOIN
内连接是最常见的连接,只连接匹配的行,语法类同上述JOIN
PS:INNER JOIN和JOIN是相同的
LEFT JOIN
LEFT JOIN连接后的结果集为左表全部行和右表满足ON条件的行,如果左表在右表中没有匹配,则对应左表行的右表数据用NULL代替,语法类同上述JOIN
PS:在某些数据库中,LEFT JOIN称为LEFT OUTER JOIN
RIGHT JOIN
RIGHT JOIN和LEFT JOIN很一样,只不过RIGHT JOIN返回的是右表的全部行和左表满足ON条件的行,如果左表没有满足条件,则对应行的左表数据用NULL代替,语法类同上述JOIN
PS:在默写数据库中,RIGHT JOIN称为RIGHT OUTERJOIN
FULL OUTER JOIN
FULL JOIN是LEFT JOIN和FIGHT JOIN的结合体,返回的是左右表的笛卡尔积,满足ON条件的左右都有值,不满足ON的,哪边不满足,那边用NULL代替,语法类同上述JOIN
WHERE
WHERE中文意思是在哪里,在此为给SELECT加以条件,限制SELECT的选择,语法如下
WHERE [选择条件]
WHERE语句一般都是需要写的,但不是必写的
GROUP BY
GROUP BY的中文意思是分组于…,在此是结合聚合函数(SUM(),AVG()等)使用,即需要对选择出的列进行求和、求平均、求重复数量等操作时,需使用聚合函数,且需要在后面加GROUP BY语句进行分组操作,分组关键字不限一个,语法如下
GROUP BY column1,column2
单关键字分组解释:将所以具有相同关键字字段的记录放到一个行里
多关键字分组解释:将所以具有相同关键字组字段的记录放到以行里
HAVING
HAVING的中文意思是有…,在此时结合聚合函数使用,即需要对选择后的聚合函数进行限制,这时就不能使用WHERE了,需要用HAVING加以限制,语法如下
HAVING [选择条件]
ORDER BY
ORDER BY的中文意思就是排序,该语句可以对选择出的列(即排序关键字)加以排序,不限一个关键字,语法如下
ORDER BY column1 ASC|DESC, column2 ASC|DESC, column3 ASC|DESC
其中,ASC和DESC为参数,ASC为升序排序(可不写,默认为升序排序),DESC为降序排序(如需降序排序则需加上DESC参数)
mysql查询的简单使用大概就这么多,以后使用过程中如果发现再补充