MySQL sql注意点

为何写这篇博客,源于工作时虽然写了大量sql语句包括复杂sql。可是一但脱离sql执行环境和运行结果。发现很多东西只是在尝试中解决了问题,但这还远远不够。

本文列取了常用但是容易遗漏的一些知识点。另外关键词一般大写,为了便于阅读所以很多小写。

distinct(去重)

也许你经常对单个字段去重,并且知道不建议用distinct,而是group by,因为大多数情况下distinct会引起全表扫描。但是还是需要了解:

#此时distinct 是对(column1+column2)联合去重。
select distinct column1,column2 from table;

describe & desc(查询表结构)

也许你经常使用下面sql显示表结构,如果有天你要通过代码同步表结构,会用得上。

show create table table_name;

而忘记了下面这个

#显示表详细表结构
describe table_name;
#同上
desc table_name;

least & greatest(查找给定字符串之间的最值)

select LEAST(1,2,0,3);#    0
select GREATEST(1,2,0,3);#    3
select LEAST("c","a","b");#    a
select GREATEST("c","a","b");#    c

加减乘除取模运算

select 1 + '-1';#    0
#整数+符串,字符串隐式转换不成功,当作0
select 1 + 'a';#    1
select 1 + "a";#    1
select 1 + NULL;#    NULL
select 1 * -1.0;#    -1.0
select 1 / -1;#    -1.0000
select 1 / 1.0;#    1.0000
select 1 / 0;#    NULL
select 1 % 1.0;#    0.0
select 1 % 0;#    NULL
select -3 % 2;#    -1
select -3 % -2;#    -1
select 3 % -2;#    1

等于 =

#整数和符串比较,字符串隐式转换不成功,当作0
select 0 = 'a';#    1#NULL参与判断,结果为NULL
select 1 = NULL;#    NULL
select NULL = NULL;#    NULL

安全等于 <=>

#没有NULL参与相当于等号,有NULL参与如下
select 1<=> NULL;#    0
select NULL <=> NULL;#    1
select NULL <=> 'NULL', NULL <=> "NULL";#	0 0#当然也可以这样比较
select 1 IS NULL;#    0
select 1 IS NOT NULL;#    1
select NULL IS NULL;#    1
select ISNULL(1);#    0
select ISNULL(NULL);#    1

not & !

select NOT 0;#    1
select NOT 100;#    0
select NOT 'A';#    1
select NOT (select 0 = 1);#    1
select 1 NOT between 0 and 2;#    0select ! 0;#    1
select ! 100;#    0
select ! 'A';#    1
select ! (select 0 = 1);#    1

字符转义的两种写法

# \
select a from (select "_abc" as a) t where a like '\_%';#    _abc
# ESCAPE 函数
select a from (select "_abc" as a) t where a like 'a_%' escape 'a';#    _abc
select a from (select "_abc" as a) t where a like '$_%' escape 'a'$';#    _abc

XOR(异或)

select 0 xor 0;#	0
select 0 xor 1;#	1
select 1 xor 0;#	1
select 1 xor 1;#	0
select 1 xor NULL;#    NULL

and & or 优先级

#如果按顺序来执行按理结果应是0,而实际结果是1,所以and优先级高于or
select 1 or 1 and 0;#    1
#等价于
select 1 or (1 and 0);#    1

待续。。。

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

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

相关文章

Unity 2021.3发布WebGL设置以及nginx的配置

使用unity2021.3发布webgl 使用Unity制作好项目之后建议进行代码清理&#xff0c;这样会即将不用的命名空间去除&#xff0c;不然一会在发布的时候有些命名空间webgl会报错。 平台转换 将平台设置为webgl 设置色彩空间压缩方式 Compression Format 设置为DisabledDecompre…

XGB-11:随机森林

XGBoost通常用于训练梯度提升决策树和其他梯度提升模型。随机森林使用与梯度提升决策树相同的模型表示和推断&#xff0c;但使用不同的训练算法。可以使用XGBoost来训练独立的随机森林&#xff0c;或者将随机森林作为梯度提升的基模型。这里我们专注于训练独立的随机森林。 XG…

解决Mysql的Access denied for user权限不足问题

当用客户端工具连接数据库 以root 用户登录后 无法给相关用户授权数据库等操作: 原因: root%表示 root用户 通过任意其他端访问操作 被拒绝! 授权即可: 登录server端: mysql -uroot -pxxxxx&#xff08;使用账号密码登录linux mysql服务内部&#xff09; 然后输入如下sql命令…

Sora:开启视频生成新时代的强大人工智能模型

目录 一、Sora模型的诞生与意义 二、Sora模型的技术特点与创新 三、Sora模型的应用前景与影响 四、面临的挑战与未来发展 1、技术挑战 2、道德和伦理问题 3、计算资源需求 4、未来发展方向 随着信息技术的飞速发展&#xff0c;人工智能&#xff08;AI&#xff09;已成为…

vue3中使用vuedraggable实现拖拽el-tree数据进分组

看效果&#xff1a; 可以实现单个拖拽、双击添加、按住ctrl键实现多个添加&#xff0c;或者按住shift键实现范围添加&#xff0c;添加到框中的数据&#xff0c;还能拖拽排序 先安装 vuedraggable 这是他的官网 vue.draggable中文文档 - itxst.com npm i vuedraggable -S 直接…

tomcat通过JAVA_OPTS注入自定义变量 —— 筑梦之路

背景说明 tomcat部署的java应用在k8s集群或容器中&#xff0c;想要给tomcat传自定义变量&#xff0c;应该如何实现&#xff1f; 解决方法 1. 在k8s集群或容器环境中通过env或者configmap方式添加自定义的环境变量 比如&#xff1a; my_key: aaaa 2. tomcat下新增脚本&am…

