首页 > 数据库 >MySQL-Day3

MySQL-Day3

时间:2024-06-20 15:00:18浏览次数:23  
标签:join Day3 查询 inner MySQL sc where select

学习目标

写SQL三步法

边写边运行,否则后面出错时候会难以排查

搭框架

基本的select语句框架建起来,如果有多表,把相应的多表联合起来

看条件

决定where后面的

显示的字段

select后面的内容

连接查询

内连接

两张表相同地方

select * from 

左/右连接

包括内连接以及左/右部分特有的内容

隐式内链接(不怎么用)

表的别名(主要用在查询方便)

带有where的内连接

select * from 表1 inner join 表2 on 表1.字段=表2.字段 where 条件

多表内连接查询

连接三张表,students,scores,courses

select * from students st inner join scores sc on ststudentNo=scstudentNo inner join cources co 

on sc.coursesNo=co.courseNo;

练习--where

  • 查询所有学生的'linux'课程成绩,要求只显示姓名、成绩、课程名

分三步写

select name,score,coursename from students st inner join scores sc

on st.studentNo=sc.studentNo

inner join courses co on sc.courseNo=co.courseNo

where courseName='linux'

显示字段中,如果是表中唯一的字段,可以不用带表名,反之需要带

练习--order by

  • 查询成绩最高的男生信息,要求只显示姓名、课程名、成绩

select name,courseName,score from students st inner join scores sc

on st.studentNo=sc.studentNo

inner join courses co on sc.courseNo=co. courseNo

where sex='男'

order by score  desc limit 1;//显示第一行

左/右连接

  • 查询所有学生的信息以及成绩,包括没有成绩的学生

select * from students st left join scores sc

on st.studentsNo=sc.studentsNo;

  • 查询所有课程信息,包括没有成绩的课程

select * from scores sc right join courses co

on co.courseNo=sc.courseNo;

自关联

将多张表合成一张表

同一张表做连接查询;一定是一张表可关联不同字段

子查询

子查询嵌入到主查询中;

主查询不能独立运行

  • 查询大于平均年龄的学生记录

select * from students where age>(select avg(age) from students )

标量子查询

返回值是1*1的数据

列子查询--返回一列多行

查询30岁的学生的成绩

用子查询比内连接好点

select * from scores where students in (select studentNo from students where age=30 );

表级子查询--多行多列

用子查询,查询所有女生的信息和成绩

select * from (select * from students where sex='女') stu---当做一个表

inner join scores sc on stu.studentNo=sc.studentNo;

习题

  • 男职工的总数和女职工的总数

select sex,count(*) from employees group by sex;

  • 非党员职工的总数

select count(*) from employees where politicalstatus<>'党员';

  • 所有职工工号,姓名以及所在部门名称

select empid,empname,deptname from employees e inner join deparments d on e.deptid=d.deptid;

  • 所有职工工号,姓名和对应工资

select empid,empname,salary from employees e inner join salary s on e.empid=s.empid;

  • 职工总人数>4的部门号和部门名称

select e.deptid,deptname from employees e inner join departments d

on e.deptid=d.deptid  group by e.deptid having count(*)>4;

  • 列出开发部和测试部的职工号,姓名

select empid,empname from employees e inner join departments d on e.deptid=d.deptid where deptname in ('开发部','测试部')

  • 列出市场部所有女职员的姓名和政治面貌

select empname,politicalstatus from empoyees e inner join departments d on 

e.deptid=d.deptid

where e.sex='女' i and deptname='市场部'  

  • 显示所有职工姓名和工资,包括没有工资的职工姓名

select empname,salary from employees e left join salary s on e.emptid=s.emptid

求不姓孙 的所有员工工资总和

select sum(salary) from employees e inner join salary s on

 e.emptid=s.emptid where not empname like '孙%'

总结

标签:join,Day3,查询,inner,MySQL,sc,where,select
From: https://blog.csdn.net/weixin_46774473/article/details/139767641

