测试必备SQL语句

2023-11-01

测试必备SQL语句

sql语法要点

  • SQL 语句不区分大小写,但是数据库表名、列名和值是否区分,依赖于具体的 DBMS 以及配置
  • 多条 SQL 语句必须以分号(;)分隔
  • 处理 SQL 语句时,所有空格都被忽略。SQL 语句可以写成一行,也可以分写为多行
  • sql支持三种注释
## 注释1
-- 注释2
/* 注释3*/

多表查询-左连接及更新

select acr.correct_status,acr.* from abnormal_charge_record acr 
LEFT JOIN charge_orders co ON acr.order_id=co.order_id
where co.user_id='000100000486'
and acr.correct_status=0;

update abnormal_charge_record acr  left join charge_orders co on acr.order_id=co.order_id set acr.correct_status='0' where co.user_id='000100000486';

增删改查

增:insert into

insert into user(username,password,email) values('admin','12345678','2334158648@qq.com');

## 插入查询出来的数据
insert into user(username) select name from account;

更新:update set

update user set username='wangmin',password='123' where username='root'

删除:delete
delete用于删除表中记录
truncate table用于清空表

## 删除表中指定数据
delete from user where username='wangmin'
## 清空表
truncate table user;

查询:
select
distinct:去重
limit:限制返回行数(第一次参数为起始行,第二个参数为返回的总行数)
desc:降序,从大到小
asc:升序

## 查询
select username from user;
select id,name from user;
select * from user;
## 查询并去重
select distinct id from user;
## 限制查询结果
select * from user limit 5;
select * from user limit 0,5;
select * from user limit 3,5;## 返回第4到6行

子查询

select a,b
from A
where c in(
           select c
           from B
           where d in(
                      select d
                      from C
                      where e='00001'));

  • where示例
  • in示例:在where子句中使用,作用是在指定的几个特定值中任选一个值
select *
from user
where name in('wang001','wang002');
  • between示例
select *
from user
where age between 20 and 50;
  • and示例
select *
from user
where id = '001' and age <= 60;
  • or示例
select *
from user
where name='wangm' or id='0001';
  • not示例
select *
from user
where age not between 10 and 20;
  • like示例
select *
from user
where name like '%min%';

连接和组合

连接用于连接多个表,使用 JOIN 关键字,并且条件语句使用 ON 而不是 WHERE
连接可替代子查询,且比子查询速度要快

## 内连接(inner join)
SELECT vend_name, prod_name, prod_price
FROM vendors INNER JOIN products
ON vendors.vend_id = products.vend_id;

## 自连接
SELECT c1.cust_id, c1.cust_name, c1.cust_contact
FROM customers c1, customers c2
WHERE c1.cust_name = c2.cust_name
AND c2.cust_contact = 'Jim Jones';

## 自然连接(natural join)
SELECT *
FROM Products
NATURAL JOIN Customers;

##左连接
SELECT customers.cust_id, orders.order_num
FROM customers LEFT JOIN orders
ON customers.cust_id = orders.cust_id;

##右连接
SELECT customers.cust_id, orders.order_num
FROM customers RIGHT JOIN orders
ON customers.cust_id = orders.cust_id;

在这里插入图片描述

组合UNION

函数

SELECT AVG(DISTINCT col1) AS avg_col
FROM mytable

排序与分组

order by:对结果集进行排序
desc:从大到小降序
asc:从小到大升序

SELECT * FROM products
ORDER BY prod_price DESC, prod_name ASC;

group by:分组

SELECT cust_name, COUNT(cust_address) AS addr_num
FROM Customers GROUP BY cust_name;

SELECT cust_name, COUNT(cust_address) AS addr_num
FROM Customers GROUP BY cust_name
ORDER BY cust_name DESC;

having:过滤
HAVING 用于对汇总的 GROUP BY 结果进行过滤。

HAVING 要求存在一个 GROUP BY 子句。

WHERE 和 HAVING 可以在相同的查询中。

HAVING vs WHERE

WHERE 和 HAVING 都是用于过滤。

HAVING 适用于汇总的组记录;而 WHERE 适用于单个记录。

SELECT cust_name, COUNT(*) AS num
FROM Customers
WHERE cust_email IS NOT NULL
GROUP BY cust_name
HAVING COUNT(*) >= 1;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

