MySQL表的增删改查2(进阶)

MySQL 表的增删改查 大家肯定跟我一样,看到CRUD这四个字母一头雾水,什么是CRUD呀?这里我就为大家一一讲解:CRUD 即增加(Create)、查询(Retrieve)、更新(Update)、删除(Delete)四个单词的首字母缩写是数据库操作最基本的操作也是未来我们进入公司实习,最开始的最日常的工作由此可见,对我们未来涞水非常的重要所以,接下来就让我们来看看具体什么是CRUD吧。 阅读详情
create table emp(
	id int primary key auto_increment,
	name varchar(20) not null,
	role varchar(20) not null,
	salary numeric(11,2)
);



insert into emp(name,role,salary) values
('马云','服务员',1000.20),
('马化腾','游戏陪玩',2000.99),
('孙悟空','游戏角色',999.11),
('猪八戒','游戏角色',333.5),
('沙和尚','游戏角色',700.33),
('隔壁老王','董事长',12000.66);

细细体会这三条指令

select role from emp;
select role,max(salary)from emp group by role;
select role,max(salary),min(salary) from emp group by role;

联合查询

实际开发中往往数据来自不同的表,所以需要多表联合查询。多表查询是对多张表的数据取笛卡尔积。
表1

a1a2
aaa
bbb

表2

b1b2
111
222

笛卡尔积后

aaa111
aaa222
bbb111
bbb222

用代码来表示,大概是这个意思,for循环嵌套操作

class A{
	private B b;
}
class B{

}
List<A> as;
List<B> bs;
for(A a:as){
	for(B b:bs){
	
	}
}

为了更好的说明,我们插入这么四个表

create table classes(
	id int primary key auto_increment,
	name varchar(20),
	dest varchar(100)
);

insert into classes(name,dest) values
('机械172','学习了机械设计'),
('bite63','学习了C语言'),
('物流174','学习了高数');
================================================================
drop table if exists student;
create table student(
	id int  primary key auto_increment,
	sn int unique,
	name varchar(20) default 'unkown',
	qq_mail varchar(20),
	classes_id int,
	foreign key(classes_id) references classes(id)
);

insert into student(sn,name,qq_mail,classes_id) values
('001','张三','zhangsan@qq.com',1),
('002','李四','lisi@qq.com',1),
('003','王五','wangwu@qq.com',1),
('004','赵六','null',2),
('005','陈七','chenqi@qq.com',3);

========================
drop table if exists course;
create table course(
	id int primary key auto_increment,
	name varchar(20)
);

insert into course(name) values 
('C语言'),
('中国传统文化'),
('机械设计'),
('高数'),
('Java'),
('计算机原理');
=================
drop table if exists score;
create table score(
	id int primary key auto_increment,
	score decimal(3,1),
	student_id int,
	course_id int,
	foreign key (student_id) references student(id),
	foreign key (course_id) references course(id)
);


insert into score(score,student_id,course_id) values
--张三
(70.5,1,1),(98.5,1,3),(33,1,5),(98,1,6),
--李四
(60,2,1),(59.5,2,5),
--王五
(33,3,1),(68,3,3),(99,3,5),
--赵六
(67,4,1),(70.5,4,3),(56,4,5),(72,4,6),
--陈七
(81,5,1),(37,5,5);

1.内连接

select 字段 from 表1 别名1[inner] join 表2 别名2 on 连接条件 and 其他条件;
select 字段 from 表1 别名1,表2 别名2 where 连接条件 and 其他条件;

这里的连接条件就是主外键的连接。
案例1:查询张三同学的成绩(学生成绩关联)

select sco.score from student stu inner join score sco on stu.id=sco.student_id 
and stu.name='张三';
select sco.score from student stu ,score sco where stu.id = sco.student_id 
and stu.name = '张三';
+-------+
| score |
+-------+
|  70.5 |
|  98.5 |
|  33.0 |
|  98.0 |
+-------+

打印所有同学的成绩

