MySQL的增删改查2

news2024/10/4 22:22:58

文章目录

  • 1. 数据库约束
    • 1.1 约束类型
    • 1.2 NOT NULL约束
    • 1.3 UNIQUE唯一约束
    • 1.4 DEFAULT默认值约束
    • 1.5 PRIMARY KEY主键约束
    • 1.6 FOREIGN KEY外键约束
    • 1.7 CHECK约束
  • 2. 新增
  • 3. 查询
    • 3.1 聚合查询
      • 3.1.1 聚合函数
      • 3.1.2 GROUP BY子句
      • 3.1.3 HAVING
    • 3.2 联合查询
      • 3.2.1 内连接
      • 3.2.2 外连接
      • 3.2.3 自连接

1. 数据库约束

1.1 约束类型

约束类型说明
NOT NULL指定某列不能存储NULL值
UNIQUE保证某列的每行必须有唯一的值
DEFAULT规定没有给列赋值时的默认值
PRIMARY KEY主键约束,是NOT NULL和UNIQUE的结合,确保某列(或两个列多个列的结合)有唯一标识,有助于更容易更快速地找到表中的一个特定的记录。
FOREIGN KEY外键约束,外键用来保证一个表中的数据与另一个表的数据相关联,外键约束确保了表之间的引用完整性,即一个表中的外键列值必须在另一个表的主键列中存在。
CHECK保证列中的值符合指定的条件

1.2 NOT NULL约束

在创建表时,可以指定某列不为空

例如:指定序号不能为空,重新建立student表

create table student(
serial_number int not null,
id int,
age int,
sex varchar(2),
name varchar(32),
qq_mail varchar(20)
);

1.3 UNIQUE唯一约束

在创建表时,指定某一列为唯一的

例如:指定学号为唯一的,重新重新创建学生表

drop table if exists student;
create table student(
serial_number int not null,
id int unique,
age int,
sex varchar(2),
name varchar(32),
qq_mail varchar(20)
);

1.4 DEFAULT默认值约束

指定默认值

例如:如果年龄为空,默认值为15

drop table if exists student;
create table student(
serial_number int not null,
id int unique,
age int default 15,
sex varchar(2),
name varchar(32),
qq_mail varchar(20)
);

1.5 PRIMARY KEY主键约束

指定学号列为主键

drop table if exists student;
create table student(
serial_number int not null,
id int primary key,
age int default 15,
sex varchar(2),
name varchar(32),
qq_mail varchar(20)
);

1.6 FOREIGN KEY外键约束

外键用于关联其他表的主键唯一键.

语法:

foreign key (字段名) references 主表() 
  1. 创建班级表,学号为主键
drop table if exists classes;
create table classes(
id int primary key,
name varchar(20)
);
  1. 创建学生表,学号为主键,班级号为外键,一个学生对应一个班级,一个班级对应多个学生。
drop table if exists student;
create table student(
serial_number int not null,
id int primary key,
class_id int,
age int default 15,
sex varchar(2),
name varchar(32),
qq_mail varchar(20),
foreign key(class_id) references classes(id)
);

1.7 CHECK约束

在MySQL中无法使用check约束,但是使用不会报错。

drop table if exists student;
create table student(
serial_number int not null,
id int primary key,
class_id int,
age int default 15,
sex varchar(2),
name varchar(32),
qq_mail varchar(20),
check(sex = '男' or sex = '女'),
foreign key(class_id) references classes(id)
);

2. 新增

语法:

INSERT INTO table_name [(column [, column ...])] SELECT ...

示例:创建一张用户表,有姓名、性别、年龄、qq邮箱、手机号字段,将已有的学生数据复制进来

drop table if exists user;
create table user(
id int primary key,
name varchar(32),
age int,
qq_mail varchar(20),
sex varchar(2),
mobile varchar(20)
);
insert into user(name,age,sex,qq_mail) select name,age,sex,qq_mail from student;

我真是不想再建表了
在这里插入图片描述

