Mysql核心知识命令汇总

Mysql核心知识命令汇总

1、索引key和index

  1. 索引被用来快速找出一个列上用一特定值的行。所有的MySQL索引(PRIMARY、UNIQUE和INDEX)在B树中存储。字符串是自动地压缩前缀和结尾空间。作用:

    1. 快速找出匹配一个where子句的行
    2. 执行联结时,从其他表检索行
    3. 特定的索引列找出MAX()MIN()值
    4. 如果排序或分组在一个可用键的最左面前缀上进行(例如,ORDER BY key_part_1,key_part_2),排序或分组一个表。
    5. 如果所有键值部分跟随DESC,键以倒序被读取。
    6. 在一些情况中,一个查询能被优化来检索值,不用咨询数据文件。
    7. 如果对某些表的所有使用的列是数字型的并且构成某些键的最左面前缀,为了更快,值可以从索引树被检索出来。
  2. KEY 'to_id' ('to_id') 为to_id建立名为to_id的普通索引,key是数据库的物理结构,包含两层意义和作用:

    1. 一是约束(偏重于约束和规范数据库的结构完整性)
    2. 二是索引(辅助查询用的)

包括primary key,unique key,foreign key等。

  1. Primary key有两个作用:一个是约束作用(规范一个存储主键和唯一性),同时建立主键索引
  2. Unique key两个作用:一是约束(规范数据的唯一性),建立索引
  3. Foreign key两个作用:意识约束作用(规范数据引用完整性),建立一个index

3.index是数据库的物理结构,只辅助查询,不会约束字段行为,创建时会在另外的表空间(innodb表空间)。

2、mysql的CRUD,创建表

