【MySQL_05】语法简述(是语法,不详细介绍各种语句)

文章目录

  • 一、基本规则
  • 二、标识符规则
  • 三、数据类型
  • 四、运算符
  • 五、关键字
  • 六、SQL 语句的通用语法结构

历史文章点击👉:SQL

🐈‍⬛github:https://github.com/mysql

💻官网: https://www.mysql.com

🌏维基百科:https://zh.wikipedia.org/wiki/MySQL

MySQL的语法主要遵循SQL标准。

简单说明,有些内容后面特定章节介绍。

一、基本规则

☘️ (1) SQL语句的基本结构

MySQL语句通常以关键字(如SELECTINSERTUPDATE等)开头,以分号(;)结尾。例如:

SELECT * FROM table_name;

☘️ (2) 大小写敏感性

  • 关键字(如SELECTFROMWHERE等):不区分大小写,SELECTselect是等效的。
  • 数据库名、表名和字段名
    • 默认情况下,表名和数据库名在Windows系统中不区分大小写;
    • 但在Linux系统中区分大小写。
    • 字段名通常不区分大小写。

☘️ (3) 注释

  • 单行注释--#
    -- 这是单行注释
    SELECT * FROM table_name;  # 这也是单行注释
    
  • 多行注释/* */
    /*
    这是多行注释
    可以包含多行内容
    */
    SELECT * FROM table_name;
    

