写点什么

关系数据库 SQL

作者:Frank
  • 2023-10-09
    四川
  • 本文字数:1614 字

    阅读完需:约 5 分钟

关系数据库SQL

SQL is a standard language for storing, manipulating and retrieving data in databases.

数据定义

关系数据库系统支持三级模式结构,其模式,外模式和内模式中的基本对象有模式,表,视图和索引等。因此 SQL 的数据定义功能包括模式定义,表定义,视图和索引的定义,如下表所示:


操作对象 创建 删除 修改

模式 create schema drop schema

表 create table drop table alter table

视图 create view drop view

索引 create index drop index alter index

数据查询


格式

SELECT column1, column2, ...FROM table_name;
复制代码

Here, column1, column2, ... are the field names of the table you want to select data from.

The table_name represents the name of the table you want to select data from.


单表查询


除了查询表的指定列,还可以查询列的表达式,birthday 是 student 表的出生日期列,查询学生的年龄: age = TIMESTAMPDIFF(YEAR,birthday,CURDATE())

select name, TIMESTAMPDIFF(YEAR,birthday,CURDATE()) as age from student;
复制代码


条件查询

SELECT column1, column2, ...FROM table_nameWHERE condition;
复制代码

The following operators can be used in the WHERE clause:=, >, <, >=, <=, <>, BETWEEN, LIKE, IN.

查询 2010 年及以后出生的学生姓名:

select name from student where birthday >= '2010-01-01';
复制代码


聚合查询:通过聚合函数汇总查询出的指定列

聚合函数:聚合函数:AVG(平均值),MIN(最小值),MAX(最大值),SUM(和),COUNT(计数)。

查询学生的平均年龄

select name, avg(TIMESTAMPDIFF(YEAR,birthday,CURDATE()) as age) from student;
复制代码


分组查询:将查询结果按照指定字段进行分组,字段中数据相等的分为一组。

分组查询基本的语法格式如下:

GROUP BY 列名 [HAVING 条件表达式]

说明:

列名: 是指按照指定字段的值进行分组。

HAVING 条件表达式: 用来过滤分组后的数据。


统计不同性别的人的个数:

select gender,count(*) from students group by gender;
复制代码


连接查询

A JOIN clause is used to combine rows from two or more tables, based on a related column between them.

Different Types of SQL JOINs

Here are the different types of the JOINs in SQL:

  • (INNER) JOIN: Returns records that have matching values in both tables

  • LEFT (OUTER) JOIN: Returns all records from the left table, and the matched records from the right table

  • RIGHT (OUTER) JOIN: Returns all records from the right table, and the matched records from the left table

  • FULL (OUTER) JOIN: Returns all records when there is a match in either left or right table



嵌套查询

出现在其他语句内部的 SELECT 语句,称为子查询或内查询(其他语句:不限于 SELECT 语句,不过最常出现在 SELECT 语句内部)。与之相对地,外部的查询语句,称为外查询或主查询。

分类:

  • 按子查询出现的位置:SELECT 后面、FROM 后面、WHERE 或 HAVING 后面、EXISTS 后面(相关子查询)

  • 按查询结果的行列数:标量子查询(结果只有一行一列)、列子查询(结果只有一列多行,也称为多行子查询)、行子查询(结果有一行多列或多行多列)、表子查询(结果一般为多行多列)

SELECT 后面:仅仅支持标量子查询

FROM 后面:支持表子查询

WHERE 或 HAVING 后面:主要支持标量子查询和列子查询,行子查询用得比较少

EXISTS 后面:支持表子查询


集合查询



并集:union 是将多个查询结果组合到一个查询结果中,并且去掉重复值,相当于做了一次 group by 分组操作。

union all 是将多个查询结果组合到一个查询结果中,不会去掉重复值,也就是说重复的数据也会显示出来。


交集:intersect 用于返回多个查询结果中重叠的部分。


差集:minus 用于返回两个查询结果的差集。


参考


sql

SQL语言的数据定义

sql_select

sql_where

分组查询

sql_join

嵌套查询

集合查询


用户头像

Frank

关注

还未添加个人签名 2022-05-08 加入

还未添加个人简介

评论

发布
暂无评论
关系数据库SQL_sql_Frank_InfoQ写作社区