select student.name,score.score,score.course_id 
from student,score where student.id=score.student_id;
+--------+-------+-----------+
| name   | score | course_id |
+--------+-------+-----------+
| 张三   |  70.5 |         1 |
| 张三   |  98.5 |         3 |
| 张三   |  33.0 |         5 |
| 张三   |  98.0 |         6 |
| 李四   |  60.0 |         1 |
| 李四   |  59.5 |         5 |
| 王五   |  33.0 |         1 |
| 王五   |  68.0 |         3 |
| 王五   |  99.0 |         5 |
| 赵六   |  67.0 |         1 |
| 赵六   |  70.5 |         3 |
| 赵六   |  56.0 |         5 |
| 赵六   |  72.0 |         6 |
| 陈七   |  81.0 |         1 |
| 陈七   |  37.0 |         5 |
+--------+-------+-----------+

案例2:查询c语言成绩大于60的信息(成绩课程关联)

select * from score sco ,course cou 
where sco.course_id=cou.id and cou.name = 'c语言' and sco.score > 60;

--或者

select * from score sco join course cou 
on sco.course_id=cou.id 
where cou.name = 'c语言' and sco.score > 60;

案例三,将三张表关联起来

select stu.name,cou.name,sco.score 
from score sco , course cou,student stu 
where sco.course_id = cou.id and stu.id = sco.student_id;
+--------+-----------------+-------+
| name   | name            | score |
+--------+-----------------+-------+
| 张三   | C语言           |  70.5 |
| 张三   | 机械设计        |  98.5 |
| 张三   | Java            |  33.0 |
| 张三   | 计算机原理      |  98.0 |
| 李四   | C语言           |  60.0 |
| 李四   | Java            |  59.5 |
| 王五   | C语言           |  33.0 |
| 王五   | 机械设计        |  68.0 |
| 王五   | Java            |  99.0 |
| 赵六   | C语言           |  67.0 |
| 赵六   | 机械设计        |  70.5 |
| 赵六   | Java            |  56.0 |
| 赵六   | 计算机原理      |  72.0 |
| 陈七   | C语言           |  81.0 |
| 陈七   | Java            |  37.0 |
+--------+-----------------+-------+

我们看到表头的名好像重复了,我们可以这样在查询时这样修改一下

select stu.name student_name,cou.name course_name,sco.score 
from score sco , course cou,student stu 
where sco.course_id = cou.id and stu.id = sco.student_id;

外连接

外连接分为左外连接和右外连接。如果联合查询,左侧的表完全显示我们就说是左外连接;右侧的表完全显示我们就说是右外连接;
语法

–左外连接,表1完全显示
select 字段名 from 表名1 left join 表名2 on 连接条件;

–右外连接,表2完全显示
select 字段 from 表名1 right join 表名2 on 连接条件;

案例:查询所有同学的成绩及同学的个人信息,如果该同学没有成绩,也需要展示

--左外连接
select * from student stu left join score sco on stu.id=sco.student_id;
--右外连接
select * from student stu right join score sco on stu.id=sco.student_id;

自连接(不同行同一列)

自连接是指在同一张表连接自身进行查询。
案例:
显示所有“计算机原理”成绩比“Java”成绩高的成绩信息。

--先查询“计算机原理”和“Java”课程的id。
select id,name from course where name='Java' or name='计算机原理';


--再查询成绩表中,''计算机原理”成绩比“Java”成绩好的信息。
select s1.*
from score s1,score s2
where s1.student_id = s2.student_id
and s1.score < s2.score
and s1.course_id = 5
and s2.course_id = 6;

--也可以用join on 语句来进行自连接查询

结果:

+----+-------+------------+-----------+
| id | score | student_id | course_id |
+----+-------+------------+-----------+
|  3 |  33.0 |          1 |         5 |
| 12 |  56.0 |          4 |         5 |
+----+-------+------------+-----------+
MacTeX+TeXstudio:Macbook配置本地Latex看这一篇就够了 这个博客记录本人在MacBook上配置本地Latex的流程,其中选择的编译环境为MacTeX,编辑器为TeXstudio。采用的原因主要两点:一个是本人配置的原因主要是用来撰写毕业论文,希望能够尽可能简化设置流程,专注内容表达;第二是由于本人还有一个windows系统的笔记本,想要编辑器在专注写作体验的同时在两个系统上能够都适配,从而减少切换效率,故选择此组合。这篇文章介绍并详细记录了本人的安装流程,有相同需求的同志也可借鉴。 阅读详情

