SQL学习笔记5 组合查询 插入/更新/删除数据 创建和操纵表

PyQt5之对MySQL数据库进行更新、插入和删除操作 上一篇介绍了如何在PyQt5中实现连接mysql以及通过按钮进行简单查询数据库信息并显示到界面上:PyQt5之连接MySQL数据库以及查询获取数据。在这一篇中我将介绍其余三个数据库的基本操作:更新、插入和删除,主要通过例子来介绍在界面中如何实现这些操作! 1、画好界面 和上一篇PyQt5之连接MySQL数据库以及查询获取数据一样的界面,如下图所示: 2、更新数据库中的表 如下图所示,还是之前的那个表,现在实现在上图的界面中的右边表格里输入ID和姓名后,点击【更新数据】按钮后把下图中的表中对应的ID的信息进 阅读详情

组合查询 UNION

SQL允许执行多个查询,并将结果作为一个查询结果集返回,这些组合查询通常称为并(union)或复合查询(compound query)

SELECT cust_name, cust_contact
FROM customers
WHERE cust_state IN ('IL','IN','MI')
UNION
SELECT cust_name, cust_contact
FROM customers
WHERE cust_name = 'ZJW'
ORDER BY cust_name, cust_contact
  • UNION操作符来组合数条SQL查询,其必须由两条或两条以上的SELECT语句组成,语句之间之间用UNION分隔
  • UNION中每个查询必须包含相同的列、表达式或聚集函数,但次序可以不同
  • 每个查询对应列的数据类型必须兼容
  • UNION ALL操作符与UNION类似,区别在于其返回所有匹配的行,包括重复的行,其可以完成WHERE子句完不成的工作
  • 若要对查询结果集进行排序,只能有一个ORDER BY语句,且必须位于最后一条SELECT语句之后

插入数据 INSERT INTO

INSERT用来将行插入到数据表中,其可以插入完整的行、部分行或某些查询结果

INSERT INTO customers
VALUES('001',
        'ZJW',
        'NEW YORK',
        'USA',
        NULL,
        NULL
    );
  • INSERT INTO后面接表名,VALUES子句用于指定每一列的值
  • 若某列没有值,应使用NULL(假定允许)
  • 上述语句省略了列名,根据给值的顺序来赋予对应列插入值,这种方法具有极大的依赖性,一旦表中的列顺序改变,就可能出现错误,因此不建议这样使用
INSERT INTO customers(cust_id,
                      cust_name,
                      cust_city
                      cust_country,
                      cust_contact,
                      cust_email)
VALUES('001',
        'ZJW',
        'NEW YORK',
        'USA',
        NULL,
        NULL
    );
  • 不省略列名,使用完整的插入语句,更能避免错误
  • 如果表的定义允许,可以在INSERT操作中省略某些列,省略的列必须满足以下条件之一:允许NULL值或具有默认值,不满足条件会出现错误

插入检索的数据

INSERT INTO customers(cust_id,
                      cust_name,
                      cust_city
                      cust_country,
                      cust_contact,
                      cust_email)
SELECT cust_id,
       cust_name,
       cust_city
       cust_country,
       cust_contact,
       cust_email
FROM custnew;
  • SELECT中列出的每一列对应于customers表明后跟的每一列,根据顺序进行匹配,与列名无关
  • 通常INSERT只插入一行,要插入多行需要执行多个INSERT语句,但INSERT SELECT是个例外

将一个表复制到另一个表
SELECT INTO语句将数据复制到一个新表(导出数据)

SELECT *
INTO custcopy
FROM customers;
  • DB2不支持SELECT INTO

MariaDB、MySQL、Oracle、PostgreSQL、SQLite语法稍有不同

CREATE TABLE custcopy AS
SELECT *
FROM customers;
  • 任何SELECT选项和子句都可以使用,包括WHERE和GROUP BY
  • 不管从多少个表检索数据,数据都只能插入到一个表中

更新数据 UPDATE

UPDATE customers
SET cust_email = '123456@qq.com',
    cust_contact = '123456789'
