美文网首页
关系数据库标准语言SQL(2)

关系数据库标准语言SQL(2)

作者: 鹊南飞_ | 来源:发表于2019-08-06 23:22 被阅读0次

数据查询

SELECT [ALL|DISTINCT] <目标列表达式>[,<目标列表达式>]...
FROM <表名或视图名> [,<表名或视图名>] |(<SELECT语句>)[AS]<别名>
[WHERE <条件表达式>]
[GROUP BY <列名1>  [HAVING <条件表达式>]]
[ORDER BY <列名2>  [ASC|DESC]];
  1. 整个select语句的含义是,根据where子句的条件表达式从from自居指定的基本表、视图或派生表中找出满足条件的元组,再按select子句中的目标列表式选出元组中的属性值形成结果表
  2. 如果有group by子句,则将结果按<列名1>的值进行分组,该属性列值相等的元组为一个组。通常会在每组中作用聚集函数。
  3. 如果有order by子句,则结果表还要按<列名2>的值进行升序或降序排序
1. 单表查询
1. 选择表中的若干列
  • 查询指定列
select Sno,Sname 
from Student;
查询指定列
  • 查询全部列
select * 
from Student;
查询全部列
  • 查询经过计算的值
select Sname,2019-Sage 
from Student;
查询经过计算的值
2. 选择表中的若干元组
  • 消除取值重复的行
seletct Sno 
from SC;
select distinct Sno 
from SC;
image.png
  • 查询满足条件的元组
    通过where子句实现

常用的查询条件

  1. 比较大小
    =, >, <, >=, <=, !=, <>, !>, !<, NOT+以上运算符
  2. 确定范围
    between and, not between and
  3. 确定集合
    in ,not in
  4. 字符匹配
    like, not like
  5. 空值
    is null, is not null
  6. 多重条件(逻辑运算)
    and, or, not
3. ORDER BY子句

用户可以用ORDER BY子句对查询结果按照一个或多个属性列的升序(ASC)或降序(DESC),默认为升序(ASC)

select * 
from Student 
order by Sdept,Sage desc;
order by子句
4. 聚焦函数
  • COUNT(*)
    统计元组个数
select count(*) 
from student;
统计元组个数
  • COUNT([DISTINTCT|ALL] <列名>)
    统计一列中值的个数
select count(distinct Sno) 
from SC;
统计一列中值的个数
  • SUM([DISTINTCT|ALL] <列名>)
    计算一列值的总和(此列必须是数值型)
  • AVG([DISTINTCT|ALL] <列名>)
    计算一列值的平均值(此列必须是数值型)
select avg(Grade) 
from SC 
where Cno='1';
计算一列值的平均值
  • MAX([DISTINTCT|ALL] <列名>)
    求一列值中的最大值
  • MIN([DISTINTCT|ALL] <列名>)
    求一列值中的最小值
5. GROUP BY子句

GROUP BY子句将查询结果按某一列或多列的值分组,值相等的为一组。

select Cno,count(Sno) 
from SC 
group by Cno;
求各个课程号及相应的选课人数
select Sno 
from SC group by Sno 
having count(*)>3
查询选修了三门以上课程的学生学号
2. 连接查询
1. 等值与非等值连接查询
[<表名1>.] <列名1> <比较运算符> [<表名2>.] <列名2>
# 比较运算符只要有 =, >, <, >=, <=, !=(或<>)等。

或使用以下形式

[<表名1>.] <列名1> BETWEEN  [<表名2>.] <列名2> AND [<表名2>.] <列名3> 

连接符号为=时,称为等值连接;使用其他运算符为非等值连接。

select Student.*,SC.* 
from Student,SC 
where Student.Sno = SC.Sno;
查询每个学生及其选修请课程的情况
2. 自身连接

连接操作不仅可以在两个表之间进行,也可以是一个表与其自己进行连接,称为表的自身连接。

select first.Cno,second.cpno 
from Course first,Course second 
where first.Cpno= second.Cno;
查询每一门课的间接先修课
3. 外连接

通常的连接操作中,只有满足连接条件的元组才能作为结果输出。不满足条件的元组,也就是被舍弃的元组称为悬浮元组。如果想把悬浮元组也保存在结果关系中,而在其他属性上填空值(NULL),这种连接就叫做外连接。
左外连接列出左边关系中所有的元组
右外连接列出右边关系中所有的元组

select Student.Sno,Sname,Ssex,Sage,Sdept,Cno,Grade
from Student 
left outer join SC on
(Student.Sno=SC.Sno);
左外连接
4. 多表连接