相关推荐

Unity3D赛车游戏+脚本基础

本章主要介绍Unity的基础开发流程以及涉及到的概念。这个过程需要我们学会编写一些游戏脚本,在这讲的过程中我们会完成一个赛车小游戏,因此,在讲述这些基本概念和流程的时候,会同时涉及到一点脚本的开发基础.在游戏,电影和动画中,都有一个渲染的帧率,电影是24帧/s,游戏大概是30帧/s(当然也有60帧/s的)。在unity里面1秒钟,Update方法执行了30次。1秒钟有30帧,帧与帧之所消耗的时间是不一样的,那么我如何知道上一帧用了多少时间?Time.deltaTime就是为了解决这个问题。

m0_58367586的博客 7658

2.MySQL表的增删改查(进阶)

这里写目录标题MySQL表的增删改查(进阶)1.数据库约束2.表的设计3.新增4.查询4.1 聚合查询4.2 联合查询5.内容重点总结 MySQL表的增删改查(进阶) 1.数据库约束 1.1 NOT NULL 指示某列不能存储NULL值 如果尝试往这里插入空值,就会直接报错 1.2 UNIQUE 保证某列的每行必须有唯一值 数据唯一,如果尝试插入重复的值,也会报错 1.3 DEFAULT 规定没有给列赋值时的默认值 约定一个默认值 给默认值一个值 1.4 PRIMARY KEY /NOT NULL

wlw__的博客 400

【MBD开发】Simulink中的枚举

01 什么是枚举 按百度百科的词条【枚举】是在编程语言中用来存储一组固定的常量。不同编程语言的枚举语法也不一样,以C语言为例。 typedef enum{ GEAR_P, //0:P挡 GEAR_R, //1:倒挡 GEAR_N, //2:空挡 GEAR_D, //3:前进}_GEAR; 上面枚举了一个_GEAR数据,用GEAR_P表示0,GEAR_R表示1……​​​​​​​ if(current_gear==GEAR..

f6723的博客 3096

数据库概论之MySQL表的增删改查 - 进阶版本2

针对于数据库中的数据库约束以及表的设计进行讲解

m0_53117341的博客 1592

用STM32F103单片机控制电调制动无刷电机

用电调控制无刷电机制作遥控飞艇 蓝牙控制 调控电调 无刷电机 用电调控制无刷电机制作遥控飞艇 代码区 mian.c #include "delay.h" #include "sys.h" #include "usart.h" #include "usart3.h" #include "timer.h" #include "led.h" #include "key.h" int main(v...

子非鱼 的博客 2万+

R语言机器学习算法实战系列(十五)随机森林生存预后模型+SHAP值 (Random Survival Forest + SHAP)

本教程运用随机森林生存分析筛选与患者生存状态显著相关特征。该方法借随机森林这一强大机器学习算法,构建多棵决策树并集成结果,以提高生存分析准确性,识别关键生物标志物。接着,利用选定特征构建风险得分,将多个特征转化为单一数值,量化患者风险水平。之后,依据风险得分将患者分为高、低风险亚型,为临床治疗提供个性化指导。最后,通过分析时间依赖的 ROC 曲线评估模型长期预测能力。此曲线计算不同阈值下的真正例率与假正例率,在多个时间点评估,全面展现模型长期稳定性与准确性。。并且增加了SHAP值评估特征重要性

专注生信领域 2622

MySQL: 表的增删改查(进阶2)

数据库表的设计 1: 1对1 个人信息/身份证信息(个人id,个人姓名,…,身份证号); 2: 1对多 学生与班级之间的关系;一个学生可以属于一个班级,而一个班级可以包含多名学生. 方式一: 方式二: 总结:方式一与方式二的组织方式,都很常见。但是就关系数据库的表设计来说。方式二要更加常用! 方式一,依赖了形如数组这样的数据类型,但是像mysql这样的数据库,并不支持数组这样的类型。如果非要表示,就需要把若干个id整理成一个字符串,id之间使用,来分割之类的。 注:其它非关系型数据库,比

qq_52988578的博客 1713

基于Simulink的双向DC-DC变换器在储能系统中的应用仿真

摘要:本文详细介绍了基于Simulink的双向DC-DC变换器在光伏储能系统中的仿真实现。主要内容包括:1)采用非隔离型双向Buck-Boost拓扑作为储能系统枢纽;2)针对750V直流微网中的20kWh锂电池接口场景进行建模;3)详细阐述双闭环控制器设计(电压外环+电流内环)、工作模式判断逻辑等关键步骤;4)通过仿真验证了系统在功率阶跃和模式切换下的性能。文章提供了完整的建模流程和控制方法,为储能系统接口设计提供了实用参考。