WHERE cust_id = '001';
  • UPDATE后面接表名,SET命令用来将新值赋给被更新的列,可以更新多个列,之间用逗号分隔
  • UPDATE语句中可以使用子查询,使用SELECT语句检索出的数据更新列数据
  • 要删除某列,可设置它的值为NULL
  • 若没有WHERE语句,则表示对表中所有行进行更新

删除数据 DELETE

DELETE FROM customers
WHERE cust_id = '001';
  • 若没有WHERE语句,则表示对表中所有行进行删除
  • 若想删除表中所有行,更快的方式是TRUNCATE TABLE
  • DELETE删除行而不是列,删除列请用UPDATE

多表删除

DELETE employee, employeeSkills
FROM employee, employeeSkills, department
WHERE employee.employeeID = employeeSkills.employeeID
AND employee.departmentID = department.departmentID
AND department.name='Finance'; 

使用别名

DELETE 别名 FROM 表名称 AS 别名 WHERE 列名称 = 值

创建/操纵表

创建表

CREATE TABLE products
(
    prod_id    CHAR(10)      NOT NULL,
    vend_id    CHAR(10)      NOT NULL,
    prod_price DECIMAL(8,2)  NOT NULL,
    quantity   INTEGER       NOT NULL   DEFAULT 1,
    prod_desc  VARCHAR(1000) NULL
);
  • 新表的名字在CREATE TABLE后面给出
  • 表列的名字和定义,用逗号分隔
  • 若不允许该列为空值,则需指定NOT NULL,省略或NULL都表明允许该列为空值
  • DEFAULT关键字指定默认值

更新表

ALTER TABLE vendors
ADD vend_phone CHAR(20);
  • 许多DBMS允许增加列,但不允许删除或更改表中的列
  • 许多DBMS**允许重命名**表中的列
  • 不同DBMS对表修改的命令语法可能不同

删除表

DROP TABLE custcopy
  • 删除整个表没有确认,谨慎操作
  • 若该表是某个关系的组成部分时,删除可能不会成功

重命名表

RENAME TABLE old_table_name TO new_table_name;
  • 不同的DBMS重命名命令可能不同
数据库学习笔记2——分组,连接,组合,插入更新删除数据 分组 在使用 GROUP BY 时,除计算语句外,SELECT 语句中的每一列都必须在 GROUP BY 子句中给出。GROUP BY 子句必须出现在 WHERE 子句之后,ORDER BY 子句之前。 # 使用 having 进行过滤 SELECT vend_id, AVG(prod_price) AS avg_price FROM products GROUP BY vend_id HAVING avg_price > 5; #SQL 子句的顺序 阅读详情

相关推荐

第17课 SQL入门之创建和操纵表

创建、更改和删除表

warlack007的博客 922

sql demand 按需刷新 什么时候会刷新数据_通过Excel的VBA自动刷新,删除指定查询数据以及数据模型...

