当前位置: 首页 > news >正文

9-mysql编程

MySQL编程基础

SQL语言概述

分类名称用途代表关键字
DDL (Data Definition Language)数据定义语言用来定义数据库、表及其它对象的结构CREATE、DROP、ALTER、TRUNCATE
DML (Data Manipulation Language)数据操作语言用来增加、修改、删除表中的数据INSERT、DELETE、UPDATE
DQL (Data Query Language)数据查询语言用来查询表中的数据SELECT、FROM、WHERE、ORDER BY 、GROUP BY、HAVING
DCL (Data Control Language)数据控制语言用来授予和收回权限GRANT、REVOKE
TCL (Transaction Control Language)事务处理语言用来对数据进行提交和回滚COMMIT、ROLLBACK

标识符命名规则

标识符用来命名一些对象,如数据库、表、列、变量等,以便在脚本中的其他地方引用。MySQL标识符里的合法字符如下:

  • 不加引号的标识符必须是由系统字符集中的字母和数字,再加上“_”和“$”字符组成。
  • 不加引号的标识符不允许完全由数字字符构成(因为这样难以和数值进行区分)。
  • 第一个字符可以是满足以上条件的任何一个字符(包括数字)。

说明:

MySQL关键词、列名、索引名、变量名、常量名、函数名、存储过程名等不区分大小写,但数据库名、表名、视图名则跟操作系统有关(Windows不区分、UNIX区分)。
以特殊字符@@、@开头的标识符一般用于系统变量和用户变量。
不符合规则的符号如果需要用于标识符,可以用反引号(``)括起来后使用。

由于MySQL标识符命名规则稍微有点繁琐,这里我们推荐使用万能命名规则:标识符由字母、数字或下划线(_)组成,且第一个字符必须是字母或下划线。

变量

变量是程序运行中可以改变值(状态)的命名存储区。变量存储数据值,并可在语句之间传递数据值。

MySQL变量分为:系统变量、用户变量、局部变量(仅在函数、存储过程、触发器等中使用)。

  • 分类

    • 系统变量

      • 介绍
        • MySQL系统变量是由MySQL系统本身创建,用于记录系统的各种设定值,可以直接使用。
          • 系统变量在MySQL服务器启动时被创建并初始化为默认值。
          • 用户只能使用系统预定义的系统变量,不能创建系统变量。
          • 多数系统变量名称以@@开头(为了兼容其他系统,也有部分使用时需要省略@@的)。
          • 输出系统变量使用SELECT语句,其语法格式如下:
            SELECT <系统变量名>[, …]
      • MySQL常用系统变量

      在这里插入图片描述

      • 示例

        • 示例一:

        在这里插入图片描述

        • 示例二:

        在这里插入图片描述

        • 示例三:

        在这里插入图片描述

    • 用户变量

      • 介绍

        MySQL用户变量是由用户创建、其作用域限制在用户连接(会话)中的变量。不同用户会话中的用户变量相互不受影响,用户变量必须以@开头。其语法格式如下:
        SET <@用户变量名> = <表达式>[, …]

      • 说明:

        • 用户变量通过SET语句以初始化的方式创建,用户变量的类型也是通过初始化自动分配(即用户变量无需使用DECLARE语句进行定义)。
        • <用户变量名>必须以@开头,并符合标识符的命名规则。
        • 用户变量定义并初始化或者赋值后,可以在需要时使用(引用)用户变量。
        • 输出用户变量使用SELECT语句,其语法格式如下:
          SELECT <@用户变量名>[, …]
      • 示例

        • 示例一:

        在这里插入图片描述

        • 示例二:

        在这里插入图片描述

    • 局部变量

      • 介绍:

      MySQL局部变量存在于函数、存储过程和触发器等中,由用户创建、且必须使用DECLARE语句定义后才能使用的变量。

      • 定义变量:

        使用DECLARE语句可以定义变量。其语法格式如下:

        DECLARE <变量名> [,] <数据类型> [DEFAULT 默认值]

        说明:可以同时定义多个变量,变量名之间用逗号隔开;也可以设置变量的默认值,如果没有设置,则默认值为

        示例:

        DECLARE myVar INT DEFAULT 10;
        
      • 给变量赋值

        使用SET语句可以给变量赋值。其语法格式如下:

        SET <变量名1> = <赋值表达式1> [, <变量名2> = <赋值表达式2> ,]
        

        说明:可以同时为多个变量赋值,各个变量的赋值语句之间用逗号隔开。

        示例:

        -- 为变量myVar赋值为30。SET myVar = 30;
        

运算符