3. 查询

3.1 聚合查询

3.1.1 聚合函数

常见的聚合函数有:

函数说明
COUNT([DISTINCT] EXPR)返回查询到的数据的数量
SUM([DISTINCT] expr)返回查询到的数据的总和
AVG([DISTINCT] expr)返回查询到的数据的平均值
MAX([DISTINCT] expr)返回查询到的数据的最大值
MIN([DISTINCT] expr)返回查询到的数据的最小值

注意:后四个使用时,不是数字没有意义。

示例:

  1. COUNT

统计班级一共有多少同学

select count(*) from student;
select count(0) from student;

统计已知qq_mail有多少同学(不为NULL)

select count(qq_mail) from student;
  1. SUM

求班级数学成绩的总分

select sum(math) from student;

求数学成绩在80以上的学生的数学总分

select sum(math) from student where math > 80;
  1. AVG

求zhangsan同学的平均分

select avg(math + chinese + english) from student where name = 'zhangsan';

求全班的平均分

select avg(math + chinese + english) from student;
  1. MAX

返回数学最高分

select max(math) from student;
  1. MIN

返回数学最低分

select min(math) from student;

3.1.2 GROUP BY子句

对指定列进行分组查询,将具有相同属性值的记录分组在一起,并对每个组进行聚合操作。

满足条件:使用 GROUP BY 进行分组查
询时,SELECT 指定的字段必须是“分组依据字段”,其他字段若想出现在SELECT 中则必须包含在聚合函
中。

3.1.3 HAVING

GROUP BY 子句进行分组以后,需要对分组结果再进行条件过滤时,不能使用 WHERE 语句,而需要用HAVING

例如:建立员工表

create table employee(
id int primary key,
name varchar(32),
sex varchar(2),
depart varchar(50) comment '部门',
salary int comment '薪水'
);

 insert into employee(id,name,sex,depart,salary) values(1,'zhangsan','男','销售部',8000),(2,'lisi','男','技术部',12000),(3,'wangwu','女','行政部','15000'),(4,'zhaoliu','男','技术部',12500),(5,'qianqi','女','销售部',9000),(6,'xiaoba','男','行政部',15000);

在这里插入图片描述
例题1:查询男女员工平均工资

select sex,avg(salary) from employee group by sex;

例题2:查询各部门的总工资

select depart,sum(salary) from employee group by depart;

例题3:查询姓名重复的员工信息

select name from employee group by name having count(name) > 1;

3.2 联合查询

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

3.2.1 内连接

语法

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

例如:查询张三同学的成绩

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 = '张三';

3.2.2 外连接

外连接分为左外连接右外连接

如果联合查询,左侧的表完全显示就称为左外连接;右侧的表完全显示就称为右外连接。

语法:

-- 左外连接,表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;

3.2.3 自连接

即同一张表连接自身。

例如:查询成绩表中,数学成绩高于英语成绩的信息

SELECT
 s1.* 
FROM
 score s1
 JOIN score s2 ON s1.student_id = s2.student_id 
 AND s1.score < s2.score 
 AND s1.course_id = 1 
 AND s2.course_id = 3;

在这里插入图片描述

行了,连接这是不懵了,等我下篇会详细讲解,请点点关注期待我的下一篇文章

在这里插入图片描述

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

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

相关文章

慧天卓特:2024年“一带一路”之哈萨克斯坦旱情监测案例分析(FYDI)

引言 联合国防治荒漠化公约组织指出&#xff1a;中亚约有1200万人生活在干旱风险高的地区&#xff0c;面积约为4000万公顷。位于亚洲中部的哈萨克斯坦共和国&#xff08;简称哈萨克斯坦&#xff09;和中国有着长期友好的睦邻和经贸关系&#xff0c;中国是哈萨克斯坦的主要农产…

C++:day3

思维导图 练习题 #include <iostream> using namespace std;class Per { private:string name;int age;int *height;double weight;public:Per(){cout << "Per::无参构造函数" << endl;}Per(string name, int age, int height, double weight) :…

