文章目录

  • MySQL编程基础
    • 常量与变量
      • 常量
        • 字符串常量
        • 数值常量
        • 日期和时间常量
        • 布尔值常量
        • NULL值
      • 变量
        • 局部变量
        • 全局变量
    • 常用系统函数
      • 字符串函数
        • 计算字符串字符数和长度
        • 合并字符串
        • 字符串大小写转换
        • 删除空格
        • 取子串
      • 数学函数
      • 日期和时间函数
        • 获取当前系统的日期及取日期的年月日
        • 获取当前系统的日期时间
      • 系统信息函数
      • 条件控制函数
        • IF
        • CASE
      • 数据类型转换函数

MySQL编程基础

常量与变量

常量

字符串常量

字符串常量指用单引号或双引号括起来的字符序列。在MySQL中推荐使用单引号。

mysql> SELECT * FROM products WHERE prod_id='BR01';
+----+---------+-------------------+------------+
| id | prod_id | prod_name         | prod_price |
+----+---------+-------------------+------------+
|  4 | BR01    | 8 inch teddy bear |       5.99 |
+----+---------+-------------------+------------+
1 row in set (0.00 sec)考虑下面的SQL命令为什么没有输出mysql> SELECT * FROM products WHERE 'prod_id'='BR01';
Empty set (0.04 sec)

数值常量

数值常量可以分为整数常量和小数常量

将产品编号为BR03的产品价格改为1250(用科学计数法表示)
mysql> UPDATE products SET prod_price=1.25E+3 WHERE prod_id='BR03';
Query OK, 1 row affected (0.14 sec)
Rows matched: 1  Changed: 1  Warnings: 0mysql> SELECT * FROM products WHERE prod_id='BR03';
+----+---------+--------------------+------------+
| id | prod_id | prod_name          | prod_price |
+----+---------+--------------------+------------+
|  6 | BR03    | 18 inch teddy bear |    1250.00 |
+----+---------+--------------------+------------+
1 row in set (0.00 sec)

日期和时间常量

新增一列为产品生产日期,默认值为’2022-04-02 12:00:00’

对数值稍作修改

查询生产日期大于’2022-04-02 13:30:00’的产品

mysql> SELECT * FROM products WHERE prod_date>'2022-04-02 13:30:00';
+----+---------+-------------+------------+---------------------+
| id | prod_id | prod_name   | prod_price | prod_date           |
+----+---------+-------------+------------+---------------------+
|  8 | RYL01   | King doll   |       9.99 | 2022-04-03 12:00:00 |
|  9 | RYL02   | Queen dool  |       9.99 | 2022-04-03 12:00:00 |
| 19 | MR01    | toy dog     |       5.00 | 2022-04-03 12:00:00 |
| 23 | MR02    | toy dog     |       2.00 | 2022-04-03 12:00:00 |
+----+---------+-------------+------------+---------------------+
4 rows in set (0.00 sec)

布尔值常量

查询产品价格是否大于7的返回结果

mysql> SELECT prod_name,prod_price>7 FROM products;
+---------------------+--------------+
| prod_name           | prod_price>7 |
+---------------------+--------------+
| Fish bean bag toy   |            0 |
| Bird bean bag toy   |            0 |
| Rabbit bean bag toy |            0 |
| 8 inch teddy bear   |            0 |
| 12 inch teddy bear  |            1 |
| 18 inch teddy bear  |            1 |
| Raggedy Ann         |            0 |
| King doll           |            1 |
| Queen dool          |            1 |
| toy dog             |            0 |
| toy dog             |            0 |
+---------------------+--------------+
11 rows in set (0.00 sec)

NULL值

新增一行产品价格为空的信息

mysql> SELECT * FROM products WHERE prod_id='MR03';
+----+---------+-----------+------------+---------------------+
| id | prod_id | prod_name | prod_price | prod_date           |
+----+---------+-----------+------------+---------------------+
| 12 | MR03    | NULL      |       NULL | 2022-04-02 12:00:00 |
+----+---------+-----------+------------+---------------------+
1 row in set (0.00 sec)

给为NULL的产品价格加10会返回什么?
给为1250的产品价格加NULL会返回什么?