算术运算符

  • 介绍

    • 算术运算符是MySQL中最常用的一类运算符。
    • 算术运算符主要包括:+、-、*、/、DIV、%或MOD。
      • /和DIV表示两个数相除求商,其中DIV是整除。
      • %或者MOD表示两个数相除求余数。
      • 算术运算符可以用于任何数字类型(整型、实数型)数的运算。
      • +、- 还可以用于日期时间型数的运算。
  • 示例

    • 示例一:

    在这里插入图片描述

    • 示例二:

    在这里插入图片描述

比较运算符

  • 介绍

    • 比较运算符是查询数据时最常用的一类运算符。SELECT语句中的条件语句经常要使用比较运算符。通过这些比较运算符,可以判断表中的哪些记录是符合条件的。
    • 比较运算符主要包括:=、<=>、!=或<>、>、>=、<、<=、IS NULL、IS NOT NULL、IN、NOT IN、LIKE、NOT LIKE、BETWEEN AND。
  • 示例:

    • 查询成绩表(soce),显示成绩小于60分的记录。

    在这里插入图片描述

逻辑运算符

  • 介绍:

    • 逻辑运算符用来判断表达式的真假。如果表达式是真,结果返回1。如果表达式是假,结果返回0。
    • 逻辑运算符是将多个逻辑量连接起来,构成更加复杂的条件。逻辑运算符主要包括:AND或&&、OR或||、NOT或!、XOR。
  • 示例

    • 示例一:查询学生表(student),显示“网络131”班级的所有男生信息。

    在这里插入图片描述

位运算符

  • 位运算符是在二进制数上进行计算的运算符。位运算会先将操作数变成二进制数,进行位运算。然后再将计算结果从二进制数变回十进制数。
  • 位运算符主要包括:&(按位与)、|(按位或)、~(按位取反)、^(按位异或)、<<(按位左移)、>>(按位右移)。

运算符的优先级

MySQL表达式中如果有多个运算符,则优先级高的运算符先运算;如果优先级相同,则按照从左到右的顺序进行运算。如果有小括号,则先计算括号中的内容。

在这里插入图片描述

练习

1)定义一个用户变量,其初始值为1000,查询商品表(product)中库存量超过该用户变量值的所有商品记录。

SET @myVar = 1000;
SELECT * FROM product WHERE stocks>@myVar

在这里插入图片描述

2)把订单表(orders)中“10004”订单的客户ID保存到一个用户变量中,然后查询这个客户的详细信息。

SET @myVar = (SELECT customerId FROM orders WHERE id='10004');
SELECT * FROM customer WHERE id=@myVar;

在这里插入图片描述

3)查询商品表(product),查询结果中需要包含一个计算字段“totalMoney”,该字段是由“商品单价”乘以“库存量”得来的。

SELECT *, price * stocks AS 'totalMoney' FROM product;

在这里插入图片描述

http://www.dtcms.com/a/456948.html

相关文章:

  • 十堰专业网站建设科技公司网站设计欣赏
  • [linux仓库]信号快速认识[进程信号·壹]
  • 【开题答辩实录分享】以《走失人口系统档案的设计与实现》为例进行答辩实录分享
  • 【智能体】Ch3-提升模型性能的定向学习(Enhancing model performance with targeted learning)
  • 【LLM】大模型vibe coding(cursor、copilot、comate)
  • 如何创建网站教程视频react做前台网站
  • Web 开发 24
  • 深入理解RNN及其变体:从传统RNN到LSTM、GRU(附PyTorch实战)
  • Linux 服务器常见的性能调优
  • 济南网站价格wordpress tag模板代码
  • 飞牛nas配置息屏不关机
  • 【ThreeJs】【伪VR】用 Three.js 实现伪 VR 全景看房系统:低成本实现 3D 级交互体验
  • Java Spring “Bean” 面试清单(含超通俗生活案例与深度理解)
  • 生活琐记(6)
  • Python高效数据分析从入门到实战的七个步骤
  • 长沙网站制作关键词推广在线咨询 1 网站宣传
  • 使用中sql注意点
  • 【Python刷力扣hot100】283. Move Zeroes
  • 虹口北京网站建设如何添加网站
  • 【blog webp一键转换为 png】
  • Swift:现代、安全、高效的编程语言
  • WinMerge下载和安装教程(附安装包,图解版)
  • Python中的访问控制机制: Effective Python 第42条
  • 好多钱网站视频网站开发工程师
  • 基于单片机的客车载客状况自动检测系统设计(论文+源码)
  • Java Spring “IOC + DI”面试清单(含超通俗生活案例与深度理解)
  • Day18_常用linux指令
  • 听课笔记CSAPP
  • 如何避免消息重复投递或重复消费
  • 卷积层(Convolutional Layer)学习笔记