sql查询

请写出一个SQL来查询分数前五5的所有人?

mysql:select * from 分数表 order by 分数 desc limit 5;

oracle:select top 5 * from 分数表 order by 分数 desc;

 

1.1.3. WHERE子句

查询职员表中职位是’SALESMAN’的职员:

  1. SELECT ename, sal, job FROM emp WHERE job = 'SALESMAN';

 

1.2.1. 使用>, <, >=, <=, !=, <>, =

在WHERE子句中的查询条件,可以使用比较运算符来做查询。比如:查询职员表中薪水低于2000元的职员信息:

 

    SELECT ename, sal FROM emp WHERE sal< 2000;

SELECT ename, sal FROM emp WHERE sal< 200

 

查询职员表中不属于部门10的员工信息(!=等价于<>):

    SELECT ename, sal, job FROM emp WHERE deptno != 10;

    SELECT ename, sal, job FROM emp WHERE deptno != 10;

 

查询职员表中在2002年1月1号以后入职的职员信息,比较日期类型数据:

    SELECT ename, sal, hiredate FROM emp
    WHERE hiredate>to_date('2002-1-1','YYYY-MM-DD');

1.2.2. 使用AND,OR关键字

在SQL操作中,如果希望返回的结果必须满足多个条件,应该使用AND逻辑操作符连接这些条件,如果希望返回的结果满足多个条件之一即可,应该使用OR逻辑操作符连接这些条件。例如:查询薪水大于1000并且职位是’CLERK’的职员信息:

    SELECT ename, sal, job FROM emp
    WHERE sal> 1000 AND job = 'CLERK';

1.2.3. 使用LIKE条件(模糊查询)

当用户在执行查询时,不能完全确定某些信息的查询条件,或者只知道信息的一部分,可以借助LIKE来实现模糊查询。LIKE需要借助两个通配符:

    %:表示0到多个字符
    _:标识单个字符

这两个通配符可以配合使用,构造灵活的匹配条件。例如查询职员姓名中第二个字符是‘A’的员工信息:

    SELECT ename, job FROM emp WHERE ename LIKE '_A%';

  

1.2.4. 使用IN和NOT IN

在WHERE子句中可以用比较操作符IN(list)来取出符合列表范围中的数据。其中的参数list表示值列表,当列或表达式匹配于列表中的任何一个值时,条件为TRUE,该条记录则被显示出来。

IN页可以理解为一个范围比较操作符,只不过这个范围是一个指定的值列表,NOT IN(list) 取出不符合此列表中的数据记录。例如查询职位是MANAGER或者CLERK的员工:

    SELECT ename, job FROM emp WHERE job IN ('MANAGER', 'CLERK');
 

查询不是部门10或20的员工:

  1. SELECT ename, job FROM emp WHERE deptno NOT IN (10, 20);

1.2.5. BETWEEN…AND…

BETWEEN…AND…操作符用来查询符合某个值域范围条件的数据,最常见的是使用在数字类型的数据范围上,但对字符类型和日期类型数据也同样适用。例如查询薪水在1500-3000之间的职员信息:

    SELECT ename, sal FROM emp WHERE sal BETWEEN 1500 AND 3000;

 

1.2.6. 使用IS NULL和IS NOT NULL

空值NULL是一个特殊的值,比较的时候不能使用”=”号,必须使用IS NULL,否则不能得到正确的结果。例如查询哪些职员的奖金数据为NULL:

    SELECT ename, sal, comm FROM emp  WHERE comm IS NULL;

1.2.7. 使用ANY和ALL条件

在比较运算符中,可以出现ALL和ANY,表示“全部”和“任一”,但是ALL和ANY不能单独使用,需要配合单行比较操作符>、>=、<、<=一起使用。其中:

    > ANY : 大于最小
    < ANY:小于最大
    > ALL:大于最大
    < ALL:小于最小

例如,查询薪水比职位是“SALESMAN”的人高的员工信息,比任意一个SALESMAN高都行:

    SELECT empno, ename, job, sal, deptno
    FROM emp
    WHERE sal> ANY (
    SELECT sal FROM emp WHERE job = 'SALESMAN');
 

1.2.8. 查询条件中使用表达式和函数

当查询需要对选出的字段进行进一步计算,可以在数字列上使用算术表达式(+、-、*、/)。表达式符合四则运算的默认优先级,如果要改变优先级可以使用括号。

算术运算主要是针对数字类型的数据,对日期类型的数据可以做加减操作,表示在一个日期值上加或减一个天数。

查询条件中使用字符串函数UPPER,将条件中的字符串变大写后再参与比较:

    SELECT ename, sal, job FROMempWHERE ename = UPPER('rose');

查询条件中使用算数表达式,查询年薪大于10w元的员工记录:

  SELECT ename, sal, job FROM empWHERE sal * 12 >100000;

 

1.4.5. 聚合函数对空值的处理

聚合函数忽略NULL值。即当emp表中的某列有NULL值,比如某新入职员工没有薪水,比较两条语句的结果:

copytextpop-up

    SELECT AVG(sal) avg_sal FROM emp;
    SELECT AVG(NVL(sal,0)) avg_sal FROM emp;

    SELECT AVG(sal)  avg_sal FROM emp;
    SELECT AVG(NVL(sal,0)) avg_sal FROM emp;

 



https://blog.csdn.net/kuangzhixuan/article/details/74299047

https://www.runoob.com/mysql/mysql-tutorial.html sql教程

 

https://www.cnblogs.com/huxinping8800/p/7085101.html  sql题目

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值