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 条件;

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

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

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

相关文章

深入理解计算机系统 家庭作业 2.84

这题没有这个要求所以可以用 ? > : < 这种运算 以下代码用的是位级运算.因为我误解了题意 呜呜呜 想看用判断的代码请自行百度 ((((ux<<9>>9)<<((ux<<1>>24)-127)) - ((uy<<9>>9)<<((uy<<1>>24)-127)))>…

【攻防世界】ics-05(PHP伪协议+代码审计+Linux指令)

首先根据题目提示&#xff0c;进入云平台设备维护中心页面&#xff1a; 页面无异常&#xff0c;检查源代码&#xff1a; 发现注入点 ?page&#xff0c;大致有如下思路&#xff1a;1、SSTI模板引擎漏洞&#xff1b;2、XXS&#xff1b;3、PHP伪协议。 首先尝试SSTI漏洞&#xf…

市场复盘总结 20240408

仅用于记录当天的市场情况&#xff0c;用于统计交易策略的适用情况&#xff0c;以便程序回测 短线核心&#xff1a;不参与任何级别的调整&#xff0c;采用龙空龙模式 一支股票 10%的时候可以操作&#xff0c; 90%的时间适合空仓等待 二进三&#xff1a; 进级率 33% 最常用的…

数据结构__顺序表

概念及结构 顺序表是用一段物理地址连续的存储单元依次存储数据元素的线性结构&#xff0c;一般情况下采用数组存储。在数组上完成数据的增删查改 需要用到数组&#xff1a;数组的绝对优势&#xff1a;下标的随机访问&#xff08;因为物理空间连续&#xff09; a[i]等…

NatCross实现NASCAB云可云内网穿透指南

一、简介 1、NAS_CAB介绍 跨平台NAS软件,远程管理照片,影音和文件&#xff0c;无需专用设备,个人版永久免费。官网地址&#xff1a;https://www.nascab.cn/。 2、NatCross介绍 NatCross是内网穿透工具,也是免费的端口映射和DDNS动态域名解析软件。软件从2021年上线以来&…

10.枚举

1.背景及定义 枚举是在JDK1.5以后引入的。 主要用途是&#xff1a; 将一组常量组织起来&#xff0c; 在这之前表示一组常量通常使用定义常量的方式&#xff1a; public static final int RED 1; public static final int GREEN 2; public static final int BLACK 3; 但是…

2005-2023年各省国内生产总值指数分季度数据

2005-2023年各省国内生产总值指数分季度数据 1、时间&#xff1a;2005-2023年 2、来源&#xff1a;国家统计局、各省统计局 3、指标&#xff1a;地区生产总值指数(上年同期100)_累计值(%) 4、范围&#xff1a;31省 5、时间跨度&#xff1a;季度 6、缺失情况&#xff1a;无…

Redis 主从复制、哨兵模式、Cluster集群

目录 一、Redis 主从复制 1、主从复制介绍 2、主从复制的作用 3、主从复制流程&#xff1a; 4、搭建redis主从复制 4.1所有服务器搭建redis数据库 4.2修改Redis配置文件&#xff08;Master节点操作&#xff09; ​4.3修改Redis配置文件&#xff08;slave节点操作&#x…

【C++】详解 Unique 函数 (小白一看就懂!!!)

目录 一、前言 二、去重函数 Unique() ✨头文件 ✨用法与作用 ✨注意点 三、常考面试题 四、共勉 一、前言 经常刷算法题的朋友&#xff0c;肯定会经常看到题目中提到 去重 这样的字眼&#xff0c;或者需要我们通过 去重 来解题&#xff0c;由于之前对 去重 了解的不太清楚…

LinkedHashMap 集合源码分析

LinkedHashMap 集合源码分析 文章目录 LinkedHashMap 集合源码分析一、字段分析二、内部类分析三、构造方法分析四、内部方法分析五、总结 LinkedHashMap 是 HashMap 的子类&#xff0c;在 HashMap 的基础上维护了双向链表&#xff0c;保证了有序性。默认是不排序的&#xff0c…

JavaScript模块化开发的前世今生

一个兜兜转转&#xff0c;从“北深”回到三线城市的小码农&#xff0c;热爱生活&#xff0c;热爱技术&#xff0c;在这里和大家分享一个技术人员的点点滴滴。欢迎大家关注我的微信公众号&#xff1a;果冻想 前言 现代化的编程语言&#xff0c;基本都支持模块化的开发&#xff…

Transformer算法详解

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f366; 参考文章&#xff1a;TensorFlow入门实战&#xff5c;第3周&#xff1a;天气识别&#x1f356; 原作者&#xff1a;K同学啊|接辅导、项目定制 一、文本输入人类理解 词向量&#xff08;E…

ICLR24_OUT-OF-DISTRIBUTION DETECTION WITH NEGATIVE PROMPTS

摘要 分布外检测&#xff08;OOD Detection&#xff09;的研究对于开放世界&#xff08;open-world&#xff09;学习非常重要。受大模型&#xff08;CLIP&#xff09;启发&#xff0c;部分工作匹配图像特征和提示来实现文本-图像特征之间的相似性。 现有工作难以处理具有与已…

Java常用API_System——常用方法及代码演示

1.System.exit(int status) 方法的形参int status为状态码&#xff0c;如果是0&#xff0c;说明虚拟机正常停止&#xff0c;如果非0&#xff0c;说明虚拟机非正常停止。需要将程序结束时可以调用这个方法 代码演示&#xff1a; public class Test {public static void main(S…

第四百四十七回

文章目录 1. 概念介绍2. 思路与方法2.1 实现思路2.2 使用方法 3. 内容总结 我们在上一章回中介绍了"如何在页面上显示蒙板层"相关的内容&#xff0c;本章回中将介绍overlay_tooltip这个三方包.闲话休提&#xff0c;让我们一起Talk Flutter吧。 1. 概念介绍 我们在本…

【SCI绘图】【热力图系列2 R】多特征相关性分析热力图指定聚类 R

SCI&#xff0c;CCF&#xff0c;EI及核心期刊绘图宝典&#xff0c;爆款持续更新&#xff0c;助力科研&#xff01; 本期分享&#xff1a; 【SCI绘图】【热力图系列2 R】多特征相关性分析热力图指定聚类 R 1.环境准备 library(gplots) library(RColorBrewer)2.数据读取 ###…

python小项目——时钟模拟

钟表是一种计时的装置&#xff0c;也是计量和指示时间的精密仪器。钟表的样式千变万化&#xff0c;但是用来显示时间的表盘相差无几&#xff0c;大多数钟表表盘的样式由刻度&#xff08;共60个&#xff0c;围成圆形&#xff09;、指针&#xff08;时针、分针和秒针&#xff09;…

SpringBoot中这样用ObjectMapper,才够优雅!

目录 背景步骤在SpringBoot项目中要实现对象与Json字符串的互转&#xff0c;每次都需要像如下一样new 一个ObjectMapper对象&#xff1a;这样的代码到处可见&#xff0c;有问题吗&#xff1f;我们要使用jmh测试几种方式的区别&#xff1a;所以在我们真正使用的时候不要在方法中…

2024年3月30日~2024年4月7日周报

文章目录 一、前言二、创意收集2.1 多任务学习2.1.1 多任务学习的定义与优势2.1.2 多任务学习的分类 2.2 边缘检测2.2.1 基础理论2.2.2 sobel代码介绍2.2.3 canny代码介绍 三、《地震速度模型超分辨率的多任务学习》3.1 M-RUDSR架构3.2 详细介绍3.3 实验设置 四、实验五、小结5…

【LeetCode题解】2009. 使数组连续的最少操作数

文章目录 [2009. 使数组连续的最少操作数](https://leetcode.cn/problems/minimum-number-of-operations-to-make-array-continuous/)思路&#xff1a;一、排序去重滑动窗口代码&#xff1a; 2009. 使数组连续的最少操作数 思路&#xff1a;一、排序去重滑动窗口 1.对数组进行…