• SQL检索记录


    <<第一章检索记录>>:关于表使用SELECT语句和特殊字符“*”;

    *:SELECT * from emp;

    1:分别列出每一行:SELECT empno,ename,job,mgr,comm from emp

    2:检索部分行:使用WHERE子句指定保留行数

    SELECT * FROM emp WHERE depyon = 10

    3:查找满足多个条件行使用WHERE子句以及OR和AND子句查找多个条件数据
    查找部门10中所有员工,所有得到提成员工以及部门20中工资不超过2000美金员工:
    dempton为10或者comm不为空,或者工资最多为2000而且deptno为20;

    SELECT * FROM emp WHERE depton =10 or comn is not null or sal<=2000 AND dempton=20
    SELECT * FROM emp WHERE (deptno='10' OR comm IS NOT NULL OR sql<=2000)AND deptno='20'

    4:表中检索部分列
    SELECT子句指定列保证不返回多余数据
    SELECT ename,deptno FROM emp;

    5:为列(起)取有意义名称:AS关键字可以查询到新取的名称,新名称就是别名
    SELECT `job` AS `jobect`,`sal` AS `sall`FROM `emp`;

    6:WHERE子句中引用取别名的列:
    SELECT `job` AS `jobect`,`sal` AS `sall`FROM `emp` WHERE `sal`>1500 ;

    7:连接列值;
    CLARK WORKS AS A MANAGER
    KING WORKS AS A PRESIDENT
    MILLER WORKS AS A CLERK
    要得到来自不同列数据
    SELECT ename,job FROM emp WHERE deptno='10';

    查找和使用DBMS提供内置函数,来连接来自不同列值 DB2,Oracle,PostgreSQL
    这些数据库使用双竖线作为连接运算符
    SELECT ename||’WORKS AS A '|| job AS msg FROM emp WHERE deptno='10';

    MYSQL: SELECT CONCAT (`ename`, 'WORKS AS A ', `job`)AS `mgr` FROM WHERE deptno='10';

    8:在SELECT语句中使用条件逻辑
    条件:要产生一个结果集,如果一个员工工资小于等于2000美金,就返回消息“UNDERPAID”如果大于
    等于4000美金就返回“OVERPAID”如果在两者之间返回“OK”
    SELECT ename,sal, CASE WHEN sal<=2000 THEN 'UNDERPAID' WHEN sal>=4000 THEN 'OVERPAID' ELSE 'OK' END AS STATUS FROM emp;

    9:限制返回行数
    限制返回行数,不关心顺序,返回任何n行都行
    SELECT * FROM emp LIMIT 5;

    10:在表中随机返回n条记录
    SELECT ename ,job FROM emp;

    使用DBMS支持内置函数来生成随机数值,在ORDER BY 子句中使用对该行进行随机排序,
    然后来限制所返回的行的数目。
    SELECT ename,job FROM emp ORDER BY RAND() LIMIT 5;

    11:查找空值
    查找某列为空的所有行
    SELECT * FROM emp WHERE comm is null;

    ***12: 将空值转换为实际值
    在一些行中包含空值,需要使用非空值代替这些空值(空值转换为非空值)
    SELECT coalesce(comm,0) FROM emp;
    SELECT CASE WHEN comm IS NULL THEN 2 ELSE comm END FROM emp;

    13:按模式搜索
    需要返回匹配特定子串或模式行,考虑查询和结果集
    SELECT ename,job FROM emp WHERE deptno in(10,20);

    条件:使用LIKE运算和sql通配符‘%’
    在部门10和部门20,需要返回名字中有一个‘I’或者职位(job title)中带有‘ER’的员工;
    SELECT `ename`,`job` FROM `emp` WHERE deptno IN (10,20) AND(ename LIKE '%I%' OR `job` LIKE '%ER%');

  • 相关阅读:
    zuanwenzhang
    win32 打印机api
    错误码linux
    sed的一个知识点
    linux 修改时区
    赵鹏雁?、、
    Linux下模块编译错误
    Android加速度传感器实现“摇一摇”,带手机振动 .
    Android百度地图基础实现(标记+GPS) .
    Android 中 getApplicationContext()、this、getApplication()之间的区别 .
  • 原文地址:https://www.cnblogs.com/123hll/p/6774958.html
Copyright © 2020-2023  润新知