飞道的博客

数据库编程(常量与变量+常用系统函数)

451人阅读  评论(0)

一、常量与变量

1.常量

  1. 字符串常量 字符串常量指用单引号或双引号括起来的字符序列。在MySQL中推荐使用单引号
  2. 数值常量数值常量可以分为整数常量和小数常量。
  3. 日期和时间常量日期和时间常量使用特定格式的字符日期值表示,用单引号括起来。
  4. 布尔值常量布尔值只有true和false两个值,SQL命令运行结果用1代表true,用0代表false。
  5. NULL值:适用于各种字段类型,通常表示“不确定的值”,NULL值参与的运算,结果仍为NULL值。

【例3-1】查询表emp中ename值为SCOTT的雇员信息。 

SELECT  *  FROM  emp WHERE  ename='SCOTT';

【例3-2】将表emp中,SCOTT雇员的comm值改为1250(要求用科学记数法表示)。

UPDATE emp  SET  COMM=1.25E+3 WHERE ename='SCOTT';

【例3-3】查询表emp中1981年以后雇用员工的ename和hiredate信息。

SELECT ename,hiredate  FROM  emp WHERE  hiredate>'1981/12/31';

【例3-4】查询表emp中所有雇员的姓名ename和工资sal是否大于等于2000的判断结果。

SELECT  ename,sal>2000  FROM  emp;

2.变量

   1.局部变量

      (1)局部变量的定义与赋值

          SET  @局部变量名=表达式1

           [,@局部变量名=表达式2,……]

      (2)局部变量的显示

           SELECT  @局部变量名[,@局部变量名,……]

【例3-7】查询表emp中雇员'SMITH'的job和hiredate值赋给变量job_v、hiredate_v,并显示两个变量的值


  
  1. SELECT  job,hiredate  INTO  @job_v,@hiredate_v
  2. FROM  emp  WHERE  ename= 'SMITH';
  3. #查看变量
  4. SELECT  @job_v,@hiredate_v;

【例3-8】根据name变量所给的值查询指定员工的信息。


  
  1. #定义变量并赋值
  2. SET  @ name= 'SCOTT';
  3. #变量@name的调用
  4. SELECT  *  FROM  emp  WHERE  ename=@ name;

     2.全局变量

           全局变量是MySQL系统提供并赋值的变量。用户不能定义全局变量,只能使用。

 

二、常用系统函数

1.字符串函数

    1)计算字符串字符数的函数和字符串长度的函数

          CHAR_LENGTH(str)返回字符串str所包含的字符个数。

          LENGTH(str)返回值为字符串的字节长度。一个汉字是3个字节,一个数字或字母是1个字节。

SELECT  CHAR_LENGTH('中国') 字符数,LENGTH('中国') 字符串长度;

结果:

     2)合并字符串函数

           CONCAT(s1,s2,……)返回结果为连接参数产生的字符串,如果任何一个参数为NULL,则返回值为NULL。

【例3-11】示例。

SELECT CONCAT('MySQL版本:',@@version)  版本号;

结果:

     3)字符串大小写转换函数

          LOWER(str)是将字符串str中的字母字符全部转换成小写字母。

          UPPER(str)是将字符串str中的字母字符全部转换成大写字母。


  
  1. SET @ name= 'alice';
  2. SELECT * FROM emp WHERE UPPER(ename)= UPPER(@ name);

结果:

     4)删除空格函数

          LTRIM(str)返回删除前导空格的字符串str;

          RTRIM(str)返回删除尾部空格的字符串str;

          TRIM(str)返回删除两侧空格的字符串str。


  
  1. SET @ name= ' alice ';
  2. SELECT * FROM emp WHERE UPPER(ename)= TRIM( UPPER(@ name));

结果:

     5)取子串函数

          SUBSTRING(str,start,length)返回字符串str从start开始长度为length的子串。

  【例3-14】返回emp中ename值以'A'开头的雇员信息。


  
  1. #第一种写法
  2. SELECT * FROM emp WHERE SUBSTRING(ename, 1, 1)= 'A';
  3. #第二种写法
  4. SELECT * FROM emp WHERE ename LIKE 'A%';

结果:

2. 数学函数

      ABS(x)返回x的绝对值。

      PI()返回圆周率π的值。

      SQRT()返回非负数的二次方根。

      MOD (m,n)返回m被n除后的余数。

      ROUND(x,y)把x四舍五入到y指定的精度返回。如果y为负数,则将保留x值到小数点左边y位。

 

3. 日期和时间函数

      1)获取当前系统的日期及取日期的年、月、日函数

           CURDATE()返回当前系统日期,格式为'YYYY-MM-DD'。

           YEAR(d)、MONTH(d)、DAY(d)分别返回日期或日期时间d的年、月、日的值。

SELECT  CURDATE() 当前日期,YEAR(CURDATE()) 年,MONTH(CURDATE()月,DAY(CURDATE()) 日;

结果:

       2)获取当前系统日期时间函数

            CURRENT_TIMESTAMP()、LOCALTIME()、NOW()、SYSDATE()4个函数作用相同,均返回当前系统的日期时间,格式                    为'YYYY-MM-DD HH:MM:SS'。

4.系统信息函数

       USER()返回当前登录的用户名。

       DATABASE()返回当前使用数据库名。

       VERSION()返回MySQL服务器版本号。

SELECT  CONCAT('当前数据库:',DATABASE(),';用户:',USER()) AS 登录信息;

结果:

5. 条件控制函数

      1)IF()函数

           IF(条件表达式,v1,v2) 如果条件表达式是真则函数返回v1值,否则返回v2的值。

      2)CASE()函数

          CASE 表达式

            WHEN  v1  THEN  r1

            WHEN  v2  THEN  r2

             ……

           [ELSE   rn]

        END


  
  1. SELECT ename 姓名,
  2. CASE deptno
  3. WHEN 10 THEN 'ACCOUNTING'
  4. WHEN 20 THEN 'RESEARCH'
  5. WHEN 30 THEN 'SALES'
  6. WHEN 40 THEN 'OPERATIONS'
  7. ELSE 'DESIGN'
  8. END 部门名称
  9. FROM emp
  10. WHERE ename= 'Alice';

6. 数据类型转换函数

        CAST(x  AS 新类型 )、CONVERT(x  新类型)2个函数作用相同,将一个类型的值转换为另一种类型的值。


  
  1. SELECT ename,sal INTO @empname,@salary FROM emp WHERE ename= 'Alice';
  2. SELECT CONCAT(@empname, '的工资是',
  3. CAST(@salary AS CHAR( 7))) 信息;

结果:

 


转载:https://blog.csdn.net/qq_41679818/article/details/105628658
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场