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

简介: 【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;
-- 统计总分别名score
SELECT `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。
-- 统计所以总分大于250
SELECT 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  --查询前三行
相关文章
|
2月前
|
SQL 数据库
SQl查询之单表查询,连接与嵌套查询
SQl查询之单表查询,连接与嵌套查询
33 0
|
4月前
|
SQL 数据挖掘 大数据
如何在 SQL Server 中使用 `SELECT TOP`
【8月更文挑战第10天】
178 7
如何在 SQL Server 中使用 `SELECT TOP`
|
3月前
|
SQL XML Java
mybatis :sqlmapconfig.xml配置 ++++Mapper XML 文件(sql/insert/delete/update/select)(增删改查)用法
当然,这些仅是MyBatis功能的初步介绍。MyBatis还提供了高级特性,如动态SQL、类型处理器、插件等,可以进一步提供对数据库交互的强大支持和灵活性。希望上述内容对您理解MyBatis的基本操作有所帮助。在实际使用中,您可能还需要根据具体的业务要求调整和优化SQL语句和配置。
58 1
|
4月前
|
SQL 关系型数据库 MySQL
INSERT INTO t_a.tableName SELECT * FROM t_b.tableName 如何通过定义一个list对象,包含多个tableName,循环执行前面的sql,用MySQL的语法写
【8月更文挑战第7天】INSERT INTO t_a.tableName SELECT * FROM t_b.tableName 如何通过定义一个list对象,包含多个tableName,循环执行前面的sql,用MySQL的语法写
45 5
|
4月前
|
SQL 数据挖掘 关系型数据库
|
4月前
|
SQL
访问者模式问题之构造一个包含 select、from 和 where 子句的 SQL 节点树,如何解决
访问者模式问题之构造一个包含 select、from 和 where 子句的 SQL 节点树,如何解决
|
5月前
|
SQL Oracle 关系型数据库
SQL SELECT TOP 子句
【7月更文挑战第12天】SQL SELECT TOP 子句。
48 14
|
5月前
|
SQL 存储 数据库
SQL SELECT 语句
【7月更文挑战第10天】SQL SELECT 语句。
43 9
|
5月前
|
SQL Oracle 关系型数据库
SQL SELECT TOP 子句
【7月更文挑战第13天】SQL SELECT TOP 子句。
37 5
|
5月前
|
SQL 数据库
SQL SELECT DISTINCT 语句
【7月更文挑战第10天】SQL SELECT DISTINCT 语句。
59 6