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

一、常量与变量

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,并显示两个变量的值

SELECT  job,hiredate  INTO  @job_v,@hiredate_v

FROM  emp  WHERE  ename='SMITH';

#查看变量
SELECT  @job_v,@hiredate_v;

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

#定义变量并赋值

SET  @name='SCOTT';

#变量@name的调用

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中的字母字符全部转换成大写字母。

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

结果:

     4)删除空格函数

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

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

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

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

结果:

     5)取子串函数

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

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

#第一种写法
SELECT * FROM emp WHERE SUBSTRING(ename,1,1)='A';
#第二种写法
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

SELECT ename 姓名,
   CASE deptno
    WHEN  10  THEN  'ACCOUNTING'
    WHEN  20  THEN  'RESEARCH'
    WHEN  30  THEN  'SALES'
    WHEN  40  THEN  'OPERATIONS'
ELSE 'DESIGN'
   END  部门名称
  FROM  emp
  WHERE  ename='Alice';

6. 数据类型转换函数

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

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

结果:

发布了75 篇原创文章 · 获赞 164 · 访问量 11万+

猜你喜欢

转载自blog.csdn.net/qq_41679818/article/details/105628658