mysql> UPDATE products SET prod_price=prod_price+10 WHERE prod_id='MR03';
Query OK, 0 rows affected (0.04 sec)
Rows matched: 1  Changed: 0  Warnings: 0mysql> SELECT * FROM products WHERE prod_id='MR03';
+----+---------+-----------+------------+---------------------+
| id | prod_id | prod_name | prod_price | prod_date           |
+----+---------+-----------+------------+---------------------+
| 12 | MR03    | NULL      |       NULL | 2022-04-02 12:00:00 |
+----+---------+-----------+------------+---------------------+
1 row in set (0.00 sec)mysql> UPDATE products SET prod_price=prod_price+NULL WHERE prod_price=1250;
Query OK, 1 row affected (0.07 sec)
Rows matched: 1  Changed: 1  Warnings: 0mysql> SELECT * FROM products WHERE prod_id='BR03';
+----+---------+--------------------+------------+---------------------+
| id | prod_id | prod_name          | prod_price | prod_date           |
+----+---------+--------------------+------------+---------------------+
|  6 | BR03    | 18 inch teddy bear |       NULL | 2022-04-02 12:00:00 |
+----+---------+--------------------+------------+---------------------+
1 row in set (0.00 sec)

可以看到NULL+10=NULL;1250+NULL=NULL;

变量

局部变量

查询产品编号为BR01的产品价格并赋值给变量price

mysql> SET @price=(SELECT prod_price FROM products WHERE prod_id='BR01');
Query OK, 0 rows affected (0.04 sec)mysql> SELECT @price;
+--------+
| @price |
+--------+
|   5.99 |
+--------+
1 row in set (0.03 sec)

查询产品编号为BR02的产品名称和产品价格并分别赋值给name_v和price_v

mysql> SELECT prod_name,prod_price INTO @name_v,@price_v FROM products WHERE prod_id='BR02';
Query OK, 1 row affected (0.00 sec)mysql> SELECT @name_v,@price_v;
+--------------------+----------+
| @name_v            | @price_v |
+--------------------+----------+
| 12 inch teddy bear |     8.99 |
+--------------------+----------+
1 row in set (0.00 sec)

根据变量所给的值查询指定产品的信息

mysql> SET @p_id='BR03';
Query OK, 0 rows affected (0.00 sec)mysql> SELECT * FROM products WHERE prod_id=@p_id;
+----+---------+--------------------+------------+---------------------+
| id | prod_id | prod_name          | prod_price | prod_date           |
+----+---------+--------------------+------------+---------------------+
|  6 | BR03    | 18 inch teddy bear |       NULL | 2022-04-02 12:00:00 |
+----+---------+--------------------+------------+---------------------+
1 row in set (0.00 sec)

全局变量

mysql> SELECT @@back_log;  /*返回MySQL主要连接请求的数量*/
+------------+
| @@back_log |
+------------+
|        151 |
+------------+
1 row in set (0.00 sec)mysql> SELECT @@basedir;  /*返回MySQL安装基准目录*/
+-----------+
| @@basedir |
+-----------+
| D:\MySQL\ |
+-----------+
1 row in set (0.00 sec)mysql> SELECT @@license;  /*返回服务器的许可类型*/
+-----------+
| @@license |
+-----------+
| GPL       |
+-----------+
1 row in set (0.00 sec)mysql> SELECT @@port;  /*返回服务器侦听TCP/IP连接所用的端口*/
+--------+
| @@port |
+--------+
|   3306 |
+--------+
1 row in set (0.00 sec)mysql> SELECT @@version;  /*返回服务器版本号*/
+-----------+
| @@version |
+-----------+
| 8.0.19    |
+-----------+
1 row in set (0.00 sec)

查看所有的全局变量

mysql> SHOW GLOBAL VARIABLES;

会返回很多信息,建议模糊查找,比如

mysql> SHOW GLOBAL VARIABLES LIKE 'sto%';
+---------------------------------+-------+
| Variable_name                   | Value |
+---------------------------------+-------+
| stored_program_cache            | 256   |
| stored_program_definition_cache | 256   |
+---------------------------------+-------+
2 rows in set, 1 warning (0.00 sec)

常用系统函数

字符串函数

计算字符串字符数和长度

CHAR_LENGTH:返回字符串所包含的字符个数
LENGTH:返回字符串的字节长度,一个汉字3个字节,一个数字或字母是一个字节

