当前位置: 首页 > news >正文

MySQL学习笔记(二)

1、把查询结果中去除重复记录

 

2、连接查询 

从一张表中单独查询,称为单表查询。emp表和dept表联合起来查询数据,从emp表中取员工名字,从dept表中取部门名字,这种跨表查询,多张表联合起来查询数据,被称为连接查询。

(1)连接查询的分类

根据表连接的方式分类:内连接、外连接、全连接(几乎不用)

内连接又分为等值连接、非等值连接和自连接

外连接又分为左外连接(左连接)、右外连接(右连接)

(2)当两张表进行连接查询时,没有任何条件的限制会发生什么现象?

最终的查询结果条数,是两张表条数的乘积,这种现象被称为笛卡尔积现象

表的连接次数越多效率越低,尽量避免表的连接次数

例子:查询每个员工所在的部门名称

(3)避免笛卡尔积现象就是连接时加条件

 (4) 内连接的等值连接

例子:查询每个员工所在部门名称,显示员工名和部门名

 SQL92的缺点:结构不清晰,表的连接条件,和后期进一步筛选的条件,都放到了where后面 

SQL99的优点:表连接的条件是独立的,连接之后,如果还需要进一步筛选,再往后继续添加where

(5)内连接的非等值连接

例子:找出每个员工的薪资等级

(6)内连接的自连接

例子:查询员工的上级领导(一张表看成两张表)

(7)外连接

内连接的特点:查询出能够匹配上条件的数据,A和B两张表没有主次关系

外连接:两张表连接产生了主次关系

外连接的查询结果条数一定大于等于内连接的查询结果条数

 

(8)三张以上的表

select ...

from a join b on a和b的连接条件

join c on a和c的连接条件

join d  on a和d的连接条件

一条SQL中内连接和外连接可以混合

例子:找出每个员工的部门名称以及工资等级,要求显示员工名、部门名、薪资、薪资等级

找出每个员工的部门名称以及工资等级,还有上级领导,要求显示员工名、领导名、部门名、薪资、薪资等级 


3、子查询

select语句中嵌套select语句,被嵌套的select语句称为子查询

select ...(select) from ...(select) where ...(select)

(1)where子句中的子查询

例子:找出比最低工资高的员工姓名和工资

(2)from子句中的字查询

 注意:from后面的子查询,可以将子查询的查询结果当做一张临时表

例子:找出每个岗位的平均工资的薪资等级

(3)select后面出现的子查询(了解)

例子:找出每个员工的部门名称

 注意:对于select后面的子查询来说,这个子查询只能一次返回1条结果,多余1条会报错

4、union合并查询结果集

例子:查询工作岗位是MANAGER和SALESMAN的员工

a连接b连接c

a 10条记录 

b 10条记录 

c 10条记录 

匹配次数是:1000

a连接b一个结果:10*10=100次

a连接c一个结果:10*10=100次

使用union的话:100+100=200次

5、limit(重要)

limit将查询结果集的一部分取出来,通常使用在分页查询当中(分页作用是提升用户体验)

完整用法:limit startIndext,length

缺省用法:limit 5; 这是取前5

注意:mysql当中limit在order by之后执行

例子:按照薪资降序,取出排名在前5名的员工

分页

 每页显示3条记录

第一页:limit 0,3

第二页:limit 3,3

第三页:limit 6,3

第四页:limit 9,3

...

每页显示pageSize条记录

第pageNo页:limit (pageNo-1)*pageSize, pageSize

6、关于DQL语句的总结

select ... from ... where ... group by ... having ... order by ... limit ...

执行顺序:from、where、group by、having、select、order by、limit

7、表的创建(建表)

建表属于DDL语句,DDL包括:create、drop、alter

(1)语法

create table 表名(字段名1 数据类型,字段名2 数据类型, 字段名3 数据类型);

表名建议以t_或者tbl_开始,可读性强

(2)关于mysql中常见的数据类型

  • varchar:可变长度的字符串,最长255。节省空间,会根据实际的数据长度动态分配空间。优点节省空间,缺点需要动态分配空间,速度慢。
  • char:定长字符串,最长255。不管实际的数据长度,分配固定长度的空间取存储数据。优点不需要动态分配空间,速度快,缺点使用不当可能会导致空间的浪费。

比如性别字段选char,姓名字段选varchar

  • int:数字中的整数型,最长11,等同于java中的int
  • bigint:数字中的长整型,等同于java中的long
  • float:单精度浮点型数据
  • double:双精度浮点型数据
  • date:短日期
  • datetime:长日期
  • clob:字符大对象,最多可以存储4G的字符串,超过255个字符的都要采用CLOB大对象来存储。比如存储一篇文章。
  • blob:二进制大对象,Binary Large Object,专门用来存储图片、声音、视频等流媒体数据。往BLOB类型的字段上插入数据时,例如插入一个图片、视频等,需要使用IO流才行。

