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语句可以定义变量。其语法格式如下:

        sql 复制代码
        DECLARE <变量名> [, ...] <数据类型> [DEFAULT 默认值]。

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

        示例:

        sql 复制代码
        DECLARE myVar INT DEFAULT 10;
      • 给变量赋值

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

        sql 复制代码
        SET <变量名1> = <赋值表达式1> [, <变量名2> = <赋值表达式2> , ...]

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

        示例:

        sql 复制代码
        -- 为变量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)中库存量超过该用户变量值的所有商品记录。

sql 复制代码
SET @myVar = 1000;
SELECT * FROM product WHERE stocks>@myVar

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

sql 复制代码
SET @myVar = (SELECT customerId FROM orders WHERE id='10004');
SELECT * FROM customer WHERE id=@myVar;

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

sql 复制代码
SELECT *, price * stocks AS 'totalMoney' FROM product;
相关推荐
m0”-“0m3 小时前
MySQL、Nignx和Docker在Linux上的安装详解
linux·数据库·mysql
野犬寒鸦3 小时前
从零起步学习Redis || 第十章:主从复制的实现流程与常见问题处理方案深层解析
java·服务器·数据库·redis·后端·缓存
极限实验室4 小时前
Elasticsearch 备份:snapshot 镜像使用篇
数据库·elasticsearch
武子康4 小时前
Java-145 深入浅出 MongoDB 基本操作详解:数据库查看、切换、创建集合与删除完整教程
java·数据库·sql·mysql·mongodb·性能优化·系统架构
阿巴~阿巴~5 小时前
Centos 7/8 安装 Redis
linux·服务器·数据库·redis·centos
刘大猫.5 小时前
mysql数据库压缩
数据库·mysql·压缩·mysql数据库压缩·数据库压缩·数据库备份与压缩
oracle04065 小时前
sql练习题单-知识点总结
数据库·sql
会飞的架狗师5 小时前
【MySQL体系】第4篇:MySQL 查询优化实用技巧
数据库·mysql
lypzcgf5 小时前
Coze源码分析-资源库-编辑数据库-前端源码-核心组件
前端·数据库·源码分析·coze·coze源码分析·ai应用平台·agent平台