MySql(第二天)

article/2025/10/10 23:45:54

文章目录

    • 数据库查询操作
      • 1.单表查询
      • 2.多表查询
      • 3.MySql远程连接

数据库查询操作

1.单表查询

--数据库操作前的准备
-- 创建数据库
-- create database python_test_1 charset=utf8;-- 使用数据库
-- use python_test_1;-- students表
-- create table students(
--     id int unsigned primary key auto_increment not null,
--     name varchar(20) default '',
--     age tinyint unsigned default 0,
--     height decimal(5,2),
--     gender enum('男','女','中性','保密') default '保密',
--     cls_id int unsigned default 0,
--     is_delete bit default 0
-- );-- classes表
-- create table classes (
--     id int unsigned auto_increment primary key not null,
--     name varchar(30) not null
-- );-- 查询练习-- 查询所有字段-- select * from 表名;
select * from students;-- 查询指定字段-- select 列1,列2,... from 表名;
select name,age from students;-- 使用 as 给字段起别名-- select 字段 as 名字.... from 表名;
select name as name2 from students;-- select 表名.字段 .... from 表名;select students.name from students;-- 可以通过 as 给表起别名-- select 别名.字段 .... from 表名 as 别名;select name from students as s;select s.name from students as s;-- 消除重复行(查性别)-- distinct 字段 
select distinct gender from students;-- 条件查询-- 比较运算符> >= < <= != = <>-- select .... from 表名 where .....-- >-- 查询年纪大于18岁的信息select * from students where age > 18;-- <-- 查询年纪小于18岁的信息select * from students where age < 18;-- >=-- <=-- 查询小于或者等于18岁的信息select * from students where age <= 18;-- =-- 查询年龄为18岁的所有学生的名字select * from students where age = 18;-- != 或者 <>-- 查询年龄不为18岁的所有学生的名字select * from students where age != 18;select * from students where age <> 18;-- 逻辑运算符and or not-- and-- 18和28之间的所以学生信息select * from students where age > 18 and age < 28;-- 18岁以上的女性select * from students where age > 18 and gender = '女';-- or-- 18以上或者身高高过180(包含)以上select * from students where age > 18 or height >= 180;-- not-- 不在 18岁以上的女性 这个范围内的信息-- select * from students where not (age>18 and gender=2);select * from students where not ( age > 18 and gender = '女');select * from students not age > 18 and gender = '女';-- 模糊查询(where name like 要查询的数据)-- like -- % 替换任意个-- _ 替换1个-- 查询姓名中 以 "小" 开始的名字select * from students where name like '小%';-- 查询姓名中 有 "小" 所有的名字select * from students where name like '%小%';-- 查询有2个字的名字select * from students where name like '__';-- 查询有3个字的名字select * from students where name like '___';-- 查询至少有2个字的名字select * from students where name like '__%';-- 范围查询-- in (1, 3, 8)表示在一个非连续的范围内-- 查询 年龄为18或34的姓名select name from students where age = 18 or age = 34 or age = 56;select * from students where age in (18,34,56);-- not in 不非连续的范围之内-- 年龄不是 18或34岁的信息select * from students where age not in (18,34,56);-- between ... and ...表示在一个连续的范围内-- 查询 年龄在18到34之间的的信息-- 包含两端的数据 ,数据需要 从小到大填写select * from students where age between 18 and 34;-- not between ... and ...表示不在一个连续的范围内-- 查询 年龄不在18到34之间的的信息select * from students where age not between 18 and 34;-- 空判断-- 判空is null-- 查询身高为空的信息select * from students where  height is null;-- 判非空is not nullselect * from students where height is not null;-- 排序-- order by 字段-- asc-- asc从小到大排列,即升序-- desc-- desc从大到小排序,即降序-- 查询年龄在18到34岁之间的男性,按照年龄从小到大到排序select * from students where age between 18 and 34 and gender = '男' order by age asc ;-- 查询年龄在18到34岁之间的女性,身高从高到矮排序select * from students where age >= 18 and age <= 34 and gender='女'order by height desc;-- order by 多个字段-- 查询年龄在18到34岁之间的女性,身高从高到矮排序, -- 如果身高相同的情况下按照年龄从小到大排序
select * from students where age >= 18 and age <= 34 and gender='女'order by height desc , age asc;-- 如果年龄也相同那么按照id从大到小排序
select * from students where age >= 18 and age <= 34 and gender='女'order by height desc , age asc, id desc;-- 排序有优先级,第一位的优先级最高-- 聚合函数-- 总数-- count-- 查询男性有多少人select count(*) from students where gender = '男'; -- 最大值-- max-- 查询最大的年龄select max(age) from students;-- 查询女性的最高 身高select max(height) from students where gender = '女';-- 最小值-- minselect min(height) from  students where gender = '女';-- 求和-- sum-- 计算所有人的年龄总和select sum(age) from students;-- 平均值-- avg-- 计算平均年龄select avg(age) from students;-- 计算平均年龄 sum(age)/count(*)
select sum(age)/count(*) from students;-- 四舍五入 round(123.23 , 1) 保留1位小数-- 计算所有人的平均年龄,保留2位小数select round( avg(age),2) from students ;-- 计算男性的平均身高 保留2位小数select avg(height) from students;select sum(height) / count(*) from students;select count(height)  from students;-- sql中null不会进行计算 
select sum(height) / count(height) from students;-- 分组分组的公式 select 分组字段 from 表名 group by 分组的字段;-- group by-- 按照性别分组,查询所有的性别select gender from students group by gender;-- 计算每种性别中的人数select gender,count(*) from students group by gender;-- group_concat(...)-- 查询同种性别中的姓名select gender,group_concat(name) from students group by gender;-- 查询每组性别的平均年龄select gender,avg(age) from students group by gender;-- having(注意having和group by 连用 having后通常也要跟 聚合函数)-- 查询平均年龄超过30岁的性别,以及姓名select gender,avg(age),group_concat(name) from students group by genderhaving avg(age) > 30;-- 查询每种性别中的人数多于2个的信息select gender,count(*) from students group by genderhaving count(*) > 2;-- with rollup 汇总的作用(了解)select gender,count(*) from students group by genderwith rollup having count(*) > 2;-- 分页-- limit start, count-- limit 放在最后面(注意)起始位置 : (页数-1)*每一页个数-- 限制查询出来的数据个数-- 查询前5个数据select * from students limit 0,5; -- 每页显示2个,第1个页面select * from students limit 0,2;-- 每页显示2个,第2个页面select * from students limit 2,2;-- 每页显示2个,第3个页面select * from students limit 4,2;-- 每页显示2个,第4个页面select * from students limit 6,2;-- 每页显示2个,显示第6页的信息, 按照年龄从小到大排序select  * from students order by age asc limit 10,2;-- 先排序再分页,分页一定在最后做的