1、 通过菜单及VBA刷新数据(1) 打开工作簿时刷新(2) 每几分钟刷新(3) 按需刷新,删除连接ThisWorkbook.Connections("查询-表名").RefreshThisWorkbook.Connections("查询-表名").Delete请注意这个连接名称不单是单独的查询表名,具体的可以从菜单现有连接中查看。删除连接主要作用是删除加载表和查询的连接关系,查询还是继续存在。(...

weixin_39798626的博客 562

ESP32 LVGL开发板例程使用记录:自制常用汉字字库(二)

1、将下载的文件移入工程文件中 ,路径为项目文件中 ”......\lib\lvgl\src\font“文件夹下。3、修改字库配置文件,文件名为lv_conf.h中的内容,向其中加入下面内容(位置可搜索注释块来找到地方)修改完成可以编译试试,看是否成功,如字库较大时编译出错,请使能:LV_FONT_FMT_TXT_LARGE。2、打开此文件,修改包含头文件的路径,不然会报错,修改方法可对照自己库中其他字库文件中的包含路径。导入完成后在VSCode工程中可以查看到此文件。上次说完了如何制作 字库.c 文件。

qq_43279097的博客 1958

SQL-组合查询

如何利用UNION操作符将多条SELECT语句组合成一个结果集?SQL允许执行多个查询(多条SELECT语句),并将结果作为一个查询结果集返回。这些组合查询通常称为并(union)或复合查询(compound query)。主要有两种情况需要使用组合查询: 在一个查询中从不同的表返回结构数据; 对一个表执行多个查询,按一个查询返回数据。 组合查询可用UNION操作符来组合数条SQL查询。利用UNIO

4189

第三篇:AMD 和 Intel

它像“乐高积木”一样,可以通过标准化的接口与其他部分组合,构建复杂系统。理解组件后,你会发现从操作系统到微服务,现代软件本质上都是组件的组合!

u013089100的博客 1031

TeXstudio完整安装配置教程(2025最新版)

至此,你已经完成了TeXstudio的完整安装和配置!现在你可以:✅ 使用TeXstudio编写LaTeX文档✅ 正确编译中英文混排的文档✅ 掌握基本的编辑和配置技巧LaTeX的学习曲线较陡,但一旦掌握,你会发现它在学术写作中的强大之处。建议从简单的文档开始练习,逐步掌握更高级的功能。祝你LaTeX写作顺利!如果有任何问题,欢迎在评论区留言交流。关键词:TeXstudio安装、LaTeX环境配置、中文LaTeX、TeX Live、学术论文写作更新日期:2025年10月。

weixin_51241407的博客 4500

sql 同时(更新)update和(查询)select同一张表

当要使用本表的数据更新本表时,容易出错:如下:update b set aaa=select max(MAX_def_60M) as max from b[Err] 1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the r...

u013344884的博客 2万+

普通用户也能免费使用 SAP Joule!

点击 SAP Joule 给出的按钮之后,SAP Business Application Studio 左侧显示的界面,就从 SAP Joule 替换成了 SAP Fiori tools 的 Project Accelerator 工具。接下来就是在后者中标准的操作流程了。笔者之前的文章,有朋友提问,既然 ChatGPT,DeepSeek,Grok 这些主流 AI 工具,回答 SAP 相关问题时都经常翻车,那 SAP 自家的 Joule 表现又如何呢?还有朋友评论:如何才能使用 SAP Joule?

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1018

SQL 实验项目2_1:单表查询

文章目录一、实验目的及要求二、实验内容(或实验原理、实验拓扑)三、实验设备与环境四、实验设计方案(包括实验步骤、设计思想、算法描述或开发流程等)五、实验结果(包括设计效果、测试数据、运行结果等)六、实验小结(包括收获、心得体会、注意事项、存在问题及解决办法、建议等)七、附录(包括作品、流程图、源程序及命令清单等) 一、实验目的及要求 熟练使用DBMS提供的查询编辑器功能组件来实现对数据库进行单表...

COCO56的博客 6585

2011-2024年间各省数字普惠金融指数数据(覆盖广度、使用深度和数字化程度)

2、指标:数字金融普惠指数、数字金融覆盖广度指数、数字金融使用深度指数、普惠金融数字化程度指数、数字金融使用深度指数下属的支付、保险、货币基金、信用服务、投资、信贷等分类指数。中国各省的数字普惠金融指数数据,从数字金融覆盖广度、数字金融使用深度和普惠金融数字化程度3个维度来构建数字普惠金融指标体系。数字普惠金融指数一共3个维度、33项具体指标。全套指数包含数字金融覆盖广度指数、数字金融使用深度指数和普惠金融数字化程度指数,以及数字金融使用深度指数下属的支付、保险、货币基金、信用服务、投资、信贷等分类指数。

【优快云】 1万+

CAPL未来发展方向展望

通过本文的学习,读者应该对CAPL的未来发展方向有了初步的了解。随着汽车电子系统的不断发展,CAPL也在不断演进,以支持更多的技术和应用场景。希望读者能够通过不断的学习和实践,掌握更多的CAPL技巧,提高自己的开发能力。

闲人编程的博客 1183

SQL 实验项目2_2:多表查询

**第一阶段**:(对数据库eshop中数据进行分组统计查询)。 (1)查询性别为“男”的会员详细信息,查询结果按月薪降序排列.。 (2)查询全体会员的会员帐号,姓名和年龄并按家庭地址升序排列,同一地址中的会员按年龄降序排列。 (3)查询会员帐号为’liuzc’所购买的商品号和订购日期,并按订购日期升序排列。 (4)查询购买商品号为’0910810004’总人数。 (5)查询2005年6月6日前,所有商品的订购总量,要求输出商品号和订购总量。 (6)查询所有会员的平均月薪,最高月薪和最低月薪。 (7)查询所

COCO56的博客 6261

c++ webrtc基础(1) :webrtc源码下载与编译、项目模块介绍、学习资料推荐

本篇博客介绍webrtc源码的下载与编译,以及推荐webrtc学习资料。 源码下载 电脑环境:win10/win11 64bit,合理的上网环境,没有合理的网络环境无法拉取、下载webrtc代码和工具,宽带速度要快,尽量50M. 主要步骤如下: (1) 安装git (2) 打开cmd控制台,下载google开发工具depot_tools: git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git (3) 新建一个目

琅嬛福地 3295

MySQL 学习笔记(4)— 组合查询、子查询、插入数据、更新/删除表数据、增加/删除表中的列以及重命名表

1. 组合查询 2. 插入数据 3.更新和删除数据

wohu1104的专栏 1053

[QMT量化交易小白入门]-七十九、增加标的后,五年回测收益率达到了2493%

本专栏主要是介绍QMT的基础用法,常见函数,写策略的方法,也会分享一些量化交易的思路,大概会写100篇左右。QMT的相关资料较少,在使用过程中不断的摸索,遇到了一些问题,记录下来和大家一起沟通,共同进步。

木头大左的博客 1575

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

数据库学习一:创建数据库 、创建表、向表中插入数据与检索数据

1.显示数据库信息:通过show database命令。2.为了获得一个数据库内的表的列表,使用show tables;3.创建数据库 ,使用create database 数据库名;再使用show命令可以看出系统中多了一个自己创建的数据库名。4.创建表。数据库是表的容器,表,必须输入某个数据库。因而在创建表之前要指定数据库。1.可以通过语法指明表所属的数据库。库.表语法。如果任何的标识符出现了特...

KFLING的博客 1万+

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

Access SQL语法(查询/插入/删除/连接/修改)

SQL语法 1. 查询 简单查询 select 班级,姓名,性别 from 学生名单 加筛选条件 select 班级,姓名,性别 from 学生名单 where 性别="女" 分组统计 select 班级,count(1) as 各班女生数 from 学生名单 where 性别="女" group by 班级 2. 插入 插入整张表(若该表已存在,则覆盖) select 班级,姓名,性别 into 1班学生名单 from 学生名单 where 班级="1班" 插入一条记录 ins

M10150831的博客 1万+

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

MySQL插入、更新和删除

在你使用CREATE TABLE语句时,该引擎具体创建表,而在你使用SELECT语句或进行其他数据库处理时,该引擎在内部处理你的请求。它使用的是列的位置,因此SELECT中的第一列(不管其列名)将用来填充表列中指定的第一个列,第二列将用来填充表列中指定的第二个列,如此等等。如果要防止意外覆盖已有的表,SQL要求首先手工删除该表(请参阅后面的小节),然后再重建它,而不是简单地用创建表语句覆盖它。不允许NULL值的列不接受该列没有值的行,换句话说,在插入或更新行时,该列必须有值。但是,不一定要求列名匹配。

旭日的博客 2257

insert into select from 部分字段插入_SQL- 插入与更新删除

一 前言经过之前的 【SQL】-SQL介绍, 【SQL】- SQL检索阶段一, 【SQL】-sql检索阶段二 的三篇文章你已经学会的sql的相关概念和如何查询数据库,这篇文章主要后续对数据库表的进入插入,更新,和删除操作,那么你学完这篇就等于最基础的sql开发你已经学完了,如果跟java结合起来也就是crud;后续会推出sql的进阶学习文章,当然出文章的速度不是很快,原因是还有其他类型文章要出;建...

weixin_39758494的博客 8717

SQL server 简单语法 包含创建数据库、建表、查询、插入、比较、排序、数据处理等

数据库(Database,DB):按照数据结构来组织、存储和管理数据的仓库,其本身可看作电子化的文件柜,用户可以对文件中的数据进行增加、删除、修改、查找等操作。数据库基于某种目的以及规则进行管理的数据汇总。用于操作数据库的语言。数据库的分类:分为层次型、网型、关系型。层次型数据库:数据由一对多的亲子节点所连接,类似于数据结构中的树结构,是一种很古老的数据库形态,很难对信息进行击中管理。网型数据库。

qq_55880219的博客 3951

MySQL 表中数据的增删改查操作

这篇文章回顾对数据表中的数据进行增、删、改、查的操作。在表中插入数据insert、删除表中数据delete、修改表中数据update以及查询表中数据。查询表中数据包括:1、去重查询distinct2、别名查询3、计算列4、选择查询,即条件查询where子句(关键字:and、or、between and、in关键字、like关键字的通配符匹配查询、空值查询)5、聚合函数6、行数限定查询limit8、对查询结果排序order by asc|desc......

心皿月的博客 1万+

SQL Server 基础语句3: 数据操作(插入、删除、更新表)与数据类型

语句用于向表中添加一行或多行数据,其基本语法如下: 表名:指定要插入数据的表名,通常包括架构名(如 )。 列名列表:指定要插入数据的列名,列名之间用逗号分隔,并用括号括起来-。 值列表:为指定的列提供对应的值,值之间用逗号分隔,并用括号括起来。 如果表中的某些列未出现在列名列表中,SQL Server 会根据以下规则自动为这些列提供值:为了演示 语句的用法,我们首先创建一个名为 的表: 以下是一个向 表中插入新行的示例: 在这个示例中,我们为 、、 和 列提供了值,而没有为 列提供值,因为它是

qq_56591814的博客 3215

【MySQL数据库】SQL 查询封神之路:步步拆解核心操作,手把手帮你解锁高阶玩法

本文是一篇SQL实战指南,从数据插入到复杂查询系统讲解SQL操作。主要内容包括:1) 数据插入的多种方式(单行/多行插入、替换更新);2) 基础查询语法及注意事项(避免全列查询、使用distinct去重);3) where子句的运算符详解(比较运算、逻辑运算、NULL处理);4) 结果排序(asc/desc)与别名使用规则(where不可用别名、order by可用);5) 特别解释了SQL执行顺序(from→where→select→order by)