2004NOIP普及组真题 2. 花生采摘

线上OJ&#xff1a; 【04NOIP普及组】花生采摘 核心思想&#xff1a; 1、本题为贪心即可。 2、因为本题严格限制了顺序&#xff0c;所以先把每个节点的花生数量按降序排序。然后逐一判断下一个花生是否需要去采摘即可 3、每一次采摘完&#xff0c;记录耗时 t 以及采集的花…

GPT-4o(OpenAI最新推出的大模型)

简介&#xff1a;最近&#xff0c;GPT-4o横空出世。对GPT-4o这一人工智能技术进行评价&#xff0c;包括版本间的对比分析、GPT-4o的技术能力以及个人感受等。 方向一&#xff1a;对比分析 GPT-4o&#xff08;OpenAI最新推出的大模型&#xff09;与GPT-4之间的主要区别体现在响应…

SSM框架整合,内嵌Tomcat。基于注解的方式集成

介绍&#xff1a; SSM相信大家都不陌生&#xff0c;在spring boot出现之前&#xff0c;SSM一直是Java在web开发中的老大哥。现在虽说有了spring boot能自动整合第三方框架了&#xff0c;但是现在市面上任然有很多老项目是基于SSM技术的。因此&#xff0c;能熟练掌握SSM进行开发…

Python接入淘宝API接口采集商品详情页到手价优惠券信息数据:智能化营销的加速器

在电子商务领域&#xff0c;智能化营销正在成为提高效率和竞争力的关键。淘宝API提供了一套完整的解决方案&#xff0c;帮助商家实现智能化营销&#xff0c;从而提升销售业绩和顾客满意度。 库存管理&#xff1a; 淘宝API使商家能够实时监控库存水平&#xff0c;自动补货&#…

【康耐视国产案例】智能AI相机:深度解析DataMan 380大视野高速AI读码硬实力

随着读码器技术的不断更新迭代&#xff0c;大视野高速应用成为当前工业读码领域的关键发展方向。客户对大视野高速读码器的需求源于其能显著减少生产成本并提升工作效率。然而&#xff0c;大视野应用场景往往伴随着对多个条码的读取需求&#xff0c;这无疑增加了算法的处理负担…

VCAST创建单元测试工程

1. 设置工作路径 选择工作目录,后面创建的 UT工程 将会生成到这个目录。 2. 新建工程 然后填写 工程名称,选择 编译器,以及设置 基础路径。注意 Base Directory 必须要为代码工程的根目录,否则后面配置环境会失败。 这样工程就创建好了。 把基础路径设置为相对路径。 …

LabVIEW储油罐监控系统

LabVIEW储油罐监控系统 介绍了基于LabVIEW的储油罐监控系统的设计与实施。系统通过集成传感器技术和虚拟仪器技术&#xff0c;实现对储油罐内液位和温度的实时监控&#xff0c;提高了油罐监管的数字化和智能化水平&#xff0c;有效增强了油库安全管理的能力。 项目背景 随着…

算法与数据结构高手养成:朴素的贪心法(下)二分答案

✨✨ 欢迎大家来访Srlua的博文&#xff08;づ&#xffe3;3&#xffe3;&#xff09;づ╭❤&#xff5e;✨✨ &#x1f31f;&#x1f31f; 欢迎各位亲爱的读者&#xff0c;感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua小谢&#xff0c;在这里我会分享我的知识和经验。&am…

Plotly的魔力:如何用Python创建令人惊叹的图表?

大家好&#xff0c;在数据分析和可视化领域&#xff0c;图表是不可或缺的工具。它们可以帮助我们更直观地理解数据趋势和模式。今天&#xff0c;我们要介绍的是一个强大的Python库——Plotly&#xff0c;它可以让你轻松创建交互式、漂亮的图表。无论你是数据科学家、分析师&…

计算机网络到底是指什么?