2.多表查询

-- 连接查询-- inner join ... on-- select ... from 表A inner join 表B;-- 查询 有能够对应班级的学生以及班级信息select * from students inner join classes on students.cls_id = classes.id;-- 按照要求显示姓名、班级select students.name,classes.name from students inner join classes on students.cls_id = classes.id;-- 给数据表起名字select s.name,c.name from students as sinner join classes as con s.cls_id = c.id;-- 查询 有能够对应班级的学生以及班级信息,显示学生的所有信息 students.*,只显示班级名称 classes.name.select students.*,classes.name from students inner join classeson students.cls_id = classes.id;-- 在以上的查询中,将班级名显示在第1列select classes.name, students.* from students inner join classeson students.cls_id = classes.id;-- 查询 有能够对应班级的学生以及班级信息, 按照班级名进行排序select classes.name, students.* from students inner join classeson students.cls_id = classes.id order by classes.name asc;-- 当时同一个班级的时候,按照学生的id进行从小到大排序
select classes.name, students.* from students inner join classeson students.cls_id = classes.id order by classes.name asc ,students.id asc;-- left join-- 查询每位学生对应的班级信息--左联,就是左边表的数据不管在右边能不能找到都显示 select * from students left join classes on students.cls_id = classes.id;-- 查询没有对应班级信息的学生select * from students left join classes on students.cls_id = classes.id where classes.id is null;-- right join   on-- 将数据表名字互换位置,用left join完成select * from students right join classes on classes.id = students.cls_id;-- 子查询-- 标量子查询: 子查询返回的结果是一个数据(一行一列)-- 列子查询: 返回的结果是一列(一列多行)-- 行子查询: 返回的结果是一行(一行多列)-- 查询出高于平均身高的信息(height)select avg(height) from students;select * from students where height > 172.076923;select * from students where height >(select avg(height) from students);-- 查询学生的班级号能够对应的 学生名字select id from classes;select * from students where cls_id in(1,2);select * from students where cls_id in (select id from classes);--数据操作前的准备--创建数据库表create table areas(aid int primary key,atitle varchar(20),pid int);--从sql文件中导入数据-- source 具体地址/areas.sql;-- 直接将文件拖入命令行中,获得文件地址,去掉引号即可
source xxx/areas.sql;--查询一共有多少个省select * from areas where pid is null;--例1:查询省的名称为“山西省”的所有城市select aid from areas where atitle = '山西省';select * from areas where pid = (select aid from areas where atitle = '山西省');select * from areas as a1 inner join areas as a2on a1.pid = a2.aid where a2.atitle = '山西省';--例2:查询市的名称为“广州市”的所有区县
select * from areas where pid = (select aid from areas where atitle = '广州市');select * from areas as a1 inner join areas as a2on a1.pid = a2.aid where a2.atitle = '广州市';

