MySQL—SQL基础篇(DML)_select distinct(sid) from student是否启动mr

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新Golang全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上Go语言开发知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以添加V获取:vip1024b (备注go)
img

正文

in

select * from 表名 where 列名 in (v1,v2,v3)

select * from student where id in (1, 2, 3)

between

SELECT column_name(s) FROM table_name WHERE column_name BETWEEN value1 AND value2

select * from student where name between ‘张三’ and ‘诸葛’

Alias

通过使用 SQL,可以为列名称和表名称指定别名(Alias)。

SELECT column_name(s) FROM table_name AS alias_name

SELECT column_name AS alias_name FROM table_name

select * from student as s

limit

limit 子句用于规定要返回的记录的数目

SELECT column_name(s) FROM table_name LIMIT number

有几种情况

查询10条数据,索引从0到9,第1条记录到第10条记录

select * from student limit 10;

等同于

select * from student limit 0,10;

查询8条数据,索引从5到12,第6条记录到第13条记录

select * from t_user limit 5,8;

MySQL的下标索引是从1开始的
distinct

SELECT DISTINCT 列名称 FROM 表名称

select distinct name from student

order by

对结果集进行排序

select * from student order age esc # 升序
selcet * from student order age desc # 降序

连接查询

SQL join 用于根据两个或多个表中的列之间的关系,从这些表中查询数据。

有时为了得到完整的结果,我们需要从两个或更多的表中获取结果。我们就需要执行 join。

数据库中的表可通过键将彼此联系起来。主键(Primary Key)是一个列,在这个列中的每一行的值都是唯一的。在表中,每个主键的值都是唯一的。这样做的目的是在不重复每个表中的所有数据的情况下,把表间的数据交叉捆绑在一起。

假如有两个表分别是 PersonsOrders
在这里插入图片描述
请注意,"Id_P" 列是 Persons 表中的的主键。这意味着没有两行能够拥有相同的 Id_P。即使两个人的姓名完全相同,Id_P 也可以区分他们。
在这里插入图片描述
请注意,"Id_O" 列是 Orders 表中的的主键,同时,"Orders" 表中的 "Id_P" 列用于引用 "Persons" 表中的人,而无需使用他们的确切姓名。

"Id_P" 列把上面的两个表联系了起来。

应用两个表

常规方法

select p.LastName, p.FirstName, o.OrderNo from Persons as p, Orders as o where p.Id_p = o.Id_p

使用连接查询 join

SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo FROM Persons INNER JOIN Orders ON Persons.Id_P = Orders.Id_P
ORDER BY Persons.LastName

不同的 SQL JOIN,除了我们在上面的例子中使用的 INNER JOIN(内连接),我们还可以使用其他几种连接。
下面列出了您可以使用的 JOIN 类型,以及它们之间的差异。

  • JOIN: 如果表中有至少一个匹配,则返回行
  • LEFT JOIN: 即使右表中没有匹配,也从左表返回所有的行
  • RIGHT JOIN: 即使左表中没有匹配,也从右表返回所有的行
  • FULL JOIN: 只要其中一个表中存在匹配,就返回行
inner join

在表中存在至少一个匹配时,INNER JOIN 关键字返回行。
语法规则

SELECT column_name(s)
FROM table_name1
INNER JOIN table_name2
ON table_name1.column_name=table_name2.column_name

还是使用上面的表

SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo FROM Persons
INNER JOIN Orders ON Persons.Id_P=Orders.Id_P
ORDER BY Persons.LastName

在这里插入图片描述

left join

LEFT JOIN 关键字会从左表 (table_name1) 那里返回所有的行,即使在右表 (table_name2) 中没有匹配的行。
语法规则

SELECT column_name(s)
FROM table_name1
LEFT JOIN table_name2
ON table_name1.column_name=table_name2.column_name

使用上面的表

SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo FROM Persons
LEFT JOIN Orders ON Persons.Id_P=Orders.Id_P
ORDER BY Persons.LastName

在这里插入图片描述
LEFT JOIN 关键字会从左表 (Persons) 那里返回所有的行,即使在右表 (Orders) 中没有匹配的行。

right join

RIGHT JOIN 关键字会右表 (table_name2) 那里返回所有的行,即使在左表 (table_name1) 中没有匹配的行。
语法规则

SELECT column_name(s)
FROM table_name1
RIGHT JOIN table_name2
ON table_name1.column_name=table_name2.column_name

使用上面的表

SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo FROM Persons
RIGHT JOIN Orders ON Persons.Id_P=Orders.Id_P
ORDER BY Persons.LastName

在这里插入图片描述
RIGHT JOIN 关键字会从右表 (Orders) 那里返回所有的行,即使在左表 (Persons) 中没有匹配的行。

full join

只要其中某个表存在匹配,FULL JOIN 关键字就会返回行。
语法规则

SELECT column_name(s)
FROM table_name1
FULL JOIN table_name2
ON table_name1.column_name=table_name2.column_name

使用上面的表

SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo FROM Persons
FULL JOIN Orders ON Persons.Id_P=Orders.Id_P
ORDER BY Persons.LastName

在这里插入图片描述
FULL JOIN 关键字会从左表 (Persons) 和右表 (Orders) 那里返回所有的行。如果 "Persons" 中的行在表 "Orders" 中没有匹配,或者如果 "Orders" 中的行在表 "Persons" 中没有匹配,这些行同样会列出。

union

UNION 操作符用于合并两个或多个 SELECT 语句的结果集。
请注意,UNION 内部的 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每条 SELECT 语句中的列的顺序必须相同。
有两种情况分别是unionunion all

SELECT column_name(s) FROM table_name1
UNION
SELECT column_name(s) FROM table_name2

SELECT column_name(s) FROM table_name1
UNION ALL
SELECT column_name(s) FROM table_name2

在这里插入图片描述
union

SELECT E_Name FROM Employees_China
UNION
SELECT E_Name FROM Employees_USA

在这里插入图片描述
union all

SELECT E_Name FROM Employees_China
UNION ALL
SELECT E_Name FROM Employees_USA

在这里插入图片描述
UNION ALL 命令和 UNION 命令几乎是等效的,UNION 操作符选取不同的值,不过 UNION ALL 命令会列出所有的值。
UNION 结果集中的列名总是等于 UNION 中第一个 SELECT 语句中的列名。

insert

INSERT INTO 语句用于向表格中插入新的行。
语法

INSERT INTO 表名称 VALUES (值1, 值2,…)

或则

INSERT INTO table_name (列1, 列2,…) VALUES (值1, 值2,…)

例子

INSERT INTO student VALUES (‘张三’, 18, ‘男’, ‘北京’)
INSERT INTO student(name,age,gender,city) VALUES (‘张三’, 18, ‘男’, ‘北京’)

update

Update 语句用于修改表中的数据。
语法

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注Go)
img

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
nder,city) VALUES (‘张三’, 18, ‘男’, ‘北京’)

update

Update 语句用于修改表中的数据。
语法

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注Go)
[外链图片转存中…(img-TKuc1AUI-1713337381912)]

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 9
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值