目录

数据库DBDBMSSQL

数据库——(DB、DBMS、SQL)

前言

数据库是存放数据的仓库。它的存储空间很大,可以存放百万条、千万条、上亿条数据。但是数据库并不是随意地将数据进行存放,是有一定的规则的,否则查询的效率会很低。当今世界是一个充满着数据的互联网世界,充斥着大量的数据。即这个互联网世界就是数据世界。数据的来源有很多,比如出行记录、消费记录、浏览的网页、发送的消息等等。除了文本类型的数据,图像、音乐、声音都是数据。

数据库常见概念

DB

概念:

数据库,保存一组有组织的数据容器。

优点:

  • 实现数据持久化。
  • 使用完整的管理系统统一管理,易于查询。

特点:

  • 将数据放到表中,表再放到库中。
  • 一个数据库可以有多个表,每个表都有一个名字,用来标识自己;表名具有唯一性。
  • 表具有一些特性,这些特性定义了数据在表中如何存储,类似 java 中“类”的设计
  • 表由列组成,我们也称为‘字段’。所以表都是由一个或者多个列组成的,每一列类似于 java 中的“属性”
  • 表中的数据是按行存储的,每一行类似于 java 中的“对象”。

DBMS

概念:

数据库管理系统,又称数据库软件(产品),用于管理DB中的数据

常见的数据管理系统:mysql、oracle、db2、sqlserver

SQL

概念:

结构化查询语言,用于和DBMS通信的语言,不是某个数据库软件特有的,而是所有的主流数据库软件通用的语言

连接查询

按年份分类:

sql92:

  • 等值连接
  • 非等值连接
  • 自连接

sql99:

  • 内连接

    • 等值连接

    • 非等值连接

    • 自连接

  • 外连接

    -左外连接

    -右外连接

  • 交叉连接

子查询

含义 :嵌套在其他语句内部的select语句称为子查询或内查询

外面的语句可以是:insert、update、delete、select等,一般select作为外面语句较多

外面如果为select语句,则此语句称为外查询或主查询

分类

按出现的位置分类:

  • select后面:仅仅支持标量子查询
  • from后面:表子查询
  • where 或 having 后面:标量子查询、列子查询、行子查询
  • exists后面:标量子查询、列子查询、行子查询、表子查询

按结果集分类:

  • 标量子查询(单行子查询):结果集为一行一列
  • 列子查询(多行子查询):结果集为多行一列
  • 行子查询:结果集为多行多列
  • 表子查询:结果集为多行多列(任意)

案例

这是力扣中的数据库中的一道例题

Employee 表包含所有员工信息,每个员工有其对应的 Id, salary 和 department Id。

https://i-blog.csdnimg.cn/blog_migrate/512369ab36f944a60965bb2fec44e813.png#pic_center

Department 表包含公司所有部门的信息。

https://i-blog.csdnimg.cn/blog_migrate/e42a4515635f4331a79804d6b20a2f2d.png#pic_center

编写一个 SQL 查询,找出每个部门工资最高的员工。对于上述表,您的 SQL 查询应返回以下行(行的顺序无关紧要)。

解题思路:

①求出每个部门对应的最高工资和部门编号

select max(Salary),DepartmentId
    from Employee 
    group by DepartmentId

②内连接两表并进行筛选

# Write your MySQL query statement below
select d.Name Department,e.Name Employee,e.Salary Salary
from Employee e, Department d
where e.DepartmentId=d.Id
and (e.Salary,e.DepartmentId) IN (
    select max(Salary),DepartmentId
    from Employee 
    group by DepartmentId
);

运行结果如下:

https://i-blog.csdnimg.cn/blog_migrate/345939266c09ea4f69530d817c253bd4.png

https://img-blog.csdnimg.cn/18c7246c7704455c8f687899b0f93359.jpg?#pic_centerx-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAWOeOlkRBWVRPWQ==,size_17,color_FFFFFF,t_70#