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命令:…...

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数据库解决方案》教程(版权10090845)是我推出的第二套教程,目前已经是第二版修订了。这套教程定位于中级,是学完字典后的另一个专题讲解。数据库是数据处理的利器,教程中详细介绍了利用ADO连接ACCDB和EXCEL的方法…...

蓝桥杯刷题-12-公因数匹配-数论(分解质因数)不是很理解❓❓
蓝桥杯2023年第十四届省赛真题-公因数匹配 给定 n 个正整数 Ai,请找出两个数 i, j 使得 i < j 且 Ai 和 Aj 存在大于 1 的公因数。 如果存在多组 i, j,请输出 i 最小的那组。如果仍然存在多组 i, j,请输出 i 最小的所有方案中 j 最小的那…...

机器视觉学习(十二)—— 绘制图形
目录 一、绘制函数参数说明 1.1 cv2.line()绘制直线 1.2 cv2.rectangle()绘制矩形 1.3 cv2.circle() 绘制圆形 1.4 cv2.ellipse()绘制椭圆 1.5 cv2.polylines()绘制…...

软考信息处理技术员2024年5月报名流程及注意事项
2024年5月软考信息处理技术员报名入口: 中国计算机技术职业资格网(http://www.ruankao.org.cn/) 2024年软考报名时间暂未公布,考试时间上半年为5月25日到28日,下半年考试时间为11月9日到12日。不想错过考试最新消息的…...

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

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

个推助力小米汽车APP实现智能用户触达,打造智能出行新体验
4月3日,小米SU7首批交付仪式在北京亦庄的小米汽车工厂总装车间举行,全国28城交付中心也同步开启首批交付。随着小米SU7系列汽车的正式发售和交付,小米汽车APP迎来了用户体量的爆发式增长。 小米汽车APP是小米汽车官方推出的手机应用ÿ…...

科研 | SCI、SCIE、ESCI、JIF、IF、IEEE Fellow
文章目录 SCISCIESCIE和SCI的区别SCIE和ESCI的区别JIF和IF有什么不同吗?IEEE Fellow SCI 科学引文索引(Science Citation Index,SCI)是由Clarivate Analytics(原Thomson Reuters)维护的一个重要的学术引文…...

10倍提效!用ChatGPT编写系统功能文档。。。
系统功能文档是一种描述软件系统功能和操作方式的文档。它让开发团队、测试人员、项目管理者、客户和最终用户对系统行为有清晰、全面的了解。 通过ChatGPT,我们能让编写系统功能文档的效率提升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. 基本概念 概念:IP地址,英文全…...

代码随想录第34天| 1005.K次取反后最大化的数组和 134. 加油站 135. 分发糖果
1005.K次取反后最大化的数组和 1005. K 次取反后最大化的数组和 - 力扣(LeetCode) 代码随想录 (programmercarl.com) 贪心算法,这不就是常识?还能叫贪心?LeetCode:1005.K次取反后最大化的数组和_哔哩哔…...

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

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

如何使用PL/SQL Developer工具导出clob字段的表?
1 准备测试数据 导出测试对象:表test_0102,others字段为clob类型 --创建中间表test_0101 create table test_0101( id number, name varchar2(20), others clob);--插入100条测试数据 beginfor i in 1..100 loopinsert into test_0101 values(i,i||_a,l…...

蓝桥杯刷题 深度优先搜索-[NewOJ P1158]N皇后(C++)
题目描述 n皇后问题:n 个皇后放置在 nn 的棋盘上,并且使皇后彼此之间不能相互攻击。 上面布局用序列2 4 6 1 3 5表示,第i个数字表示第i行皇后放的列号。 按照这种格式输出前3个解,并统计总解数。 输入格式 输入一个正整数n&a…...

python实例2.2:编写一个装饰器,计算任何一个函数执行的时间(详解及其知识点拓展)
目录 一、编写一个装饰器,计算任何一个函数执行的时间 二、装饰器详解,及其用法举例...

Jenkins 持续集成 【CICD】
持续集成 (Continuous integration,简称CI) 持续集成是一种开发实践,它倡导团队成员频繁的集成他们的工作,每次集成都通过自动化构建(包括编译、构建、打包、部署、自动化测试)来验证ÿ…...

【CHI】(十二)Memory Tagging
目录 1. Introduction 2. Message extensions 3. Tag coherency 4. Read transaction rules 4.1 TagOp values 4.2 Permitted initial MTE tag states 5. Write transactions 5.1 Permitted TagOp values 5.2 TagOp, TU, and tags relationship 6. Dataless transact…...

Vue - 你知道Vue组件之间是如何进行数据传递的吗
难度级别:中级及以上 提问概率:85% 这道题还可以理解为Vue组件之间的数据是如何进行共享的,也可以理解为组件之间是如何通信的,很多人叫法不同,但都是说的同一个意思。我们知道,在Vue单页面应用项目中,所有的组件都是被嵌套在App.vue内…...

IP网络对讲广播系统审计
前言 这个系统是前两年在一个内网遇到的,当时顺手试了一个admin登陆之后再没有然后了,最近发现有大佬分享关于这个系统的漏洞,于是就把自己当初看的几个漏洞分享一下,系统比较简单,漏洞点很多,不要做坏事哦…...

蓝桥杯刷题--python38
197. 阶乘分解 - AcWing题库 def init(n): for i in range(2,n1): if not st[i]:primes.append(i) j0 while primes[j]*i<n: st[i*primes[j]]1 if i%primes[j]0: break j1 nint(input(…...

【LeetCode热题100】33. 搜索旋转排序数组(二分)
一.题目要求 整数数组 nums 按升序排列,数组中的值 互不相同 。 在传递给函数之前,nums 在预先未知的某个下标 k(0 < k < nums.length)上进行了 旋转,使数组变为 [nums[k], nums[k1], …, nums[n-1], nums[0], …...

基于Leaflet.js的Marker闪烁特效的实现-模拟预警
目录 前言 一、闪烁组件 1、关于leaflet-icon-pulse 2、 使用leaflet-icon-pulse 3、方法及参数简介 二、闪烁实例开发 1、创建网页 2、Marker闪烁设置 3、实际效果 三、总结 前言 在一些地质灾害或者应急情况当中,或者热门预测当中。我们需要基于时空位置来…...