amy_mhd的博客 179

【MySQL】MySQL表的增删改查(进阶)

1. 数据库约束 1.1 约束类型 1.2 NULL约束 1.3 UNIQUE:唯一约束 1.4 DEFAULT:默认值约束 1.5 PRIMARY KEY:主键约束 1.6 FOREIGN KEY:外键约束 1.7 CHECK约束(了解) 2. 表的设计 2.1 一对一![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/e9ff453ee6844c448c0213895c3e920b.png) 2.2 一对多 2.3 多对多 3. 新增 4. 查询 4.1 聚合查询

2402_85428625的博客 2625

【TCAD】AlGaN 器件的Sentaurus仿真

否则,必须在 LatticeParameters Sentaurus Device 的参数文件中的部分。Sentaurus Device 有两个工具实例:第一个工具实例, sd_fdiv ,模拟正向偏置特性,第二个工具实例, sd_rviv ,模拟反向偏置特性直至击穿。对于牛顿求解器,通常应该将非线性迭代次数限制为一个足够小的值,例如 Iterations=20 ,同时通过指定非阻尼迭代次数高于允许的牛顿迭代次数来避免解的阻尼( NotDamped=30 )。晶胞中的 Ga-N 键为橙色。

荷塘阅色 1215

22、常见加密哈希算法及安全机制解析

本文详细解析了多种常见加密哈希算法,包括SHA系列、RIPEMD、Tiger、HAVAL、Whirlpool等,涵盖其工作原理、安全性与性能对比。同时探讨了哈希攻击方式如预映像攻击和彩虹表,并介绍了盐、MAC、HMAC等防御机制。结合密码存储、消息完整性验证及区块链应用案例,分析了不同场景下的算法选择建议,并展望了哈希算法在创新、融合与标准化方面的未来发展趋势。

seed的博客 391

MySQL数据库 ---MySQL表的增删改查(进阶)

MySQL表的增删改查(进阶) 1. 数据库约束 约束类型 说明 示例 NULL约束 使用NOT NULL指定列不为空 name varchar(20) not null, UNIQUE唯一约束 指定列为唯一的、不重复的 name varchar(20) unique, DEFAULT默认值约束 指定列为空时的默认值 age int default 20, 主键约束 NOT NULL 和 UNIQUE 的结合 id int primary key, 外键约束 关联其他表的主键

wwzzzzzzzzzzzzz的博客 2万+

图像处理:张量分解在图像处理领域的应用

随着计算机视觉和图像处理技术的快速发展,图像数据呈现出高维、多模态、海量等特点。传统的矩阵分解方法已经无法有效处理这些复杂的图像数据。张量分解作为一种高阶矩阵分解方法,可以很好地捕捉图像数据的高维结构信息,在图像处理领域展现出巨大的应用前景。本节介绍几种常用的张量分解算法,包括高阶SVD(HOSVD)、Tucker-ALS、CP-ALS等。这些算法的核心思想是通过迭代优化的方式,交替更新张量分解的因子矩阵,直到收敛为止。综上所述,本文系统地介绍了张量分解技术在图像处理领域的应用。

AI天才研究院 7104

MySQL:表的增删改查(进阶)

MySQL表的增删改查(进阶)