☘️ (4)字符串和日期

  • 字符串:用单引号(')或双引号(")括起来。例如:
    'Hello, world!'"Hello, world!"
    
  • 日期和时间:通常用YYYY-MM-DDYYYY-MM-DD HH:MM:SS格式表示。例如:
    '2025-03-10''2025-03-10 12:34:56'
    

二、标识符规则

  • 表名和列名
    • 可以由字母、数字、下划线 (_) 组成。
    • 必须以字母或下划线开头。
    • 不能与 MySQL 的关键字冲突(如 SELECTFROM)。
    • 如果与关键字冲突,可以用反引号包裹,例如:`select`
  • 数据库名
    • 规则与表名和列名类似。
    • 区分大小写(取决于操作系统)。

三、数据类型

分类数据类型描述示例
整数类型TINYINT8位有符号整数,范围为-128到127;无符号范围为0到255。TINYINT(4)
SMALLINT16位有符号整数,范围为-32768到32767;无符号范围为0到65535。SMALLINT(6)
MEDIUMINT24位有符号整数,范围为-8388608到8388607;无符号范围为0到16777215。MEDIUMINT(9)
INTINTEGER32位有符号整数,范围为-2147483648到2147483647;无符号范围为0到4294967295。INT(11)
BIGINT64位有符号整数,范围为-9223372036854775808到9223372036854775807;无符号范围为0到18446744073709551615。BIGINT(20)
浮点数类型FLOAT[(M,D)]单精度浮点数,存储近似值。可选精度M和小数位数DFLOAT(5,2)
DOUBLE[(M,D)]DOUBLE PRECISION双精度浮点数,存储近似值。可选精度M和小数位数DDOUBLE(10,4)
DECIMAL(precision, scale)定点数,存储精确值。precision为总位数,scale为小数位数。DECIMAL(10,2)
字符串类型CHAR(length)定长字符串,最大长度为255字符。length为字符数。CHAR(10)
VARCHAR(length)变长字符串,最大长度为65535字符。length为字符数。VARCHAR(255)
TEXT用于存储大量文本数据,最大长度为65535字符。TEXT
BLOB用于存储二进制数据,最大长度为65535字节。BLOB
日期和时间DATE日期值,格式为YYYY-MM-DDDATE
TIME时间值,格式为HH:MM:SSTIME
DATETIME日期和时间值,格式为YYYY-MM-DD HH:MM:SSDATETIME
TIMESTAMP时间戳,范围为1970-01-01 00:00:012038-01-19 03:14:07TIMESTAMP
YEAR年份值,格式为YYYY(四位年份)。YEAR

四、运算符

分类运算符描述示例
算术运算符+加法运算。SELECT 1 + 2;
-减法运算。SELECT 5 - 3;
*乘法运算。SELECT 4 * 3;
/除法运算,返回浮点结果。SELECT 10 / 2;
DIV整数除法,返回整数结果。SELECT 10 DIV 3;
%MOD求余运算,返回除法的余数。SELECT 10 % 3;SELECT 10 MOD 3;
+-单目运算符,用于正数或负数。SELECT +5;SELECT -5;
比较运算符=等于。SELECT * FROM table_name WHERE column = 1;
<>!=不等于。SELECT * FROM table_name WHERE column <> 1;
<小于。SELECT * FROM table_name WHERE column < 1;
>大于。SELECT * FROM table_name WHERE column > 1;
<=小于等于。SELECT * FROM table_name WHERE column <= 1;
>=大于等于。SELECT * FROM table_name WHERE column >= 1;
IS NULL检查值是否为NULLSELECT * FROM table_name WHERE column IS NULL;
IS NOT NULL检查值是否不为NULLSELECT * FROM table_name WHERE column IS NOT NULL;
IS [NOT] DISTINCT FROM检查两个值是否相同或不同(NULL值也视为相等)。SELECT * FROM table_name WHERE column IS DISTINCT FROM value;
逻辑运算符AND逻辑“与”,表示两个条件都为真时返回真。WHERE condition1 AND condition2;
OR逻辑“或”,表示两个条件中任意一个为真时返回真。WHERE condition1 OR condition2;
NOT逻辑“非”,用于否定条件。WHERE NOT condition;
XOR逻辑“异或”,表示两个条件中只有一个为真时返回真。WHERE condition1 XOR condition2;
位运算符&位“与”,对两个值的二进制位进行逐位“与”运算。SELECT 5 & 3;
``位“或”,对两个值的二进制位进行逐位“或”运算。
^位“异或”,对两个值的二进制位进行逐位“异或”运算。SELECT 5 ^ 3;
~位“非”,对值的二进制位进行逐位取反运算。SELECT ~5;
<<左移运算,将值的二进制位向左移动指定的位数。SELECT 5 << 1;
>>右移运算,将值的二进制位向右移动指定的位数。SELECT 5 >> 1;
其他运算符BETWEEN检查值是否在指定范围内。SELECT * FROM table_name WHERE column BETWEEN value1 AND value2;
IN检查值是否在一组值中。SELECT * FROM table_name WHERE column IN (value1, value2, ...);
LIKE模糊匹配字符串,%表示任意字符序列,_表示单个字符。SELECT * FROM table_name WHERE column LIKE 'pattern';
REGEXP正则表达式匹配。SELECT * FROM table_name WHERE column REGEXP 'pattern';
CONCAT字符串连接。SELECT CONCAT('Hello', ' ', 'World');
IS [NOT] TRUE检查布尔值是否为真或假。SELECT * FROM table_name WHERE condition IS TRUE;

五、关键字

关键字含义示例
SELECT从表中检索数据。SELECT * FROM table_name;
INSERT向表中插入新数据。INSERT INTO table_name VALUES (...);
UPDATE更新表中的数据。UPDATE table_name SET column = value WHERE condition;
DELETE删除表中的数据。DELETE FROM table_name WHERE condition;
CREATE创建数据库、表或其他对象。CREATE TABLE table_name (...);
DROP删除数据库、表或其他对象。DROP TABLE table_name;
ALTER修改表结构(添加、删除或修改列)。ALTER TABLE table_name ADD COLUMN column_name datatype;
TRUNCATE清空表中的所有数据,但保留表结构。TRUNCATE TABLE table_name;
FROM指定从哪个表中检索数据。SELECT * FROM table_name;
WHERE指定条件,用于过滤数据。SELECT * FROM table_name WHERE condition;
AND用于组合多个条件,表示逻辑“与”。WHERE condition1 AND condition2;
OR用于组合多个条件,表示逻辑“或”。WHERE condition1 OR condition2;
NOT用于否定条件,表示逻辑“非”。WHERE NOT condition;
IN检查某个值是否在一组值中。WHERE column IN (value1, value2, ...);
BETWEEN检查某个值是否在指定范围内。WHERE column BETWEEN value1 AND value2;
LIKE用于模糊匹配字符串。WHERE column LIKE 'pattern';
ORDER BY按指定列对结果集进行排序。SELECT * FROM table_name ORDER BY column ASC;
GROUP BY按指定列对结果集进行分组。SELECT column, COUNT(*) FROM table_name GROUP BY column;
HAVING用于对分组后的结果进行过滤。SELECT column, COUNT(*) FROM table_name GROUP BY column HAVING COUNT(*) > 1;
JOIN用于连接多个表。SELECT * FROM table1 JOIN table2 ON table1.id = table2.id;
INNER JOIN返回两个表中匹配的记录。SELECT * FROM table1 INNER JOIN table2 ON table1.id = table2.id;
LEFT JOIN返回左表的所有记录,以及右表中匹配的记录。SELECT * FROM table1 LEFT JOIN table2 ON table1.id = table2.id;
RIGHT JOIN返回右表的所有记录,以及左表中匹配的记录。SELECT * FROM table1 RIGHT JOIN table2 ON table1.id = table2.id;
FULL JOIN返回两个表中所有匹配和不匹配的记录。MySQL不支持FULL JOIN,但可以通过UNION实现。SELECT * FROM table1 UNION SELECT * FROM table2;
DISTINCT用于返回唯一值,去除重复行。SELECT DISTINCT column FROM table_name;
AS用于为列或表指定别名。SELECT column AS alias FROM table_name AS alias;
CASE用于条件表达式。SELECT CASE WHEN condition THEN value1 ELSE value2 END FROM table_name;
LIMIT用于限制查询结果的数量。SELECT * FROM table_name LIMIT 10;
OFFSETLIMIT一起使用,跳过指定数量的记录。SELECT * FROM table_name LIMIT 10 OFFSET 5;
UNION用于合并两个SELECT语句的结果集,自动去除重复行。SELECT column FROM table1 UNION SELECT column FROM table2;
UNION ALL用于合并两个SELECT语句的结果集,包含重复行。SELECT column FROM table1 UNION ALL SELECT column FROM table2;
EXISTS检查子查询是否返回至少一行数据。SELECT * FROM table1 WHERE EXISTS (SELECT 1 FROM table2 WHERE condition);
ANY用于比较子查询返回的任意值。SELECT * FROM table1 WHERE column > ANY (SELECT column FROM table2);
ALL用于比较子查询返回的所有值。SELECT * FROM table1 WHERE column > ALL (SELECT column FROM table2);
GRANT授予用户权限。GRANT SELECT, INSERT ON database_name.table_name TO 'username'@'host';
REVOKE撤销用户权限。REVOKE SELECT, INSERT ON database_name.table_name FROM 'username'@'host';
CREATE USER创建新用户。CREATE USER 'username'@'host' IDENTIFIED BY 'password';
DROP USER删除用户。DROP USER 'username'@'host';
ALTER USER修改用户属性(如密码)。ALTER USER 'username'@'host' IDENTIFIED BY 'new_password';
COMMIT提交事务,使事务中的更改永久生效。COMMIT;
ROLLBACK回滚事务,撤销事务中的更改。ROLLBACK;
START TRANSACTION开始一个事务。START TRANSACTION;
SET设置变量或系统参数。SET @variable = value;
DECLARE在存储过程中声明变量。DECLARE variable_name datatype;
IF用于条件判断。IF condition THEN statement;
WHILE循环语句,当条件为真时重复执行。WHILE condition DO statement;
LOOP无限循环,需要在循环体内退出。LOOP statement;
REPEAT循环语句,直到条件为真时停止。REPEAT statement UNTIL condition;
LEAVE退出循环。LEAVE loop_label;
ITERATE跳过当前循环迭代,继续下一次迭代。ITERATE loop_label;

六、SQL 语句的通用语法结构

  • SELECT 语句

    SELECT column1, column2
    FROM tablename
    WHERE condition
    ORDER BY column1 ASC|DESC
    LIMIT offset, count;
    
  • INSERT 语句

    INSERT INTO tablename (column1, column2)
    VALUES (value1, value2);
    
  • UPDATE 语句

    UPDATE tablename
    SET column1 = value1, column2 = value2
    WHERE condition;
    
  • DELETE 语句

    DELETE FROM tablename
    WHERE condition;
    
  • CREATE TABLE 语句

    CREATE TABLE tablename (column1 datatype constraints,column2 datatype constraints,...
    );
    

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/72925.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JavaScript中的生成器函数详解

在 JavaScript 中&#xff0c;生成器函数 Generator Function 是一种特殊的函数&#xff0c;它允许你在函数执行过程中暂停和恢复。生成器函数通过 function* 语法定义&#xff0c;并使用 yield 关键字来控制函数的执行流程。生成器函数返回一个生成器对象&#xff0c;该对象遵…

计算机网络——交换机

一、什么是交换机&#xff1f; 交换机&#xff08;Switch&#xff09;是局域网&#xff08;LAN&#xff09;中的核心设备&#xff0c;负责在 数据链路层&#xff08;OSI第二层&#xff09;高效转发数据帧。它像一位“智能交通警察”&#xff0c;根据设备的 MAC地址 精准引导数…

Git合并工具在开发中的使用指南

在团队协作开发中&#xff0c;Git 是最常用的版本控制工具&#xff0c;而代码合并&#xff08;Merge&#xff09;是多人协作不可避免的环节。当多个开发者同时修改同一文件的相同区域时&#xff0c;Git 无法自动完成合并&#xff0c;此时需要借助合并工具&#xff08;Merge Too…

实现多语言适配

1.在res下创建多语言资源文件&#xff1a; 2.选择需要的语言 然后得到多种语言适配string文件&#xff1a; 3.代码设置多语言 object LanguageHelper {/*** 获取适配的 Context*/fun getAttachBaseContext(context: Context): Context {return if (Build.VERSION.SDK_INT > …

【学习方法一】

学习方法一 一、通用高效学习法二、学科专项方法三、工具与技术辅助四、习惯与心理策略五、避免常见误区总结六、进阶学习策略七、解决学习痛点八、场景化学习法九、资源与工具推荐十、个性化学习调整十一、长期学习心态十二、常见问题QA十三、应对特殊挑战的学习法十四、健康与…

Golang学习笔记_44——命令模式

Golang学习笔记_41——观察者模式 Golang学习笔记_42——迭代器模式 Golang学习笔记_43——责任链模式 文章目录 一、核心概念1. 定义2. 解决的问题3. 核心角色4. 类图 二、特点分析三、适用场景1. 事务管理系统2. 多媒体遥控器3. 操作审计系统 四、Go语言实现示例五、高级应用…

应急响应--流量分析

&#xff08;一&#xff09;Cobalt Strike流量特征分析 1.HTTP特征 源码特征&#xff1a; 在流量中&#xff0c;通过http协议的url路径&#xff0c;在checksum8解密算法计算后&#xff0c;32位的后门得到的结果是92&#xff0c;64位的后门得到的结果是93&#xff0c;该特征符…

CI/CD—Jenkins配置一次完整的jar自动化发布流程

背景&#xff1a; 实现设想&#xff1a; 要创建自动化发布&#xff0c;需要准备一台测试服务器提前安装好java运行所需的环境&#xff0c;JDK版本最好和Windows开发机器上的版本一致&#xff0c;在Jenkins上配置将构建好的jar上传到测试服务器上&#xff0c;测试服务器自动启动…

创建分区表ORA-14037

1、故障现象 在跑脚本的时候创建物化试图提示分区界限过高 2、解决方法 最终原因是&#xff1a;缺少了 这个 r34411分区&#xff0c;加上就好。 判断是物化视图创建的时候需要兼容所有分区的数据&#xff0c;所以报错&#xff0c;而分区表则不存在这种情况 3、测试验证 分区…

转和git subtree管理方式为git submodule的管理方式

将 Git 子树&#xff08;subtree&#xff09;转换为子模块&#xff08;submodule&#xff09;的步骤如下&#xff1a; 1. 确定子树的路径和对应的远程仓库地址 找到当前项目中子树的路径以及对应的远程仓库地址。例如&#xff0c;假设子树的路径为 subtree-folder&#xff0c…

基于51单片机多功能防盗报警系统

基于51单片机多功能防盗报警系统( proteus仿真程序设计报告原理图讲解视频&#xff09; 1. 主要功能&#xff1a;2. 讲解视频&#xff1a;3. 仿真4. 程序代码5. 设计报告6. 原理图7. 设计资料内容清单&&下载链接 仿真图proteus8.9及以上 程序编译器&#xff1a;keil 4/…

R语言和RStudio安装

整体还是比较简单的&#xff0c;主要是记录个流程。 官方镜像站列表R语言官网 1 安装R&#xff08;2025/3/6&#xff09; R语言官网&#xff1a;The R Project for Statistical Computing 打开之后就Hello world一下吧 配置环境变量 2 安装RStudio 下载地址&#xff1a;htt…

Ubuntu 22.04 升级到 Ubuntu 24.04 全流程指南

&#x1f4cc; 1. 前言 Ubuntu 24.04 是最新的 LTS 版本&#xff0c;带来了内核更新、性能优化以及更强的安全性。本指南详细记录了从 Ubuntu 22.04 升级到 24.04 的完整过程&#xff0c;包括 升级前的准备、遇到的问题及如何选择最佳选项&#xff0c;避免升级失败或系统损坏。…

【每日学点HarmonyOS Next知识】Web跨域资源、Web长按菜单、Web拦截请求、禁止录屏、Base64图片宽高

1、HarmonyOS Web组件本地资源跨域问题&#xff1f; 关于资源跨域问题的解决&#xff0c;可以参考以下官网文档&#xff1a;https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/web-cross-origin-V5 方法一 为了使Web组件能够成功访问跨域资源&#xff0c;开…

数据库查问题常用OS命令汇总

1、内存使用情况查看 top //查看活跃进程占用情况 free -mh //查看操作系统当前可用内存 2、cpu使用情况 lscpu //查看os cpu情况 sar -u -f sar文件名 -s hh:mm:ss -e hh:mm:ss //查看对应日期的历史cpu情况 top //查看当前活跃进程使用cpu情况 3、io情况 iostat …

nlp培训重点-5

1. LoRA微调 loader&#xff1a; # -*- coding: utf-8 -*-import json import re import os import torch import numpy as np from torch.utils.data import Dataset, DataLoader from transformers import BertTokenizer """ 数据加载 """cl…

CI/CD—Jenkins配置Maven+GitLab自动构建jar包

一、安装Maven插件通过Maven构建项目 1、在Jenkins上安装Maven Integration plugin插件 2、创建一个maven项目 2.1、填写构建的名称和描述等 2.2、填写连接git的url 报错&#xff1a;无法连接仓库&#xff1a;Error performing git command: git ls-remote -h http://192.168.…

ngx_regex_create_conf

ngx_regex_create_conf 定义在 src/core/ngx_regex.c static void * ngx_regex_create_conf(ngx_cycle_t *cycle) {ngx_regex_conf_t *rcf;ngx_pool_cleanup_t *cln;rcf ngx_pcalloc(cycle->pool, sizeof(ngx_regex_conf_t));if (rcf NULL) {return NULL;}rcf->p…

【数据结构】初识集合框架及背后的数据结构(简单了解)

目录 前言 如何学好数据结构 1. 什么是集合框架 2. 集合框架的重要性 3. 背后所涉及的数据结构以及算法 3.1 什么是数据结构 3.2 容器背后对应的数据结构 3.3 相关java知识 3.4 什么是算法 3.5 基本关系说明&#xff08;重要&#xff0c;简单了解&#xff09; 前言 …

P9242 [蓝桥杯 2023 省 B] 接龙数列--DP【巧妙解决接龙问题】

P9242 [蓝桥杯 2023 省 B] 接龙数列--DP 题目 解析什么时候该用 DP&#xff1f;动态规划 vs 其他方法代码 题目 解析 这题没思路&#xff0c;压根没想到DP &#x1f626; 看了大神的题解&#xff0c;利用dp记录每一个数结尾的长度&#xff0c;最后再用N-dp中的最大值&#xf…