3.MySql远程连接

在这里插入图片描述


http://chatgpt.dhexx.cn/article/2RbVPsS2.shtml

相关文章

mysql查询0~3天、4~7天、8~15天、16~30天的sql语句

1、NOW(), CURDATE(), CURTIME()的值 2、date_add(now(), interval 1 day) //当前时间加一天 date_sub(now(), interval 1 day) //当前时间减一天 3、简单函数 CASE [col_name] WHEN [value1] THEN [result1]…ELSE [default] END 搜索函数 CASE WHEN [expr] THEN [result1]……

idea中maven项目打包为jar

在idea中打包maven项目时有很多解决的方案&#xff0c;可出乎意料的是&#xff0c;使用某些方案时有一些未知的错误情况。经过测验后&#xff0c;记录了下面一种简单有效的方法 在pom.xml中添加 <build><plugins><plugin><groupId>org.apache.maven.…

maven项目打包部署到服务器上

创建一个maven项目&#xff0c;在本地工程依赖jar包启动完成后&#xff0c;是不够的&#xff0c;还需将项目文件使用maven编译打包然后部署到服务器上 主流的springboot项目打包的时候需要在pom文件中指定主方法等配置 解决打包部署的时候报错no main manifest attribute, in…

如何将maven项目打包成可执行的jar

方法一&#xff1a;将项目及所依赖的所有jar包打包成一个jar。 1、pom.xml添加assembly插件 2、执行mvn assembly:assembly 3、生成如下文件 4、执行java -jar quickstart-1.0.0-jar-with-dependencies.jar 备注&#xff1a;第2步的命令也可以改成mvn package&#xff0c;但需…

Maven项目打包

在做项目时&#xff0c;都会在做项目的打包操作的&#xff0c;不同的环境下有不同的打包方式&#xff0c;在maven项目中可以使用pom.xml配置文件中实现配置&#xff0c;首先要创建一个web项目 先说一下打包成war包吧 - 创建好项目后&#xff0c;需要配置pom.xml配置文件来指定打…

IDEA打包Maven项目

一、第一次需要在IntelliJ IDEA中打包Maven项目&#xff0c;弄了半天&#xff0c;才搞好&#xff0c;记录一下。 二、打包步骤 1. 在IntelliJ IDEA主界面的右侧点击Maven Project&#xff1a; 2. 在打开的页面中点击lifecycle&#xff1a; 3. 然后双击package&#xff1a; 4.…

【IDEA】Maven项目打包 无效的目标发行版: 17 (全)

问题解决方法 项目运行出错Maven打包出错 问题&#xff1a; 曾经切换过jdk版本&#xff0c;切回17时&#xff0c;出现的了如题的错误。 且运行不报错&#xff0c;但maven进行打包时报错。其他版本同理。 解决方法&#xff1a; 1. 项目运行出错 pom.xml可能出现问题&#…

maven如何打包你会吗?

1.新建一个maven项目&#xff0c;在main/java中建立Main类 public class Main {public static void main(String[] args) {System.out.println("hello java ...");} } 2.添加依赖&#xff0c;使其成为可执行包 <build><plugins><!--打包成为可执行包-…

IDEA中Maven项目打包方式

