欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

mysql数据库--基本查询语句

程序员文章站 2024-03-23 08:58:10
...
算术运算符 + - * / %
比较运算符 = > < >= <= <> !=
数据库特有的比较 in,not in,is null, is not null, like, between and
逻辑运算符 and or not
like 支持特殊符号 % 和 _ , 其中 % 表示任意数量的任意字符,_ 表示任意一位字符。

查询语句的数据流
查询的顺序:where, group by[having], order by, limit 最后输出在 select

mysql数据库--基本查询语句

where 基本查询

1.查询年龄不等于18岁的所有用户信息
	SELECT * FROM user WHERE age!=18;

2.查询班级为 python 的所有用户信息
	SELECT * from user WHERE class='python'

3.查询年龄大于16的所有用户信息
	SELECT * from user WHERE age>16;

4.查询年龄在18-24岁之间的所有用户信息,包含18岁和24岁
	SELECT * from user WHERE age>=18 and age<=24;

5.查询年龄不在18-24岁之间的所有用户的信息
	SELECT * from user WHERE age<=18 or age>=24;

6.查询id值是1 2 4 6的所有用户信息
	SELECT * from user WHERE id=1 or id=2 or id=4 or id=6;
	SELECT * from user WHERE id in (1,2,4,6);

7.查询python 班和web班的所有女生信息
	SELECT * from user WHERE gender=0 and (class='python' or class='web');

where 子查询

将 一条查询语句作为另一条查询语句的条件或者是数据源,必须要起别名
from (子查询) as 别名

1.查询年龄大于18 的男生信息
	SELECT * from user WHERE age>18;
	SELECT * from user WHERE gender=1;
	
	SELECT * from (SELECT * from user WHERE age>18) as newuser WHERE gender=1
	
2.查询name 为盖伦 的年龄
	SELECT * from user WHERE name='盖伦';

模糊查询

1.查询名字以“大”字开头的用户
	SELECT * FROM user WHERE name LIKE '大%';
	
2.查询email 中包含 g 的用户信息
	SELECT * from user WHERE email LIKE '%g%';
	
3.查询姓名是两个字的用户信息
	SELECT * from user WHERE name LIKE '__';
	
4.查询名字以大开头,并且是两个字的用户信息
	SELECT * from user WHERE name LIKE '大_';
	SELECT name,age from (SELECT * from user WHERE name='盖伦') as newuser;

聚合函数

很少单独使用,一般配合分组查询去使用,主要做数据统计
一般在select 后面使用,不能直接在where 后面使用,可以在having 后面使用
Max(),min(),count(),avg(),sum()

1.统计当前表中一共有多少条数据
	SELECT count(*) from user;
	
2.查询 python 班级最大年龄最小年龄以及平均年龄
	SELECT MAX(age),MIN(age),AVG(age) from user WHERE class='python';
	
3.统计男生的数量
	SELECT COUNT(*) from user where gender=1;

去除重复的数据 distinct

1.查询所有的班级
	SELECT DISTINCT class from user;
	
2.查询不重复的班级和性别
	SELECT DISTINCT class,gender from user;

分组 group by

1.查询表中有哪些班级
	SELECT class from user GROUP BY class;
	
2.统计当前表中男生和女生的人数各是多少
	SELECT gender,COUNT(gender) from user GROUP BY gender;
	
3.统计每个班的人数
	SELECT class,COUNT(*) from user GROUP BY class;
	
4.统计每个班,男生和女生各多少人
	SELECT class,gender,COUNT(*) from user GROUP BY class,gender;

having 子句查询,类似于where。having只能用在分组之后,是对分组后的数据进行筛选
	如果where 条件存在,分组只能在where 之后使用,而 having 只能在分组之后使用 
1.统计每个班的人数,并查询出班级人数大于2 的班级
	SELECT class,COUNT(*) from user GROUP BY class HAVING COUNT(*)>2;
	
2.查询每个班级男生人数大于2 的班级
	SELECT class,gender,COUNT(*) from user GROUP BY class,gender HAVING gender=1 AND COUNT(*)>2;
	SELECT class,COUNT(*) from user WHERE gender=1 GROUP BY class HAVING COUNT(*)>2;

排序 order by

默认升序排序 asc ,可以省略不写。Desc 降序排序。

1.查询所有学员信息,并按照年龄进行降序排序
	SELECT * from user ORDER BY age DESC;
	
2.查询班级 python 的女生信息,并按照年龄进行降序排序
	SELECT * from user WHERE class='python' AND gender=0 ORDER BY age DESC;

分页 limmit

格式:limit 3 (如果只有一个参数3,取前3条数据)
limit 3,3 (跳过前三条数据,取三条数据)

1.查询前五条数据
	SELECT * from user LIMIT 5;
	
2.按照3条为一页,取第一页数据
	SELECT * from user LIMIT 0,3;