# 增删改
insert into stu(name, classid) values('张三', '1');
update stu set classid = 2 where id between 1 and 5;
delete from stu where classid = 1;# 查询语句
select 字段列表|*  from 表名
[where 搜索条件]
[group by 分组字段 [having 分组条件]]
[order by 排序字段 排序规则]ASCDESC[limit 分页参数] (startIndex,length)# 创建表
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (`id` int(11) NOT NULL AUTO_INCREMENT,`name` varchar(50) NOT NULL DEFAULT '',`password` varchar(50) NOT NULL DEFAULT '',`nickname` varchar(50) NOT NULL DEFAULT '',`created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,PRIMARY KEY (`id`),UNIQUE KEY `idx_name` (`name`),KEY `nickname` (`nickname`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
TRUNCATE TABLE `user`;

3、子查询和关联查询

子查询不一定需要两个表有关联字段,而关联查询必须有字段关联

子查询会多次遍历所有数据(视我们的子查询层次而定),关联查询只会遍历一次

应用场景:数据量一般->两者都可,数据量大->推荐关联查询

3.1、子查询

(一)单行子查询:将两张表的查询过程简化为两个步骤,首先执行子查询SQL语句得到唯一记录,将该记录作为条件进行查询,得到结果

# 查询玲乖乖属于哪个部门
select * from departmentwhere deptno = (select deptno from employee where empname = '玲乖乖');

(二)多行子查询:单行子查询的扩展,子查询返回多条记录数据,作为范围条件提供给外部查询执行。

# 查询职工部门1部-3部的所有职员信息
select * from employeewhere deptno in (select deptno from departmentwhere deptname in ('职工1部''职工2部','职工3部'));

3.2、关联查询

(一)外键表连接:两张表之间的公共字段就是外键,通过外键查询,连接两个表的信息

# 查询游戏部门的所有员工
select * from employee as e, department as dwhere e.deptno = d.deptnoand d.deptname = '游戏';

(二)连接查询:分为 内连接、左连接和右连接查询

内连接:查询两张表或者多张表公共属性在两表中的交集

左连接:保证左侧数据表全部查询的到的情况下,关联查询右侧数据表中的数据

右连接:保证右侧数据表全部查询的到的情况下,关联查询左侧数据表中的数据

左右连接的意思,就是查询出的结果表,保哪个表哪个表全部信息就展现在最左边,右边选择性留列

# 查询每个部门下都有哪些员工(内连接)
select * from department
inner join department
on employee.deptno = department.deptno;# 查询每个部门下的所有员工,没有员工的部门也要查询(左连接,右连接换成right join)
select * from employee
left join employee
on depertment.deptno = employee.deptno;# 比如表1和表2,各有两个列使用左右链接
表头一:                  表头二:
col—1 col-2            col2-1 col2-2
...
===>
查出来的结果表头结构就为:
左连接(保左): col-1  col-2  col2-1
右连接(保右): col2—1 col2-2 col-1

4、视图

1、视图的含义:视图是一个表或者多个表的部分数据作为虚拟表,其作用是方便用户对数据进行操作,数据为源数据表,源数据表更新,视图更新;视图修改指定的,源数据表对应也更改

2、视图的作用:

  1. 使操作简单化
  2. 增加数据的安全性(用户只能查询和修改指定的数据)
  3. 提高表的独立逻辑性(原数据表进行增删未被引用的,对视图没有影响)

3、视图的增删改查(CRUD),需要权限

# 创建修改视图
create or replace view view_student(stu_id,stu_name,stu_class) as select id,name,class from student;# 删除视图
drop view if exists view_student;# 查看视图
describe view_studnent;

5、例题

例1:力扣045. 买下所有产品的客户

Customer 表:

±------------±--------+

| Column Name | Type|

±------------±--------+

| customer_id | int |

| product_key | int |

±------------±--------+

该表可能包含重复的行。

customer_id 不为 NULL。

product_key 是 Product 表的外键(reference 列)。

Product 表:

±------------±--------+

| Column Name | Type|

±------------±--------+

| product_key | int |

±------------±--------+

product_key 是这张表的主键(具有唯一值的列)。

编写解决方案,报告 Customer 表中购买了 Product 表中所有产品的客户的 id。

返回结果表 无顺序要求

select customer_id 
from Customer
where product_key in (select product_key from Product)
group by customer_id
having count(distinct product_key) = (select count(*) from Product);

例二:力扣1204. 最后一个能进入巴士的人

表: Queue

±------------±-------------+

| Column Name | Type |

±------------±-------------+

| person_id | int |

| person_name | varchar |

| weight | int |

| turn | int |

±------------±-------------+

person_id 是这个表具有唯一值的列。

该表展示了所有候车乘客的信息。

表中 person_id 和 turn 列将包含从 1 到 n 的所有数字,其中 n 是表中的行数。

turn 决定了候车乘客上巴士的顺序,其中 turn=1 表示第一个上巴士,turn=n 表示最后一个上巴士。

weight 表示候车乘客的体重,以千克为单位。

有一队乘客在等着上巴士。然而,巴士有1000 千克 的重量限制,所以其中一部分乘客可能无法上巴士。

编写解决方案找出 最后一个 上巴士且不超过重量限制的乘客,并报告 person_name 。题目测试用例确保顺位第一的人可以上巴士且不会超重。

select person_name
from
(select person_name, weight, turn, sum(weight) over(order by turn) as totalWeiht
from Queue
order by turn
) t1
where totalWeiht <= 1000
order by totalWeiht desc
limit 1;

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

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

相关文章

详细介绍IP 地址、网络号和主机号、ABC三类、ip地址可分配问题、子网掩码、子网划分

1、 IP 地址: 网络之间互连的协议&#xff0c;是由4个字节(32位二进制)组成的逻辑上的地址。 将32位二进制进行分组&#xff0c;分成4组&#xff0c;每组8位(1个字节)。【ip地址通常使用十进制表示】ip地址分成四组之后&#xff0c;在逻辑上&#xff0c;分成网络号和主机号 2…

适合初学者的机器学习开源项目合集(已加入Github加速计划)

目录 开源项目合集[>> 机器学习路线图&#xff1a;mrdbourke/machine-learning-roadmap](https://gitcode.com/mrdbourke/machine-learning-roadmap)[>> 机器学习资源的汇总&#xff1a;johnmyleswhite/ML_for_Hackers](https://gitcode.com/johnmyleswhite/ML_for…

vue+elementUI el-select 中 没有加clearable出现一个或者多个×清除图标问题

1、现象&#xff1a;下方截图多清除图标了 2、在全局common.scss文件中加一个下方的全局样式noClear 3、在多清除图标的组件上层div加noClear样式 4、清除图标去除成功

第四讲_ArkTS装饰器(一)

ArkTS装饰器&#xff08;一&#xff09; 1. Builder装饰器1.1 在组件内定义构建函数1.2 全局定义构建函数 2. BuilderParam装饰器 1. Builder装饰器 Builder是一种更轻量的 UI 元素复用机制&#xff0c;可以将重复使用的 UI 元素抽象成一个方法&#xff0c;并用Builder修饰该方…

Linux centos中find命令的多种用途:按照具体应用来详细说明find的用法举例

目录 一、find命令 二、find命令的语法 &#xff08;一&#xff09;语法格式 &#xff08;二&#xff09;选项 1、选项(option)介绍 2、控制符号链接的option 3、调试选项debugopts 4、优化选项 &#xff08;三&#xff09;表达式expression 1、选项options 2、测试…

Linux安装ossutil工具且在Jenkins中执行shell脚本下载文件

测试中遇到想通过Jenkins下载OSS桶上的文件&#xff0c;要先在linux上安装ossutil工具&#xff0c;记录安装过程如下&#xff1a; 一、下载安装ossutil&#xff0c;使用命令 1.下载&#xff1a;wget https://gosspublic.alicdn.com/ossutil/1.7.13/ossutil64 2.一定要赋权限…

鸿蒙使用第三方SO库

一、示例&#xff1a; 使用第三方SO库以导入OpenCV和MNN的SO库为例 1、将MNN和Opencv的so文件(包括.407文件)&#xff0c;放入模块下libs目录对应的版本(arm64-v8a和armeabi-v7a) entry/libs/arm64-v8a/xxx.so2、配置模块目录下的build-profile.json5的buildOption字段&…

6.3.5编辑视频

6.3.5编辑视频 除了上面的功能外&#xff0c;Camtasia4还能进行简单的视频编辑工作&#xff0c;如媒体的剪辑、连接、画中画等。 下面我们就利用Camtasia4的强大功能来实现一个画中画效果&#xff0c;在具体操作之前&#xff0c;需要准备好两个视频文件&#xff0c;一个作为主…

基于SIFT算法的图像匹配

基本概念 尺度不变特征转换(Scale-invariant feature transform&#xff0c;简称SIFT) &#xff0c;是一种用来侦测与描述影像中的局部性特征的算法&#xff0c;它在空间尺度中寻找极值点&#xff0c;提取位置、尺度、旋转不变量&#xff0c;生成特征描述子。 SIFT算法的实质是…

esp32-idf eclipse 定时器的使用demo

esp32定时器的使用demo 1、介绍 ESP32芯片包含两个硬件定时器组。每组有两个通用硬件定时器。它们都是基于16位预分频器和64位自动重载功能的向上向下计数器的64位通用定时器。 2、API接口函数 创建定时器函数&#xff1a; esp_timer_create(); esp_err_t esp_timer_create …

触摸按键控制LED灯

目录 1.理论 2.代码 2.1 touch_ctrl_led.v 2.2 tb_touch_ctrl_led 1.理论 以上的波形图的touch_flag是采用组合逻辑的方式产生的。 以上的touch_flag是采用时序逻辑产生的&#xff0c;时序逻辑会延迟一拍。 以上是上升沿和下降沿的组合逻辑和时序逻辑实现&#xff0c;逻辑或…

微信小程序 - 导航 、wxs及生命周期函数

导航 声明式导航 使用<navigator></navigator>标签 属性类型默认值必填说明targetstringself否在哪个目标上发生跳转&#xff0c;默认当前小程序urlstring否当前小程序内的跳转链接open-typestringnavigate否跳转方式 target参数 属性值说明self当前小程序min…

书生·浦语大模型实战营第五节课笔记及作业

LMDeploy 大模型量化部署实践 1 大模型部署背景 1.1 模型部署及大模型特点 1.2 大模型部署挑战及方案 2 LMDeploy简介 2.1 核心功能-量化 2.2 核心功能-推理引擎TurboMind 2.1 核心功能-推理服务api server 3 动手实践及作业 按照文档LMDeploy 的量化和部署中的步骤在Intern…

【4k】4k的webrtc播放示例

目录 使用带研发角色的账号&#xff0c;在app端设置下分辨率 &#xff1a; 4k 点播 ffplay播放看下详细的参数 使用带研发角色的账号&#xff0c;在app端设置下分辨率 &#xff1a; 4k 点播 ffplay播放看下详细的参数

HBASE学习四:常用命令汇总梳理(包括数据库、zk、hdfs相关操作与配置)

1、服务状态 1、后台查询 hbase shell #进入hbase的shell页面,配置环境变量可直接执行。status #查看当前服务状态status detailed #查看当前详细服务信息,包括master的active和standby信息version 查看版本信息 2、页面查询 http://HMASTERip:16010 #查看master 状态 …

解决Windows下VSCode控制台乱码问题

我们在Windows使用VSCode编写C/C程序时&#xff0c;如果代码中的中文字符串使用的是UTF8编码&#xff0c;且代码内没有设置控制台的输出编码&#xff0c;或者编译时没有指定运行时编码&#xff08;GCC可以在编译时使用-fexec-charsetGBK来指定运行时的字符串编码&#xff1b;cl…

将AI的潜能转化为人类的福祉

在这个技术迅速发展的时代&#xff0c;AI不仅是一项突破性的技术&#xff0c;更是人类未来的关键。作为一名AI训练师&#xff0c;我的目标不仅仅是开发先进的AI产品&#xff0c;更重要的是让这些产品服务于人类&#xff0c;改善人们的生活。 我相信&#xff0c;AI的真正价值在于…

【征服redis9】快速征服lua脚本

lua脚本&#xff0c;这个名字总让人想歪&#xff0c;不过老外发明名字&#xff0c;我们只能跟着叫了。这个脚本语言在redis里和Nginx里都有用&#xff0c;所以我们就来看一下。 目录 1 lua的介绍与说明 2 lua的基本语句体验 3.Lua的数据结构和高级特性 1 lua的介绍与说明 …

MFC 绘图

目录 MFC中绘图 CPaintDC&#xff0c;封装了在WM_PAINT消息中绘图的绘图设备 CClientDC类&#xff0c;封装了在客户区绘图的绘图设备 CGdiObject类(绘图对象类)&#xff0c;封装了各种绘图对象相关的操作 MFC中绘图 Windows绘图需要绘图设备&#xff0c;Win32&#xff1a;…

react + antd:AutoComplete 实现既可以自由输入又能下拉选择

在工作中遇到一个需求&#xff0c;既能下拉选择&#xff0c;有要求可以自由输入没有的选项。 刚开始考虑使用 Select 组件&#xff0c;发现只有多选&#xff08;mode"tags"&#xff09;的时候才能随意输入内容&#xff0c;但多选又不符合当前的业务需求。 在犹豫要…