Mysql基础篇笔记

数据表

链接:https://pan.baidu.com/s/1dPitBSxLznogqsbfwmih2Q 
提取码:b0rp 
--来自百度网盘超级会员V5的分享

sql的执行顺序

根据顺序  也就是说  select后面的字段别名 只能在order by中使用

mysql不支持sql92的外连接

mysql不支持满外连接  可以用union补上

去重关键字:DISTINCT

用在单列上是对一列数据去重

用在双列或以上  是对DISTINCT后面这一组数据去重

关于列参与运算问题,数字可以直接参与运算,无论是int或者varchar(只要是数字), 时间类型参与运算自己看情况,null指无法参与运算

可以使用IFNULL(column,0) 来转换

关于着重号    就是  ``     还有特殊用用途,就是当字段是sql保留字或者特殊字的时候

比如下面有张表取名是order   这个和排序时候的order by里的order  属于特殊字

如果直接用  select * from order去查询就报错了

如果在表里有个order字段

需要用着重号    ``

查询常数

查询时候可以加个表里没有的列进行查询

显示表结构

DESCRIBE employees

desc employees

where过滤查询数据

Mysql语法不严谨

练习题:

查询员工12个月的工资总和,并起别名年薪

注意 如果要求取名 A B   中间有个空格的情况下  那么必须加单引号或者双引号或者着重号

查询employees表中对job_id去重

查询工资大于12000的员工姓名和工资

查询员工号为176的员工的姓名和部门号

显示表 departments的结构,并查询其中的全部数据

运算问题

Mysql中的  +  -  *  / div    %取余(取模) mod

dual可以看作mysql中的伪表   即使100/2  得到结果是50.0000  只要是除法都会保留4位小数

注意:如果100/0   就是说100 div 0  或者100 mod 0 结果都是null 可以理解为0不能做除数

取余  % 或者 mod和取余(取模)一个意思  

如果与字符串数字相加

如果与字符串不是数字相加

有null参与运算就是null

练习:查询员工id为偶数的员工信息  员工id%2=0

比较运算符 

等于=       安全等于 <=>   不等于<>或者!=     小于<   小于等于<=    大于>   大于等于>=

比较结果为true 返回 1          比较结果为false  返回0     其他情况返回null

下面来理解 为什么查询时候要查询null的时候  需要用xxx is null  而不能用  xxx=null

关于安全等于    <=>  

解释:安全等于(<=>)和等于(=)作用是相似的,唯一区别是'<=>'除了'='功能外还可以用来对null进行判断

用=比较   会出现1   0  null 三种情况    而用<=>比较   会出现 1 或者 0

练习:查询employees表中 commission_pct为null的数据有哪些 

那么可查为null  可以使用关键字  is null 也可以使用运算符  <=>

运算符中的一些关键字

is null                  为空运算符                       判断值,字符串或者表达式是否为空

is not null           不为空运算符                   判断值,字符串或者表达式是否不为空

isnull                   为空运算符                      判断一个值,字符串或者表达式是否为空

--------------------------------------------------------------------------------------------------------------------

least                    最小值运算符                   在多个值中返回最小值

greatest              最大值运算符                   在多个值中返回最大值

-----------------------------------------------------------------------------------------------------------------------

between xxx and xxx      两值之间的运算符    判断一个值是否在两个值之间

--------------------------------------------------------------------------------------------------------------------

in                      属于运算符                       判断一个值是否为列表中的任意一个值

not in               不属于运算符                    判断一个值是否不是一个列表中的任意一直个

-------------------------------------------------------------------------------------------------------------------

like                 模糊匹配运算符          判断一个值是否符合模糊匹配规则

-----------------------------------------------------------------------------------------------------------------------

regexp           正则表达式运算符        判断一个值是否符合正则表达式的规则

rlike               正则表达式运算符            判断一个值是否符合正则表达式的规则

关于

is null                  为空运算符                       判断值,字符串或者表达式是否为空

is not null           不为空运算符                   判断值,字符串或者表达式是否不为空

