MySQL语句学习第三篇_数据库

MySQL语句学习第三篇_数据库
专栏记录MySQL的学习,感谢大家观看。

本章的专栏📚➡️MySQL语法学习
本博客前一章节指向➡️MySQL语句学习第二篇
本人的博客➡️:如烟花般绚烂却又稍纵即逝的主页
在这里插入图片描述

文章目录

  • MySQL的基础操作(改与查)
      • 修改操作
      • 删除操作
  • 数据库约束
  • 查询操作的进阶
    • 聚合查询
      • 聚合分组查询
      • 聚合分组表达式查询
    • 联合查询/多表查询

MySQL的基础操作(改与查)

修改操作

修改指令:

通过update 表名 set 列名 修改的字段来修改数据,也可以增加条件(where/order by),指定修改行。

updata database_name set colName = val where conditions/order by;#for example1
update exam_result set math=math+10 where name='张三';
#for example2
update exam_result set math=math+30 order by chinese+english+math desc limit 3;

删除操作

删除操作:

delete from 表名 where条件/order by/limit;
不指定条件删除整张表内容(空表)。

delete from database_name where name ='张三';

数据库约束

1.NULL指令:

创建时添加not null/NOT NULL ,创建成功后,当插入或者修改字段时无法插入或者修改为空值。

create table table_name(valNmae type NOT NULL);
#for example
create table person(name varchar(10) not null,age int NOT NULL);

2.UNIQUE指令:

创建时将unique置入类型后面,不可再次重复插入或者修改为此类型的值。

create table table_name(valNmae type unique);
#for example
create table person(id int,name varchar(10) UNIQUE);

3.DEFAULT指令:

通过创建表,指定类型的默认值,在不赋值的情况下,插入或者修改指定的字段时,显示default默认值。

create table table_name(valName type default defaultName);
#for example
create table person(id int,name varchar(10) default '未命名');

4.PRIMARY KEY指令:

primary key主键的功能:在插入或者修改带有primary key 的类型字段时,不能为空,且不能有重复字段添加。
一个表中只能有一个primary key

create table table_name(valNmae type primary key);
#for example
create table person(age int primary key);

主键key的auto_increment自动增长指令:

通过自增方式通过数据库来自动分配字段,整数类型(int /bigint)

create table table_name(valName int primary key auto_increment);
#for example
create table person(id int primary key auto_increment);
##自动插入1,2
insert into person values(null),(null);

5.FOREIGN KEY指令:

foreign key 外键:描述两个表之间的关联关系(父表与子表)
父表约束子表,子表被约束。
当子表超出父表给定的关联值时,则会报错。需要搭配primary key来使用。
references 意思引用与父亲表中的val值。
当子表插入时,查看子表中的father_val1中的值在父表中是否存在,不存在则报错。
当父表中已经被子表引用,则无法删除或者修改,需要将子表删除后,在删除父表。

#父表
create table father(val1 int primary key,val2 varchar(10));
#子表
create table child2(val int primary key 
,father_val1 int,
foreign key(father_val1) references father(val1) );


查询操作的进阶

1.查询搭配插入使用:

将table2所有的查询结果插入table1中,可以在后面搭配表达式where来使用。
这里的两个表的类型和列数需要匹配,否则报错.

insert into table1 select*from table2;

聚合查询

sql中提供的聚合函数:

函数说明 (可以添加去重操作distinct
COUNT()使用*或者指定字段在查询计算结构中出现的个数(不指定情况下包含NULL值指定不包含NULL值)
SUM()只适用于数字类型的字段或变量(算数运算)。不包含NULL值
MAX()适用于数值类型、字符串类型、日期时间类型的字段(或变量)不包含NULL值
MIN()适用于数值类型、字符串类型、日期时间类型的字段(或变量)不包含NULL值
AVG()只适用于数值类型的字段或变量。不包含NULL值

1.COUNT指令:

查询行数(也可以通过运算符来计算获取值)
如果字符串为数字则转换为double类型的数字来进行计算
sum可以将每个列和行相加,获得一个最终的总和。

#先执行select(*)在进行统计具体几行.
#*来获取所有行
select count(*) from table;#当输入的是字段属性时,获取的是不为null的行数select count(val_name) from table_name;# 指定列

2.SUM指令:

针对数字类型进行求和的算数运算

select sum(val_name'数字类型的字段') from table_name;

3.AVG 指令:

支持数字类型进行平均值的算数运算

select sum(val_name'数字类型的字段') from table_name;

4.MAX和MIN指令:

获取最大值和最小值

#max
select max(val_name) from table_name;
#min
select min(val_name) from table_name;

聚合分组查询

使用group by进行分组,针对每个分组,在分别进行聚合查询。
通过将valName相同的值来分组,将每个组获进行计算。

elect valName,avg(val'整数') from emp group by valName;

聚合分组表达式查询

where表达式聚合查询:

先通过表达式来筛选,表达式需要在分组之前进行。
先执行where条件 在进行分组 在进行聚合。

select valName ,avg(salary) from emp where name!='张三' group by valName;

having表达式聚合查询:

通过分组后,然后进行条件筛选,最后进行聚合查询。表达式在分组之后
先执行分组 在进行筛选 在最后进行聚合。

select valName,avg(salary) from emp group by valName having avg(salary)<20000;

分组中可以包含两个表达式(包含分组前where和分组后having)。


联合查询/多表查询

笛卡尔积:两个集合(表)进行合并后的乘积,两张表的记录中表记录与另一张表的所有记录进行记录排列组合。在这里插入图片描述在这里插入图片描述
继续进行继续筛选
在这里插入图片描述

而这时候会出现许多非法的字段,无意义的数据,这时候对笛卡尔积需要限定条件,让每张表进行关联。

#笛卡尔积
select *from valName1,valName2;
# 筛选有效数据
select *from valName1,valName2, where table_name1.valName1=table_name2.valName2;# and 接表达式继续筛选
select *from valName1,valName2, where 
table_name1.valName1=table_name2.valName2 and.....;#having表达式,进行分组之后的表达式
select *from valName1,valName2, where
table_name1.valName1=table_name2.valName2 and.....
group by valName1 having ...;

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

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

相关文章

代码随想录Day35 本周小结动态规划,动态规划:01背包理论基础,动态规划:01背包理论基础(滚动数组),416. 分割等和子集。

1.本周小结动态规划 周一 动态规划&#xff1a;不同路径 (opens new window)中求从出发点到终点有几种路径&#xff0c;只能向下或者向右移动一步。 我们提供了三种方法&#xff0c;但重点讲解的还是动规&#xff0c;也是需要重点掌握的。 dp[i][j]定义 &#xff1a;表示从…

ceph存储池

1、存储池 1、存储池的概念 存储池就是ceph的逻辑分区&#xff0c;专门用来存储对象的 特点 将文件切片成对象&#xff0c;通过hash算法&#xff0c;找到存储池中的pg&#xff0c;池中的pg根据crush算法找到osd节点 存储中的PG数量对性能有重要的影响&#xff0c;过多和过少…

知从科技闪耀汽车智能底盘大会:共探软件安全新篇章

在汽车科技蓬勃发展的浪潮中&#xff0c;智能底盘技术正成为引领行业变革的关键力量。11月27日-28日&#xff0c;盖世汽车 2024 第四届汽车智能底盘大会盛大召开&#xff0c;上海知从科技有限公司受邀出席此次盛会&#xff0c;与众多汽车领域的精英齐聚一堂&#xff0c;共话智能…

STM32-C语言基础知识

C语言基础知识 stdint.h简介 给寄存器某个位赋值 给位6赋值为1流程&#xff1a;先清0&#xff0c;再赋值 带参数的宏定义 建议使用do {…}while(0)来构造宏定义 条件编译 条件编译后面必须跟宏语句&#xff0c;如#if _LED_H 指针使用常见的2大问题 1、未初始化 2、越界使…

专业140+总分420+上海交通大学819考研经验上交电子信息与通信工程,真题,大纲,参考书。博睿泽信息通信考研论坛,信息通信考研Jenny

考研结束&#xff0c;专业819信号系统与信号处理140&#xff0c;总分420&#xff0c;终于梦圆交大&#xff0c;高考时敢都不敢想目标&#xff0c;现在已经成为现实&#xff0c;考研后劲很大&#xff0c;这一年的复习经历&#xff0c;还是历历在目&#xff0c;整理一下&#xff…

Python 调用 Umi-OCR API 批量识别图片/PDF文档数据

目录 一、需求分析 二、方案设计&#xff08;概要/详细&#xff09; 三、技术选型 四、OCR 测试 Demo 五、批量文件识别完整代码实现 六、总结 一、需求分析 市场部同事进行采购或给客户报价时&#xff0c;往往基于过往采购合同数据&#xff0c;给出现在采购或报价的金额…

MySQL用法---MySQL Workbench创建数据库和表

1. 连接数据库 打开软件&#xff0c;点击左下角卡片&#xff0c;输入设置的数据库密码&#xff0c;勾选单选框 2. 了解主页面的组成部分 3. 创建数据库 先点击工具栏的创建按钮 再输入数据库名称 点击 Apply 创建 4. 创建数据表 展开数据库&#xff0c;在Tables上右键&…

Leecode刷题C语言之可以被进一步捕获的棋子数

执行结果:通过 执行用时和内存消耗如下&#xff1a; 代码如下&#xff1a; int numRookCaptures(char** board, int boardSize, int* boardColSize) {int cnt 0, st 0, ed 0;int dx[4] {0, 1, 0, -1};int dy[4] {1, 0, -1, 0};for (int i 0; i < 8; i) {for (int j…

Python、R循环神经网络RNN、指数平滑ETS、ARIMA模型预测网络流量、ATM机取款、旅游需求时间序列数据...

全文链接&#xff1a;https://tecdat.cn/?p38496 分析师&#xff1a;Pengyuan Wen 在当今经济研究与商业决策领域&#xff0c;精准的时间序列预测具有极为关键的意义。社会消费品零售总额作为反映人民消费水平以及国民经济状况的核心指标&#xff0c;其发展趋势的精准把握对中…

第二篇:k8s工作流程

我们来看通过deployment部署pod的常规流程&#xff1a; kubectl向apiserver发送部署请求&#xff08;例如使用 kubectl create -f deployment.yml&#xff09;apiserver将 Deployment 持久化到etcd&#xff1b;etcd与apiserver进行一次http通信。controller manager通过watch a…

DevOps系统设计和技术选型

命名是一件痛苦的事情&#xff0c;除非你不想要一个好名字。 我正在做的这个管理系统叫什么合适&#xff0c;或者是什么类型的系统&#xff0c;想去想来不知所措&#xff0c;后来想想这么小的东西纠结什么&#xff0c;先从小的细节一点点来&#xff0c;能用就行&#xff0c;就用…

大模型基础环境部署之二:安装CUDA(详细实操版)

在完成 Nvidia 驱动的安装之后&#xff0c;接下来进行 CUDA 的安装以及版本确认。 一、安装 CUDA 1、运行 CUDA 安装程序 /mnt/data/Nvidia/CUDA# ./cuda_12.1.0_530.30.02_linux.run在安装过程中&#xff0c;确保不要选择安装驱动&#xff0c;以免覆盖已经安装好的 Nvidia …

在 Ansys Mechanical 中使用命名选择

介绍 在设置模型时&#xff0c;我通常会使用几何选择选项来确定边界条件、载荷、材料属性和模型的其他重要方面的范围。 这对于没有很多面或身体的小模型来说已经足够好了。随着我的模型变得越来越大和越来越复杂&#xff0c;单击确定边界条件和材料属性的范围变得很乏味&…

【Elasticsearch】实现气象数据存储与查询系统

&#x1f9d1; 博主简介&#xff1a;CSDN博客专家&#xff0c;历代文学网&#xff08;PC端可以访问&#xff1a;https://literature.sinhy.com/#/literature?__c1000&#xff0c;移动端可微信小程序搜索“历代文学”&#xff09;总架构师&#xff0c;15年工作经验&#xff0c;…

精密制造中智能扭矩系统的关键作用

【大家好&#xff0c;我是唐Sun&#xff0c;唐Sun的唐&#xff0c;唐Sun的Sun。】 电子、半导体、医疗器械等精密制造行业对于产品质量和性能的要求达到了前所未有的高度。在这一背景下&#xff0c;智能扭矩系统成为了确保零部件装配高精度和一致性的关键要素&#xff0c;对提升…

使用mtools搭建MongoDB复制集和分片集群

mtools介绍 mtools是一套基于Python实现的MongoDB工具集&#xff0c;其包括MongoDB日志分析、报表生成及简易的数据库安装等功能。它由MongoDB原生的工程师单独发起并做开源维护&#xff0c;目前已经有大量的使用者。 mtools所包含的一些常用组件如下&#xff1a; mlaunch支…

软件测试最新项目合集【商城、外卖、银行、金融等等.......】

项目一&#xff1a;ShopNC商城 项目概况&#xff1a; ShopNC商城是一个电子商务B2C电商平台系统&#xff0c;功能强大&#xff0c;安全便捷。适合企业及个人快速构建个性化网上商城。 包含PCIOS客户端Adroid客户端微商城&#xff0c;系统PC后台是基于ThinkPHP MVC构架开发的跨…

Artec Leo 3D扫描仪 革新家具行业的数字化展示【沪敖3D】

随着科技的飞速进步&#xff0c;三维扫描技术已被广泛应用于包括家居行业在内的多个行业。面对现代消费者对家居产品日益增长的个性化和多样化需求&#xff0c;传统的家居设计和展示方法已难以满足市场需求。三维扫描技术的出现&#xff0c;为家居行业带来了新的发展机遇&#…

爬虫项目基础知识详解

文章目录 Python爬虫项目基础知识一、爬虫与数据分析1.1 Python中的requests库Requests 库的安装Requests 库的 get() 方法爬取网页的通用代码框架HTTP 协议及 Requests 库方法Requests 库主要方法解析 1.2 python中的json库1.3 xpath学习之python中lxml库html了解html结构html…

Tomcat,javaweb, servlet , springBoot

在server.xml里配置服务器 <scope>provided</scope>打包的时候&#xff0c;这个jar包不会被打进去&#xff0c;因为tomcat已将封装了这个jar包&#xff0c;没必要要这个