mysql> SELECT CHAR_LENGTH('mysql');
+----------------------+
| CHAR_LENGTH('mysql') |
+----------------------+
|                    5 |
+----------------------+
1 row in set (0.04 sec)mysql> SELECT LENGTH('mysql');
+-----------------+
| LENGTH('mysql') |
+-----------------+
|               5 |
+-----------------+
1 row in set (0.00 sec)mysql> SELECT CHAR_LENGTH('汉字');
+-----------------------+
| CHAR_LENGTH('汉字')   |
+-----------------------+
|                     2 |
+-----------------------+
1 row in set (0.00 sec)mysql> SELECT LENGTH('汉字');
+------------------+
| LENGTH('汉字')   |
+------------------+
|                6 |
+------------------+
1 row in set (0.00 sec)

合并字符串

mysql> SELECT CONCAT('MySQL版本:',@@version) 版本信息;
+--------------------+
| 版本信息           |
+--------------------+
| MySQL版本:8.0.19   |
+--------------------+
1 row in set (0.00 sec)

字符串大小写转换

mysql> SELECT LOWER(@str1) 转换为小写,UPPER(@str1) 转换为大写;
+-----------------+-----------------+
| 转换为小写      | 转换为大写      |
+-----------------+-----------------+
| mysql           | MYSQL           |
+-----------------+-----------------+

删除空格

只能删除前后空格,不能删除字符串中间的空格

mysql> SET @str1=' MySQL ';
mysql> SELECT LTRIM(@str1) 删除前导空格,RTRIM(@str1) 删除尾部空格,TRIM(@str1) 删除两侧空格;
+--------------------+--------------------+--------------------+
| 删除前导空格       | 删除尾部空格       | 删除两侧空格       |
+--------------------+--------------------+--------------------+
| MySQL              |  MySQL             | MySQL              |
+--------------------+--------------------+--------------------+

取子串

SUBSTRING(str,start,length)

首字母为M的产品编号
mysql> SELECT * FROM products WHERE SUBSTRING(prod_id,1,1)='M';
+----+---------+-----------+------------+---------------------+
| id | prod_id | prod_name | prod_price | prod_date           |
+----+---------+-----------+------------+---------------------+
| 10 | MR01    | toy dog   |       5.00 | 2022-04-03 12:00:00 |
| 11 | MR02    | toy dog   |       2.00 | 2022-04-03 12:00:00 |
| 12 | MR03    | NULL      |       NULL | 2022-04-02 12:00:00 |
+----+---------+-----------+------------+---------------------+第四个字符为3的产品编号
mysql> SELECT * FROM products WHERE SUBSTRING(prod_id,4,1)='3';
+----+---------+--------------------+------------+---------------------+
| id | prod_id | prod_name          | prod_price | prod_date           |
+----+---------+--------------------+------------+---------------------+
|  6 | BR03    | 18 inch teddy bear |       NULL | 2022-04-02 12:00:00 |
| 12 | MR03    | NULL               |       NULL | 2022-04-02 12:00:00 |
+----+---------+--------------------+------------+---------------------+

数学函数

mysql> SELECT ABS(-1) 绝对值,PI() AS π,SQRT(9) AS 平方根,MOD(9,4) AS 余数,ROUND(2.568,2) AS 四舍五入保留2位小数;
+-----------+----------+-----------+--------+------------------------------+
| 绝对值    | π        | 平方根    | 余数   | 四舍五入保留2位小数          |
+-----------+----------+-----------+--------+------------------------------+
|         1 | 3.141593 |         3 |      1 |                         2.57 |
+-----------+----------+-----------+--------+------------------------------+

日期和时间函数

获取当前系统的日期及取日期的年月日

CURDATE():返回当前系统日期
YEAR(d)、MONTH(d)、DAY(d):分别返回日期或日期时间d的年月日的值

mysql> SET @d=CURDATE();
Query OK, 0 rows affected (0.00 sec)mysql> SELECT @d,YEAR(@d),MONTH(@d),DAY(@d);
+------------+----------+-----------+---------+
| @d         | YEAR(@d) | MONTH(@d) | DAY(@d) |
+------------+----------+-----------+---------+
| 2022-04-03 |     2022 |         4 |       3 |
+------------+----------+-----------+---------+

查询产品生产日期距今几天(也可以是几年)