2401_87944878的博客 2万+

我在广州学 Mysql 系列——插入、更新与删除数据详解以及实例

本文是有关mysql数据库的插入,更新以及删除数据命令,还有相关的练习,例如,INSERT语句,UPDATE语句和DELETE语句等!!

weixin_55767624的博客 2233

关系模型得数据操纵即就是建立在关系上得数据操纵,一般有(查询)、增加、删除与 修改四种操作

是的,关系模型的数据操纵是建立在关系上的数据操作,一般包括查询、增加、删除和修改四种操作。

博客域名:borter.blog.youkuaiyun.com 2182

《SQL必知必会》:创建和操纵表 CREATE ALTER DROP RENAME

文章目录1. 创建表1.1 表创建基础1.2 使用NULL值1.3 指定默认值2. 更新表3. 删除表4. 重命名表 1. 创建表 SQL 不仅用于表数据操纵,还用来执行数据库和表的所有操作,包括表本身的创建和处理。 一般有两种创建表的方法: 多数DBMS 都具有交互式创建和管理数据库表的工具; 表也可以直接用SQL 语句操纵。 1.1 表创建基础 利用CREATE TABLE 创建表,必须给出下列信息: 新表的名字,在关键字CREATE TABLE 之后给出; 表列的名字和定义,用逗号分隔; 有的D

超级大洋葱的博客 787
上一篇: SQL学习笔记4 分组 子查询 联结
下一篇: SQL学习笔记6 视图 存储过程 事务处理
PAT-python-zjw
博客等级 码龄10年 381粉丝 408原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值