gdswsj的博客 1970

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

【MySQL】MySQL表的增删改查(进阶篇)——之约束条件

这期总结了关于数据库表的操作的进阶,即在原有的基础上讲解了表的约束条件,当然,任然附上了相关代码,供小伙伴们参考~~~

GGBond778的博客 4330

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

【MySQL】表的增删改查

我们前面学习了MySQL数据库的基础知识,今天我们学习MySQL数据库中表的增删改查。增删改查就是CRUD ,即增加(Create)、查询(Retrieve)、更新(Update)、删除(Delete)四个单词的首字母缩写。注释的话,在SQL中可以使用--空格描述来表示注释说明。以上就是本次所要介绍的关于MySQL数据库中增删改查的知识点,这部分的知识不会很难,但还是需要大家亲自动手实操,才能熟练掌握并应用。

m0_74336101的博客 4603

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

MySQL表的增删改查(基础)

📜个人简介 ⭐️个人主页:摸鱼の文酱博客主页🙋‍♂️ 🍑博客领域:java编程基础,mysql 🍅写作风格:干货,干货,还是tmd的干货 🌸精选专栏:【Java】【mysql】 【算法刷题笔记】 🎯博主的码云gitee,平常博主写的程序代码都在里面。 🚀支持博主:点赞👍、收藏⭐、留言💬 🍭作者水平很有限,如果发现错误,一定要及时告知作者哦!感谢感谢!

qq_53947552的博客 4287

MySQL表的增删改查(进阶)

目录一、数据库约束1.1 NULL约束1.2 UNIQUE:唯一约束1.3 DEFAULT:默认值约束1.4 PRIMARY KEY:主键约束二、使用步骤2.读入数据总结 一、数据库约束 约束就是数据库在使用的时候,对于里面能够存的数据提出的要求和限制. 1.1 NULL约束 not null-指示某列不能存储NULL值. 给id这一列设为not null之后,上图中紫色框里的值就变成NO了. 如果尝试往这里插入空值,就会直接报错: 注意:NOT NULL是可以给任意个列来进行设置,不仅仅是这一个列

dddddrrrzz的博客 6411

【java+MySQL】调用方法对MySQL的表进行增删改查操作

java对数据库表进行增删改查任务前提:创建lib文件夹;添加druid.properties;创建四个子文件夹

xjj1128的博客 6163

MySQL增删改查常用语句命令

  2017/11/01 |  未分类 |songjian|  1 条评论 |  1818 viewsMySQL关系型数据库RDS中的老大哥,增删改查是MySQL入门的基础,数据库吧来说说MySQL数据库增删改查常用语句。增删改查语句增删改查的语句命令为增:insert删:delete改:update查:SELECT或者show库操作创建数据库:create database shujukuba;...

宋健个人的博客 7万+

MySQL表的增删改查(基础)

MySQL表的增删改查(基础)

qq_63983125的博客 2501

MySQL表的操作『增删改查』

操作,毕竟数据丢了不容易找回,比如这里的删除字段,如果表中有数据,那么表中数据关于该字段的信息会被全部删除,所以删除字段要。会记录下用户的所有操作痕迹,这也是备份后,恢复数据库的关键,把所有指令再执行一遍,就能得到一模一样的数据库了。信息,比如有哪些字段,才能知道如何使用这张表,查看表的详细信息语法为。如果想查看关于表更详细的信息,可以通过指令查看建表时的语句内容,语法为。,只要我们在创建表时不指定属性,表就会继承数据库的默认属性。可以看到,之前的注释没了,并且字段的类型也修改了。

北 海的博客 2675

MySQL表的增删改查(进阶)

关于查找的核心操作

qq_62122428的博客 1144

MySQL表的增删改查

mysql表的增删改查的介绍

m0_65558082的博客 1380

MySQL增删改查(万字详解 基础+进阶)

万字详解,一文掌握mysql关于增删改查等常用知识点.

qq_54469537的博客 7888
上一篇: 关于List的常用方法和扑克牌练习
下一篇: 杨辉三角
周末的丢
博客等级 码龄7年 197粉丝 331原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值