mysql> SELECT prod_name 产品名称,DAY(CURDATE())-DAY(prod_date) 距今几日 FROM products;
+---------------------+--------------+
| 产品名称            | 距今几日     |
+---------------------+--------------+
| Fish bean bag toy   |            2 |
| Bird bean bag toy   |            2 |
| Rabbit bean bag toy |            2 |
| 8 inch teddy bear   |            1 |
| 12 inch teddy bear  |            1 |
| 18 inch teddy bear  |            1 |
| Raggedy Ann         |            1 |
| King doll           |            0 |
| Queen dool          |            0 |
| toy dog             |            0 |
| toy dog             |            0 |
| NULL                |            1 |
+---------------------+--------------+

获取当前系统的日期时间

mysql> SELECT CURRENT_TIMESTAMP(),LOCALTIME(),NOW(),SYSDATE();
+---------------------+---------------------+---------------------+---------------------+
| CURRENT_TIMESTAMP() | LOCALTIME()         | NOW()               | SYSDATE()           |
+---------------------+---------------------+---------------------+---------------------+
| 2022-04-03 21:42:10 | 2022-04-03 21:42:10 | 2022-04-03 21:42:10 | 2022-04-03 21:42:10 |
+---------------------+---------------------+---------------------+---------------------+

系统信息函数

mysql> SELECT USER() AS 用户,DATABASE() AS 当前数据库;
+----------------+-----------------+
| 用户           | 当前数据库      |
+----------------+-----------------+
| root@localhost | learn           |
+----------------+-----------------+

条件控制函数

IF

返回前6条记录,如果产品价格为NULL时显示0,否则显示当前字段值。

mysql> SELECT prod_id 产品编号,IF(prod_price IS NULL,0,prod_price) 产品价格 FROM products LIMIT 6;
+--------------+--------------+
| 产品编号     | 产品价格     |
+--------------+--------------+
| BNBG01       |         3.49 |
| BNBG02       |         3.49 |
| BNBG03       |         3.49 |
| BR01         |         5.99 |
| BR02         |         8.99 |
| BR03         |            0 |
+--------------+--------------+

CASE

如果产品价格小于5元,为便宜,否则为贵;

mysql> SELECT prod_id 产品编号,prod_price 产品价格,-> CASE-> WHEN prod_price < 5 THEN '便宜'-> ELSE '贵'-> END 价格类型-> FROM products;
+--------------+--------------+--------------+
| 产品编号     | 产品价格     | 价格类型     |
+--------------+--------------+--------------+
| BNBG01       |         3.49 | 便宜         |
| BNBG02       |         3.49 | 便宜         |
| BNBG03       |         3.49 | 便宜         |
| BR01         |         5.99 | 贵           |
| BR02         |         8.99 | 贵           |
| BR03         |         9.00 | 贵           |
| RGAN01       |         4.99 | 便宜         |
| RYL01        |         9.99 | 贵           |
| RYL02        |         9.99 | 贵           |
| MR01         |         5.00 | 贵           |
| MR02         |         2.00 | 便宜         |
| MR03         |         5.00 | 贵           |
+--------------+--------------+--------------+
12 rows in set (0.00 sec)

数据类型转换函数

CAST(x AS 新类型)
CONVERT(x 新类型)

mysql> SELECT prod_name,prod_price INTO @name,@price FROM products WHERE prod_id='BR02';
Query OK, 1 row affected (0.00 sec)mysql> SELECT CONCAT(@name,'的价格是',CAST(@price AS CHAR(7))) 信息;
+------------------------------------+
| 信息                               |
+------------------------------------+
| 12 inch teddy bear的价格是8.99     |
+------------------------------------+

