mysql 的或表达式_MySQL表达式学习小结

在mysql数据库中,一个表达式是直接量、列名、运算符和函数的组合,然后得到一个值。

例如:

5-2

这是一个表达式;

LEFT('this',2)    也是一个表达式。

1,表达式别名

对于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;是错误的。

2,列指定表达式

列指定表达式是最常用的SELECT子表达式。列指定表达式指定从数据表里查出一列。

例如:

复制代码 代码示例:

SELECT columnname1 FROM tablename;

columnname1就是一个列指定表达式。

列指定表达式可以在列名前面加上表名,还可以加上数据库名。一个完整的列指定是:

database.table.column

3,用户变量表达式

用户变量表达式的格式为@加上变量名,如创建一个用户变量并初始化:

SET @AGE = 18

用户变量的类型派生自标量值的类型,上面的赋值为整数18,则变量的类型也为整型。

变量创建后可用于SELECT子句和其他子句中,如WHERE。

例如:

SELECT @AGE

将得到值18。

4,系统变量表达式

系统变量分为全局系统变量和会话系统变量。全局系统变量会影响到所有连接到MySQL服务器的用户,而系统全局变量仅影响当前的连接用户。系统变量以@@开始,跟变量名。

设置一个全局系统变量:

复制代码 代码示例:

SET @@GLOBAL.SQL_WARNINGS = TRUE

GLOBAL是全局系统变量的关键字。

设置一个会话系统变量:

复制代码 代码示例:

SET @@SESSION.SQL_SELECT_LIMIT = 10

SESSION是会话系统变量的关键字。

5,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的条件中。

6,函数表达式

函数表达式是一个函数,例如:

SELECT UCASE('database')

UCASE(database)是一个函数表达式。用于将字符串标量值转换成大写。

函数表达式也可以嵌套。一个函数表达式可以是另一个函数表达式的参数。

7,复合数值表达式

复合数值表达式就是数值的运算。例如:

SELECT 10*8

10*8是一个复合数值表达式。

其它的数值运算符还有:

*  乘法

/  除法

+  加法

-  减法

%  求余

DIV  除法并舍入

8,复合日期表达式

复合日期表达式是一个日期标量表达式与一个时间间隔量的运算。

比如一个日期标量表达式加上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 MONTH2010年1月31日加上一个月后的日期是2010年2月31日,由于2月份只有28天,所以结果会转化成2010年2月28日。

以上介绍MySQL表达式的相关知识,希望对大家有一定的帮助。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值