前言
结构化查询语言(Structured Query Language)简称SQL,是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。
结构化查询语言是高级的非过程化编程语言,允许用户在高层数据结构上工作。它不要求用户指定对数据的存放方法,也不需要用户了解具体的数据存放方式,所以具有完全不同底层结构的不同数据库系统, 可以使用相同的结构化查询语言作为数据输入与管理的接口。结构化查询语言语句可以嵌套,这使它具有极大的灵活性和强大的功能。
SQL语言1974年由Boyce和Chamberlin提出,并首先在IBM公司研制的关系数据库系统SystemR上实现。由于它具有功能丰富、使用方便灵活、语言简洁易学等突出的优点,深受计算机工业界和计算机用户的欢迎。1980年10月,经美国国家标准局(ANSI)的数据库委员会X3H2批准,将SQL作为关系数据库语言的美国标准,同年公布了标准SQL,此后不久,国际标准化组织(ISO)也作出了同样的决定。
SQL从功能上可以分为3部分:数据定义、数据操纵和数据控制。
SQL的核心部分相当于关系代数,但又具有关系代数所没有的许多特点,如聚集、数据库更新等。它是一个综合的、通用的、功能极强的关系数据库语言。其特点是:
1、数据描述、操纵、控制等功能一体化。
2、两种使用方式,统一的语法结构。SQL有两种使用方式。一是联机交互使用,这种方式下的SQL实际上是作为自含型语言使用的。另一种方式是嵌入到某种高级程序设计语言(如C语言等)中去使用。前一种方式适合于非计算机专业人员使用,后一种方式适合于专业计算机人员使用。尽管使用方式不向,但所用语言的语法结构基本上是一致的。 [1]
3、高度非过程化。SQL是一种第四代语言(4GL),用户只需要提出“干什么”,无须具体指明“怎么干”,像存取路径选择和具体处理操作等均由系统自动完成。
4、语言简洁,易学易用。尽管SQL的功能很强,但语言十分简洁,核心功能只用了9个动词。SQL的语法接近英语口语,所以,用户很容易学习和使用。
1. 创建学生表 S(命名格式“姓名拼音_三位学号_s”,如 LBJ_023_s)并插入数据
2. 创建课程表 C(命名格式“姓名拼音_三位学号_c”,如 LBJ_023_c) 并插入数据
3. 创建选课表 SC( 命名格式 “ 姓名拼音 _ 三位学号 _sc” ,如 LBJ_023_sc) 并插入数据
4. 在实验报告中贴出查询语句及其执行结果
1 )列出所有学生的姓名,选课名称,及其成绩
代码语言:javascript复制select * s.Sname, c.Cname, sc.Grade
from LYL_116_s s, LYL_116_c c, LYL_116_sc sc
where s.S# = sc.S# and c.C# = sc.C#
2 )列出所有学生的姓名,及其平均成绩
代码语言:javascript复制select cs.Sname'名字', avg(cs.Grade)'平均成绩'
from (select s.Sname, c.Cname, sc.Grade
from LYL_116_s s, LYL_116_c, LYL_116_sc
where s.S# = sc.S# and c.C# = sc.C#) cs group by cs.Sname
3 )检索选修课程号为 C5 的学生学号和成绩
代码语言:javascript复制select c.C#, sc.Grade from LYL_116_c c, LYL_116_sc sc
where c.C# = sc.C# and c.C# = 'C5'
4 )检索选修课程名称为 “ 九阴真经 ” 的学生学号和姓名
代码语言:javascript复制select sc.S#, S.Sname from
(select sc.S# from (select C# from LYL_116_c where Cname = '九阴真经')
s, LYL_116_sc sc where s.C# = sc.C#) cs, LYL_116_s s
where cs.S# = s.S#
5 )检索选修课程号为 C1 或 C5 的学生学号
代码语言:javascript复制select sc.S# from LYL_116_sc sc where sc.C# = 'C1' or sc.C# = 'C5'
6 )检索选修课程号为 C1 和 C8 的学生学号
代码语言:javascript复制select LYL_116_s.S# from LYL_116_s where S# IN(select S# from(
select S# from LYL_116_sc where LYL_116_sc.C#='C1' union all
select S# from LYL_116_sc where LYL_116_sc.C#='C8')
group by S# having COUNT(*)=2)
7 )检索不选修课程号 C8 的学生姓名和年龄
代码语言:javascript复制select s.Sname, s.Sage from LYL_116_s s,
(select sc.S# from LYL_116_sc sc where sc.C#='C8') cs
where s.S# != cs.S#
我正在参与2023腾讯技术创作特训营第三期有奖征文,组队打卡瓜分大奖!