举例:t_movie电影表

电影编号 no(bigint)

电影名 name(vachar)

描述信息 description(clob)

上映日期 playtime(data)

时长 time(double)

海报 image(blob)

类型 type(char)

(3)创建一个学生表(学号、姓名、年龄、性别、邮箱地址)

create table t_student(no int, name varchar(32), age int(3), sex char(1),email varchar(255));

删除表

drop table t_student;  当这张表不存在的时候会报错

drop table if exits t_student;

(4)插入数据

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

注意:字段名要和值一一对应,数量要对应,数据类型要对应

数据库中的命名规范:所有的标识符都是全部小写,单词和单词之间使用下划线进行衔接

注意:insert语句但凡是执行成功了,必然会多一条记录。没有给其他字段指定值的话,默认值是NULL

创建表时给默认值:

create table t_student(no int, name varchar(32), age int(3), sex char(1) default '女',email varchar(255));

insert语句的字段名可以省略,但是值都要按顺序写上:

(5)插入日期 

数字格式化:format(数据,'格式')

str_to_data:将字符串varchar类型转换成date类型,通常使用在插入insert上

date_format:将date类型转换成具有一定格式的varchar字符串类型,通常使用在查询select上

mysql的日期格式:

  • %Y 年
  • %m 月
  • %d 日
  • %h 时
  • %i 分
  • %s 秒

str_to_date

 如果提供的字符串是'%Y-%m-%d'的格式,str_to_date就可以不写了

date_format

以上的SQL语句实际上是进行了默认的日期格式化,自动将数据库中的date类型转换成varchar类型,并且采用的格式是mysql默认的日期格式:%Y-%m-%d

 (6)date和datetime两个类型的区别

date是短日期:只包括年月日,默认格式%Y-%m-%d

datetime是长日期:包括年月日时分秒,默认格式%Y-%m-%d %h:%i:%s

在mysql中获取系统当前时间使用now()函数,并且获取的时间带有时分秒信息

(7)修改update

语法格式:update 表名 set 字段名1=值1,字段名2=值2,字段名3=值3...where 条件;

注意:没有条件限制会导致所有数据全部更新

(8)删除数据delete

语法格式:delete from 表名 where 条件;

注意:没有条件,整张表的数据会全部删除

相关文章:

MySQL学习笔记(二)

1、把查询结果中去除重复记录 2、连接查询 从一张表中单独查询,称为单表查询。emp表和dept表联合起来查询数据,从emp表中取员工名字,从dept表中取部门名字,这种跨表查询,多张表联合起来查询数据,被称为连…...

Verilog语法——按位取反“~“和位宽扩展的优先级

前言 先说结论,如下图所示,在Verilog中“~ ”按位取反的优先级是最高的,但是在等式计算时,有时候会遇到位宽扩展,此时需要注意的是位宽扩展的优先级高于“~”。 验证 仿真代码,下面代码验证的是“~”按位取…...

Navicat工具使用

Navicat的本质: 在创立连接时提前拥有了数据库用户名和密码 双击数据库时,相当于建立了一个链接关系 点击运行时,远程执行命令,就像在xshell上操作Linux服务器一样,将图像化操作转换成SQL语句去后台执行 一、打开Navi…...

linux常用指令(一)——mv、rm、which、find

mv命令: 用于查看文件内容 语法:mv 参数1 参数2 参数1,linux路径,表示被移动的文件或文件夹 参数2,linux路径,表示要移动去的地方,如果目标不存在,则进行改名 rm命令&#xff1a…...

lottery-攻防世界

题目 flag在这里要用钱买,这是个赌博网站。注册个账号,然后输入七位数字,中奖会得到相应奖励。 githacker获取网站源码 ,但是找到了flag文件但是没用。 bp 抓包发现api.php,并且出现我们的输入数字。 根据题目给的附…...

深入理解指针2:数组名理解、一维数组传参本质、二级指针、指针数组和数组指针、函数中指针变量

目录 1、数组名理解 2、一维数组传参本质 3、二级指针 4、指针数组和数组指针 5、函数指针变量 1、数组名理解 首先来看一段代码: int main() {int arr[10] { 1,2,3,4,5,6,7,8,9,10 };printf("%d\n", sizeof(arr));return 0; } 输出的结果是&…...

【C/C++】C语言实现单链表

C语言实现单链表 简单描述代码运行结果 简单描述 用codeblocks编译通过 源码参考连接 https://gitee.com/IUuaena/data-structures-c.git 代码 common.h #ifndef COMMON_H_INCLUDED #define COMMON_H_INCLUDED#define ELEM_TYPE int //!< 链表元素类型/*! brief 返回值类…...

VBA数据库解决方案第九讲:把数据库的内容在工作表中显示