计算机网络是信息技术领域中最为核心和复杂的一部分&#xff0c;它涵盖了众多的技术原理和应用。下面&#xff0c;我们将从技术层面深入探讨计算机网络的相关内容。 一、计算机网络的分层模型 计算机网络的分层模型是网络通信的基石&#xff0c;它将网络通信过程划分为不同的层…

【ARM Cache 系列文章 2.1 -- Cache PoP 及 PoDP 介绍】

请阅读【ARM Cache 及 MMU/MPU 系列文章专栏导读】 及【嵌入式开发学习必备专栏】 文章目录 PoP 及 PoDPCache PoDPCache PoP应用和影响PoP 及 PoDP Cache PoDP 点对深度持久性(Point of Deep Persistence, PoDP)是内存系统中的一个点,在该点达到的任何写操作即使在系统供电…

【深度解析GPT-4o】:全面解析新一代AI技术的突破与优势

目录 ​编辑 1.版本对比&#xff1a;从GPT-3到GPT-4&#xff0c;再到GPT-4o的飞跃 1.1 模型规模的扩展 1.2 训练数据的更新 1.3 算法优化与效率提升 1.4 案例分析 2.技术能力&#xff1a;GPT-4o的核心优势 2.1 卓越的自然语言理解 2.1.1 上下文理解能力 2.1.2 语义分…

教师个人出书需要具备什么条件?

邮箱&#xff1a;2621542409qq.com&#xff08;qkfb88688-来稿备注独著&#xff09; 教师个人出书通常需要具备以下一些条件&#xff1a; 1. 内容价值&#xff1a;书稿内容要有一定的学术价值、教学经验分享价值或对教育领域有独特的见解和贡献。 2. 原创性&#xff1a;书稿必…

软件测试——Java自动化测试Selenium

目录 1.运行环境 2.环境配置 3.第一个浏览器程序 4.浏览器操作 5.元素定位 6.元素操作常用API 7.特殊元素定位与操作 8.元素三大等待 9.iframe操作 10.window操作 11.select选择框 12.js语句执行 13.鼠标操作 14.截图操作 1.运行环境 编译工具&#xff1a;IDEA …

智能工单系统(IT运维工单系统),为企业IT运维跨部门协作量身定制!

当企业规模扩大、业务日益复杂时&#xff0c;普通的it运维工单管理方法已无法满足企业的需求&#xff0c;可能变得难以胜任。正因如此&#xff0c;智能工单系统&#xff08;IT运维工单系统&#xff09;进入人们的视野中。因其可以大幅提高企业跨部门协作的效率和满意度&#xf…

java版MES系统全套源码,支持 SaaS 多租户,管理后台的 Vue3 版本采用 :vue-element-plus-admin

MES生产制造执行系统源码&#xff0c;有演示&#xff0c;自主研发&#xff0c;多个项目应用案例&#xff0c;成熟稳定。支持二次开发&#xff0c;商业授权后可商用。 MES系统是面向制造企业车间执行层的生产信息化管理系统&#xff0c;能实时监控生产过程、管理制造数据、优化生…

深度学习入门-第3章-神经网络

前面的待补充 3.6 手写数字识别 3.6.1 MNIST 数据集 本书提供了便利的 Python 脚本 mnist.py &#xff0c;该脚本支持从下载 MNIST 数据集到将这些数据转换成 NumPy 数组等处理&#xff08;mnist.py 在 dataset 目录下&#xff09;。 使用 mnist.py 时&#xff0c;当前目录必须…

2米量级高速风洞测量系统,智能装备与通信技术产业展览会(2024中国军民两用)

"2米量级高速风洞测量系统&#xff1a;规范化改进与未来展望" 在航空航天领域&#xff0c;风洞试验是评估飞行器设计性能的关键手段。为了满足日益增长的科研需求&#xff0c;对2米量级高速风洞测量系统的规范化改进变得尤为重要。本文将探讨该系统的改进措施及其在…