交互式SQL-查询语句
- 格式:docx
- 大小:13.79 KB
- 文档页数:5


设学生选课库中有三个数据表:
S(sno,sname,birthday,sdepartment,tel,sex)
SC(sno,cno,grade)
C(cno,cname,teacher,pcno)
完成下列查询任务:
1、检索至少选修课程“数据结构”和“C语言”的学生学号。
Select x.sno
From SC AS x, SC As y
Where x.sno=y.sno and
o=(Select cno From C Where cname='数据结构') and
o=(Select cno From C Where cname='C语言')
2、检索学习课程号为C02的学生学号和姓名。
Select S.sno,sname
From S,SC
Where SC.sno=S.sno and o='C02'
3、检索选修课程“数据库”的学生学号和姓名。
Select S.sno,sname
From S,SC,C
Where SC.sno=S.sno and o=o and ame='数据库'
4、检索选修课程号为C02或C04的学生学号。
Select distinct S.sno
From S,SC
Where SC.sno=S.sno and (o='C02' or o='C04')
5、检索至少选修课程号为C02和C04的学生姓名。
Select sname From S Where sno in
(Select x.sno
From SC AS x, SC As y
Where x.sno=y.sno and o='C02' and o='C04')
6、检索没有选修课程“数据库”的学生姓名和年龄。
Select sname,year(getdate()) - year(birthday)
From S where not Exists(
Select * From C, SC
SQ基础查询
(一) 选择列表
选择列表(select_list)指出所查询列,它可以是一组列名列表、星号、表达式、变量(包括局部变量和全局变量)等构成。
1、选择所有列 例如,下面语句显示testtable表中所有列的数据: Select * FROM testtable
2、选择部分列并指定它们的显示次序
查询结果集合中数据的排列顺序与选择列表中所指定的列名排列顺序相同。
例如:Select nickname,email FROM testtable
3、更改列标题
在选择列表中,可重新指定列标题。定义格式为:
列标题=列名 列名 列标题
如果指定的列标题不是标准的标识符格式时,应使用引号定界符,例如,下列语句使用汉字显示列标题:
Select 昵称=nickname,电子邮件=email FROM testtable
4、删除重复行
Select语句中使用ALL或DISTINCT选项来显示表中符合条件的所有行或删除其中重复的数据行,默认为ALL。使用DISTINCT选项时,对于所有重复的数据行在Select返回的结果集合中只保留一行。
5、限制返回的行数
使用TOP n [PERCENT]选项限制返回的数据行数,TOP n说明返回n行,而TOP n PERCENT时,说明n是表示一百分数,指定返回的行数等于总行数的百分之几。例如:
Select TOP 2 *FROM testtable Select TOP 20 PERCENT * FROM testtable
(二) FROM子句
FROM子句指定Select语句查询及与查询相关的表或视图。在FROM子句中最多可指定256个表或视图,它们之间用逗号分隔。
在FROM子句同时指定多个表或视图时,如果选择列表中存在同名列,这时应使用对象名限定这些列所属的表或视图。例如在usertable和citytable表中同时存在cityid列,在查询两个表中的cityid时应使用下面语句格式加以限定:
sqlplus -s用法
sqlplus是Oracle数据库的交互式命令行工具,-s选项是其中的一个参数,表示“静默模式”。使用-s选项可以在执行sqlplus命令时,不显示启动和退出信息,只显示查询结果。这在需要在脚本或者批处理中执行SQL语句时非常有用,可以避免额外的输出干扰。
举例来说,假设我们有一个脚本文件test.sql包含SQL查询语句,我们可以使用以下命令来执行该脚本并在静默模式下输出结果:
sqlplus-susername/password@*****************.
这样就会在不显示额外信息的情况下执行test.sql中的SQL语句,并将查询结果输出到标准输出。
需要注意的是,-s选项并不会隐藏错误信息,所以在实际使用中,仍然需要对SQL语句的执行结果进行适当的错误处理。
总之,sqlplus -s选项的主要作用是在执行SQL语句时以静默模式输出结果,适用于需要在脚本或者批处理中执行SQL查询的场景。
5.1 名词解释
(1)SQL模式:SQL模式是表和授权的静态定义。一个SQL模式定义为基本表的集合。 一个由模式名和模式拥有者的用户名或账号来确定,并包含模式中每一个元素(基本表、视图、索引等)的定义。
(2)SQL数据库:SQL(Structured Query Language),即‘结构式查询语言’,采用英语单词表示和结构式的语法规则。 一个SQL数据库是表的汇集,它用一个或多个SQL模式定义。
(3)基本表:在SQL中,把传统的关系模型中的关系模式称为基本表(Base Table)。
基本表是实际存储在数据库中的表,对应一个关系。
(4)存储文件:在SQL中,把传统的关系模型中的存储模式称为存储文件(Stored
File)。 每个存储文件与外部存储器上一个物理文件对应。
(5)视图:在SQL中,把传统的关系模型中的子模式称为视图(View),视图是从若干基本表和(或)其他视图构造出来的表。
(6)行:在SQL中,把传统的关系模型中的元组称为行(row)。
(7)列:在SQL中,把传统的关系模型中的属性称为列(coloumn)。
(8)实表:基本表被称为“实表”,它是实际存放在数据库中的表。
(9)虚表:视图被称为“虚表”,创建一个视图时,只把视图的定义存储在数据词典中,而不存储视图所对应的数据。
(10)相关子查询:在嵌套查询中出现的符合以下特征的子查询:子查询中查询条件依赖于外层查询中的某个值, 所以子查询的处理不只一次,要反复求值,以供外层查询使用。
(11)联接查询:查询时先对表进行笛卡尔积操作,然后再做等值联接、选择、投影等操作。 联接查询的效率比嵌套查询低。
(12)交互式SQL:在终端交互方式下使用的SQL语言称为交互式SQL。
(13)嵌入式SQL:嵌入在高级语言的程序中使用的SQL语言称为嵌入式SQL。
(14)共享变量:SQL和宿主语言的接口。共享变量有宿主语言程序定义,再用SQL的DECLARE语句说明, SQL语句就可引用这些变量传递数据库信息。