(1)统计有学生选修的课程门数
select count(distinct c#) from SC
2)求选修C4课程的女学生的平均年龄
select avg(s.age) --最好都带上前缀,养成好习惯
from s,c,sc where s.s#=sc.s# and c.c#=sc.c#
and c.cname='C4' and s.sex='女'--字符类型带引号,必须注意大小写,你那么写好麻烦
3)求刘老师所授的课程的每门课程的平均成绩
select c.cname , avg(grade) from sc , c
where c.teacher =' liu' and sc.c# = c.c#
group by c.cname --select后是什么字段,这地方你也得最少有这个字段
(4)统计每门课程的学生选修人数(超过10人的课程才统计)。要求显示课程号和人数,查询结果按人数降序排列,若人数相同,按课程号升序排列。
select t.*
from
(select sc.c#, count(s#) counnt_s from s,sc where s.s# = sc.s# group by sc.c# having count(s#) >10) t
order by counnt_s desc,c# asc --你排序不对,另外oracle不可根据别名排序,只可再做嵌套
5)检索学号比王军同学大,而年龄比他小的学生姓名
select a.s#
from
(select s# from s where s#>(select s# from s where sname='王军') a,
select s# from s where age>(select age from s where sname='王军') b
where a.s#=b.s#
6)求年龄大于女同学平均年龄的男学生的姓名和年龄
select sname,age from s
where age>
(select avg(age) from s where sex = 'nv') and sex = 'nan' --没问题
7)求年龄大于所有女同学年龄的男学生的姓名和年龄
select sname ,age from s
where age>(select max(age) from s where sex = 'nv') and sex = 'nan' --没问题
update tblDB set name=(select substr(name,1,instr(name,'{')-1) || date ||substr(name,instr(name,'}')+1) ) 这样有点复杂
也可以update tblDB set name=replace(name,'{date}',data)
上面几楼的SQL 语句不行.. 因为 假如 他59 分 加 5分后不就 64分 ,然后再加 2分 .则 不符合条件了..这个是更新语句,查询语句上面几楼的可以..
应该这么写 .并且查询时,假如 100分 ,因为满足 100> 80 则跳转到
case WHEN 分数>80 THEN 分数+1
所以上面的逻辑要清楚...
create procedure pro_add
as
update 表名 set 分数=分数+1 where 分数 between 80 and 99
update 表名 set 分数=分数+2 where 分数 between 60 and 79
update 表名 set 分数=分数+5 where 分数 < 60>
go
执行
exec pro_add
就可以了
SQL(结构化查询语言)是一种设计用于检索和操作数据的数据库。它是美国国家标准协会(ANSI)的标准。此语言用于执行选择,更新,删除和插入等数据任务。
表是在具有列和行的模型中设计的数据**。在表中,指定了列数,称为字段,但未定义行数,称为记录。
数据库是有序形式的一组信息,用于访问,存储和检索数据。
DBMS是一个控制数据维护和使用的程序。它被认为是管理数据的文件管理器。有四种类型的DBMS:
最有用的DBMS是Relational DBMS。它为数据提供了一个关系运算符。
SQL命令分为以下类型:
它包含来自一个或多个表的行和列,可以定义为虚拟表。它消耗的内存较少。
句法:
Join用于从相关的行和列中检索数据。它在两个或多个表之间工作,并且它从两个表返回至少一个匹配。
连接类型是:
数据库查询是数据库表中的数据请求。查询可以是选择查询或任何其他类型的查询。
子查询是查询的一部分。外部查询已知主查询,内部查询识别子查询。始终首先执行子查询,并将结果传递给主查询。
Autoincrement是一个关键字,用于在表中插入新记录时生成数字。
它可用于设置表中数据类型的限制。在创建或更新表语句时,可以使用约束。一些限制是:
SQL中有不同类型的键:
规范化是一种设计技术,它以减少数据依赖性的方式排列表。它将表分成小模块并按关系链接。
非规范化是一种优化方法,我们将多余的数据增加到表中,并在规范化后应用。
存储过程是一组SQL语句,用作访问数据库的函数。为了减少网络流量并提高性能,我们使用存储过程。
句法:
索引用于加速查询的性能。它可以更快地从表中检索数据。可以在一组列上创建索引。
聚簇索引 - 它有助于轻松检索数据,并且只有一个聚簇索引与一个表一起分配。它会更改记录在数据库中的保存方式。
非聚集索引 - 与聚簇索引相比,非聚簇索引很慢。并且在非集群索引的情况下,该表可以具有多个索引。它为表创建一个对象,该表是搜索后指向表的一个点。
触发器 被 用来执行对表中的特定动作,诸如插入,更新或删除 。它是一种 存储过程 。动作和事件是触发器的主要组成部分。执行Action时,事件响应该操作而出现。
通常,这些属性称为ACID。它们有助于数据库事务。
A tomicity -在一个事务中连接两个或更多个单独的数据块,或者所有的块都致力于,或者一个都不。
C onsistency - 事务或者生成新的有效数据状态,或者如果发生任何失望,则在事务启动之前将所有数据返回到其状态。
I solation - 正在进行且尚未提交的事务必须继续与任何其他操作隔离。
D urability -在此操作中,系统保存提交的数据,每当事件发生故障和系统启动后,所有的数据是可用的正确的位置。
SQL语句分为几类:
它被定义为通过为查询提供条件来设置结果集的限制。他们从整个记录中过滤掉一些行。
一些SQL CLAUSES是WHERE和HAVING。
它是一个返回单个值的数学函数。
SQL中的聚合函数是:
为了操作字符串,我们使用String Function。其中一些是:
排序规则 是一 组规则,用于确定数据如何通过比较进行排序 。例如使用一组规则存储的字符数据,这些规则定义了正确字符的序列以及类型,重音和区分大小写。
在系统内存中执行SQL语句时,会创建一个临时工作区,称为Cursor。在select语句中,游标存储了信息。游标可以使用多行,但一次只能处理一行。这组行称为活动集。
游标有两种类型:
SQL服务器是Microsoft关系数据库管理系统(RDBMS)的一种类型或示例。它在IT氛围中提供广泛的事务处理和商业智能。
运算符是一个保留字,主要用于SQL语句的WHERE子句中以进行操作。
空值是没有值的字段。它与Zero不同。假设有一个表,并且在表中有一个字段,可以在不添加值的情况下将记录插入字段,然后该字段将以NULL值保存。
空白是我们提供的价值。
零只是一个数字。
数据仓库被称为来自多个信息源的中央数据中心。这些数据可用于在线处理和挖掘。
在表中,应该只有一个PRIMARY KEY,但在另一种情况下,UNIQUE KEY可以是任意数量的。
PRIMARY KEYS不允许NULL值,但UNIQUE KEY允许NULL值。