设为首页 收藏本站
查看: 517|回复: 0

[经验分享] (MySQL笔记)MySQL表达式

[复制链接]

尚未签到

发表于 2016-9-6 06:00:22 | 显示全部楼层 |阅读模式
  
  (MySQL笔记)MySQL表达式
上一篇:(MySQL笔记)MySQL数据类型
 
    一个表达式是直接量、列名、运算符和函数的组合,然后得到一个值。比如:
    5-2
    这是一个表达式;
    LEFT('this',2)
    也是一个表达式。
 
表达式别名
 
    对于SELECT查询语句,MySQL必须为每个SELECT子表达式分配一个名字,这个名字叫做列标题。如果子表达式是一列,那么列名就是列标题,如果子表达式是一个表达式,那么列标题就是这个表达式。如:
  
  
SELECT column1,salary*2 FROM tablename;

 
    那么列标题就是column1和salary*2。
 
    可以为子表达式指定一个列标题,如下:
   
SELECT column1,salary*2 AS double FROM tablename;

 
    那么列标题变成了column1和double。
 
    有一种情况必须指定列标题,就是在order和group by子句中用到了子表达式的。如:
 
SELECT column1,salary*2 AS double FROM tablename ORDER BY double;

 
    而不能写成   
SELECT column1,salary*2 FROM tablename ORDER BY salary*2;

 
    指定的列标题不能出现在同一条SELECT子句中,如:
   
SELECT column1,salary*2 AS double,double+2 FROM tablename;

是错误的
 
列指定表达式
 
列指定表达式是最常用的SELECT子表达式。列指定表达式指定从数据表里查出一列。如:
   
SELECT columnname1 FROM tablename;

 
    columnname1就是一个列指定表达式。
    列指定表达式可以在列名前面加上表名,还可以加上数据库名。一个完整的列指定是:
    database.table.column
 
用户变量表达式
 
    用户变量表达式的格式为@加上变量名,如创建一个用户变量并初始化:
   
SET @AGE = 18

 
    用户变量的类型派生自标量值的类型,上面的赋值为整数18,则变量的类型也为整型。
    变量创建后可用于SELECT子句和其他子句中,如WHERE。如:
   
SELECT @AGE

 
    将得到值18。
 
系统变量表达式
 
    系统变量分为全局系统变量和会话系统变量。全局系统变量会影响到所有连接到MySQL服务器的用户,而系统全局变量仅影响当前的连接用户。系统变量以@@开始,跟变量名。
    设置一个全局系统变量:
   
SET @@GLOBAL.SQL_WARNINGS = TRUE

 
    GLOBAL是全局系统变量的关键字。
    设置一个会话系统变量:
   
SET @@SESSION.SQL_SELECT_LIMIT = 10

 
    SESSION是会话系统变量的关键字。
 
CASE表达式
 
    CASE是一个条件表达式,类似于变成预言的IF-ELSE。CASE表达式用于如下情况:
    比如有一张学生表(student),里面的行存放的是每一个学生的信息,有一列是sex,存放的是学生的性别。存数据的时候是M代表男,F代表女。但是我想查出来的结果是:如果是男的就显示“男”,如果是女的就显示“女”怎么办呢?

SELECT CASE sex
           WHEN 'M' THEN '男'
           ELSE '女'
       END
       AS sex
FROM student;








 
CASE表达式的格式为:
CASE 待检测值
  WHEN 条件1 THEN 值1
  WHEN 条件2 THEN 值2
  ELSE 值3
END
 
CASE表达式还可以嵌套,嵌套针对的是需要对两列进行判断的情况下。比如除了对性别判断外,还需要对成绩(score)进行判断:

SELECT CASE sex
         WHEN 'M' THEN
           CASE score
             WHEN 100 THEN '男一百分'
             WHEN 0 THEN '男零分'
             ELSE '男普通'
           END
         WHEN 'F' THEN
           CASE score
             WHEN 100 THEN '女一百分'
             WHEN 0 THEN '女零分'
             ELSE '女普通'
           END
        END
FROM student


    CASE表达式还可以将待检测值放入WHEN的条件中。
 
函数表达式
 
    函数表达式是一个函数,如:
   
SELECT UCASE('database')

    UCASE(database)是一个函数表达式。用于将字符串标量值转换成大写。
    函数表达式也可以嵌套。一个函数表达式可以是另一个函数表达式的参数。
 
复合数值表达式
 
    复合数值表达式就是数值的运算。如:
   
SELECT 10*8

 
    10*8是一个复合数值表达式。
    其它的数值运算符还有:
    *  乘法
    /  除法
    +  加法
    -  减法
    %  求余
    DIV  除法并舍入
 
复合日期表达式
 
    复合日期表达式是一个日期标量表达式与一个时间间隔量的运算。比如一个日期标量表达式加上10天。
   
SELECT '1990-10-12' + INTERVAL 10 DAY

 
    '1990-10-12' + INTERVAL 10 DAY 是一个复合日期表达式。INTERVAL 10 DAY 是一个日期间隔量,表示10天,其它类似还有:
    INTERVAL 10 YEAR  表示10年
    INTERVAL 10 MONTH  表示10个月
    INTERVAL 10 WEEK  表示10星期
    INTERVAL 10 DAY  表示10天
   
    当一个日期加上一个几天的日期间隔量时,这个日期会先转换为一个从0年开始的一个天数的顺序号,然后这个顺序号加上天数的日期间隔量,然后再转换成日期。
当一个日期加上一个几月的日期间隔量时,月份会直接加上月数的日期间隔量,如果新生成的日期不存在,则向下舍入到相应月份的上一日期。如:
   
SELECT '2010-01-31' + INTERVAL 1 MONTH

 
    2010年1月31日加上一个月后的日期是2010年2月31日,由于2月份只有28天,所以结果会转化成2010年2月28日。
 
 








 

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-268096-1-1.html 上篇帖子: 阿里云RDS-MYSQL数据库参数设置 下篇帖子: mysql join
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表