测试必备SQL语句 的相关文章

  • Mysql带限制的删除语句

    我试图从表中删除行 但出现错误 DELETE FROM chat messages ORDER BY timestamp DESC LIMIT 20 50 我在 50 时收到此错误 您的 SQL 语法有错误 检查与您的 MySQL 服务器版
  • “修改列”与“更改列”

    我知道 我们不能使用重命名列MODIFY COLUMN语法 但我们可以使用CHANGE COLUMN syntax 我的问题是 主要用途是什么modify syntax 例如 ALATER TABLE tablename CHANGE co
  • Ruby ActiveRecord 和 sql 元组支持

    ActiveRecord 是否支持 where 子句中的元组 假设底层数据库支持 结果 where 子句看起来像这样 where name address in John 123 Main St I tried Person where n
  • jdbc4.MySQLSyntaxErrorException:数据库中不存在表

    我正在使用 SpringBoot 开发一个网络应用程序 这是我的application properties文件来指定访问数据库的凭据 spring datasource driverClassName com mysql jdbc Dri
  • SQL Server 中的 FIFO 查询

    我正在构建一个库存管理应用程序c with SQL server 我想做一个FIFO从我的表查询 我以可变价格购买了相同的产品 之后我卖掉了其中一些 我想根据 先进先出 进行查询BatchDate柱子 所以我想通过PurchasePrice
  • 更改表添加列并在同一条件 IF 语句中更新新列

    我正在尝试添加列并在同一 if 语句中更新它 BEGIN TRAN IF NOT EXISTS SELECT 1 FROM sys columns WHERE Name N Code AND Object ID Object ID N Te
  • 具有不同组合的产品和产品包的数据库模型

    您将如何设计数据库来实现此功能 考虑一个场景 我们想要创建一个产品关系 封装 假设我们创建一个产品表 prod id prod name prod fee 1 prepaid A 19 usd 2 prepaid B 29 usd 3 pr
  • 查看Jasper报告执行的SQL

    运行 Jasper 报表 其中 SQL 嵌入到报表文件 jrxml 中 时 是否可以看到执行的 SQL 理想情况下 我还想查看替换每个 P 占位符的值 Cheers Don JasperReports 使用 Jakarta Commons
  • 使用 MYSQL 将 h:mm pm/am 时间格式插入数据库

    我正在尝试将以 h mm am pm 格式写入的时间插入到存储为标准 DATETIME 格式 hh mm ss 的数据库中 但我不知道如何将发布的时间转换为标准格式所以数据库会接受它 这是我到目前为止一直在尝试的 title POST in
  • 使用用户定义函数 MySql 时出错

    您好 请帮我解决这个问题 提前致谢 我在数据库中定义了这些函数 CREATE FUNCTION levenshtein s1 VARCHAR 255 s2 VARCHAR 255 RETURNS INT DETERMINISTIC BEGI
  • 休眠以持久保存日期

    有没有办法告诉 Hibernate java util Date 应该持久保存 我需要这个来解决 MySQL 中缺少的毫秒分辨率问题 您能想到这种方法有什么缺点吗 您可以自己创建字段long 或者使用自定义的UserType 实施后User
  • 总和和不同不会改变结果?

    我是一个新手 试图在这里解决这个问题 到目前为止还没有运气 非常感谢任何帮助 Select Distinct AB agency no ab branch no AS AGENCY BRANCH count AB agency no ab
  • MySQL中查找id最大的行

    看一下下面名为 Articles 的 MySQL 表 id articleId version title content 1 1 0 0 ArticleNo 1 title v0 0 ArticleNo 1 content v0 0 2
  • 随着时间的推移累积(不重叠)——技术?

    我正在尝试找到一种更好的方法来制作水晶报告 其他人的 按组添加不重叠的时间 这显然是一个古老的问题 有没有一种技术可以得到 调整每条记录的 开始 结束 时间 以消除共同 重叠时间 亚组内 使用直接 SQL 尽管我发现我可以执行 CTE 假设
  • 使用 DISTINCT 进行查询需要很长时间

    我正在使用 Microsoft Access 2003 我的项目中的一个表单需要很长时间才能向用户显示 这是适用的查询 SELECT DISTINCT tb KonzeptDaten DFCC tb KonzeptDaten OBD Cod
  • 重写 URL,将 ID 替换为查询字符串中的标题

    我对 mod rewrite 很陌生 但我做了一些搜索 但找不到这个问题的答案 我有一个网站 它只有一个 PHP 页面 根据查询字符串中传递给它的 ID 提供数十页内容 我想重写 URL 以便此 ID消失并替换为从数据库中提取的页面标题 例
  • 基本的多对多sql选择查询

    我认为这应该很容易 但它却在逃避我 我的帐户和帐户组之间存在多对多关系 一个帐户可以位于零个或多个组中 因此我使用标准连接表 Accounts ID BankName AcctNumber Balance AccountGroups ID
  • CONTAINS 不适用于 Oracle Text

    我在执行此查询时遇到问题 SELECT FROM gob attachment WHERE CONTAINS gob a document java gt 0 它给了我 ORA 29902 error in executing ODCIIn
  • Oracle REGEXP_INSTR() 和“a-z”字符范围与预期不匹配

    我想用REGEXP INSTR 在 oracle 数据库中检查小写 大写字符 我知道 upper and lower POSIX 字符类 但我选择了a z这给了我非常奇怪的结果 我不明白 有人可以解释一下吗 SELECT REGEXP IN
  • 使用 PHP 将 latin1_swedish_ci 转换为 utf8

    我有一个数据库 里面充满了类似的值 Dhaka 应该是 Dhaka 因为我在创建数据库时没有指定排序规则 现在我想修复它 我无法从最初获取数据的地方再次获取数据 所以我在想是否可以在 php 脚本中获取数据并将其转换为正确的字符 我已将数据