方式一&#xff1a; 直接打包&#xff0c;不打包依赖包&#xff0c;仅打包出项目中的代码到JAR包中&#xff0c;可称为架包。在其他应用中运行时&#xff0c;必须保证其上面有相应的依赖包&#xff0c;才能运行。maven——》Lifecyle——》Clean——》Package 打包成功后就会出…

将IDEA MAVEN项目打包成jar包的通用方法

1.找到左上角File -> Project Structure&#xff0c;点击&#xff08;中文&#xff1a;文件 -> 项目结构&#xff09; 2. 在弹出的界面中&#xff0c;点击Artifacts&#xff08;中文&#xff1a;工件&#xff09;&#xff0c;点击内置页面的左上角的号&#xff0c;选中第…

maven多个子项目如何打包?

两种方式: 第一种方式: 父模块pom 不配置任何打包命令; 子模块(资源pom) 指定这个pom是资源类型; 子模块(服务pom) 指定这个pom是java服务类型; 1. 前提: maven对应多个子项目, 每个子项目都是一个单独运行的jar包 2. 项目结构: 五个 jar包; 一个common资源包 3. 思…

maven项目常用的打包方式

一、无依赖其他任何jar <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <version>2.4</version> <configuration> <archive>…

IDEA中MAVEN项目如何打包JAR包

这篇文章主要为大家展示了“IDEA中MAVEN项目如何打包JAR包”&#xff0c;内容简而易懂&#xff0c;条理清晰&#xff0c;希望能够帮助大家解决疑惑&#xff0c;下面让小编带领大家一起研究并学习一下“IDEA中MAVEN项目如何打包JAR包”这篇文章吧。 Idea中为一般的非Web项目打J…

Maven项目打包为jar的几种方式

Maven项目打包为jar的几种方式 这里收集整理下以往打包MAVEN项目为JAR包的各种方式 ##直接打包&#xff0c;不打包依赖包 直接打包&#xff0c;不打包依赖包&#xff0c;仅打包出项目中的代码到JAR包中。在POM中添加如下plugin即可&#xff0c;随后执行maven install <plu…

mac电脑如何图片压缩优化,附教程

mac电脑如何将图片无损压缩且优化&#xff1f;今天小编给大家带来一款软件ImageOptim这款小巧免费且开源的Mac 图片无损压缩优化工具。如何工作下面给大家介绍ImageOptim for mac图片压缩优化教程。 标题ImageOptim图片压缩优化软件使用教程 当你拖放图片到ImageOptim的窗口&…

Image augmentation library in Python-Augmentor使用心得

Augmentor是个增强图像训练数据的库&#xff0c;减少了使用图像库自己编写代码的繁杂工序&#xff0c;能够批量完成图像的旋转&#xff0c;放大&#xff0c;缩小&#xff0c;添加噪音以扩充数据量。接下来结合官方文档介绍下这个库和使用心得。 首先github&#xff1a;https:/…

9.1_image-augmentation

9.1 图像增广 在5.6节&#xff08;深度卷积神经网络&#xff09;里我们提到过&#xff0c;大规模数据集是成功应用深度神经网络的前提。图像增广&#xff08;image augmentation&#xff09;技术通过对训练图像做一系列随机改变&#xff0c;来产生相似但又不同的训练样本&…

ObjectFormer for Image Manipulation Detection and Localization

paper&#xff1a;https://arxiv.org/abs/2203.14681 Abstract 近年来图像编辑技术的发展对多媒体数据的可信度提出了严峻的挑战&#xff0c;这推动了图像篡改检测的研究。在本文中&#xff0c;我们提出了ObjectFormer来检测和定位图像操作。为了捕捉在RGB域中不可见的细微操…

Multimodal Co-Attention Transformer for Survival Prediction in Gigapixel Whole Slide Images

用于千兆像素全切片病理图像生存预测的多模态下跨模态注意机制的transformer 概念&#xff1a; premutation invariance(置换不变&#xff09;&#xff1a;指输入顺序的改变不会影响输出值 permutation-equivariant(置换等边&#xff09;&#xff1a;与premutation invariance …

【Image Captioning】Improve Image Captioning by Estimating the Gazing Patterns from the Caption

Improve Image Captioning by Estimating the Gazing Patterns from the Caption Department of Computer Science, The George Washington University, CVPR 2022 Abstract CNN等神经网络模型中提取的图像特征中产生类人描述方面达到了良好的性能。然而&#xff0c;之前没有…