isnull                   为空运算符                      判断一个值,字符串或者表达式是否为空

的演示

和 is not null相同的一种变态写法

关于 

least                    最小值运算符                   在多个值中返回最小值

greatest              最大值运算符                   在多个值中返回最大值

的演示

看看就好  无意义

关于

between xxx and xxx      两值之间的运算符    判断一个值是否在两个值之间   包含边界

演示

注意:使用between 条件1 and 条件2           要求条件1是下线    条件2是上线

反过来   查询工资不在6000到8000之间的呢

not between xxx and xxx

关于

in                      属于运算符                       判断一个值是否为列表中的任意一个值

not in               不属于运算符                    判断一个值是否不是一个列表中的任意一直个

的演示

int(里面放着一个set)    not int(里面放着一个set)

注意:为什么这样写是错误的        这是错误演示

not in

关于

like                 模糊匹配运算符          判断一个值是否符合模糊匹配规则

的演示

练习:查询表中包含字符'a'且包含字符'e'的员工信息

模糊查询存在一些特殊情况

比如我需要查询第二个字符是'_'并且第三个字符是'a'的

用转义字符:\

转义字符的特殊用法     ESCAPE的用法

关于

regexp           正则表达式运算符        判断一个值是否符合正则表达式的规则

rlike               正则表达式运算符            判断一个值是否符合正则表达式的规则

的演示

^  开头

& 结尾

逻辑运算符:  

逻辑运算符主要用来判断表达式的真假,在Mysql中,逻辑运算符的返回结果为 1(true)     0(false) 或者null

not 或 !                         逻辑非

and 或 &&                    逻辑与

or 或 ||                          逻辑或

xor                                逻辑异或

and的优先级高于or

关于XOR  就是满足一个条件但是不满足另外的条件

SELECT * FROM your_table WHERE condition1 XOR condition2 XOR condition3;

就是满足其中一个条件   但是不能同事满足其他条件

比较运算符和逻辑运算符练习

查询工资不在5000到12000的员工的姓名和工资

查询在20或50号部门工作的员工姓名和部门号

查询公司中没有管理者的员工姓名及job_id

查询公司中有奖金的员工姓名,工资和奖金级别

查询员工姓名的第三个字母是a的员工姓名

查询姓名中有字母a和k的员工姓名

查询员工表中 first_name以 'e' 结尾的员工信息

查询员工表中部门编号在80到100之间的姓名,工种

查询员工表中manager_id是 100,101,110的员工姓名,工资,管理者id

第5章  排序与分页

asc  升序  默认

desc 降序

没有使用排序 例如

select * from employees  排序规则是数据库表数据  实际添加的先后顺序

使用别名进行排序

select查询语句的执行顺序

为什么只有order by中才可以使用别名  原因 select 选择要显示的列 在order by执行之前

# 注意 根据sql查询的顺序  列的别名只能在order by中使用 where中使用会报错

Limit 分页

显示第二页面20条数据

这里有个公式

pageNo:表示页数

pageSize:表示显示条数

limit (pageNo-1)*pageSize,pageSize

那么显示第二页20条数据就是

limit (2-1)*20,20   注意MYSQL不支持这样写   实际项目中 计算好

limit 0,20 可以简写成 limit 20

where ..... order by....  limit ...

练习:员工表一共107条数据  但是我只想显示第 32,33条数据

limit 参数1,参数2            参数1  意思跳过前面多少条数据   参数2  显示后面多少条数据

那么 limit 31,2           跳过前面31条数据   显示两条   那么不就是 32 和 33条数据么

LIMIT在Mysql8z之后新特性

LIMIT ....OFFSET.....     其实就是原先的参数换个位置

LIMIT 放在查询语句最后



练习:查询员工表中工资最高的员工信息

注意:

不同数据库分页不同

LIMIT可以在Mysql,PGSQL,MARIADB,SQLite等数据库中使用,表示分页

不能使用在SQLServer DB2 Oracle中

