接下来介绍一下MySQL的查询语句
基本的查询语句:
查询表的所有数据并显示所有列
select * from tb;
查询表的所有数据并显示指定列
select col1,col2,col5 from tb;
查询结果重命名
select sname as 'StudentName',uage as 'StudentAge' from stu;
将查询结果去重(DISTINCT)
select sname,uage,ugender DISTINCT from stu;
按条件查询数据表
select col1,col2,col3 from db where col4=???;
查询条件如果是某一字段非空的话
select * from stu where sname IS NOT NULL;
BETWEEN AND,查询年龄在18到25之间的学生
select * from stu where uage betwwen 18 and 25;
IN,查询cid是(1,2,3)中任何一个的学生
select * from stu where cid in(1,2,3);
模糊查询,很多时候我们的查询条件不是一个明确的值,而是具备某些特征的值,例如查找名字带有ter的学生,其中%代表任意个数的任意字符,_代表一个任意字符,例如以p开头的并且只含有两个字符可以表示为p_。
select * from stu where sname like'%ter%';
limit:限制输出的行数
用法:limit a,b;//a是从第几条语句开始(从0开始),b是到第几句结束,如果b为-1就是到最后
如果limit a;那就是输出前a条语句。
select * from db limit 5
排序查询:select 列名,...from表名 [where条件] order by 列名;
第一条是按照年龄降序排序,第二条是按照年龄升序排序。
select * from stu order by uage desc;
select * from stu order by uage asc;
分组查询:select 列名 from 表名 [where条件] group by 列名;
group by语法可以根据给定数据列的每个成员对查询结果进行分组统计,最终得到一个分组汇总表。 SELECT子句中的列名必须为分组列或列函数。列函数对于GROUP BY子句定义的每个组各返回一个结果。
在GROUP BY子句之后使用HAVING子句 可应用限定条件进行分组,以便系统仅对满足条件的组返回结果。为此,在GROUP BY子句后面包含一个HAVING子句。HAVING子句可包含一个或多个用AND和OR连接的谓词。
统计函数
COUNT(col):表示满足条件的数据元组中列col非空的元组的个数。
AVG():求平均值。
SUM():求和。
MAX():求最大值。
MIN():求最小值。
连接查询
基本的连接查询中分为内链接,左连接,右连接,外连接
内连接(第一个是普通的内连接,第二个是隐藏式的内连接)
select col1,tb1.col2,col3,tb2.col2 from tb1 inner join tb2 on tb1.col2=tb2.col2;
select col1,tb1.col2,col3,tb2.col2 from tb1,tb2 where tb1.col2=tb2.col2;
左连接
select col1,tb1.col2,col3,tb2.col2 from tb1 left join tb2 on tb1.col2=tb2.col2;
右连接
select col1,tb1.col2,col3,tb2.col2 from tb1 right join tb2 on tb1.col2=tb2.col2;
全连接
select col1,tb1.col2,col3,tb2.col2 from tb1 full join tb2 on tb1.col2=tb2.col2;
左外连接
SELECT col1,col2,tb1.col3,tb2.col2 FROM tb1 LEFT OUTER JOIN tb2 ON tb1.col3=tb2.col2;
右外连接
SELECT col1,col2,tb1.col3,tb2.col2 FROM tb1 right OUTER JOIN tb2 ON tb1.col3=tb2.col2;
全外连接
SELECT col1,col2,tb1.col3,tb2.col2 FROM tb1 full OUTER JOIN tb2 ON tb1.col3=tb2.col2;