鼬先生*

导航

 
查询常量值: select 89 会透出以89段名的89
select `name`;
查询表达式: select 100*98;
查询函数;
select VERSION()‘:会透出mysql 的版本
字段名都是本身,所以可以为字段改名字,起别名:方便自己理解
select 100*98  AS 结果:
改名方式一:select name AS 姓氏  ,sex AS xingbie FROM 表名(方式二可以使用空格:select name +空格+ 姓氏 ,sex +空格+ FROM 表名;_
方式二可以使用空格:select name +空格+ 姓氏 ,sex +空格+ FROM 表名;
 
查询name显示结果为xing ming
select name AS xing ming FROM nn;    这时候会报错,因为别名中有空格
解决方法,把别名加个双/单引号:
 
 
8.去重
查询表中所有人的姓名:
不想出现重复的时候加个DISTINCT
 
 
9, +号的作用 :在sql中只有一个功能:运算符 
select 100+90 : 两个操作数都是数值型,则做加法运算
select "100"+90 : 其中一个为字符型,试图将字符型数值转换成数值型,如果转换成功则继续做加法运算,
 
select 'join' +90;如果转换失败,则将字符型数值转换成0
select null+0: 只要其中一方为Null, 则结果肯定为Null
 
select CONCAT('a','b','c') AS 结果;
 
案例:有的人有奖金,有的人没有奖金(就是NULL),这时候查询的字段,拼接后都会导致查询出来的所有人的奖金都是NULL,这时候咋办?
select IFNULL(表达式1,表达式2) AS 别名结果,表达式1 from 表名; 加个IFNULL进行判断,可以把奖金为NULL的人,展示为0,奖金有值的人,展示对应的值;
 
语法:select 
                    查询列表
           from 
                    表名
           where 
                    筛选条件;
 
分类:
 1) 按条件表达式筛选 : 条件运算符;< , > , = ,  <>,  >=, <=
2)按逻辑表达式筛选: 逻辑运算符: and or not  && | | !
3)模糊查询:like 
                    between and
                    in
                    is null
 
 1) 按条件表达式筛选
 案例1:查询工资>12000的员工信息: 
                 select 
                       * 
                 from 表名 
                 where 工资字段 >120000;
案例2:查询部门编号不封于90号的员工名和部门编号:
            select 
                     员工名
                     部门名
            from
                     表名
            where
                     部门号 <>90;
  1. 按逻辑表达式筛选
 
      && 和and :两个条件都为true ,结果为true,反之为false
      ||  和or:只要有一个条件为true, 结果为true,反之为false
      ! 或not :只要连接条件本身为false,结果为true.反之为false
 
案例1:查询工资再10000~20000之间的员工姓名,工资以及奖金
select 
        name
        salary
        commission
from
       表名
where
       salary >=10000 and salary<=20000;
 
案例2:查询部门编号不是再90到110之间,或者工资高于15000的员工信息
select 
        *
from 
      表名
where 
       deparment_id <90 or deparmant >110 or salary >15000;  
       #NOT( deparment_id >=90 and deparmant <=110 or salary >15000);
 
 
模糊查询:
   like 特点:一般和通配符一起使用
   #%  匹配任意多个字符包括0个字符
   #_ 下划线 匹配任意单个字符
  
案例1: 查询员工名中包含字符a的员工信息
select
        *
from
       表名
where
       name LIKE 'a%';
 
案例2:查询员工名中第三个字符为e,第五字符为a 的员工名和工资
select
      name
      salary
from
      表名
where 
      name like '__e_a%';
 
案例3: 查询员工名中第二个字符为_的员工名
select 
        name
from
        表名
where 
        name LIKE "_\_%"; (不能直接用下划线需要转义) 
        # name LIKE '_$_%' ESCAPE '$' 加ESCAPE后转义字符可以是任意的,推荐使用这个
 
 
between and
特点:
      #between and 可以提高简洁度
      #包含临界值
      #临界值不能调换顺序
案例1:差选员工编号在100 到120之间
select
        *
from
       表名
where 
        employee_id BETWEEN 100 AND 120;
 
 
in : 判断某字段的值是否属于In列表中的某一项
特点:
 1)使用in提高语句简洁度
 2)In列表的值类型必须统一或者兼容(不支持%,通配符)
select
       *
from
      表名
where
  iob_id in('a','b','c')
 
 
 
is NULL 和 is NOT NULL
select
         *
from
        表名
where 
     cpmmission is NULL
 
安全等于 <=> : 判断是否等于,是等于就是true
 
select
         *
from
        表名
where 
     cpmmission <=>null;
 
 
        比较: IS NULL :仅仅可以判断null值,可读性较高,建议使用
                   <=> : 既可以判断 NULL值,又可以判断普通的数值,可读性较低
 
posted on 2023-10-09 12:21  鼬先生*  阅读(28)  评论(0)    收藏  举报