数据库——(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。
数据库——(DB、DBMS、SQL)_第1张图片
Department 表包含公司所有部门的信息。
数据库——(DB、DBMS、SQL)_第2张图片
编写一个 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
);

运行结果如下:
数据库——(DB、DBMS、SQL)_第3张图片

数据库——(DB、DBMS、SQL)_第4张图片

你可能感兴趣的:(数据库,sql,sqlserver)