Oracle中实现分页的一种方式: 通过rownum

 
   SELECT *
    FROM (
        SELECT 
              my_table.*,  
            ROWNUM AS row_num
        FROM my_table
        WHERE ROWNUM <= page * size
    )
    WHERE row_num > ((page-1) * size);

排序与分页练习

查询员工的姓名和部门号和年薪,按照年薪降序,如果年薪相同按姓名升序显示

当然 asc可以不写

不然引号可以

查询工资不在8000到17000的员工的姓名和工资,按工资降序,显示第21到40位置的数据

查询邮箱中包含e的员工信息,并先按邮箱的字节数降序,再按部门号升序

第六章:关联表查询

比如查询员工 'Abel'在哪个城市工作

如果这样查  数据库连接要3次

那么关联表查询目的就是一次查出来

演示笛卡尔积

多表联查:需要有连接条件    这里是sql92的写法

多表联查前提条件是这些一起查询的表之间是有关系的(1对1,1对多)

注意 当两张表中有重名字段时候  前面需要加表名

可以给别起别名

练习:查询员工的编号,姓名,部门名字,所在城市

多表联查分类

1.关于等值连接和非等值连接(针对连接条件来讲)

2.自连接和非自连接

3.内连接和外连接

1.关于等值连接和非等值连接(针对连接条件来讲)

查询每个员工的薪资等级

2.自连接和非自连接

练习:查询员工id,员工姓名,和上级领导id和上级领导的姓名

3.内连接和外连接   sql92与sql99语法如何实现内连接与外连接

内连接:上面的关联表查询都是内连接

外连接

SQL99语法

left join和left out join 一个意思

左外连接  107条数据

右外连接   right join .... on

满外连接   意思满足左边的表也满足右表  Mysql不支持   Oracle支持

SQL99中 7种JOIN的实现

在Mysql中实现

通过UNION关键字合并

要求:两个表对应的列数和数据类型必须相同,并且互相对应

UNION和UNION ALL区别

UNION会去重

UNION ALL 不会去重

那么在Mysql中想实现满外连接

用左外连接加右外连接   通过 UNION就可以实现      

Mysql中要实现满外连接

UNION和UNION ALL的使用

因为UNION ALL不需要去重  相对效率高

说错了   右外连接   有些部门里没有员工

其实条件本身为null用a.department_id或者b.department_id都一样

SQL99语法新特性

自然连接 NATURAL JOIN 和 USING连接

NATURAL JOIN用来表示自然连接.可以把自然连接理解为SQL92中的等值连接.它会对两张表中所有相同的字段,然后进行等值连接

也就是说只要字段名相同  默认他们为连接条件

注意:NATURAL JOIN 自然连接 好比INNER JOIN

USING连接  指定连接条件的字段

拓张:使用join...on还可以这么使用

多表联查练习:

查询所有员工的姓名,部门号和部门名称

查询90号部门员工的job_id和90号部门的location_id

查询所有有奖金的员工的last_name,job_id,department_id,department_name

where a.commission_pct is not null   注意这里要用left join  原因:所有员工

查询city在Toronto工作的员工的last_name,job_id,department_id,department_name

查询员工所在部门名称,部门地址,姓名,工作,工资其中员工所在部门名称为'Executive'

查询指定员工姓名,员工号,以及他的管理者的姓名和员工号,结果类似于下面的格式

employess    EMP#  manager   Mgr#

kochhar       101      King        100

查询哪些部门没有员工

NOT EXISTS

查询哪个城市没有部门

查询部门名为Sales或者IT的员工信息

第七章:函数的分类

1.单行函数(内置函数)    一行数据出来一个结果

2.多行函数(聚合函数)(内置函数)   多行数据出来一个结果

3.自定义函数

单行函数:大致分类

数值类型函数

字符串类型函数

日期时间类型函数

流程控制函数

加解密信息函数

链接:https://pan.baidu.com/s/1-dPWDIXX02XTLeyhb1ZZuQ 
提取码:z2jg 
--来自百度网盘超级会员V5的分享

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

springBoot+Vue汽车销售源码