拓扑空间简介

目录 介绍集合论与映射映射相关定义映射&#xff08;map&#xff09;映射的一种分类&#xff1a;一一的和到上的 拓扑空间背景介绍开子集开子集的选择 拓扑拓扑空间常见拓扑拓扑子空间同胚其他重要定义 开覆盖紧致性有限开覆盖紧致性 R R R的紧致性 习题 介绍 这是对梁灿彬的《…

shim error: docker-runc not installed on system

问题描述&#xff1a;shim error: docker-runc not installed on system 解决办法&#xff1a; 方式一&#xff1a; cd /usr/libexec/docker/sudo ln -s docker-runc-current docker-runc 方式二&#xff1a; vi /etc/docker/daemon.json # 添加内容如下&#xff1a; {"…

【软件架构】01-架构的概述

1、定义 软件架构就是软件的顶层结构 RUP&#xff08;统一过程开发&#xff09;4 1 视图 1&#xff09;逻辑视图&#xff1a; 描述系统的功能、组件和它们之间的关系。它主要关注系统的静态结构&#xff0c;包括类、接口、包、模块等&#xff0c;并用于表示系统的组织结构…

全栈笔记_工具篇(nvm免安装版自动配置,无需手动设置环境变量)

将免安装压缩包nvm-noinstall.zip解压到指定目录,如:C:\nvm 修改install.cmd: @echo off set /P NVM_PATH="Enter the absolute path where the nvm-windows zip file is extracted/copied to: " set NVM_HOME=%NVM_PATH% setx NVM_HOME "%NVM_HOME%"fo…

C++入门学习(三十六)函数的声明

程序是自上而下运行的&#xff0c;比如我下面的代码&#xff1a; #include <iostream> #include<string> using namespace std;int main() { int a1; int b2;int sumaddNumbers(a,b); cout<<sum;return 0; }int addNumbers(int a, int b) { int sum …

MFC 配置Halcon

1.新建一个MFC 工程&#xff0c;Halcon 为64位&#xff0c;所以先将工程改为x64 > VC 目录设置包含目录和库目录 包含目录 库目录 c/c ->常规 链接器 ->常规 > 链接器输入 在窗口中添加头文件 #include "HalconCpp.h" #include "Halcon.h"…

简单讲解并梳理微信小程序默认几个文件和文件夹结构及其作用

那么 我们来说一下 小程序整个项目结构 它各个文件 和 整体结构 这是我们新创建的一个小程序项目 我们从上到下 分别来看一下 这些文件和目录结构的作用 首先是 pages 它的作用在于存储整个项目所有的 page页面文件 我们小程序官方 是推荐我们将所有page 界面都放在pages目录…

稀疏计算、彩票假说、MoE、SparseGPT

稀疏计算可能是未来10年内最有潜力的深度学习方向之一&#xff0c;稀疏计算模拟了对人脑的观察&#xff0c;人脑在处理信息的时候只有少数神经元在活动&#xff0c;多数神经元是不工作的。而稀疏计算的基本思想是&#xff1a;在计算过程中&#xff0c;将一些不重要的参数设置为…

一招解决 vue数据格式校验时候 async-validator: [‘XXXX is not a number‘]

在vue中 amt数字需要进行纯数字校验&#xff1a; 格式都没问题&#xff0c;但是输入纯数字也会报错&#xff0c;报错如下&#xff1a; async-validator:[‘amt is not a number’] 网上找了一些&#xff0c;但是均为能奏效&#xff0c;尝试如下&#xff1a; 尝试1&#x…

软件保护技术

本文已收录至《全国计算机等级考试——信息 安全技术》专栏 软件保护 软件保护技术其实是一个很大的概念&#xff0c;技术上分为很多不同的分支&#xff0c;主要包括加密、防篡改、软件水印、软件多样化、反逆向技术、虚拟机、基于网络的保护和基于硬件的保护等。 加密是指对…

基于Python网络爬虫的IT招聘就业岗位可视化分析推荐系统

文章目录 基于Python网络爬虫的IT招聘就业岗位可视化分析推荐系统项目概述招聘岗位数据爬虫分析系统展示用户注册登录系统首页IT招聘数据开发岗-javaIT招聘数据开发岗-PythonIT招聘数据开发岗-Android算法方面运维方面测试方面招聘岗位薪资多维度精准预测招聘岗位分析推荐 结语…

FlinkCDC详解

1、FlinkCDC是什么 1.1 CDC是什么 CDC是Chanage Data Capture&#xff08;数据变更捕获&#xff09;的简称。其核心原理就是监测并捕获数据库的变动&#xff08;例如增删改&#xff09;&#xff0c;将这些变更按照发生顺序捕获&#xff0c;将捕获到的数据&#xff0c;写入数据…

TensorFlow 的特点和应用场景介绍

TensorFlow是一个开源的机器学习框架,最初由Google Brain团队开发并于2015年发布。它被设计用于构建、训练和部署各种机器学习算法和深度神经网络模型。TensorFlow具有以下特点: 强大的计算图:TensorFlow使用计算图来表示复杂的计算任务。计算图是由节点(表示操作)和边(表…

Jenkins中Publish Over SSH插件使用(1)

SSH插件 前言Publish Over SSH插件是jenkins里面必不可少的插件之一&#xff0c;主要的功能有两个把jenkins服务器上的文件&#xff0c;传输到远程nginx&#xff0c; 远程执行shell命令和脚本。 1. SSH插件下载与配置 1.1 下载Publish over SSH插件 系统管理—》管理插件 …