MySQL数据库编程01相关推荐

  1. mysql 数据库编程_MySQL数据库编程(C++语言)

    MySQL数据库编程(C++语言) 发布时间:2018-05-24 21:06, 浏览次数:452 , 标签: MySQL 本文主要介绍使用C++语言连接和操作 MySQL 数据库的方法. 1. 准备 ...

  2. 有关数据库MySQL的演讲_有关Mysql数据库编程的文章推荐10篇

    在Python网络爬虫中,通常是通过TXT纯文本方式存储,其实也是可以存储在数据库中的:同时在WAMP(Windows.Apache.MySQL.PHP或Python)开发网站中,也可以通过Pytho ...

  3. mysql数据库编程题题_mysql数据库编程题测试

    <mysql数据库编程题测试>由会员分享,可在线阅读,更多相关<mysql数据库编程题测试(3页珍藏版)>请在人人文库网上搜索. 1.1.自行创建测试数据2.查询"生 ...

  4. MySql数据库练习01

    MySQL数据库练习01 题目描述: 现在设计 商品销售体统,包含以下内容 一. 创建表 1.会员表:用于记录会员信息,包含 会员表 字段名称 含义 说明 vipId 会员编号 主键 vipname ...

  5. 使用C语言调用mysql数据库编程实战以及技巧

    今天编写使用C语言调用mysql数据库编程实战以及技巧,为其他IT同行作为参考,当然有错误可以留言,共同学习. 一.mysql数据库的C语言常用接口API 1.首先当然是链接数据库mysql_real ...

  6. MySQL数据库实训题_实训六 MySql数据库编程练习

    实训六MySql数据库编程练习 一.实训目的 1.掌握Mysql数据库.Navicat  for Mysql等软件的安装配置方法. 2.掌握使用JDBC驱动程序连接MySql数据库的使用方法. 3.掌 ...

  7. C语言连接MySQL数据库编程教程:超详细

    ** C语言连接MySQL数据库编程教程 ** 一.下载安装mysql.h库文件 我们使用的编译器一般为VC6.0或者VS,默认的都是32位编译器,所以我们下载的库文件也直接下载32位的就可以.下面附 ...

  8. [python学习] 专题九.Mysql数据库编程基础知识

    在Python网络爬虫中,通常是通过TXT纯文本方式存储,其实也是可以存储在数据库中的:同时在WAMP(Windows.Apache.MySQL.PHP或Python)开发网站中,也可以通过Pytho ...

  9. java mysql数据库编程_java JDBC数据库(mysql)编程

    什么是JDBC • JDBC(Java Data Base Connectivity,Java数据库连接) • 是一种用于执行SQL语句的Java API,为多种关系数据库提供统一访问 • 它由一组用 ...

最新文章

  1. 【数字信号处理】线性常系数差分方程 ( “ 线性常系数差分方程 “ 与 “ 线性时不变系统 “ 关联 | 根据 “ 线性常系数差分方程 “ 与 “ 边界条件 “ 确定系统是否是 线性时不变系统方法 )
  2. 面试官让我讲讲Java中的锁,我笑了
  3. C++学习之路 | PTA乙级—— 1083 是否存在相等的差 (20 分)(精简)
  4. 分布式应用CAP理论
  5. java中的holder类_java – HashMap中Holder类的用途是什么?
  6. 全球金融科技发明专利排行榜(TOP20)
  7. 02-linux安装nodejs
  8. CrateDB 3.2.4 发布,大规模可伸缩的数据存储系统
  9. vscode终端中文乱码问题的解决方案合集c++
  10. wincc与第三方软件opc通讯_运用OPC实现WinCC与西门子SIMOTION的通讯
  11. word用宏设置图片的大小
  12. CKEditor与CKFinder学习--安全的使用CKFinder与权限控制
  13. 绫辻行人《杀人偶人馆》读后感
  14. 波浪数,51nod1788,根号分治+Meet in the Middle
  15. L1-009 N个数求和 (20 分)(C语言)(测试点3和测试点5)
  16. Intel 处理器模型
  17. SEVERE: Error configuring application listener of
  18. uniapp文字穿插表情消息处理
  19. python浮点数整数、小数分离,整数取整
  20. Gradle不能加载依赖包的问题

热门文章

  1. Java学生信息管理系统——管理员登录模块(简单易上手)
  2. 双非计算机专业考研失败总结
  3. 系统的简单注解 - 12 09_font.asm
  4. 修复iPhone X 开机卡白苹果导致无法开机的问题
  5. 【0基础学java】教学日志:javaSE-面向对象6-面向对象前4章上机作业点评,主要涉及继承、封装、多态三个章节的内容
  6. 使用字符映射完成简单的对称加密
  7. 浏览器类应用后台耗电解析 教你三招让手机更省电!
  8. Millionaire Dream
  9. NOJ 1116 哈罗哈的大披萨 【淡蓝】 [状压dp+各种优化]
  10. Zuul动态路由及动态Filter实现