两个以上的表进行连接通常称为多表连接。

3. 嵌套查询
  1. 在SQL语言中,一个select-from-where语句称为一个查询块,将一个查询块嵌套在另一个查询块的where子句或having短语的条件中的查询称为嵌套查询。
  2. 上层的查询块称为外层查询或父查询,下层查询块称为内层查询或子查询。
  3. 子查询的select语句中不能使用order by子句,order by子句只能对最终结果排序。
1. 带有IN谓词的子查询
select Sno,Sname,Sdept
from Student
where Sdept in 
        (select Sdept 
        from Student
        where Sname='liuchen');
带有IN谓词的子查询
2. 带有比较运算符的子查询

比较运算符:<, >, =, <=, >=, !=,<>
可以用in代替=

3. 带有ANY(SOME)或ALL谓词的子查询
>ANY      大于子查询结果中的某个值
>ALL      大于子查询结果中的所有值
<ANY      小于子查询结果中的某个值
<ALL      小于子查询结果中的所有值
>=ANY     大于等于子查询结果中的某个值
>=ALL     大于等于子查询结果中的所有值
<=ANY     小于等于子查询结果中的某个值
<=ALL     小于等于子查询结果中的所有值
=ANY      等于子查询结果中的某个值
=ALL      等于子查询结果中的所有值(通常没有实际意义)
!=(或<>)ANY   不等于子查询结果中的某个值
!=(或<>)ALL   不等于子查询结果中的任何一个值
4. 带有exists谓词的子查询
4. 集合查询

集合操作主要包括并操作UNION,交操作INTERSECT和差操作EXCEPT
参加集合操作的各查询结果的列数必须相同;对应项的数据类型也必须相同。

5. 基于派生表的查询

子查询不仅可以出现在where语句中,还可以出现在from子句中,这时子查询生成的临时派生表成为主查询的查询对象。


数据更新

1. 插入数据
1. 插入元组
INSERT
INTO <表名>  [(<属性列1> [, <属性列2>] ...)]
VALUES (<常量1> [, <常量2>]...);
2. 插入子查询结果
INSERT
INTO <表名>  [(<属性列1> [, <属性列2>] ...)]
子查询;
2. 修改数据
UPDATE <表名>
SET <列名>=<表达式> [,<列名>=<表达式>]... 
[WHERE <条件>] 
1. 修改某一个元组的值
2. 修改多个元组的值
3. 带子查询的修改语句
3. 删除数据
DELETE 
FROM <表名>
[WHERE <条件>] 
1. 删除某一个元组的值
2. 删除多个元组的值
3. 带子查询的删除语句

相关文章

  • 关系数据库标准语言SQL

    第三章 关系数据库标准语言SQL 重点:SQL语言的特点、掌握SQL语言的关系表定义及更新操作、掌握SQL语言强大...

  • 数据库 06

    第6章 初探SQL 这里讲关系数据库标准语言SQL。 SQL(Structured Query Language)...

  • 数据库设计(五)SQL

    SQL(Structured Query Language),结构化查询语言,是现行关系数据库的标准语言,SQL不...

  • 12 mysql基本

    SQL:关系数据库语言标准,STRUCT QUERY LANGUAGE,基本所有关系数据库都使用这套语言进行操作 ...

  • 数据库

    1. SQL:结构化查询语言的简称, 是关系数据库的标准语言。SQL 是一种通用的、 功能极强的关系数据库...

  • SQL基础应用

    1.什么是SQL?关系型数据库当中通用的查询语言。全名:结构化查询语言。 SQL标准(ANSI/ISO)SQL-8...

  • 关系数据库标准语言SQL(一)

    声明:最近在准备考试,故整理数据库笔记。 关系数据库标准语言SQL(一) SQL概述  SQL是一种完整地数据库...

  • PL/SQL介绍

    一、PL/SQL简介 1、SQL、PL/SQL 结构化查询语言(SQL)是用来访问和操作关系型数据库的一种标准语言...

  • SQL数据库

    SQL-what1.结构化查询语言2.ANSI标准计算机语言3.访问数据库区别:关系型数据库系统,oracle,m...

  • 数据结构

    SQL就是访问和处理关系数据库的计算机标准语言 数据模型: 1.层次模型 2.网状模型 3.关系模型 主流数据库 ...

网友评论

      本文标题:关系数据库标准语言SQL(2)

      本文链接:https://www.haomeiwen.com/subject/nqbgdctx.html