随机推荐

  • zabbix安装报错:The frontend does not match Zabbix database.

    The frontend does not match Zabbix database 出现此错误为导入数据到数据库zabbix时 对应的mysql版本号与当前不相符 相关代码为 zcat usr share doc zabbix serv
  • 华为OD机试 - 括号匹配(Java)

    题目描述 给定一个字符串 里边可能包含 三种括号 请编写程序检查该字符串中的括号是否成对出现 且嵌套关系正确 若括号成对出现且嵌套关系正确 或该字符串中无括号字符 输出 true 若未正确使用括号字符 输出 false 实现时 无需考虑非法
  • php 7 node.js 并发,PHP7+Swoole、Node Express、Sails、Beego、ThinkPHP 并发性能测试

    最近由于产品业务出现请求瓶颈 需要更换产品框架 针对现在集中主流方案进行了逐一测试 服务器硬件配置 2 核 2G虚拟机 10000请求 500并发测试结果如下 性能测试结果 1 Nodejs Express测试结果如下 大约每秒处理2100
  • Z变换零极点与收敛域的关系

    原文地址 Z变换零极点与收敛域的关系 作者 沙拉酱 Z变换零极点与收敛域的关系 序列的ZT存在零点和极点 这是因为序列的ZT同信号的LT一样都是复变函数 区别只是自变量名称不同 因此其零点和极点的定义与LT的零点与极点的定义相同 在z平面上
  • 厦大纪荣嵘团队新作|OneTeacher: 解锁 YOLOv5 的正确打开方式

    Paper https arxiv org pdf 2302 11299 pdf Code https github com luogen1996 OneTeacher 导读 大家从中也可以看到一个趋势 便是现在监督学习领域已经是非常饱和了
  • UC缓存的php格式视频,UC缓存视频变成本地mp4_下载视频怎么转换mp4_我的下载站

    7条解答 1 uc缓存视频怎么转mp4 您好 很高兴为您服务 安卓版的UC浏览器 缓存的为vdat 保存在UCDownloads videodata这个文件夹里边 可以直接重命名让后将格式更改为mp4或者avi即可 如果仍有问题 请您继续向
  • 一文了解工业互联网标识解析二级节点

    我国工业互联网标识解析体系由国际根节点 国家顶级节点 二级节点 企业节点 公共递归解析节点等要素组成 其中 二级节点是指一个行业或者区域内部的标识解析公共服务节点 能够面向行业或区域提供标识编码注册和标识解析服务 以及完成相关的标识业务管理
  • 学习一门编程语言正确姿势-以python为例

    作为一个自学者 最重要的能力就是自学的学习能力 但不用过分担心浩瀚的计算机世界 因为计算机的底层知识变化是很慢的 比如我们用到的网络知识 几十年都没变化过 就算是最热门的人工智能 现在大家学习的大部分技术也都是十几年 甚至几十年前的技术 变
  • Cordova的配置文件Config.xml

    一 概述 在写这篇文章时 cordova的版本已是9 0 0 config xml 是Cordova项目的全局配置文件 这份配置文件的基础是W3C s Packaged Web Apps Widgets 规范 并进行了扩展 它份配置文件是用
  • 弯道超车!阿里甩出Spring Security宝典我粉了

    第一份笔记 案例介绍 初识权限管理 权限管理概念 完成权限管理需要三个对象 初识Spring Security Spring Security过滤器链 SpringSecurity使用自定义认证页面
  • Java 内存溢出(一)原因、复现、排查

    目录 一 内存溢出原因 二 内存溢出实例 1 堆溢出 2 虚拟机栈和本地方法栈溢出 3 方法区和运行时常量池溢出 4 本机直接内存溢出 三 内存溢出排查 内存溢出 是指应用系统中存在无法回收的内存或使用的内存过多 最终使得程序运行要用到的内
  • Windows控制台API官方文档

    2023年8月21日 周下午 中文文档 控制台函数 Windows Console Microsoft Learn 英文文档 Console Functions Windows Console Microsoft Learn
  • python生成Excel透视表

    假设你有如下数据 姓名 科目 成绩 小黑 语文 42 小娜 语文 23 小白 语文 98 小乐 语文 52 小黑 数学 30 小娜 数学 76 小白 数学 47 小乐 数学 73 小黑 英语 63 小娜 英语 83 小白 英语 4 小乐 英
  • 第3.1~3.3节《合成孔径雷达成像原理-皮亦鸣》

    目录 3 1 雷达成像特点 3 2 成像雷达的种类 3 3 合成孔径雷达简介 3 4 成像雷达距离向的高分辨率原理 3 5 成像雷达 3 6 合成孔径雷达的理论模型 3 7 图像质量评估指标 3 8 小结 3 1 雷达成像特点 雷达具有对运
  • YoloV7目标检测(Pytorch版)【详解】

    文章目录 一 网络结构 1 总体网络结构 2 主干网络介绍 backbone 2 1 多分支模块堆叠 2 2 下采样网络结构 2 3 整个backbone代码 3 FPN特征金字塔 二 预测结果的解码 1 获得预测框 置信度 种类的数值 2
  • 模糊搜索和精确搜索的区别_Elasticsearch系列---前缀搜索和模糊搜索

    概要 本篇我们介绍一下部分搜索的几种玩法 我们经常使用的浏览器搜索框 输入时会弹出下拉提示 也是基于局部搜索原理实现的 前缀搜索 我们在前面了解的搜索 词条是最小的匹配单位 也是倒排索引中存在的词 现在我们来聊聊部分匹配的话题 只匹配一个词
  • C++:快速排序法的代码实现

    快速排序法 快速排序法 quick sort 的基本思想是 通过一趟排序将要排序的记录分割成独立的两部分 其中一部分的所有记录关键码比另外一部分的记录关键码都要小 然后再按此方法对这两部分数据分别进行递归快速排序 从而使序列成为有序序列 设
  • LAMPSECURITY: CTF8-20220522

    LAMPSECURITY CTF8 可以参考博文 https blog csdn net LZHPIG article details 104456327 About Release Back to the Top Name LAMPSec
  • Token的组成部分

    token是计算机术语 令牌 令牌是一种能够控制站点占有媒体的特殊帧 以区别数据帧及其他控制帧 token其实说的更通俗点可以叫暗号 在一些数据传输之前 要先进行暗号的核对 不同的暗号被授权不同的数据操作 使用基于 Token 的身份验证方
  • 测试必备SQL语句

    测试必备SQL语句 测试必备SQL语句 sql语法要点 多表查询 左连接及更新 增删改查 子查询 连接和组合 组合UNION 函数 排序与分组 测试必备SQL语句 sql语法要点 SQL 语句不区分大小写 但是数据库表名 列名和值是否区分