《VBA数据库解决方案》教程&#xff08;版权10090845&#xff09;是我推出的第二套教程&#xff0c;目前已经是第二版修订了。这套教程定位于中级&#xff0c;是学完字典后的另一个专题讲解。数据库是数据处理的利器&#xff0c;教程中详细介绍了利用ADO连接ACCDB和EXCEL的方法…...

蓝桥杯刷题-12-公因数匹配-数论(分解质因数)不是很理解❓❓

蓝桥杯2023年第十四届省赛真题-公因数匹配 给定 n 个正整数 Ai&#xff0c;请找出两个数 i, j 使得 i < j 且 Ai 和 Aj 存在大于 1 的公因数。 如果存在多组 i, j&#xff0c;请输出 i 最小的那组。如果仍然存在多组 i, j&#xff0c;请输出 i 最小的所有方案中 j 最小的那…...

机器视觉学习(十二)—— 绘制图形

目录 一、绘制函数参数说明 1.1 cv2.line(&#xff09;绘制直线 1.2 cv2.rectangle&#xff08;&#xff09;绘制矩形 1.3 cv2.circle&#xff08;&#xff09; 绘制圆形 1.4 cv2.ellipse&#xff08;&#xff09;绘制椭圆 1.5 cv2.polylines&#xff08;&#xff09;绘制…...

软考信息处理技术员2024年5月报名流程及注意事项

2024年5月软考信息处理技术员报名入口&#xff1a; 中国计算机技术职业资格网&#xff08;http://www.ruankao.org.cn/&#xff09; 2024年软考报名时间暂未公布&#xff0c;考试时间上半年为5月25日到28日&#xff0c;下半年考试时间为11月9日到12日。不想错过考试最新消息的…...

linux:du和df区别

文章目录 1. 概述2. du 命令2. df 命令3. 区别总结 1. 概述 du 和 df 都是 Linux 系统中用于查看磁盘空间使用情况的命令&#xff0c;但它们的功能和用法有所不同。 2. du 命令 du 是 “disk usage” 的缩写&#xff0c;用于显示文件或目录的磁盘使用情况。du 命令用于查看指…...

MacOS Docker 部署 Redis 数据库

一、简介 Redis是一个开源的、使用C语言编写的、基于内存亦可持久化的Key-Value数据库&#xff0c;它提供了多种语言的API&#xff0c;并支持网络交互。Redis的数据存储在内存中&#xff0c;因此其读写速度非常快&#xff0c;每秒可以处理超过10万次读写操作&#xff0c;是已知…...

个推助力小米汽车APP实现智能用户触达,打造智能出行新体验

4月3日&#xff0c;小米SU7首批交付仪式在北京亦庄的小米汽车工厂总装车间举行&#xff0c;全国28城交付中心也同步开启首批交付。随着小米SU7系列汽车的正式发售和交付&#xff0c;小米汽车APP迎来了用户体量的爆发式增长。 小米汽车APP是小米汽车官方推出的手机应用&#xff…...

科研 | SCI、SCIE、ESCI、JIF、IF、IEEE Fellow

文章目录 SCISCIESCIE和SCI的区别SCIE和ESCI的区别JIF和IF有什么不同吗&#xff1f;IEEE Fellow SCI 科学引文索引&#xff08;Science Citation Index&#xff0c;SCI&#xff09;是由Clarivate Analytics&#xff08;原Thomson Reuters&#xff09;维护的一个重要的学术引文…...

10倍提效!用ChatGPT编写系统功能文档。。。

系统功能文档是一种描述软件系统功能和操作方式的文档。它让开发团队、测试人员、项目管理者、客户和最终用户对系统行为有清晰、全面的了解。 通过ChatGPT&#xff0c;我们能让编写系统功能文档的效率提升10倍以上。 ​《Leetcode算法刷题宝典》一位阿里P8大佬总结的刷题笔记…...

【Linux进阶之路】地址篇

文章目录 一、ipv4地址1. 基本概念2. 分类3.CIDR4.特殊的ip地址 二、IP协议1. 协议字段2.分片与重组3.路由 三、NAT技术1.公有和私有2.NAT3.NAPT 四、ARP协议1.MAC地址2.ARP 五、DHCP协议六、DNS协议尾序 一、ipv4地址 1. 基本概念 概念&#xff1a;IP地址&#xff0c;英文全…...

代码随想录第34天| 1005.K次取反后最大化的数组和 134. 加油站 135. 分发糖果

1005.K次取反后最大化的数组和 1005. K 次取反后最大化的数组和 - 力扣&#xff08;LeetCode&#xff09; 代码随想录 (programmercarl.com) 贪心算法&#xff0c;这不就是常识&#xff1f;还能叫贪心&#xff1f;LeetCode&#xff1a;1005.K次取反后最大化的数组和_哔哩哔…...

Rust线程间通信通讯channel的理解和使用

Channel允许在Rust中创建一个消息传递渠道&#xff0c;它返回一个元组结构体&#xff0c;其中包含发送和接收端。发送端用于向通道发送数据&#xff0c;而接收端则用于从通道接收数据。不能使用可变变量的方式&#xff0c;线程外面修改了可变变量的值&#xff0c;线程里面是拿不…...

Vue3组件基础示例

组件是vue中最推崇的&#xff0c;也是最强大的功能之一&#xff0c;就是为了提高重用性&#xff0c;减少重复性的开发。 如何使用原生HTML方法实现组件化 在使用原生HTML开发时&#xff0c;我们也会遇到一些常见的功能、模块&#xff0c;那么如何在原生HTML中使用组件化呢&am…...

CTF show Web 红包题第六弹

提示 1.不是SQL注入 2.需要找关键源码 思路 进入页面发现是一个登录框&#xff0c;很难让人不联想到SQL注入&#xff0c;但提示都说了不是SQL注入&#xff0c;所以就不往这方面想了 ​ 先查看一下网页源码&#xff0c;发现一段JavaScript代码&#xff0c;有一个关键类ctfs…...

大模型多显卡多服务器并行计算方法与实践指南

一、分布式训练概述 大规模语言模型的训练通常需要分布式计算技术,以解决单机资源不足的问题。分布式训练主要分为两种模式: 数据并行:将数据分片到不同设备,每个设备拥有完整的模型副本 模型并行:将模型分割到不同设备,每个设备处理部分模型计算 现代大模型训练通常结合…...

自然语言处理——循环神经网络

自然语言处理——循环神经网络 循环神经网络应用到基于机器学习的自然语言处理任务序列到类别同步的序列到序列模式异步的序列到序列模式 参数学习和长程依赖问题基于门控的循环神经网络门控循环单元&#xff08;GRU&#xff09;长短期记忆神经网络&#xff08;LSTM&#xff09…...

HashMap中的put方法执行流程(流程图)

1 put操作整体流程 HashMap 的 put 操作是其最核心的功能之一。在 JDK 1.8 及以后版本中&#xff0c;其主要逻辑封装在 putVal 这个内部方法中。整个过程大致如下&#xff1a; 初始判断与哈希计算&#xff1a; 首先&#xff0c;putVal 方法会检查当前的 table&#xff08;也就…...

基于 TAPD 进行项目管理

起因 自己写了个小工具&#xff0c;仓库用的Github。之前在用markdown进行需求管理&#xff0c;现在随着功能的增加&#xff0c;感觉有点难以管理了&#xff0c;所以用TAPD这个工具进行需求、Bug管理。 操作流程 注册 TAPD&#xff0c;需要提供一个企业名新建一个项目&#…...

Java毕业设计:WML信息查询与后端信息发布系统开发

JAVAWML信息查询与后端信息发布系统实现 一、系统概述 本系统基于Java和WML(无线标记语言)技术开发&#xff0c;实现了移动设备上的信息查询与后端信息发布功能。系统采用B/S架构&#xff0c;服务器端使用Java Servlet处理请求&#xff0c;数据库采用MySQL存储信息&#xff0…...

MySQL JOIN 表过多的优化思路

当 MySQL 查询涉及大量表 JOIN 时&#xff0c;性能会显著下降。以下是优化思路和简易实现方法&#xff1a; 一、核心优化思路 减少 JOIN 数量 数据冗余&#xff1a;添加必要的冗余字段&#xff08;如订单表直接存储用户名&#xff09;合并表&#xff1a;将频繁关联的小表合并成…...

springboot 日志类切面,接口成功记录日志,失败不记录

springboot 日志类切面&#xff0c;接口成功记录日志&#xff0c;失败不记录 自定义一个注解方法 import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target;/***…...

快速排序算法改进:随机快排-荷兰国旗划分详解

随机快速排序-荷兰国旗划分算法详解 一、基础知识回顾1.1 快速排序简介1.2 荷兰国旗问题 二、随机快排 - 荷兰国旗划分原理2.1 随机化枢轴选择2.2 荷兰国旗划分过程2.3 结合随机快排与荷兰国旗划分 三、代码实现3.1 Python实现3.2 Java实现3.3 C实现 四、性能分析4.1 时间复杂度…...

【免费数据】2005-2019年我国272个地级市的旅游竞争力多指标数据(33个指标)

旅游业是一个城市的重要产业构成。旅游竞争力是一个城市竞争力的重要构成部分。一个城市的旅游竞争力反映了其在旅游市场竞争中的比较优势。 今日我们分享的是2005-2019年我国272个地级市的旅游竞争力多指标数据&#xff01;该数据集源自2025年4月发表于《地理学报》的论文成果…...