查看表数据
2025-11-22 09:37 吉日
来源头条作者:”少年与梦“简单查询select 字段名 from 表名;其中要注意:select和from都是关键字。字段和表名都是标识符。强调:对SQL语句来说,是通用的所有SQL语句都是“;”结尾另外SQL语句不区分大小写,都行。查询所有字段 第一种方式:可以吧每个字段都写上(推荐) 第二种方式可以用* 这种方式的缺点: 1.效率低 2.可读性差 在实际开发中不建议,你可以在**Dos**命令窗口想快速看一看全表数据可以采用这种方式。 给查询的列起别名使用AS关键字起别名。 mysql去重函数distinct 用法:select distinct 需要去重的字段 from表;分组查询# group by :分组 # 对stus表的数据按照班级进行分组,并看每个班级都有多少人 select gradeld,count(*) as num from stus group by gradeld; # 对stus表的数据按照班级进行分组,查看每个班级都有多少人以及班级英语平均分; select gradeld,count(*) as num,avg(english) as english from stus group by gradeld; # having:过滤 # 对stus表的数据按照班级进行分组,查看每个班都有多少人以及班级英语平均分; select gradeld,count(*) as num,avg(ebglish) as english from stus group by gradeld having count(*) >1; # having和where区别 # 执行时间不一样:where是分组之前进行限定,不满足where条件就不参与分组,而having是分组之后对结果进行过滤 # 可判断的条件不一样:where不能对聚合函数进行判断,having可以 # where >聚合函数 >having模糊查询需要配合 like 使用# % 多个任意字符串 # 查询stus以路开头的学生信息: select * from stus where name like "路%"; # 查询stus表中name以某某结尾的学生信息: select * from stus where name like '%某某'; # 查询stus表中name中包含猪的学生信息: select * from stus where name like '%猪%'; # _ 单个字符 # (_代表一个字符,可以使用多个_) # 查询stus表中以路开头的且名字长度为2的学生信息; select * from stus where name like '路_'; # 查询stus表中以路开头的且名字长度为3的学生信息; select * from stus where name like '路__'; # 查询stus表中name以路开头以某结尾的且名字长度为3的学生信息: select * from staus where name like '路_某';排序查询# order by # ASC 升序(默认是升序,所以不指定关键字也可以) # 查询stus表name字字段,要求按照年龄的升序进行排序; select name from stus order by age; # 查询stus表中名字,年龄字段要求按照年龄大于7进行筛选之后按照年龄升序进行排列 select name from stus where age >7 order by age; # DESC 倒序 # 查询stus表中name字段,要求按照年龄的升序进行排序,如果年龄相同在按照英文成绩降序排列: select name from stus order by age,english desc; # sql必知必会有讲解 # 查询stus表中name字段,要求按年龄的升序进行排序,并通过limit返回一条数据,即年龄最小的; select name from stus order by age asc limit 1; # 位置问题 # 在使用order by 子句对检索出得数据进行排序时,应该保证它是位于from,如果没有条件,应位于where之后,如果使用limit,它必须位于order by之后,使用子句的次序不会产生错误条件查询# 大于 ># 查找stus表中年龄大于18岁的学生姓名; select name from stus where age >18; # 小于< # 查找stus表中年龄大于18岁的学生姓名; select name from stus where age< 18; # 等于 = # 查找stus表中年龄大于18岁的学生姓名; select name from stus where age = 18; # 大于等于 >= # 查找stus表中年龄大于18岁的学生姓名; select name from stus where age >= 18; # 小于等于 >= # 查找stus表中年龄大于18岁的学生姓名; select name from stus where age<= 18; # 不能等于 或 != # 查找stus表中年龄大于18岁的学生姓名; select name from stus where age != 18; # BETWEEN...and... 在某个范围内(都会包含) # 查找stus表中年龄在10~18之间的学生姓名; select name from stus between 10 and 18; # IN(...) 多选 # 查找stus表中年龄为15和16的学生姓名; select name from stus where age in(7,8); # IS NULL——是NULL # 查找stus中名字为空的学生信息; select * from stus where name is null; # IS NOT NULL——不是NULL # 查找stus中名字不为空的学生信息; select * from stus where name is not null; # AND或 # OR或||——或者 # 查找stus表中名字叫路某或者叫张三的学生信息; select * from stus where name = '路某' OR name = '张三';多表查询# 连接查询 # 内连接 # 相当于查询多个表的交集 # 显示内连接 # 使用 inner join关键字,条件使用on关键字 select grade_name,name from 表名1 inner join 表名2 on stus.gradeld =grade.id; # 隐式连接 #内连接还有一种隐式的写法,即不需要显示的指定inner join关键字,需要注意,使用隐式内连接条件的关键字要使用where而不是on select grade_name,name from grade.stus where stus.gradeId = grade.id; # 外连接 # 左外连接 # 相当于查询A表所有数据的交集部分数据 # 左(外)连接,在表的记录将会全部表示出来,而右表只会显示符合搜索条件的记录,右表记录不足的地方均为NULL # 语法: # LEFT JOIN ON # LEFT OUTER JOIN ON # 注意:left join是left outer join的简写 select name,grade_name from stus s left outer join grade g on s.id = g.id; select name,grade_neme from stus s left join grade g on s.id = gid; # 右外连接 # 相当于查询B表所有数据的交集部分数据 # 右(外)连接,右表的记录将会全部显示出来,而左表只会显示符合搜索条件的记录。左表记录不足的地方均为NULL select name,grade_neme from stus s right join grade g on s.id = gid; # 子查询 # 查询嵌套查询页也称为子查询 # 单行单列 # 作为条件值,使用 = != 等进行条件判断 # 语法: # select 字段列表 from 表 where 字段名 = (子查询); # 例如:查询stus表名叫路某的在几班 # 1.首先,要在stus表中查询名字为路某的gradeId是多少 # 2.根据查询到的gradeId再去grade查询相对应的grade_name select grade _name from grade where id = (select gradeld from stus where name = "路某"); # 多行单列 # 作为条件值,用in等关键字进行条件判断 # 语法: select 字段列表 from 表 where 字段名 in (子查询); # 多行多列 # 作为虚拟表 select 字段列表 from (子查询) where t;聚合函数# AVG()返回某列的平均值 # 查看stus表学生平均英语成绩,并其一个别名作为显示平均成绩字段; select avg(english) as avgEnglish from stus; # COUNT()返回某列的行数 # 查看stus表一共多少行,并起一个别名作为显示的字段; select count(*) as num from stus; # MAX()返回某列的最大值 # 查看stus表中英语成绩最高分,并起一个别名作为显示最高分的字段; select max(english) as score from stus; # MIX()返回某列的最小值 # 查看stus表中英语成绩最低分,并起一个别名作为显示最低分的字段; select mix(english) as score from stus; # SUN()返回某列之和 # 查看stus表中英语成绩总分,并起一个别名作为显示总的字段; select sum(english) as score from stus;