对数据库的基本操作

1.插入表数据:

insert into 表名1 (字段1,字段2) values(字段1值,字段2值);

2.删除表数据:

delete:delete from 表名1 where 范围(删除表内符合条件的内容)

delete from 表名1(清空数据表内容,不释放空间,即:下次插入表数据,id依然接着删除数据的id继续增加)

truncate:truncate table 表名1(清空表数据,释放空间,即:下次插入表数据,id从1重新开始)

drop:drop table 表名1(整张表被删除,要使用该表必须重新建)

3.修改表数据:

update 表名1 set 字段名 = ‘新值’ where 范围​

4.查询表数据:

查询:

select 列名1,列名2.。。。from 表名 
where 条件 
group by 条件 having 筛选条件 
order by 顺序

查询数据:select * from table1 where 范围

总数:select count (*) from table1 where 范围

select count (distinct(字段1) from table1 where 范围(distinct可去重)

求和:select sum (字段1) from table1 where 范围

平均:select avg (字段1) from table1 where 范围

最大:select max (字段1) from table1 where 范围

最小:select min (字段1) from table1 where 范围
排序:select * from table1 where 范围 order by 排序字段名 desc(desc逆序排序。默认是正序排

序asc)

5.复杂查询:

嵌套查询:多个查询语句嵌套在一起查询,一般嵌套的查询语句放在where 或 having 的后面

例:

select * from table1 where status in(select status from table2)

多表连接查询:

table1:table2:

(1)内联查询(inner join……on……)

​select * from table1 a inner join table2 b on a.id=b.id

查询结果:

(2)左外联(left outer join……on……)

select * from table1 a left outer join table2 b on a.id=b.id

查询结果:

(3)右外联(right outer join……on……)

select * from table1 a right outer join table2 b on a.id=b.id

(4)全外联(full outer join……on……)

select * from table1 a full outer join table2 b on a.id=b.id

6.group by分组

根据某一个或多个列表字段进行分组统计。

table1:

查询每个用户的最高成绩:

select name,max(score) as max_score from table1 group by name

查询结果:先按用户名分组,再在每个组中查询找到最高分数

查询全班每科课程平均分

select course,avg(score) as avg_score from table1 group by course

查询结果:先按课程分组,再在每个组中查询找到平均分数

having的用法:同where用法,having与group by连用。where是筛选单个记录,having是筛选分组记录(先分组,后筛选)

用SQL语句来验证数据:

通过校验主、外键完整性和数据唯一性,我们可以发现数据中的问题。随后,通过删除重复记录、更新外键引用和修改重复数据,我们可以修复数据的错误和损坏。

1、数据校验

1.1 校验主键完整性

        主键是表中唯一标识每一条记录的字段。在某些情况下,可能会出现主键重复或缺失的情况。为了校验主键完整性,我们可以使用以下的SQL语句:

SELECT COUNT(*) FROM table_name GROUP BY primary_key HAVING COUNT(*) > 1;

上述SQL语句可以找出主键重复的记录。如果返回结果大于0,那么表中存在主键重复的情况。

1.2 校验外键完整性

        外键用于表与表之间的关联。在某些情况下,可能会存在外键指向不存在的记录的情况。为了校验外键完整性,我们可以使用以下的SQL语句:

SELECT t1.foreign_keyFROM table_name_1 AS t1 LEFT JOIN table_name_2 AS t2ON t1.foreign_key = t2.primary_keyWHERE t2.primary_key IS NULL;

        上述SQL语句可以找出外键指向不存在记录的情况。如果返回结果大于0,那么表中存在外键完整性问题。

1.3 校验数据唯一性

        在某些情况下,可能需要确保某个字段的值在整个表中是唯一的。为了校验数据唯一性,我们可以使用以下的SQL语句:

SELECT field_name, COUNT(*) FROM table_name GROUP BY field_name HAVING COUNT(*) > 1;

        上述SQL语句可以找出字段值重复的记录。根据返回结果,我们可以确定表中是否存在数据唯一性问题。

2、数据修复

2.1 删除重复记录

        当我们校验出存在重复记录时,我们需要删除其中的冗余数据。假设我们需要删除表中的重复记录,可以使用以下的SQL语句:

DELETE FROM table_nameWHERE primary_key NOT IN (SELECT MIN(primary_key)FROM table_nameGROUP BY field_nameHAVING COUNT(*) > 1);

上述SQL语句可以根据指定字段的值删除重复记录,只保留一条记录。

2.2 更新外键引用

        当我们校验出外键完整性问题时,我们需要更新外键引用,确保其指向正确的记录。假设我们需要更新外键引用,可以使用以下的SQL语句:

UPDATE table_name_1 AS t1 LEFT JOIN table_name_2 AS t2ON t1.foreign_key = t2.primary_keySET t1.foreign_key = t2.new_primary_keyWHERE t2.primary_key IS NULL;

上述SQL语句可以根据外键引用关系更新外键值,确保其指向正确的记录。

2.3 修改重复数据

        当我们校验出某个字段存在数据唯一性问题时,我们需要修改字段的值,确保其在整个表中是唯一的。假设我们需要修改字段的值,可以使用以下的SQL语句:

UPDATE table_name AS t1 INNER JOIN (SELECT field_name, MIN(primary_key) as min_pkFROM table_nameGROUP BY field_nameHAVING COUNT(*) > 1) as t2 ON t1.field_name = t2.field_name AND t1.primary_key > t2.min_pkSET t1.field_name = CONCAT(t1.field_name, '_duplicate');

        上述SQL语句可以将字段值修改为原值加上"_duplicate"后缀,以确保其在整个表中是唯一的。

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

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

相关文章

背包DP模板

01背包 01背包-1 #include <bits/stdc.h> using namespace std;const int N 1e5 10; int n, m, f[N][N], v[N], w[N];int main() {cin >> n >> m;for (int i 1; i < n; i) {cin >> v[i] >> w[i];}for (int i 1; i < n; i) {for (int…

JAVA 100道题(18)

18.实现一个除法运算的方法&#xff0c;能够处理被除数为零的情况&#xff0c;并抛出异常。 在Java中&#xff0c;你可以创建一个除法运算的方法&#xff0c;该方法接受两个整数作为参数&#xff0c;分别代表被除数和除数。如果被除数为零&#xff0c;你可以抛出一个自定义的异…

安装element ui失败,解决版本冲突问题

解决方法 降低npm的版本 npm install -g npm6.14.8 不用回退 命令&#xff1a;npm install --legacy-peer-deps element-ui --save

【C++】手撕哈希表的闭散列和开散列

> 作者&#xff1a;დ旧言~ > 座右铭&#xff1a;松树千年终是朽&#xff0c;槿花一日自为荣。 > 目标&#xff1a;手撕哈希表的闭散列和开散列 > 毒鸡汤&#xff1a;谁不是一边受伤&#xff0c;一边学会坚强。 > 专栏选自&#xff1a;C嘎嘎进阶 > 望小伙伴们…

leetcode77.组合

编写CPP代码感悟&#xff1a; 能用vector就别用普通数组&#xff0c;如果是用vector的话&#xff0c;debug的时候clion的调试界面会更加友好&#xff0c;如果是数组的话&#xff0c;好像没有便捷查看数组元素的方式&#xff0c;比较F*&&*k&#xff0c;而且写vector引用…

再次度过我的创作纪念日

机缘 写博客的机缘巧合已经在上一篇博客中写到了&#xff0c;至于收获和成就也不一一赘述了。想和大家聊的呢就这最近这一年左右的经历吧 日常 自从2022年开始&#xff0c;入职了一家大型的项目外派公司&#xff0c;名字就不说了。开始了我的保险公司系统的开发工作。工作地点…

Shell脚本的高级用法

当涉及到Shell脚本的高级用法时&#xff0c;您可以探索以下几个方面&#xff1a; 1. 高级流程控制 Case语句&#xff1a;类似于多个if-else语句的结构&#xff0c;根据不同的条件执行不同的代码块。 case "$variable" invalue1)# do something;;value2)# do somethi…

后端代码1

// 新增 public JsonResultVo<?> create(ApiIgnore RequestAttribute(ConstVal.REQ_USER) BaseUser baseUser,RequestBody IUTradeBuyPreserveVo iuTradeBuyPreserveVo) {//权限判断if (!baseCompanyService.dataPermission(baseUser, iuTradeBuyPreserveVo.getCompanyi…

wma怎么转换成mp3?无损转换!

WMA&#xff08;Windows Media Audio&#xff09;文件格式诞生于微软公司的数字音频技术研发。由于其高压缩性能和较好的音质&#xff0c;在推出初期主要用于Windows Media Player等微软产品。然而&#xff0c;随着MP3格式的盛行&#xff0c;WMA的使用范围逐渐受到限制。 MP3文…

pytorch简单的优化问题实战

目录 1. Himmelblau函数2. python画出函数图3. 梯度优化代码 1. Himmelblau函数 如下图&#xff1a; 从图中的碗一样的图中可以看出有4个极值点&#xff0c;那么经过优化后&#xff0c;会有4个结果。 4个点的结果见下图&#xff1a; 2. python画出函数图 3. 梯度优化代码 源…

必看,使用Provider优雅解决Riverpod的参数依赖

上一篇文章详细说明了状态管理在开发中的位置和所依赖的基础方法&#xff0c;帧与帧之间的变化是对应状态变化的体现&#xff0c;但每个框架都有其侧重点&#xff0c;Getx侧重简单&#xff0c;简单的页面&#xff0c;简单的状态管理&#xff0c;相对应的是复杂参数, 以及依赖传…

【Kubernetes】在 CentOS 7 上搭建 Kubernetes

在CentOS 7上从零开始搭建一个单节点Kubernetes(K8S)集群并安装Kubernetes Dashboard,可以按照以下步骤进行: 1. 环境准备 确保您的CentOS 7系统已经安装并更新到最新版本。您还需要确保系统具有足够的资源来运行Kubernetes集群。 2. 关闭SELinux和防火墙 出于简化操作…

西圣VS飞利浦VS倍思开放式耳机哪款值得入手?爆款产品无广大测评

在当今这个无线耳机盛行的时代&#xff0c;开放式耳机以其独特的佩戴舒适度和出色的音质体验&#xff0c;逐渐赢得了消费者的青睐&#xff0c;西圣、飞利浦、倍思作为市场上的知名品牌&#xff0c;都推出了各具特色的开放式耳机产品&#xff0c;许多消费者也因此不知道哪款更加…

《MySQL数据库》day3 -- 约束条件(非空、唯一性、主键、外键)、事务的四大特性(隔离性)

文章目录 0.技巧1.约束&#xff08;非常重要&#xff09;1.1什么是约束&#xff1f;1.2约束的种类1.3非空约束 not null1.4唯一性约束 unique1.5主键约束 primary key1.6外键约束&#xff08;foreign key&#xff0c;简称FK&#xff09; 2.事务&#xff08;很重要&#xff09;2…

如何安装和使用 Yarn

如何安装和使用 Yarn Yarn 是一个流行的包管理器&#xff0c;专为 JavaScript 项目设计&#xff0c;以提高依赖项管理的效率和一致性。与 npm 相比&#xff0c;Yarn 提供了更快的依赖安装速度、更准确的版本控制和改进的安全性&#xff0c;使其成为许多开发者的首选。 安装前…

在vue中使用echarts饼图示例

1.安装 npm install echarts --save 2.官方示例 option {title: {text: Referer of a Website,subtext: Fake Data,left: center},tooltip: {trigger: item},legend: {orient: vertical,left: left},series: [{name: Access From,type: pie,radius: 50%,data: [{ value: 104…

用css滤镜做颜色不同的数据卡片(背景图对于css滤镜的使用)

<template> <div class"xx_modal_maincon"><div class"xx_model_bt">履约起始日至计算日配额及履约情况</div><el-row><el-col :span"6"><div class"xx_modal_mod"><div class"mod…

虚拟机Linux-openEuler硬盘空间扩容

虚拟机Linux-openEuler硬盘空间扩容 1、需求场景 我们在使用虚拟机时&#xff0c;可能会出现磁盘空间不够用导致各种bug出现的情况。 首先&#xff0c;我们要扩展虚拟机的可用磁盘空间。如图所示&#xff0c;我的原本硬盘大小为8G&#xff0c;我们扩展到30GB 2、打开虚拟机…

android_uiautomator元素定位

通过UIAUTOMATOR的text属性定位到元素&#xff0c;并打印文本from appium import webdriver from appium.webdriver.common.appiumby import AppiumBy import time # For W3C actions from selenium.webdriver.common.action_chains import ActionChains from selenium.webdriv…