mysql学习笔记(二)

  • 模糊查询:like,需要占位符或者通配符。占位符包括:
    下划线_,表示某个数字或字符仅出现一次。
    %百分号,任意字符出现任意次数。
    --查询名字以S开头的用户
    select * from emp where ename like('S%');
    --查询名字以S开头且倒数第二个字符为T的用户
    select * from emp where ename like('S%T_');
    注意:使用like时候要慎重,like效率比较低。
    
  • escape,使用转义字符,可以自定义转义字符。
    --查询名字中带有%的用户
    select * from emp where ename like('%\%%') escape('\');
    like注意事项:
    1.不能过度使用通配符,如果其他操作符额能达到目的,就不要使用通配符。
    2.确实需要使用通配符时,除非绝对必要,否则不要把通配符用到搜索模式最开始处,因为这样是最慢的。如'%A%','_A%'
    
  • order by :进行排序操作
    asc是默认的排序方式,表示升序。
    desc表示降序。数值排序按照大小,字符串排序按照字典序。
    在排序时可指定多个字段,且多个字段可使用不同的排序方式。
    select * from emp order by sal asc, ename desc;
    每次执行orderby相当于做全排序,比较耗费系统资源,因此选择在业务不繁忙的时候进行。
    
  • 创建计算字段:
    我们经常需要直接从数据库中检索出转换、计算或者格式化过的数据,而不是检索出数据,然后再重新格式化。
    计算字段并不实际存在于数据库表。
    sql中允许select子句出现+-*/以及列名和常熟的表达式。
    拼接字段(|| +):首选||来作为拼接字段(MySQL中||表示or,一般用concat());
    --使用计算字段,字符串连接符来连接,有两种方式:
    select 'my name is' || ename name from emp;
    select concat('my name is',ename) name from emp;
    --计算所有员工的年薪
    select ename,(e.sal+e.comm)*12 from emp e;//绩效加基本工资*12,如果没有绩效的为NULL。
    --NULL是比较特殊的,null做任何运算都还是null,因此要进行转换。
    引入nvl,nvl(a1,a2),如果a1为空则返回a2,不为空则返回a1;
    select ename,(e.sal+nvl(e.comm,0))*12 from emp e;
    
  • sql中允许列值为空,空值用保留字NULL表示。NULL不同于数字0或者空格,它就是代表了一个不确定的内容。任何含有NULL值的数学表达式最后的结果都为空值。
    select ename,sal,comm,(sal * 12)+comm "income" from emp;//此时有的员工没有绩效的员工则comm为NULL,结果为空值,可转换为具体的值。
    --可以通过函数将NULL转换成一个确切的值
    select ename,comm,nvl(comm,0) from emp;
    select ename,sal,comm,(sal*12) +nvl(comm,0) "income" from emp;
    

posted on 2022-05-15 17:11  张少凯  阅读(54)  评论(0编辑  收藏  举报

导航