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.hqwc.cn/news/601720.html

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

相关文章

信阳附大医院-市民心中的健康守护者

信阳附大医院,一所集医疗、预防、保健、科研、教学、康复于一体的现代化综合医院,坐落于信阳市工区路600号,是市卫生部门批准成立的医疗机构,更是市民心中的健康守护者. 医院环境优雅,设施先进,服务周到,汇聚了一支技术精湛、经验丰富的医疗团队.医师们以患者为中心,用心倾听,精…

皮具5G智能制造工厂数字孪生可视化平台,推进企业数字化转型

皮具5G智能制造工厂数字孪生可视化平台,推进企业数字化转型。随着信息技术的快速发展,数字化转型已成为企业提升竞争力、实现可持续发展的关键路径。皮具行业,作为一个传统的手工制造业,正面临着巨大的市场变革和技术挑战。如何在…

一款轻量、干净的 Vue 后台管理框架

开始之前 在开始介绍之前我想谈谈为什么要自己做一个后台管理,我知道很多人都用一些开源的后台管理项目,这些老前辈有很多亮点值得学习,但是存在的一些问题同样不可忽视,我认为很多开发者会被困扰(仅代表个人观点) 技术栈老旧不升…

【Labview】虚拟仪器技术

一、背景知识 1.1 虚拟仪器的定义、组成和应用 虚拟仪器的特点 虚拟仪器的突出特征为“硬件功能软件化”,虚拟仪器是在计算机上显示仪器面板,将硬件电路完成信号调理和处理功能由计算机程序完成。 虚拟仪器的组成 硬件软件 硬件是基础,负责将…

ATAM方法架构评估实践

用ATAM方法评估软件体系结构,其工作分为4个基本阶段,即演示、调查和分析、测试和报告ATAM(如图1所示)。接下来分别就每个阶段的实践进行详细介绍。 图1 ATAM方法的评估实践阶段划分 1.阶段1——演示(Presentation&…

2.SpringBoot利用Thymeleaf实现页面的展示

什么是Thymeleaf? Thymeleaf是一个现代服务器端Java模板引擎,适用于Web和独立环境,能够处理HTML,XML,JavaScript,CSS甚至纯文本。 Thymeleaf的主要目标是提供一种优雅且高度可维护的模板创建方式。为实现这…

内存管理new and delete(C++)

在本篇中,将会较为详细的介绍在 Cpp 中的两个新操作符 new 和 delete,将会介绍其中的底层原理,以及这两个操作符的使用方法。其中还介绍了 new/delete 操作符使用的细节,还扩展了一些有关定位 new 表达式的知识点。最后总结了 mal…

【简单讲解下C++max函数的使用】

🌈个人主页: 程序员不想敲代码啊 🏆CSDN优质创作者,CSDN实力新星,CSDN博客专家 👍点赞⭐评论⭐收藏 🤝希望本文对您有所裨益,如有不足之处,欢迎在评论区提出指正,让我们共…

动态支付策略:Go 语言中策略模式的妙用

关注公众号【爱发白日梦的后端】分享技术干货、读书笔记、开源项目、实战经验、高效开发工具等,您的关注将是我的更新动力! 在现代软件架构中,支付功能是不可或缺的一环。无论是在线购物还是虚拟服务,支付策略的选择直接影响用户体…

用API技术为数据安全“上保险”——双重保障

🔍API在数据安全领域的核心地位 随着数字化进程的狂飙突进,应用程序接口(API)已化身为企业内部、不同平台间以及用户交互的关键纽带。它们不仅是数据流动与共享的驱动引擎,更是守护数据安全的重要防线。其中&#xf…

Longan Pi 3H 开发板体验

Longan Pi 3H 开发板体验 开箱内容 打开包装,你可以看到以下物品 一个Longan Pi 3H盒子Longan Pi 3H开发板 产品基本介绍 Longan Pi 3H 是基于 Longan Module 3H 核心板的 ARM Linux 开发板,以 H618 (Quad core ARM Cortex-A531.5Ghz , 64-bit) 为主控…

FPN网络

FPN(Feature Pyramid Network)是一种用于目标检测和语义分割等计算机视觉任务的网络结构。它旨在解决不同尺度下的特征信息不足的问题,提高模型对小目标和远距离目标的检测能力。在目标检测任务中,由于目标的尺度和形状各异&#…