源码描述: 汽车销售管理系统源码基于spring boot以及Vue开发。 针对汽车销售提供客户信息、车辆信息、订单信息、销售人员管理、 财务报表等功能&#xff0c;提供经理和销售两种角色进行管理。 技术架构&#xff1a; idea(推荐)、jdk1.8、mysql5.X(不能为8驱动不匹配)、ma…

Docker多节点部署Minio分布式文件系统并测试

文章目录 一、前提准备二、文件配置1. .env2. env/minio.env3. docker-compose-minio.yml 三、测试四、Java测试1. 引入依赖2. 增删改 一、前提准备 准备如下文件夹和文件 ./ ├── docker-compose-minio.yml ├── .env ├── env │ ├── minio.env ├── minio │…

使用 Paimon + StarRocks 极速批流一体湖仓分析

摘要&#xff1a;本文整理自阿里云智能高级开发工程师王日宇&#xff0c;在 Flink Forward Asia 2023 流式湖仓&#xff08;二&#xff09;专场的分享。本篇内容主要分为以下四部分&#xff1a; StarRocksPaimon 湖仓分析的发展历程使用 StarRocksPaimon 进行湖仓分析主要场景和…

力扣hot100 跳跃游戏 贪心

Problem: 55. 跳跃游戏 文章目录 思路复杂度Code 思路 &#x1f468;‍&#x1f3eb; 参考 挨着跳&#xff0c;记录最远能到达的地方 复杂度 时间复杂度: O ( n ) O(n) O(n) 空间复杂度: O ( 1 ) O(1) O(1) Code class Solution {public boolean canJump(int[] nums)…

利用onenet mqtt协议 ,ESP32上传温湿度数据流成功(arduinoIDE)

目标&#xff1a;开发esp32通过onenet平台远程控制LED、继电器等其它设备&#xff0c;并利用onenet可视化功能开发出一个简单的控制页面。 原以为能够快速完成&#xff0c;没想到接入mqtt协议、数据流上传、可视化按键都不同程度遇到了问题&#xff0c;还好经过一番查找和修改…

docker安装elasticsearch+kibana

目录 1.安装es 2.安装kibana 3.kibana监控es 1.安装es 拉取镜像 docker pull elasticsearch:7.6.1 创建存放配置文件、数据、插件的各个文件夹 mkdir -p /home/docker/elasticsearch/config mkdir -p /home/docker/elasticsearch/data mkdir -p /home/docker/elasticsearch…

【每日一题】 2024年1月汇编

&#x1f525;博客主页&#xff1a; A_SHOWY&#x1f3a5;系列专栏&#xff1a;力扣刷题总结录 数据结构 云计算 数字图像处理 力扣每日一题_ 【1.4】2397.被列覆盖的最多行数 2397. 被列覆盖的最多行数https://leetcode.cn/problems/maximum-rows-covered-by-columns/ 这…

Websocket基本用法

1.Websocket介绍 WebSocket是基于TCP的一种新的网络协议。它实现了浏览器与服务器全双工通信——浏览器和服务器只需要完成一次握手&#xff0c;两者之间就可以创建持久性的连接&#xff0c;并进行双向数据传输。 应用场景&#xff1a; 视频弹幕网页聊天体育实况更新股票基金…

DVI接口如何连接HDMI接口显示器?DVI转HDMI转换器DHA

DVI转HDMI转换器DHA简介 DVI转HDMI转换器DHA能够将DVI信号和R/L音频信号输入转换成HDMI信号输出,独特的功能使其顺畅地整合到家庭影院中&#xff0c;并且播放出高品质的图像。主要用于数据监控中心、大型会议展示中心、学校及各个公司 DVI转HDMI转换器DHA特点 01.支持分辨率4K…

电子文件归档管理有哪些方法

电子文件归档管理有以下几种方法&#xff1a; 1. 按文件类型归档&#xff1a;将电子文件根据文件类型进行归档管理&#xff0c;如将所有的文档文件放在一个文件夹中&#xff0c;所有的图像文件放在另一个文件夹中&#xff0c;便于管理和查找。 2. 按时间归档&#xff1a;将电子…