相关文章

  • MySQL-Day4
    学习目标MySQL的内置函数concat拼接字符串函数把12,34,‘ab’,拼接成‘1234ab’selectconcat(12,34,'ab')length返回字符串字符的个数计算字符串长度‘abc’selectlength('abc')返回3一个utf-8,一个汉字表示3个长度selectlength(‘我和you’) 返回9内置函数可以......
  • SQL、Mysql、数据库到底什么关系
    sql很多都搞不清Sql和Mysql,数据库之间的关系,其实这些概念之间的关系用下面这张图就能搞懂:也就是说,数据库是草图,Mysql是交稿,数据可以理解成砖块,sql是处理砖块(数据)的工具。下面这张图是SQL的常见分类,以及常用操作指令:数据库中表的结构包括了代表列名的列,和具体数据的行表中的......
  • MySQL的优化建议和策略
    当谈到MySQL的优化时,以下是一些具体的建议和策略,它们可以帮助您提高MySQL数据库的性能:1.数据库设计优化规范化设计:将数据分解为更小的表,降低数据冗余度,提高数据一致性和查询效率。选择合适的数据类型:选择合适的数据类型可以减少存储空间的占用,提高数据检索和计算的效率。避......
  • 管理 MySQL Shell 配置选项
    与任何工具一样,MySQLShell的开箱即用配置可能无法满足每个用户在任何情况下的需求。我们需要一种方法来轻松查看、更新和持续(如有必要)更改默认配置。有一条命令可以帮助我们管理MySQLShell配置。这条命令就是\option。 查看帮助MySQLlocalhostJS>\optionNAME......
  • MySQL入门学习-连接查询.INNER JOIN
        表的连接在数据库中扮演着至关重要的角色。当我们处理多个表之间的关联数据时,连接查询是必不可少的。    假设我们有两个表A和B,它们有一个共同的字段。现在,我们想从A和B中选择出所有匹配的数据。这就是连接查询的作用。    以下是一个基本的......
  • MySQL入门学习-子查询.列子查询
        列子查询是MySQL中一种常用的子查询类型,它返回一个单列的结果集,该结果集可以在主查询中作为一个列使用。一、以下是一些列子查询的例子:1.简单的列子查询```sqlSELECTcolumn1,    (SELECTcolumn2FROMtable2WHEREtable1.column1=table2.column......
  • mysql主从复制GTID模式
     版本8.0.36 主从复制的定义是指把数据从一个Mysql服务器(主节点)复制到一个或多个Mysql服务器(从节点)中,会把主节点服务器中的所有数据库实例、特定数据库实例或特定表等,全部复制到从节点服务器中。主从复制的原理是通过基于日志的复制方式实现数据的同步。当主服务器上发生数......
  • Docker部署安装应用大集合(Tomcat、Nginx、Mysql、Redis、MQ、Nacos、Zookeeper、Port
    Docker部署安装应用大集合(Tomcat、Nginx、Mysql、Redis、MQ、Nacos、Zookeeper、Portainer、MongoDB......) 精选 原创CodeDevMaster2022-11-1608:42:24博主文章分类:Docker©著作权文章标签dockermysqlNginxNacosMQ文章分类Docker云计算yyds干货盘点 Docker部署......
  • 成为MySQL DBA后,再看ORACLE数据库(十一、闪回技术)
    前文说到ORACLE通过undo实现数据的多版本模型,同样的道理ORACLE还通过undo实现了闪回查询的特性,本文将总结ORACLE的几种闪回技术。闪回技术是Oracle数据库独有的特性,支持各级恢复,包括行、事务、表、表空间和数据库范围。采用闪回技术,可以针对行级和事务级发生过变化的数据进行恢复,......
  • MySQL备份与恢复
    目录1.数据库备份的分类1.1数据备份的重要性1.2数据库备份的分类1.3常见的备份方法2.MySQL完全备份与恢复2.1MySQL完全备份2.2数据库完全备份分类2.3MySQL物理冷备份及恢复2.4mysqldump进行逻辑备份2.4.1mysqldump备份数据库2.4.2mysqldump备份数据表3.......