写点什么

【sql 语句基础】——查 (select)(单表查询)

  • 2022 年 6 月 12 日
  • 本文字数:1453 字

    阅读完需:约 5 分钟

【sql语句基础】——查(select)(单表查询)

查(select)

单表查询

基本语法

select [distinct] * | {column1,column2,column3...}  from table_name;
复制代码

student 表



emp 表


empno 为员工号、ename 为员工名、job 为工作、mgr 为直属领导编号、hiredate 为入职时间、sal 为薪水、comm 为补贴、deptno 为部门号


代码样例

-- 查询所有学生信息SELECT * FROM student;-- 查询所有学生姓名和英语成绩SELECT `name`,`english` FROM student;-- 统计总分别名scoreSELECT `name` ,(chinese+english+math) AS score FROM student;
复制代码

select 注意事项

  1. select 指定查询那些列的数据。

  2. column 指定列名。

  3. *代表查询所有列。

  4. from 指定查询哪些表。

  5. distinct 可选,指显示结果时,是否去掉重复数据。

where 子句

比较运算符

  1. 大于等于小于不等于

  2. between...and->显示在某一区间的值

  3. in(set)->显示在某一区间的值,例如 in(100,200)

  4. 通配符:like `张 %(0-多)``/not like ''【%代表多个字符,_代表单个字符】

  5. is null ->判断是否为空


逻辑运算符

  1. and->判断条件同时成立

  2. or—> 多个条件任一成立

  3. not—> 不成立,例如:where not(salary>100)


SELECT * FROM student  WHERE `name` = '赵云';-- 查询总分大于200并且数学小于语文,姓韩的同学SELECT * FROM student  WHERE (chinese+english+math) > 200 AND   math < chinese AND   `name`  LIKE '赵%';-- english 在80-90之间SELECT * FROM student  WHERE english BETWEEN 80 AND 90;
复制代码

排序 order by 子句

升序:asc 降序:desc


-- 数学成绩升序SELECT * FROM student  ORDER BY math;-- 总分降序SELECT `name`,(chinese+math+english) AS score FROM student  ORDER BY score DESC;-- 李姓成绩排序SELECT * FROM student  WHERE `name` LIKE '张%'  ORDER BY math;-- 先部门号排序,后工资降序SELECT * FROM emp  ORDER BY deptno ,sal DESC;
复制代码

合计/统计函数-count

细节:count(*)查询满足条件的记录的行数;count(列)统计满足条件的列,但是会排除 null。


-- 统计所以总分大于250SELECT COUNT(*) AS s FROM student  WHERE (math+chinese+english)>250;
复制代码

求和 sum

-- 语文平均分SELECT SUM(chinese)/COUNT(*) FROM student;
复制代码

平均值 avg

SELECT AVG(math+chinese+english) FROM student;
复制代码

最大值最小值 max 和 min

select max(math) from student;
复制代码

分组 group by

-- 每种岗位的雇员总数、平均工资SELECT AVG(sal),COUNT(*),job  FROM emp  GROUP BY job;-- 显示雇员总数以及获得补助的雇员总数SELECT COUNT(*),COUNT(comm=300)  FROM emp;-- 显示管理人数(去重)SELECT COUNT(DISTINCT mgr)  FROM emp;
复制代码

过滤 having

-- GROUP by用于对查询的结果分组统计-- 如何显示每个部门的平均工资和最高工资SELECT AVG(sal), MAX(sal) , deptno   FROM  emp GROUP BY deptno; -- 使用数学方法,对小数点进行处理SELECT FORMAT(AVG(sal),2), MAX(sal) , deptno   FROM  emp GROUP BY deptno; -- 显示每个部门的每种岗位的平均工资和最低工资SELECT AVG(sal), MIN(sal) , deptno, job   FROM  emp GROUP BY deptno, job; -- ?显示平均工资低于2000的部门号和它的平均工资 // 别名SELECT AVG(sal), deptno   FROM emp GROUP BY deptno    HAVING AVG(sal) < 2000;
复制代码

分页查询 limit

基本语法:select ...limit start,rows 此处的start类似于数组的下标记发,即 0 代表第一行,1 代表第二行......rows 代表所取的行的数量,1 代表取一行,5 代表取五行......(表示从start+1行开始取取出rows行,start 从 0 计算)


SELECT *FROM emp  ORDER BY empno  LIMIT 0,3  --查询前三行
复制代码


发布于: 刚刚阅读数: 3
用户头像

还未添加个人签名 2022.06.02 加入

喜欢Java和py,会更新自己在学习过程中遇到**比较重要的知识点**以及**自己遇见的问题与解决方法**哦,如果你也正在学Java,就请留下一个关注吧

评论

发布
暂无评论
【sql语句基础】——查(select)(单表查询)_sql_写代码两年半_InfoQ写作社区