【计算机视觉】万字长文详解:卷积神经网络

以下部分文字资料整合于网络&#xff0c;本文仅供自己学习用&#xff01; 一、计算机视觉概述 如果输入层和隐藏层和之前一样都是采用全连接网络&#xff0c;参数过多会导致过拟合问题&#xff0c;其次这么多的参数存储下来对计算机的内存要求也是很高的 解决这一问题&#x…

(已解决)spingboot 后端发送QQ邮箱验证码

打开QQ邮箱pop3请求服务&#xff1a;&#xff08;按照QQ邮箱引导操作&#xff09; 导入依赖&#xff08;不是maven项目就自己添加jar包&#xff09;&#xff1a; <!-- 邮件发送--><dependency><groupId>org.springframework.boot</groupId><…

关于source批量处理sql命令建立数据库后发现中文乱码问题解决方案(Mysql)

今天在使用souce建表的时候发现自己表结构中的中文出现了乱码问题&#xff0c;那么具体的解决方案如下&#xff1a; 首先我们先使用命令行连接自己的数据库 mysql -u root -p 12345 然后使用show variables like "char%"; 如果说你的这个里面不是utf-8那么就是出现了…

vulnhub靶场之Matrix-Breakout 2 Morpheus

一.环境搭建 1.靶场描述 This is the second in the Matrix-Breakout series, subtitled Morpheus:1. It’s themed as a throwback to the first Matrix movie. You play Trinity, trying to investigate a computer on the Nebuchadnezzar that Cypher has locked everyone…

王道_数据结构 1.2_2_算法的时间复杂度

1.2_2_算法的时间复杂度 一、为什么要事先预估算法时间开销二、时间复杂度的计算与技巧1、化简“算法时间开销”的计算方式的依据2、常用技巧&#xff08;1&#xff09;加法、乘法规则&#xff08;2&#xff09;时间复杂度的数量级阶数排行 3、计算时间复杂度的结论与步骤&…

能耗在线监测系统在节能管理中的应用

上海安科瑞电气股份有限公司 胡冠楠 咨询家&#xff1a;“Acrelhgn”&#xff0c;了解更多产品资讯 摘要&#xff1a;开展能耗在线监测系统建设&#xff0c;对加强政府部门和企业节能管理中的应用前景&#xff0c;分析系统在能源消费预测分析、能效对标、节能监察、能源精细化…

使用“快速开始”将数据传输到新的 iPhone 或 iPad

使用“快速开始”将数据传输到新的 iPhone 或 iPad 使用 iPhone 或 iPad 自动设置你的新 iOS 设备。 使用“快速开始”的过程会同时占用两台设备&#xff0c;因此请务必选择在几分钟内都不需要使用当前设备的时候进行设置。 确保你当前的设备已连接到无线局域网&#xff0c;并…

十分钟学会用springboot制作微信小程序富文本编辑器

1.1 富文本模型设计 在构建富文本编辑器系统时&#xff0c;首先需要设计一个合适的富文本模型。 CREATE TABLE IF NOT EXISTS rich_texts (id INT PRIMARY KEY AUTO_INCREMENT,title VARCHAR(255),content TEXT,created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP );这个表包括…

Arcgis10.3安装

所需软件地址 链接&#xff1a;https://pan.baidu.com/s/1aAykUDjkaXjdwFjDvAR83Q?pwdbs2i 提取码&#xff1a;bs2i 1、安装License Manager 点击License Manager.exe&#xff0c;默认下一步。 安装完&#xff0c;点击License Server Administrator&#xff0c;停止服务。…

RK3588平台开发系列讲解(视频篇)RKMedia的VDEC模块

文章目录 一、 VDEC模块支持的编码标准介绍二、VDEC API的调用三、VDEC解码流程沉淀、分享、成长,让自己和他人都能有所收获!😄 📢RKMedia是RK提供的一种多媒体处理方案,可实现音视频捕获、音视频输出、音视频编解码等功能。 一、 VDEC模块支持的编码标准介绍 RK3688 V…