Mysql核心知识命令汇总

这篇具有很好参考价值的文章主要介绍了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 department
    where deptno = (select deptno from employee where empname = '玲乖乖');

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

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

3.2、关联查询

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

# 查询游戏部门的所有员工
select * from employee as e, department as d
    where e.deptno = d.deptno
    and 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 。题目测试用例确保顺位第一的人可以上巴士且不会超重。文章来源地址https://www.toymoban.com/news/detail-804680.html

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;

到了这里,关于Mysql核心知识命令汇总的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【MySQL】数据库MySQL基础知识与操作

    作者主页:paper jie_博客 本文作者:大家好,我是paper jie,感谢你阅读本文,欢迎一建三连哦。 本文录入于《MySQL》专栏,本专栏是针对于大学生,编程小白精心打造的。笔者用重金(时间和精力)打造,将MySQL基础知识一网打尽,希望可以帮到读者们哦。 其他专栏:《算法详解

    2024年02月05日
    浏览(40)
  • Mysql数据库技术知识整理

    Mysql的知识点目录 重点:架构,引擎,索引,锁机制,事务机制,日志机制,集群,调优 3、Mysql索引 索引概念 覆盖索引: 条件列和结果列都在索引中 索引下推: 查询会先过滤条件列,然后回表查数据 最左前缀匹配: 查询条件会从最左开始匹配索引列 回表:经过索引查询后,不

    2024年02月11日
    浏览(33)
  • MySQL数据库命令

    一、数据库 二、表 三、操作数据 四、查询数据 五、单表操作 5-1 排序 5-2 聚合 5-3 分组 5-4 主键 5-5 唯一约束 5-6 非空约束 5-7 事物 5-8 事务四大特性 特性 含义 原子性 每个事务都是一个整体,不可再拆分。事务中所有的sql要么全部执行成功,要么都失败 一致性 事务在执行前

    2024年02月02日
    浏览(53)
  • MySql——数据库常用命令

    2024年02月14日
    浏览(44)
  • 【MySQL】数据库基本知识小结

    哈喽大家好,我是阿Q,今天我们来总结一下【MySQL】 入门的必备知识点吧~ 数据库 :DataBase 简称 DB,就是信息的集合或者说数据库是由数据库管理系统管理的数据的集合。 数据库管理系统 :DataBase Management System 简称 DBMS,是一种操纵和管理数据库的大型软件,通常用于建立

    2024年02月09日
    浏览(49)
  • MySQL数据库增删改查及聚合查询SQL语句学习汇总

    目录 数据库增删改查SQL语句 MySQL数据库指令 1.查询数据库 2.创建数据库 3.删除数据库 4.选择数据库 创建表table   查看所有表 创建表 查看指定表的结构 删除表 数据库命令进行注释 增删改查(CRUD)详细说明 增加 SQL库提供了关于时间的函数:now()  查询 查询表作列与列之间进

    2024年02月09日
    浏览(81)
  • MySQL基础篇——MySQL数据库客户端连接,数据模型,SQL知识

    作者简介:一名云计算网络运维人员、每天分享网络与运维的技术与干货。   座右铭:低头赶路,敬事如仪 个人主页:网络豆的主页​​​​​​ 目录 前言 一.客户端连接MySQL 二. 数据模型 1.关系型数据库(RDBMS) 2.数据模型 三.SQL 1.SQL通用语法 2.SQL分类 3.数据库操作 1). 查

    2024年02月06日
    浏览(73)
  • mysql导出所有数据库命令

    导入所有数据库命令:  在开发过程中,我们经常会需要备份数据库,以防意外情况丢失数据,而mysql的mysqldump命令可以做到。 格式:mysqldump -u用户名 -p密码 数据库名 表名 具体要保存的路径和文件名。 下面介绍如何使用mysqldump命令导出或备份mysql数据库和数据表: 一、在

    2024年02月06日
    浏览(55)
  • MySQL 数据库的命令操作

    1.数据 (Data) 描述事物的符号记录 包括数字,文字、图形、图像、声音、档案记录等 以“记录”形式按统一的格式进行存储 2.表 将不同的记录组织在一起 用来存储具体数据 3.数据库 表的集合,是存储数据的仓库 以一定的组织方式存储的相互有关的数据集合 是按照数据结构

    2024年02月09日
    浏览(61)
  • MySQL数据库基本命令操作

    一、MySQL基本命令操作指令 二、查看数据库结构 1.查看当前服务器中的数据库 2.查看数据库中包含的表 3.查看表的结构(字段) 三、SQL语句 SQL语句用于维护管理数据库,包括数据查询、数据更新、访问控制、对象管理等功能。 1、SQL语言分类 四、SQL语句操作 1、创建及删

    2024年02月10日
    浏览(79)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包