澳门新萄京数据库及SQL—-常用知识点总计

澳门新萄京数据库及SQL—-常用知识点总计

数据库也是测算机类笔试面试中不可幸免会境遇的考试场点,尤其是银行和有个别守旧软件类公司。那里依照整理的资料,对数据库的连带文化也做个小结吧。希望学过数据库但长日子不用的同室依据这几个知识能够纪念和重拾,没学过的同学能明白一些数据库的基础知识。

数据库也是计算机类笔试面试中不可幸免会遇上的考试场点,尤其是银行和一些守旧软件类集团。那里依照整理的材料,对数据库的相关文化也做个总括吧。希望学过数据库但长日子不用的同校依据这么些文化能够纪念和重拾,没学过的同室能了解一些数据库的基础知识。

(一)

Student(S#,Sname,Sage,Ssex) 学生表
Course(C#,Cname,T#) 课程表
SC(S#,C#,score) 成绩表
Teacher(T#,Tname) 教师表
 
问题:
一 、查询“001”课程比“002”课程战绩高的具有学员的学号;

第一节

第一节

 

复制代码 代码如下:

 一 、相关概念    

  1.
Data:数据,是数据库中存款和储蓄的为主目标,是描述事物的标志记录。

     
 2.
Database:数据库,是漫漫储存在总结机内、有集体的、可共享的汪洋数指标集合

     
 3.
DBMS:数据库管理种类,是置身用户与操作系统之间的一层数量管理软件,用于科学地公司、存款和储蓄和治本数据、高效地获取和保险数据。

     
 4.
DBS:数据库系统,指在处理器体系中引入数据库后的种类,一般由数据库、数据库管理种类、应用系统、数据库管理员(DBA)构成。

     
 5.
数据模型:是用来抽象、表示和处理具体世界中的数据和新闻的工具,是对切实世界的一步一趋,是数据库系统的中坚和底蕴;其重组要素有数据结构、数据操作和完整性约束

     
 6.
概念模型:也称音信模型,是按用户的看法来对数据和新闻建立模型,重要用以数据库设计。

     
 7. 逻辑模型:是按电脑类其余见解对数据建立模型,用于DBMS实现。

     
 8.
大人体模型型:是对数码最底部的画饼充饥,描述数据在系统里头的表示方法和存取方法,在磁盘或磁带上的仓库储存方式和存取方法,是面向总计机种类的。

     
 9.
实体和总体性:客观存在并可互相区分的东西称为实体。实体所具有的某一特点称为属性。

     
 10.E-R图:即实体-关系图,用于描述现实世界的事物及其相互关系,是数据库概念模型设计的主要工具。

     
 11.涉嫌格局:从用户意见看,关系格局是由一组关系构成,每种关系的数据结构是一张规范化的二维表。

     
 12.型/值:型是对某一类数据的组织和属性的认证;值是型的三个具体赋值,是型的实例。

     
 13.数据库形式:是对数据库香港中华总商会体数据的逻辑结构(数据项的名字、类型、取值范围等)和个性(数据里面包车型地铁维系以及数额有关的安全性、完整性须要)的描述。

     
 14.数据库的三级系统结构:外情势、格局和内方式

     
 15.数据库内方式:又称作存款和储蓄情势,是对数据库物理结构和仓库储存格局的讲述,是数额在数据库内部的代表方法。二个数据库唯有三个内形式

     
 16.数据库外形式:又称为子情势或用户情势,它是数据库用户能够看见和平运动用的片段数据的逻辑结构和特点的叙说,是数据库用户的数据视图。日常是格局的子集。3个数据库可有四个外形式

     
 17.数据库的二级影象:外情势/情势影象、方式/内形式影象。

     
一 、相关概念

1.写出一条Sql语句:取出表A中第三1到第④0记下(SQLServer,
以活动增加的ID作为主键,  注意:ID只怕不是接连的。)

select top 10 * from A where id not in (select top 30 id from A)
解2: select top 10 * from A where id > (selectmax(id) from (select
top 30 id from A )as A)

select a.S# from (select s#,score from SC where C#=’001′) a,(select
s#,score
from SC where C#=’002′) b
where a.score>b.score and a.s#=b.s#;

 二 、重点知识点

  1. 数据库系统由数据库、数据库管理种类、应用种类和数据库管理员构成。

     
 2. 数据模型的咬合成分是:数据结构、数据操作、完整性约束规范。

     
 3. 实体型之间的关联分为一对壹 、一对多和多对多三连串型。

     
 4. 广泛的数据模型包蕴:涉及、层次、网状、面向对象、对象关系映射等几种。

     
 5. 关乎模型的完整性约束包蕴:实体完整性、参照完整性和用户定义完整性。

      6. 演说数据库三级格局、二级映象的意思及作用。

     
  数据库三级方式反映的是多少的多个抽象层次: 形式是对数据库中漫天数据的逻辑结构和本性的描述内形式又称作存储情势,是对数据库物理构造和储存格局的描述。外格局又称为子形式或用户情势,是对特定数据库用户相关的一部分数据的逻辑结构和特点的讲述

     
  数据库三级情势通过二级映象在 DBMS 内部贯彻那三个抽象层次的沟通和转移。外方式面向应用程序, 通过外情势/形式映象与逻辑形式建立联系, 完毕多少的逻辑独立性。 形式/内方式映象建立情势与内情势之间的一对一映射, 完结数量的物理独立性

       1.
Data:数据,是数据库中蕴藏的为主指标,是讲述事物的号子记录。
       2.
Database:数据库,是绵绵储存在总括机内、有协会的、可共享的豁达数据的会合。
       3.
DBMS:数据库管理体系,是位于用户与操作系统以内的一层数据管理软件,用于科学地集团、存款和储蓄和管理数据、高效地获得和护卫数据。
       4.
DBS:数据库系统,指在微型总计机连串中引入数据库后的体系,一般由数据库、数据库管理连串、应用系统、数据库管理员(DBA)构成。
       5.
数据模型:是用来抽象、表示和处理具体世界中的数据和新闻的工具,是对切实世界的生搬硬套,是数据库系统的中央和底蕴;其构成要素有数据结构、数据操作和完整性约束。
       6.
概念模型:也称音讯模型,是按用户的视角来对数据和消息建立模型,重要用于数据库设计。
       7.
逻辑模型:是按电脑类别的看法对数码建立模型,用于DBMS达成。
       8.
物理模型:是对数码最尾部的空洞,描述数据在系统里面包车型客车表示方法和存取方法,在磁盘或磁带上的贮存方式和存取方法,是面向总括机类其余。
       9.
实体和品质:客观存在并可相互区分的东西称为实体。实体所负有的某一风味称为属性。
     
 10.E-Lacrosse图:即实体-关系图,用于描述现实世界的东西及其互相关系,是数据库概念模型设计的机要工具。
     
 11.关系形式:从用户意见看,关系形式是由一组关系结合,每种关系的数据结构是一张规范化的二维表。
     
 12.型/值:型是对某一类数据的结构和性质的表达;值是型的叁个具体赋值,是型的实例。
     
 13.数据库方式:是对数据库中全体数据的逻辑结构(数据项的名字、类型、取值范围等)和特色(数据里面包车型客车关系以及数额有关的安全性、完整性供给)的叙说。
     
 14.数据库的三级系统结构:外形式、形式和内格局。
     
 15.数据库内形式:又叫做存储格局,是对数据库物理构造和仓库储存格局的叙说,是数额在数据库内部的象征方法。3个数据库唯有二个内格局。
     
 16.数据库外形式:又称为子情势或用户方式,它是数据库用户能够看见和平运动用的一部分数据的逻辑结构和特点的讲述,是数据库用户的数量视图。平时是格局的子集。一个数据库可有五个外方式。
     
 17.数据库的二级印象:外情势/格局印象、方式/内情势影像。

 

贰 、查询平均战表当先六1九分的同窗的学号和平均战表;

第二节

     

2. 写sql语句达成下列查询
(表)t
a b(列)
1 2
1 3
1 4
2 1
2 2
3 1
4 1
5 3
5 2
询问结果需求
a b
1 2
2 1
3 1
4 1
5 2

复制代码 代码如下:

壹 、相关概念

     
 1. 主键: 能够唯一地方统一标准识三个元组的习性或属性组称为关系的键或候选键。 若三个涉及有多个候选键则可选其一作为主键(Primary key)。

     
 2. 外键:假若一个提到的叁个或一组属性引用(参照)了另2个事关的主键,则称这些或那组属性为外码或外键(Foreign key)。

     
 3. 关周密据库: 服从关系模型建立的数据库称为关周密据库。 它是在有些应用领域的装有关乎的集结

     
 4. 提到方式: 简单地说,关系形式就是对关乎的型的概念, 包蕴涉及的属性构成、各属性的数据类型、 属性间的信赖性、 元组语义及完整性约束等。 涉嫌是关系形式在某一随时的事态或内容, 关系模型是型, 关系是值, 关系模型是静态的、 稳定的, 而关系是动态的、随时间不断变动的,因为涉嫌操作在时时刻刻地创新着数据库中的数据

     
 5.
实体完整性:用于标识实体的唯一性。它供给核心关系要求求有三个可见标识元组唯一性的主键,主键不可能为空,也不可取重复值。

     
 6. 参照完整性: 用于维护实体之间的引用关系。 它供给2个波及的外键要么为空, 要么取与被参照关系对应的主键值,即外键值必须是主键中已存在的值

     
 7. 用户定义的完整性:正是对准某一现实应用的多寡必须知足的语义约束。包含非空、 唯一和布尔条件约束三种状态。

 ② 、重点知识点

 

select S#,avg(score)
from sc
group by S# having avg(score) >60;

贰 、首要知识点

     
1. 关周全据库语言分为关系代数、关系演算和结构化查询语言三大类。

     
2. 涉嫌的5种基本操作是慎选、投影、并、差、笛Carl积

     
3.关系方式是对关系的叙述,五元组情势化表示为:RAV4(U,D,DOM,F),当中

     
      R —— 关系名

     
      U —— 组成该关系的属性名集合

     
      D —— 属性组 U 中质量所来自的域

     
      DOM —— 属性向域的画面集合

     
      F —— 属性间的数量依赖关系集合

     
4.笛Carl乘积,选用和影子运算如下

澳门新萄京 1

     
 1. 数据库系统由数据库、数据库管理种类、应用体系数据库管理员构成。

3.一组通话记录(总共500万条):
ID 主叫号码 被叫号码 通话开首时间   通话甘休时间           通话时间长度
1  98290000 0215466546656 2007-02-01 09:49:53.000 2007-02-01
09:50:16.00023
2  98290000 021546654666  2007-02-01 09:50:29.000 2007-02-0109:50:41.000
12
3  98290000 021546654666  2007-02-01 09:50:58.000 2007-02-0109:51:12.000
14
4  68290900 0755133329866 2007-02-01 10:04:31.000 2007-02-01
10:07:13.000162
5  78290000 0755255708638 2007-02-01 10:48:26.000 2007-02-01
10:49:23.00057
6  78290000 0755821119109 2007-02-01 10:49:39.000 2007-02-01
10:52:55.000196
7  78290000 035730928370  2007-02-01 11:30:45.000 2007-02-0111:31:58.000
73
8  78290000 0871138889904 2007-02-01 11:33:47.000 2007-02-01
11:35:00.00073
9  68290000 035730928379  2007-02-01 11:52:20.000 2007-02-0111:54:56.000
156
10 68290000 0298521811199 2007-02-01 12:44:45.000 2007-02-01
12:45:04.000 19
求个中同一个编号的两遍打电话之间距离大于10秒的通话记录ID
比如说:6,7,8,9,10条记下均适合。

叁 、查询全数同学的学号、姓名、选课数、总成绩;

第三节

     
 2. 数据模型的组合要素是:数据结构、数据操作、完整性约束原则

 

复制代码 代码如下:

壹 、相关概念

     
 1. SQL:结构化查询语言的简称, 是关周密据库的科班语言。SQL 是一种通用的、 功用极强的关周密据库语言, 是对关周全据存取的标准接口, 也是不一样数据库系统之间互操作的功底。集数据查询、数据操作、数据定义、和数码控制成效于一体。

     
 2. 数据定义:数据定义功效包涵格局定义、表定义、视图和目录的概念。

     
 3. 嵌套查询:指将1个查询块嵌套在另三个查询块的 WHERE 子句或 HAVING 短语的尺度中的查询。

     
 3. 实体型之间的关系分为一对一、一对多多对多三种档次。

 

select Student.S#,Student.Sname,count(SC.C#),sum(score)
from Student left Outer join SC on Student.S#=SC.S#
group by Student.S#,Sname

贰 、首要知识点

     
 1. SQL 数据定义语句的操作对象有:格局、表、视图和目录。

     
 2. SQL 数据定义语句的一声令下动词是:CREATE、DROP 和 ALTER。

     
 3. LANDDBMS 中索引一般选用 B+树或 HASH 来实现

     
 4. 索引能够分成唯一索引、非唯一索引和聚簇索引三连串型。

澳门新萄京 2

  6.SQL 创造表语句的貌似格式为

     
        CREATE TABLE <表名>

     
      
 ( <列名> <数据类型>[ <列级完整性约束> ]

     
      
 [,<列名> <数据类型>[ <列级完整性约束>] ] …

     
        [,<表级完整性约束> ] ) ;

里面<数据类型>能够是数据库系统援助的各个数据类型,包罗长度和精度。 

   
列级完整性约束为针对单个列(本列)的完整性约束, 包罗 PQashqaiIMALANDY KEY、 REFERENCES表名(列名)、UNIQUE、NOT NULL 等。 

   
表级完整性约束能够是依照表中多列的约束,包涵 PLX570IMA福睿斯Y KEY ( 列名列表) 、FOREIGN KEY REFERENCES 表名(列名) 等。

     
 7. SQL 创设索引语句的貌似格式为

     
        CREATE [UNIQUE] [CLUSTER] INDEX <索引名>

     
        ON <表名> (<列名列表> ) ;

里头UNIQUE:表示创造唯一索引,缺省为非唯一索引;

     
CLUSTE哈弗:表示创制聚簇索引,缺省为非聚簇索引;

     
<列名列表>:一个或逗号分隔的多少个列名,各个列名后可跟 ASC 或 DESC,表示升/降序,缺省为升序。多列时则按为多元排序。 
  

   8. SQL 查询语句的相似格式为

     
      
 SELECT [ALL|DISTINCT] <算术表明式列表> FROM <表名或视图名列表>

     
        [ WHERE <条件表明式 1> ]

     
      
 [ GROUP BY <属性列表 1> [ HAVING <条件表明式 2 > ] ]

     
        [ OGL450DEPRADO BY <属性列表 2> [ ASC|DESC ] ] ;

其中

   
  ALL/DISTINCT: 缺省为 ALL, 即列出全部查询结果记录, 包含重复记录。 DISTINCT则对重复记录只列出一条

   
   算术表达式列表:一个或多个逗号分隔的算术表明式,表明式由常量(包罗数字和字符串)、列名、函数和算术运算符构成。每一种表达式后还可跟外号。也可用 *表示查询表中的全数列。

   
  <表名或视图名列表>: 一个或四个逗号分隔的表或视图名。 表或视图名后可跟小名。

   
  条件表明式 1:包罗关系或逻辑运算符的表达式,代表询问条件。

   
  条件表明式 2:蕴涵关系或逻辑运算符的表明式,代表分组条件。

   
  <属性列表 1>:八个或逗号分隔的四个列名。

   
  <属性列表 2>: 1个或逗号分隔的三个列名, 每一个列名后可跟 ASC 或 DESC, 表示升/降序,缺省为升序。

     
 4. 广阔的数据模型包罗:论及、层次、网状、面向对象、对象关联映射等几种。

 

肆 、查询姓“李”的老师的个数;

第四节

     
 5. 关系模型的完整性约束包涵:实业完整性、参照完整性和用户定义完整性

(二)

复制代码 代码如下:

壹 、相关概念和学识

     
 1.触发器是用户定义在基本表上的一类由事件驱动的至极规进度。由服务器自动激活, 能执行越发复杂的检查和操作,具有更精致和更强劲的数目控制能力。使用 CREATE TTucsonIGGERubicon 命令建立触发器。

     
 2.处理器体系设有技能安全、管理安全和方针法律三类安全性难题。

     
 3. TCSEC/TDI 标准由安全策略、义务、保证和文书档案多个地方内容结合。

     
 4. 常用存取控制方法包罗独立自主存取控制(DAC)和强制存取控制(MAC)两种。

     
 5. 独立存取控制(DAC)的 SQL 语句包罗 GRANT 和 REVOKE 四个。 用户权限由数据对象和操作类型两局地构成。

澳门新萄京 3

     
 6. 常见SQL 自主权力控制命令和例子。

     
   1) 把对 Student 和 Course 表的百分之百权力授予全部用户。

     
        GRANT ALL PRIVILIGES ON TABLE Student,Course TO PUBLIC

     
   2) 把对 Student 表的查询权和人名修改权授予用户 U4。

     
        GRANT SELECT,UPDATE(Sname) ON TABLE Student TO U4 ;

     
   3) 把对 SC 表的插入权限授予 U5 用户,并同意她传播该权限。

     
        GRANT INSERT ON TABLE SC TO U5 WITH GRANT OPTION ;

     
   4) 把用户 U5 对 SC 表的 INSE奥迪Q5T
权限收回,同时撤废被她传播出去的授权。

     
        REVOKE INSERT ON TABLE SC FROM U5 CASCADE ;

     
   5) 创造一个剧中人物 普拉多1,并使其对 Student
表具有数据查询和换代权限。

     
        CREATE ROLE R1;

     
        GRANT SELECT,UPDATE ON TABLE Student TO R1;

     
   6) 对修改 Student 表结构的操作进行审计。

     
        AUDIT ALTER ON Student ;

 
    6. 演说数据库三级情势、二级映象的意义及意义。
        数据库三级方式反映的是数码的多少个抽象层次: 情势是对数据库中漫天数据的逻辑结构和特色的描述。内情势又叫做存款和储蓄形式,是对数据库物理构造和存款和储蓄形式的叙说。外格局又称为子方式或用户形式,是对特定数据库用户相关的局地数据的逻辑结构和特征的叙述。

 

select count(distinct(Tname))
from Teacher
where Tname like ‘李%’;

数据库知识总结(2)范式

     
  数据库三级形式通过二级映象在 DBMS 内部贯彻那八个抽象层次的联络和更换。外情势面向应用程序, 通过外形式/方式映象与逻辑格局建立联系, 完毕数据的逻辑独立性。 情势/内格局映象建立情势与内格局里面包车型大巴一对一映射, 完结多少的物理独立性。

Student(S#,Sname,Sage,Ssex) 学生表
Course(C#,Cname,T#) 课程表
SC(S#,C#,score) 成绩表
Teacher(T#,Tname) 教师表

⑤ 、查询没学过“叶平”老师课的校友的学号、姓名;

 壹 、相关概念和知识点

     
 1.数据依赖:反映一个关乎里面属性与性情之间的束缚关系,是现实性世界属性间相互关联的指雁为羹,属于数据内在的属性和语义的反映。

     
 2. 规范化理论:是用来规划精良的关系方式的主导理论。它经过分解关系方式来清除当中不妥当的数额正视,以消除插入十分、删除十分、更新相当和数目冗余难题。

     
 3. 函数重视:不难地说,对于涉及格局的五个属个性集X和Y,若X的任一取值能唯一鲜明Y的值,则称Y函数依赖于X,记作X→Y。

     
 4. 非常常函数依赖:对于涉嫌形式的四个属个性集X和Y,要是X→Y,但Y!⊆X,则称X→Y为非平常函数信赖;假设X→Y,但Y⊆X,则称X→Y为非日常函数依赖。

     
 5. 全然函数注重:对于涉及方式的八个属性格集X和Y,若是X→Y,并且对于X的别的贰个真子集X’,都没有X’→Y,则称Y对X完全函数依赖。

     
 6. 范式:指符合某一种级别的关联模式的聚众。在设计关全面据库时,依照满意依赖关系须要的差异定义为差别的范式。

     
 7. 规范化:指将一个低一流范式的涉嫌方式,通过格局分解转换为几个高一级范式的关联情势的集纳的进度。

     
 8. 1NF:若关系格局的享有属性都以不可分的骨干数据项,则该关系格局属于1NF。

     
 9. 2NF:1NF关乎格局一旦同时满足每二个非主属性完全函数重视于码,则该关系方式属于2NF。

     
 10. 3NF:若关系形式的每2个非主属性既不有的信赖于码也不传递正视于码,则该关系情势属于3NF。

     
 11. BCNF:若一个涉嫌方式的每三个操纵因素都包括码,则该关系方式属于BCNF。

     
 12. 数据库设计:是指对于1个加以的应用环境,构造优化的数据库逻辑方式和情理构造,并因而建立数据库及其使用系统,使之能够行得通地蕴藏和治本数据,满意各个用户的施用须求,包蕴音讯保管要求和数量操作需要。

     
 13.
数据库设计的5个主旨步骤:需要分析,概念结构设计,逻辑结构划设想计,物理结构划设想计,数据库实施,数据库运维和护卫。

     
 14. 定义结构划设想计:指将要求分析获得的用户须要抽象为消息结构即概念模型的经过。也等于经过对用户供给举办汇总、归结与虚幻,形成叁个独门于实际DBMS的概念模型。

     
 15. 逻辑结构划设想计:将概念结构模型(基本E-Odyssey图)转换为有个别DBMS产品所辅助的数据模型相契合的逻辑结构,并对其进展优化。

     
 16. 大体结构划设想计:指为八个加以的逻辑数据模型选拔一个最契合应用环境的大体结构的进度。包涵设计数据库的蕴藏结构与存取方法。

     
 17. 抽象:指对实际的人、物、事和定义实行人工处理,抽取所关切的同步性情,忽略非本质的细节,并把这几个特征用种种概念精确地加以描述,那个概念组成了某种模型。     
 18. 数据库设计必须遵守结构划设想计和表现设计相结合的尺度。     
 19. 多少字典首要回顾数据项、数据结构、数据流、数据存款和储蓄和处理进度多个部分。

     
 20. 三种常用抽象方法是分类、聚集和包罗。

     
 21. 片段 E-Enclave图之间的争论首要呈未来质量争辨、命名争执和结构争持多个地点。     
 22. 数据库常用的存取方法包涵索引方法、聚簇方法和 HASH方法三种。

     
 23. 明确数据存放位置和储存结构要求考虑的要素至关心注重要有: 存取时间、
存款和储蓄空间利用率和维护代价等。

第二节

 

复制代码 代码如下:

贰 、细说数据库三范式

  2.1 第贰范式(1NF)无重复的列

       第2范式(1NF)中数量库表的每一列都以不可分割的着力数据项

     
 同一列中不可能有多少个值

     
 即实业中的有个别属性无法有多少个值只怕不能够有再次的性质

     
 简单的讲,第2范式正是无重复的列。

     
 在其余八个关周到据库中,第①范式(1NF)是对涉嫌形式的主干须求,不知足第2范式(1NF)的数据库就不是关周密据库

  

  2.2 第贰范式(2NF)属性完全重视于主键[免除部分子函数注重]     

  知足第贰范式(2NF)必须先满足第2范式(1NF)。   
 

  第1范式(2NF)须要数据库表中的每一个实例或行必须能够被惟一地分别。     

  为完成区分常常供给为表加上叁个列,以存款和储蓄各类实例的旷世标识。 

  第3范式(2NF)要求实体的属性完全依赖于主关键字。所谓完全依靠是指不能够存在仅依靠主关键字一部分的性质,假设存在,那么那些天性和主关键字的这一有个别应该分离出来形成贰个新的实业,新实体与原实体之间是一对多的关系。为落到实处区分常常供给为表加上叁个列,以存款和储蓄种种实例的绝世标识。简单来讲,第壹范式正是性质完全依靠于主键。

  2.3 第1范式(3NF)属性不信赖于别的非主属性[解除传递注重]

     
 满意第贰范式(3NF)必须先满意第③范式(2NF)。

     
 一言以蔽之,第②范式(3NF)必要五个数据库表中不含有已在任何表中已盈盈的非主关键字音信。

     
 例如,存在3个单位音信表,当中各种单位有单位编号(dept_id)、部门名称、部门简介等音信。那么在的职员和工人新闻表中列出机关编号后就不可能再将单位名称、部门简介等与部门有关的新闻再投入职员和工人音信表中。假如不存在机构音信表,则基于第3范式(3NF)也应有构建它,不然就会有雅量的数据冗余。简单的说,第2范式正是性质不借助于于其余非主属性。

  

  2.4
具体实例分析

  上边罗列2个该校的学员系统的实例,以示几个范式的行使。

  在统一筹划数据库表结构在此以前,咱们先分明一下要统一筹划的剧情包含那2个。学号、学生姓名、年龄、性别、课程、课程学分、系别、学科成绩,系办地址、系办电话等新闻。为了简单大家临时只考虑那个字段音讯。大家对于这一个音信,说关怀的题材有如下多少个方面。

     
 1)学生有那二个基本新闻 
     
 2)学生选了那么些课,成绩是怎么着 
     
 3)每一种课的学分是稍稍 
     
 4)学生属于分外系,系的着力消息是哪些。

     
 首先第二范式(1NF):数据库表中的字段都是单一属性的,不可再分。那个单一属性由基本项目构成,包蕴整型、实数、字符型、逻辑型、日期型等。在此时此刻的别的关全面据库管理种类(DBMS)中,不容许你把数据库表的一列再分为二列或多列,由此做出的都是符合第壹范式的数据库。 

     
 大家再考虑第1范式,把装有那些新闻放到多个表中(学号,学生姓名、年龄、性别、课程、课程学分、系别、学科战表,系办地址、系办电话)下边存在如下的借助关系。 
     
 1)(学号)→ (姓名, 年龄,性别,系别,系办地址、系办电话) 
     
 2) (课程名称) → (学分) 
     
 3)(学号,课程)→ (学科战绩)

  依据依赖关系我们能够把选课关系表SelectCourse改为如下多少个表: 

     
 学生:Student(学号,姓名, 年龄,性别,系别,系办地址、系办电话); 
     
 课程:Course(课程名称, 学分); 
     
 选课关系:SelectCourse(学号, 课程名称, 成绩)。

     
 事实上,对照第2范式的须要,那就是满意第三范式的数额库表,若不满意第②范式,会发出如下难点:
  (1)数据冗余: 同一门课程由n个学生选修,”学分”就重新n-1遍;同一个学生选修了m门课程,姓名和年龄就再也了m-三遍。

  (2)更新格外:1)若调整了某门课程的学分,数据表中全部行的”学分”值都要翻新,不然会并发相同门科目学分分歧的事态。 
     
         
 2)即便要开办一门新的教程,权且还从未人选修。那样,由于还尚未”学号”关键字,课程名称和学分也无从记录入数据库。

  (3)删除非凡 : 假使一批学员早已成功课程的选修,那些选修记录就应有从数据库表中删除。不过,与此同时,课程名称和学分新闻也被删除了。很扎眼,这也会招致插入很是。

  我们再考虑什么将其改成满意第3范式的数额库表,接着看上边的学习者表Student(学号,姓名, 年龄,性别,系别,系办地址、系办电话),关键字为单一关键字”学号”,因为存在如下决定涉及:

     
(学号)→ (姓名, 年龄,性别,系别,系办地址、系办电话) 
  但是还设有上面包车型大巴主宰涉及 
     
 (学号) → (所在大学)→(学院地方, 大学电话) 
     
 
即存在非关键字段”大学地点”、”高校电话”对重庆大学字段”学号”的传递函数注重。 
     
 它也会存在数量冗余、更新十分、插入十分和删除相当的状态(那里就不具体分析了,参照第3范式中的分析)。依据第2范式把学生关系表分为如下八个表就能够满足第3范式了:

     
 学生:(学号, 姓名, 年龄, 性别,系别); 
     
 系别:(系别, 系办地址、系办电话)。

SQL语句总计

① 、相关概念

问题:
壹 、查询“001”课程比“002”课程成绩高的兼具学员的学号;
  select a.S# from (select s#,score from SC where C#=’001′)
a,(selects#,score
  from SC where C#=’002′) b
  where a.score>b.score and a.s#=b.s#;
贰 、查询平均战表超乎伍拾七分的同窗的学号和平均成绩;
    select S#,avg(score)
    from sc
    group by S# having avg(score) >60;
叁 、查询全数同学的学号、姓名、选课数、总成绩;
  select Student.S#,Student.Sname,count(SC.C#),sum(score)
  from Student left Outer join SC on Student.S#=SC.S#
  group by Student.S#,Sname
四 、查询姓“李”的导师的个数;
  select count(distinct(Tname))
  from Teacher
  where Tname like ‘李%’;
⑤ 、查询没学过“叶平”老师课的校友的学号、姓名;
    select Student.S#,Student.Sname
    from Student 
    where S# not in (select distinct( SC.S#) fromSC,Course,Teacher
where  SC.C#=Course.C# and Teacher.T#=Course.T#
andTeacher.Tname=’叶平’);
六 、查询学过“001”并且也学过数码“002”课程的同学的学号、姓名;
  select Student.S#,Student.Sname from Student,SC where
Student.S#=SC.S#and SC.C#=’001’and exists( Select * from SC as SC_2
where SC_2.S#=SC.S# andSC_2.C#=’002′);
柒 、查询学过“叶平”老师所教的全数课的校友的学号、姓名;
  select S#,Sname
  from Student
  where S# in (select S# from SC ,Course ,Teacher where
SC.C#=Course.C#and Teacher.T#=Course.T# and Teacher.Tname=’叶平’
groupby S# having count(SC.C#)=(select count(C#) from Course,Teacher 
whereTeacher.T#=Course.T# and Tname=’叶平’));
捌 、查询课程编号“002”的成绩比课程编号“001”课程低的兼具同学的学号、姓名;
  Select S#,Sname from (select Student.S#,Student.Sname,score
,(selectscore from SC SC_2 where SC_2.S#=Student.S# and
SC_2.C#=’002′) score2
  from Student,SC where Student.S#=SC.S# and C#=’001′) S_2 where
score2<score;
玖 、查询全体科目成绩小于57分的同桌的学号、姓名;
  select S#,Sname
  from Student
  where S# not in (select Student.S# from Student,SC where
S.S#=SC.S# andscore>60);
⑩ 、查询没有学全全体课的同学的学号、姓名;
    select Student.S#澳门新萄京,,Student.Sname
    from Student,SC
    where Student.S#=SC.S# group by Student.S#,Student.Sname having
count(C#) <(select count(C#) from Course);
1壹 、查询至少有一门课与学号为“1001”的同桌所学相同的同桌的学号和姓名;
    select S#,Sname from Student,SC where Student.S#=SC.S# andC# in
select C# from SC where S#=’1001′;
1二 、查询至少学过学号为“001”同学全部一门课的别的同学学号和姓名;
    select distinct SC.S#,Sname
    from Student,SC
    where Student.S#=SC.S# and C# in (select C# from SC
whereS#=’001′);
1三 、把“SC”表中“叶平”老师教的课的成绩都改成为此课程的平均战绩;
    update SC set score=(select avg(SC_2.score)
    from SC SC_2
    where SC_2.C#=SC.C# ) from Course,Teacher whereCourse.C#=SC.C#
and Course.T#=Teacher.T# and Teacher.Tname=’叶平’);
1肆 、查询和“1002”号的校友学习的课程完全相同的其余同学学号和人名;
    select S# from SC where C# in (select C# from SC
whereS#=’1002′)
    group by S# having count(*)=(select count(*) from SC
whereS#=’1002′);
1伍 、删除学习“叶平”老师课的SC表记录;
    Delect SC
    from course ,Teacher 
    where Course.C#=SC.C# and Course.T#= Teacher.T# and
Tname=’叶平’;
1陆 、向SC表中插入一些记下,这几个记录供给符合以下条件:没有上过编号“003”课程的同校学号、二 、
    号课的平均成绩;
    Insert SC select S#,’002′,(Select avg(score)
    from SC where C#=’002′) from Student where S# not in (SelectS#
from SC where C#=’002′);
1柒 、按平均战表从高到低展现所有学员的“数据库”、“企管”、“英语”三门的学科成绩,按如下情势显得:
学生ID,,数据库,企管,罗马尼亚语,有效课程数,有效平均分
    SELECT S# as 学生ID
        ,(SELECT score FROM SC WHERESC.S#=t.S# AND C#=’004′) AS
数据库
        ,(SELECT score FROM SC WHERESC.S#=t.S# AND C#=’001′) AS
企管
        ,(SELECT score FROM SC WHERE SC.S#=t.S#AND C#=’006′) AS
英语
        ,COUNT(*) AS 有效课程数, AVG(t.score) AS 平均战表
    FROM SC AS t
    GROUP BY S#
    ORDER BY avg(t.score) 
1⑧ 、查询各科成绩最高和压低的分:以如下情势显示:课程ID,最高分,最低分
    SELECT L.C# As 课程ID,L.score AS 最高分,R.score AS 最低分
    FROM SC L ,SC AS R
    WHERE L.C# = R.C# and
        L.score = (SELECT MAX(IL.score)
                     FROM SC AS IL,Student AS IM
                     WHERE L.C# = IL.C# and IM.S#=IL.S#
                     GROUP BY IL.C#)
        AND
        R.Score = (SELECT MIN(IR.score)
                     FROM SC AS IR
                     WHERE R.C# = IR.C#
                 GROUP BY IR.C#
                   );
1九 、按各科平均战表从低到高和及格率的比例从高到低依次
    SELECT t.C# AS
课程号,max(course.Cname)AS课程名,isnull(AVG(score),0) AS 平均战表
        ,100 * SUM(CASE WHEN isnull(score,0)>=60 THEN 1 ELSE 0
END)/COUNT(*) AS 及格百分数
    FROM SC T,Course
    where t.C#=course.C#
    GROUP BY t.C#
    ORDER BY 100 * SUM(CASE WHEN  isnull(score,0)>=60THEN 1 ELSE 0
END)/COUNT(*) DESC
20、查询如下课程平均战表和及格率的百分比(用”1行”彰显):
企管(001),马克思(002),OO&UML (003),数据库(004)
    SELECT SUM(CASE WHEN C# =’001′ THEN score ELSE 0END)/SUM(CASE C#
WHEN ‘001’ THEN 1 ELSE 0 END) AS 企管平均分
        ,100 * SUM(CASE WHEN C# = ‘001’ ANDscore >= 60 THEN 1 ELSE
0 END)/SUM(CASE WHEN C# = ‘001’ THEN 1 ELSE 0 END)AS
企管及格百分数
        ,SUM(CASE WHEN C# = ‘002’ THEN scoreELSE 0 END)/SUM(CASE C#
WHEN ‘002’ THEN 1 ELSE 0 END) AS 马克思平均分
        ,100 * SUM(CASE WHEN C# = ‘002’ ANDscore >= 60 THEN 1 ELSE
0 END)/SUM(CASE WHEN C# = ‘002’ THEN 1 ELSE 0 END)AS 马克思及格百分数
        ,SUM(CASE WHEN C# = ‘003’ THEN scoreELSE 0 END)/SUM(CASE C#
WHEN ‘003’ THEN 1 ELSE 0 END) AS UML平均分
        ,100 * SUM(CASE WHEN C# = ‘003’ ANDscore >= 60 THEN 1 ELSE
0 END)/SUM(CASE WHEN C# = ‘003’ THEN 1 ELSE 0 END)AS UML及格百分数
        ,SUM(CASE WHEN C# = ‘004’ THEN scoreELSE 0 END)/SUM(CASE C#
WHEN ‘004’ THEN 1 ELSE 0 END) AS 数据库平均分
        ,100 * SUM(CASE WHEN C# = ‘004’ ANDscore >= 60 THEN 1 ELSE
0 END)/SUM(CASE WHEN C# = ‘004’ THEN 1 ELSE 0 END)AS 数据库及格百分数
  FROM SC

select Student.S#,Student.Sname
from Student
where S# not in (select distinct( SC.S#) from SC,Course,Teacher where
SC.C#=Course.C# and Teacher.T#=Course.T# and
Teacher.Tname=’叶平’);

SQL语句中常用关键词及其表达如下:

     
 1. 主键: 能够唯一地方统一标准识3个元组的属性或属性组称为关系的键或候选键。 若3个提到有多个候选键则可选其一作为主键(Primary key)。

 

陆 、查询学过“001”并且也学过数码“002”课程的同班的学号、姓名;

1)SELECT

将质地从数据库中的表格内选出,七个主要字:从 (FROM) 数据库中的表格内选出
(SELECT)。语法为
SELECT
“栏位名” FROM “表格名”。

     
 2. 外键:如果3个关乎的贰个或一组属性引用(参照)了另3个涉嫌的主键,则称那几个或那组属性为外码或外键(Foreign key)。

2一 、查询不一致老师所教差别科目平均分从高到低呈现
  SELECT max(Z.T#) AS 教授ID,MAX(Z.Tname) AS 教师姓名,C.C# AS
课程ID,MAX(C.Cname) AS 课程名称,AVG(Score) AS 平均成绩
    FROM SC AS T,Course AS C ,Teacher AS Z
    where T.C#=C.C# and C.T#=Z.T#
  GROUP BY C.C#
  ORDER BY AVG(Score) DESC
2② 、查询如下课程成绩第 3 名到第 6
名的学生战表单:企管(001),马克思(002),UML
(003),数据库(004)
    [学生ID],[学生姓名],企管,马克思,UML,数据库,平均战绩
    SELECT  DISTINCT top 3
      SC.S# As 学生学号,
        Student.Sname AS 学生姓名 ,
      T1.score AS 企管,
      T2.score AS 马克思,
      T3.score AS UML,
      T4.score AS 数据库,
      ISNULL(T1.score,0) + ISNULL(T2.score,0) +ISNULL(T3.score,0) +
ISNULL(T4.score,0) as 总分
      FROM Student,SC  LEFT JOIN SC AS T1
                     ON SC.S# = T1.S# AND T1.C# = ‘001’
            LEFT JOIN SCAS T2
                     ON SC.S# = T2.S# AND T2.C# = ‘002’
            LEFT JOIN SCAS T3
                     ON SC.S# = T3.S# AND T3.C# = ‘003’
            LEFT JOIN SCAS T4
                     ON SC.S# = T4.S# AND T4.C# = ‘004’
      WHERE student.S#=SC.S# and
      ISNULL(T1.score,0) + ISNULL(T2.score,0) +ISNULL(T3.score,0) +
ISNULL(T4.score,0)
      NOT IN
      (SELECT
            DISTINCT
            TOP 15 WITHTIES
           ISNULL(T1.score,0) + ISNULL(T2.score,0) + ISNULL(T3.score,0)
+ISNULL(T4.score,0)
      FROM sc
            LEFT JOIN scAS T1
                     ON sc.S# = T1.S# AND T1.C# = ‘k1’
            LEFT JOIN scAS T2
                     ON sc.S# = T2.S# AND T2.C# = ‘k2’
            LEFT JOIN scAS T3
                     ON sc.S# = T3.S# AND T3.C# = ‘k3’
            LEFT JOIN scAS T4
                     ON sc.S# = T4.S# AND T4.C# = ‘k4’
      ORDER BY ISNULL(T1.score,0) + ISNULL(T2.score,0)+
ISNULL(T3.score,0) + ISNULL(T4.score,0) DESC);

复制代码 代码如下:

2)DISTINCT

在上述 SELECT 关键词后拉长1个 DISTINCT
就足以去除选取出来的栏位中的重复,从而完结求得那么些表格/栏位内有什么不一样的值的功效。语法为
SELECT
DISTINCT “栏位名” FROM “表格名”。

     
 3. 关周密据库: 遵照关系模型建立的数据库称为关周详据库。 它是在某些应用领域的具备涉及的聚集。

 

select Student.S#,Student.Sname from Student,SC where
Student.S#=SC.S# and SC.C#=’001’and exists( Select * from SC as
SC_2 where SC_2.S#=SC.S# and SC_2.C#=’002′);

3)WHERE

其一首要词能够补助大家选择性地抓资料,而不是全取出来。语法为
SELECT
“栏位名” FROM “表格名” WHERE “条件” 

     
 4. 关系情势: 不难地说,关系形式正是对涉及的型的定义, 包涵涉嫌的习性构成、各属性的数据类型、 属性间的依赖、 元组语义及完整性约束等。 关系是关乎情势在某一每十15日的图景或内容, 关系模型是型, 关系是值, 关系模型是静态的、 稳定的, 而关系是动态的、随时间不断变化的,因为涉及操作在不停地创新着数据库中的数据。

23、计算列印各科成绩,各分数段人数:课程ID,课程名称,[100-85],[85-70],[70-60],[
<60]
    SELECT SC.C# as 课程ID, Cname as 课程名称
        ,SUM(CASE WHEN score BETWEEN 85 AND100 THEN 1 ELSE 0 END) AS
[100 – 85]
        ,SUM(CASE WHEN score BETWEEN 70 AND85 THEN 1 ELSE 0 END) AS [85

七 、查询学过“叶平”老师所教的全部课的同室的学号、姓名;

4)AND OR

上例中的 WHERE
指令能够被用来由表格中有规范地挑选资料。那么些条件也许是简容易单的
(像上一页的例证),也只怕是繁体的。复杂条件是由二或四个简易标准经过 AND
或是 OCRUISER 的连接而成。语法为:
SELECT
“栏位名”  FROM “表格名”  WHERE “简单标准”  {[AND|OR]
“简单标准”}+

     
 5. . 实体完整性:用于标识实体的唯一性。它供给基本关系必要求有八个可见标识元组唯一性的主键,主键不可能为空,也不得取重复值

  • 70]
            ,SUM(CASE WHEN score BETWEEN 60 AND70 THEN 1 ELSE 0 END) AS [70
  • 60]
            ,SUM(CASE WHEN score < 60 THEN 1ELSE 0 END) AS [60 -]
        FROM SC,Course
        where SC.C#=Course.C#
        GROUP BY SC.C#,Cname;  

复制代码 代码如下:

5)IN

在 SQL 中,在七个状态下会用到 IN  这几个命令;这一页将介绍其中之一:与
WHERE
有关的那个状态。在这么些用法下,我们先行已知道至少一个我们要求的值,而大家将那个知道的值都放入
IN  这么些子句。语法为:
SELECT
“栏位名”  FROM “表格名”  WHERE “栏位名” IN (‘值一’, ‘值二’, …)
 

     
 6. 参照完整性: 用于爱惜实体之间的引用关系。 它要求二个提到的外键要么为空, 要么取与被参照关系对应的主键值,即外键值必须是主键中已存在的值

2四 、查询学一生均战绩及其名次
      SELECT 1+(SELECT COUNT( distinct 平均战绩)
             FROM (SELECT S#,AVG(score) AS 平均成绩
                     FROM SC
                 GROUP BY S#
                 ) AS T1
            WHERE 平均成绩 > T2.平均成绩) as 排名,
      S# as 学生学号,平均成绩
    FROM (SELECT S#,AVG(score) 平均战绩
            FROM SC
        GROUP BY S#
        ) AS T2
    OLacrosseDE奥迪Q5 BY 平均成绩 desc;
2五 、查询各科战表前三名的笔录:(不考虑成绩并列情形)
      SELECT t1.S# as 学生ID,t1.C#as 课程ID,Score as 分数
      FROM SC t1
      WHERE score IN (SELECT TOP 3 score
             FROM SC
             WHERE t1.C#= C#
            ORDER BYscore DESC
             )
      ORDER BY t1.C#;
2六 、查询每门科目被选修的学生数
  select c#,count(S#) from sc group by C#;
2七 、查询出只选修了一门科指标满贯学员的学号和姓名
  select SC.S#,Student.Sname,count(C#) AS 选课数
  from SC ,Student
  where SC.S#=Student.S# group by SC.S# ,Student.Sname having
count(C#)=1;
2⑧ 、查询男子、女子人数
    Select count(Ssex) as 男人人数 fromStudent group by Ssex having
Ssex=’男’;
    Select count(Ssex) as 女子人数 fromStudent group by Ssex having
Ssex=’女’;
2九 、查询姓“张”的学生名单
    SELECT Sname FROM Student WHERE Sname like ‘张%’;
30、查询同名同性学生名单,并计算同有名的人数
  select Sname,count(*) from Student group by Sname
having count(*)>1;;
3一 、一九八一年降生的学生名单(注:Student表中Sage列的品类是datetime)
    select Sname,  CONVERT(char (11),DATEPART(year,Sage))as age
    from student
    where  CONVERT(char(11),DATEPART(year,Sage))=’1981′;
3二 、查询每门课程的平分成绩,结果按平均战表升序排列,平均战绩同样时,按学科号降序排列
    Select C#,Avg(score) from SC group by C# order byAvg(score),C#
DESC ;
3叁 、查询平均成绩当先85的持有学员的学号、姓名和平均战表
    select Sname,SC.S# ,avg(score)
    from Student,SC
    where Student.S#=SC.S# group by SC.S#,Snamehaving   
avg(score)>85;
3四 、查询课程名称为“数据库”,且分数低于60的学习者姓名和分数
    Select Sname,isnull(score,0)
    from Student,SC,Course
    where SC.S#=Student.S# and SC.C#=Course.C#
and Course.Cname=’数据库’and score <60;
3伍 、查询全体学生的选课情状;
    SELECT SC.S#,SC.C#,Sname,Cname
    FROM SC,Student,Course
    where SC.S#=Student.S# and SC.C#=Course.C# ;
3陆 、查询任何一门课程战绩在柒15分以上的真名、课程名称和分数;
    SELECT  distinctstudent.S#,student.Sname,SC.C#,SC.score
    FROM student,Sc
    WHERE SC.score>=70 AND SC.S#=student.S#;
3柒 、查询不及格的科目,并按学科号从大到小排列
    select c# from sc where scor e <60 order by C# ;
3捌 、查询课程编号为003且课程战表在柒十四分以上的学员的学号和姓名;
    select SC.S#,Student.Sname from SC,Student whereSC.S#=Student.S#
and Score>80 and C#=’003′;
3玖 、求选了学科的学生人数
    select count(*) from sc;
40、查询选修“叶平”老师所授课程的学生中,战绩最高的学生姓名及其战绩
    select Student.Sname,score
    from Student,SC,Course C,Teacher
    where Student.S#=SC.S# and SC.C#=C.C# and C.T#=Teacher.T#and
Teacher.Tname=’叶平’ and SC.score=(selectmax(score)from SC where
C#=C.C# );
4壹 、查询各类科目及相应的选修人数
    select count(*) from sc group by C#;
4贰 、查询差别学科战绩同样的学习者的学号、课程号、学生成绩
  select distinct  A.S#,B.score from SC A  ,SC B whereA.Score=B.Score
and A.C# <>B.C# ;
4叁 、查询每门功成绩最好的前两名
    SELECT t1.S# as 学生ID,t1.C# as 课程ID,Score as 分数
      FROM SC t1
      WHERE score IN (SELECT TOP 2 score
             FROM SC
             WHERE t1.C#= C#
            ORDER BYscore DESC
             )
      ORDER BY t1.C#;
4肆 、总结每门课程的上学的小孩子选修人数(超过10位的课程才总结)。须求输出课程号和选修人数,查询结果按人头降序排列,查询结果按人口降序排列,若人数相同,按学科号升序排列 
    select  C# as 课程号,count(*) as 人数
    from  sc 
    group  by  C#
    order  by  count(*) desc,c# 
4伍 、检索至少选修两门课程的学员学号
    select  S# 
    from  sc 
    group  by  s#
    having  count(*)  >  =  2
4⑥ 、查询任何学员都选修的教程的课程号和课程名
    select  C#,Cname 
    from  Course 
    where  C#  in  (select  c# from  sc group  by  c#) 
47、查询没学过“叶平”老师上课的任一门课程的学习者姓名
    select Sname from Student where S# not in (select S#
fromCourse,Teacher,SC where Course.T#=Teacher.T# and SC.C#=course.C#
and Tname=’叶平’);
4捌 、查询两门以上不及格课程的同室的学号及其平均成绩
    select S#,avg(isnull(score,0)) from SC where S# in (selectS# from
SC where score <60 group by S# having count(*)>2)group by S#;
4⑨ 、检索“004”课程分数小于60,按分数降序排列的校友学号
    select S# from SC where C#=’004’and score <60 order byscore
desc;
50、删除“002”同学的“001”课程的大成
delete from Sc where S#=’001’and C#=’001′;

select S#,Sname
from Student
where S# in (select S# from SC ,Course ,Teacher where
SC.C#=Course.C# and Teacher.T#=Course.T# and Teacher.Tname=’叶平’
group by S# having count(SC.C#)=(select count(C#) from Course,Teacher
where Teacher.T#=Course.T# and Tname=’叶平’));

6)BETWEEN

IN 那些命令能够让大家依照一或数个不三番五次(discrete)的值的限量之内抓出资料库中的值,而 BETWEEN
则是让我们得以采取1个限量 (range)
 内抓出资料库中的值,语法为:
SELECT
“栏位名”  FROM “表格名” WHERE “栏位名” BETWEEN ‘值一’ AND
‘值二’ 

     
 7. 用户定义的完整性:正是本着某一具体运用的多少必须满意的语义约束。包括非空、 唯一和布尔条件约束两种情景。

 

⑧ 、查询课程编号“002”的成绩比课程编号“001”课程低的持有同学的学号、姓名;

7)LIKE

LIKE 是另二个在 WHERE  子句中会用到的授命。基本上, LIKE
 能让大家依照二个方式(pattern) 来找出大家要的质地。语法为:
SELECT
“栏位名”  FROM “表格名”  WHERE “栏位名” LIKE {模式} 

      贰 、主要知识点

(三)

复制代码 代码如下:

8)ORDER BY

大家平常索要能够将抓出的资料做3个有系统的来得。那可能是由小往大
(ascending)  或是由大往小(descending)。在那种状态下,大家就能够运用
OHavalDEKoleos BY 这些命令来达成大家的目的。语法为:
SELECT
“栏位名”  FROM “表格名 [WHERE “条件”] ORDER BY “栏位名” [ASC,
DESC] 

      1. 关周详据库语言分为关系代数、关系演算和结构化查询语言三大类。

 

Select S#,Sname from (select Student.S#,Student.Sname,score ,(select
score from SC SC_2 where SC_2.S#=Student.S# and SC_2.C#=’002′)
score2
from Student,SC where Student.S#=SC.S# and C#=’001′) S_2 where
score2 <score;

9)函数

函数允许大家能够对那一个数字的型态存在的行依旧列做运算,包含 AVG
(平均)、COUNT (计数)、MAX (最大值)、MIN (最小值)、SUM
(总合)。语法为:
SELECT
“函数名”(“栏位名”) FROM “表格名”  

      2. 提到的 5 种基本操作是挑选、投影、并、差、笛卡尔积。

题材讲述:
主旨用到下边八个事关表:
CARD     借书卡。   CNO 卡号,NAME  姓名,CLASS 班级
BOOKS    图书。     BNO书号,BNAME 书名,AUTHO景逸SUV 小编,PRICE
单价,QUANTITY 仓库储存册数
BORAV4ROW   借书记录。 CNO 借书卡号,BNO 书号,奔驰G级DATE 还书日期
备注:限定每人每一个书只好借一本;库存册数随借书、还书而改变。
务求落成如下1八个处理:
  1.
写出建立BO路虎极光ROW表的SQL语句,必要定义主码完整性约束和引用完整性约束。
  2. 找出借书超越5本的读者,输出借书卡号及所借图书册数。
  3. 查询借阅了”水浒”一书的读者,输出姓名及班级。
  4. 查询过期未还图书,输出借阅者(卡号)、书号及还书日期。
  5. 询问书名包罗”网络”关键词的图书,输出书号、书名、小编。
  6. 询问现有图书中价位最高的书籍,输出书名及笔者。
  7.
询问当前借了”总结办法”但绝非借”总括办法习题集”的读者,输出其借书卡号,并按卡号降序排序输出。
  8. 将”C01″班同学所借图书的还期都延长七日。
  9. 从BOOKS表中删除当前无人借阅的书籍记录。
  10.假如平时按书名查询图书音信,请建立适用的目录。
 
11.在BO奥迪Q5ROW表上建立二个触发器,完结如下效果:如若读者借阅的书名是”数据库技术及采纳”,就将该读者的借阅记录保留在BO凯雷德ROW_SAVE表中(注ORROW_SAVE表结构同BO奥迪Q3ROW表)。
 
12.建立八个视图,展现”力01″班学员的借书消息(只须求出示姓名和书名)。
 
13.询问当前还要借有”计算办法”和”组合数学”两本书的读者,输出其借书卡号,并按卡号升序排序输出。
  14.假定在建BOOKS表时没有定义主码,写出为BOOKS表追加定义主码的说话。
  15.对CALacrosseD表做如下修改:
    a. 将NAME最大列宽扩张到十个字符(假定原为四个字符)。
    b. 为该表增添1列NAME(系名),可变长,最大二十一个字符。

玖 、查询全体科目成绩小于陆拾叁分的同窗的学号、姓名;

10)COUNT

其一根本词能够帮本人大家总结某个许笔资料被选出来,语法为:
SELECT
COUNT(“栏位名”) FROM “表格名”

     
3.关联方式是对关系的描述,五元组格局化表示为:Sportage(U,D,DOM,F),其中

 

复制代码 代码如下:

11)GROUP BY

GROUP BY
语句用于结合合计函数,根据四个或八个列对结果集进行分组。语法为:
SELECT
“栏位1”, SUM(“栏位2”)  FROM “表格名”  GROUP BY “栏位1” 

            R —— 关系名

  1. 写出建立BOLX570ROW表的SQL语句,供给定义主码完整性约束和引用完整性约束
    –达成代码:
    CREATE TABLE BORROW(
        CNO int FOREIGN KEY REFERENCES CARD(CNO),
        BNO int FOREIGN KEY REFERENCES BOOKS(BNO),
        RDATE datetime,
        PRIMARY KEY(CNO,BNO))

     

  2. 找出借书当先5本的读者,输出借书卡号及所借图书册数
    –达成代码:
    SELECT CNO,借图书册数=COUNT(*)
    FROM BORROW
    GROUP BY CNO
    HAVING COUNT(*)>5

     

  3. 询问借阅了”水浒”一书的读者,输出姓名及班级
    –达成代码:
    SELECT * FROM CARD c
    WHERE EXISTS(
        SELECT * FROM BORROW a,BOOKS b
        WHERE a.BNO=b.BNO
            AND b.BNAME=N’水浒’
            AND a.CNO=c.CNO)

     

  4. 询问过期未还图书,输出借阅者(卡号)、书号及还书日期
    –达成代码:
    SELECT * FROM BORROW
    WHERE RDATE<GETDATE()

     

  5. 询问书名包含”互连网”关键词的书本,输出书号、书名、小编
    –达成代码:
    SELECT BNO,BNAME,AUTHOR FROM BOOKS
    WHERE BNAME LIKE N’%网络%’

     

  6. 询问现有图书中价格最高的书籍,输出书名及小编
    –达成代码:
    SELECT BNO,BNAME,AUTHOR FROM BOOKS
    WHERE PRICE=(
        SELECT MAX(PRICE) FROM BOOKS)

     

select S#,Sname
from Student
where S# not in (select Student.S# from Student,SC where S.S#=SC.S#
and score>60);

12)HAVING

该重大词能够扶持大家对函数发生的值来设定标准。语法为:
SELECT
“栏位1”, SUM(“栏位2”)  FROM “表格名”  GROUP BY “栏位1”  HAVING
(函数条件)  

            U —— 组成该关系的属性名集合

7.
询问当前借了”总结方法”但从没借”总结办法习题集”的读者,输出其借书卡号,并按卡号降序排序输出
–完毕代码:
SELECT a.CNO
FROM BORROW a,BOOKS b
WHERE a.BNO=b.BNO AND b.BNAME=N’总计方法’
    AND NOT EXISTS(
        SELECT * FROM BORROW aa,BOOKS bb
        WHERE aa.BNO=bb.BNO
            ANDbb.BNAME=N’总结情势习题集’
            ANDaa.CNO=a.CNO)
ORDER BY a.CNO DESC

⑩ 、查询没有学全全数课的同班的学号、姓名;

13)ALIAS

作者们能够透过ALIAS为列名称和表名称钦点外号,语法为:
SELECT
“表格小名”.”栏位1″ “栏位外号”  FROM “表格名” “表格外号”  

  • *

            D —— 属性组 U 中品质所来自的域

 

复制代码 代码如下:

问题:

一 、查询“001”课程比“002”课程战表高的兼具学员的学号;
select
a.S#
from
(select s#,score from SC where C#=’001′) a,
(select
s#,score from SC where C#=’002′) b
where
a.score>b.score and a.s#=b.s#;

贰 、查询平均战绩超乎伍15分的同室的学号和平均战绩;
select
S#,avg(score)
from
sc
group
by S# having avg(score) >60;

三 、查询全体同学的学号、姓名、选课数、总成绩;
select
Student.S#,Student.Sname,count(SC.C#),sum(score)
from
Student left Outer join SC on Student.S#=SC.S#
group
by Student.S#,Sname

四 、查询姓“李”的准将的个数;
select
count(distinct(Tname))
from
Teacher
where
Tname like ‘李%’;

⑤ 、查询没学过“叶平”老师课的同窗的学号、姓名;
select
Student.S#,Student.Sname
from
Student
where
S# not in (select distinct( SC.S#) from SC,Course,Teacher where
SC.C#=Course.C# and Teacher.T#=Course.T# and
Teacher.Tname=’叶平’);

陆 、查询学过“001”并且也学过数码“002”课程的同校的学号、姓名;
select
Student.S#,Student.Sname
from
Student,SC

where
Student.S#=SC.S# and SC.C#=’001′and exists( Select * from SC as
SC_2 where SC_2.S#=SC.S# and SC_2.C#=’002′);

 

柒 、查询学过“叶平”老师所教的全数课的同班的学号、姓名;
select
S#,Sname
from
Student
where
S# in
(select
S#
from
SC ,Course ,Teacher
where
SC.C#=Course.C# and Teacher.T#=Course.T# and Teacher.Tname=’叶平’
group by S# having count(SC.C#)=(select count(C#) from Course,Teacher
where Teacher.T#=Course.T# and Tname=’叶平’));

捌 、查询全体科目成绩小于五二十一分的同校的学号、姓名;
select
S#,Sname
from
Student
where
S# not in (select Student.S# from Student,SC where S.S#=SC.S# and
score>60);

玖 、查询没有学全全体课的同窗的学号、姓名;
select
Student.S#,Student.Sname
from
Student,SC
where
Student.S#=SC.S#
group
by Student.S#,Student.Sname having count(C#) <(select count(C#)
from Course);

十 、查询至少有一门课与学号为“1001”的同校所学相同的同校的学号和人名;
select
S#,Sname
from
Student,SC
where
Student.S#=SC.S# and C# in (select C# from SC where
S#=’1001’);

1一 、删除学习“叶平”老师课的SC表记录;
Delect
SC
from
course ,Teacher
where
Course.C#=SC.C# and Course.T#= Teacher.T# and Tname=’叶平’;

1② 、查询各科成绩最高和最低的分:以如下情势显得:课程ID,最高分,最低分
SELECT
L.C# 课程ID,L.score 最高分,R.score 最低分
FROM
SC L ,SC R
WHERE
L.C# = R.C#
and
L.score
= (SELECT MAX(IL.score)
FROM
SC IL,Student IM
WHERE
IL.C# = L.C# and IM.S#=IL.S#
GROUP
BY IL.C#)
and
R.Score
= (SELECT MIN(IR.score)
FROM
SC IR
WHERE
IR.C# = R.C#
GROUP
BY IR.C# );

1③ 、查询学终生均战表及其排行
SELECT
1+(SELECT COUNT( distinct 平均成绩)
FROM
(SELECT S#,AVG(score) 平均成绩
FROM
SC
GROUP
BY S# ) T1
WHERE
平均战绩 > T2.平均战绩) 排行, S# 学生学号,平均成绩
FROM
(SELECT S#,AVG(score) 平均成绩 FROM SC GROUP BY S# ) T2
O大切诺基DER
BY 平均成绩 desc;

1四 、查询各科战绩前三名的笔录:(不考虑战绩并列情形)
SELECT
t1.S# as 学生ID,t1.C# as 课程ID,Score as 分数
FROM
SC t1
WHERE
score IN (SELECT TOP 3 score
FROM
SC
WHERE
t1.C#= C#
ORDER
BY score DESC)
ORDER
BY t1.C#;

1⑤ 、查询每门功成绩最好的前两名
SELECT
t1.S# as 学生ID,t1.C# as 课程ID,Score as 分数
FROM
SC t1
WHERE
score IN (SELECT TOP 2 score
FROM
SC
WHERE
t1.C#= C#
ORDER
BY score DESC )

ORDER
BY t1.C#;

            DOM —— 属性向域的画面集合

  1. 将”C01″班同学所借图书的还期都延长1二1七日
    –实现代码:
    UPDATE b SET RDATE=DATEADD(Day,7,b.RDATE)
    FROM CARD a,BORROW b
    WHERE a.CNO=b.CNO
        AND a.CLASS=N’C01′

     

  2. 从BOOKS表中去除当前无人借阅的图书记录
    –达成代码:
    DELETE A FROM BOOKS a
    WHERE NOT EXISTS(
        SELECT * FROM BORROW
        WHERE BNO=a.BNO)

     

  3. 设若平时按书名查询图书音讯,请建立适合的目录
    –实现代码:
    CREATE CLUSTERED INDEX IDX_BOOKS_BNAME ON BOOKS(BNAME)

     

select Student.S#,Student.Sname
from Student,SC
where Student.S#=SC.S# group by Student.S#,Student.Sname having
count(C#) <(select count(C#) from Course);

            F —— 属性间的多少正视关系集合

11.
在BOCRUISERROW表上创造二个触发器,达成如下效果:假若读者借阅的书名是”数据库技术及应用”,就将该读者的借阅记录保留在BO中华VROW_SAVE表中(注ORROW_SAVE表结构同BO奥迪Q3ROW表)
–完结代码:
CREATE TRIGGER TR_SAVE ON BORROW
FOR INSERT,UPDATE
AS
IF @@ROWCOUNT>0
INSERT BORROW_SAVE SELECT i.*
FROM INSERTED i,BOOKS b
WHERE i.BNO=b.BNO
    AND b.BNAME=N’数据库技术及应用’

1① 、查询至少有一门课与学号为“1001”的同校所学相同的同室的学号和人名;

       4.笛Carl乘积,选拔和阴影运算如下

 

复制代码 代码如下:

澳门新萄京 4

  1. 确立一个视图,彰显”力01″班学生的借书新闻(只需要出示姓名和书名)
    –实现代码:
    CREATE VIEW V_VIEW
    AS
    SELECT a.NAME,b.BNAME
    FROM BORROW ab,CARD a,BOOKS b
    WHERE ab.CNO=a.CNO
        AND ab.BNO=b.BNO
        AND a.CLASS=N’力01′ 

select S#,Sname from Student,SC where Student.S#=SC.S# and C# in
select C# from SC where S#=’1001′;

第三节

13.
询问当前同时借有”总结办法”和”组合数学”两本书的读者,输出其借书卡号,并按卡号升序排序输出
–实现代码:
SELECT a.CNO
FROM BORROW a,BOOKS b
WHERE a.BNO=b.BNO
    AND b.BNAME IN(N’总计方法’,N’组合数学’)
GROUP BY a.CNO
HAVING COUNT(*)=2
ORDER BY a.CNO DESC

1② 、查询至少学过学号为“001”同学全数一门课的别的同学学号和人名;

一 、相关概念

 

复制代码 代码如下:

     
 1. SQL:结构化查询语言的简称, 是关全面据库的标准语言。SQL 是一种通用的、 成效极强的关周全据库语言, 是对关周详据存取的标准接口, 也是不相同数据库系统之间互操作的底子。集数据查询、数据操作、数据定义、和数码控制功能于一体。

  1. 比方在建BOOKS表时没有概念主码,写出为BOOKS表追加定义主码的讲话
    –完毕代码:
    ALTER TABLE BOOKS ADD PRIMARY KEY(BNO) 

select distinct SC.S#,Sname
from Student,SC
where Student.S#=SC.S# and C# in (select C# from SC where
S#=’001′);

     
 2. 多少定义:数据定义功效包括情势定义、表定义、视图和目录的定义。

15.1 将NAME最大列宽扩展到11个字符(假定原为陆个字符)
–完毕代码:
ALTER TABLE CARD ALTER COLUMN NAME varchar(10)

1三 、把“SC”表中“叶平”老师教的课的战表都改成为此课程的平均战绩;

     
 3. 嵌套查询:指将1个查询块嵌套在另3个查询块的 WHERE 子句或 HAVING 短语的规格中的查询。

 

复制代码 代码如下:

 
    ② 、主要知识点

15.2 为该表扩张1列NAME(系名),可变长,最大十多少个字符
–实现代码:
ALTER TABLE CARD ADD 系名 varchar(20)

update SC set score=(select avg(SC_2.score)
from SC SC_2
where SC_2.C#=SC.C# ) from Course,Teacher where Course.C#=SC.C# and
Course.T#=Teacher.T# and Teacher.Tname=’叶平’);

       1. SQL
数据定义语句的操作对象有:形式、表、视图和目录。
       2. SQL 数据定义语句的指令动词是:CREATE、DROP 和 ALTELacrosse。
       3. 瑞鹰DBMS 中索引一般采纳 B+树或 HASH 来促成。
       4. 索引能够分成唯一索引、非唯一索引和聚簇索引二种档次。

 

1④ 、查询和“1002”号的同校学习的科目完全相同的别的同学学号和人名;

澳门新萄京 5

 

复制代码 代码如下:

     
 6.SQL 创立表语句的貌似格式为

 

select S# from SC where C# in (select C# from SC where S#=’1002′)
group by S# having count(*)=(select count(*) from SC where
S#=’1002′);

            
 CREATE TABLE <表名>

(四)

1⑤ 、删除学习“叶平”老师课的SC表记录;

            
 ( <列名> <数据类型>[ <列级完整性约束> ]

 

复制代码 代码如下:

            
 [,<列名> <数据类型>[ <列级完整性约束>] ] …

标题讲述:
为管理职位业务培养和磨炼新闻,建立三个表:
S (S#,SN,SD,SA)   S#,SN,SD,SA
分别代表学号、学员姓名、所属单位、学员年龄
C (C#,CN )       C#,CN       分别表示课程编号、课程名称
SC ( S#,C#,G )    S#,C#,G    
分别表示学号、所选修的教程编号、学习战绩

Delect SC
from course ,Teacher
where Course.C#=SC.C# and Course.T#= Teacher.T# and Tname=’叶平’;

            
 [,<表级完整性约束> ] ) ;

 

1陆 、向SC表中插入一些记下,这几个记录供给符合以下规则:没有上过编号“003”课程的同窗学号、二 、
号课的平分成绩;

其中<数据类型>能够是数据库系统支持的各个数据类型,包含长度和精度。 

渴求落到实处如下陆个处理:
  1. 使用正规SQL嵌套语句询问选修课程名称为’税收基础’的学习者学号和人名
  2. 施用专业SQL嵌套语句询问选修课程编号为’C2’的学习者姓名和所属单位
  3. 用到标准SQL嵌套语句询问不选修课程编号为’C5’的学习者姓名和所属单位
  4. 采取规范SQL嵌套语句询问选修全部科目标学习者姓名和所属单位
  5. 询问选修了课程的学员人数
  6. 询问选修课程超越5门的学生学号和所属单位

复制代码 代码如下:

   
列级完整性约束
为针对单个列(本列)的完整性约束, 包涵 P福特ExplorerIMALANDY KEY、 REFERENCES表名(列名)、UNIQUE、NOT NULL 等。 

 

Insert SC select S#,’002′,(Select avg(score)
from SC where C#=’002′) from Student where S# not in (Select S# from
SC where C#=’002′);

   
表级完整性约束
能够是依照表中多列的封锁,包蕴 P翼虎IMA奥迪Q5Y KEY ( 列名列表) 、FOREIGN KEY REFERENCES 表名(列名) 等。

  1. 运用专业SQL嵌套语句询问选修课程名称为’税收基础’的学员学号和人名
    –达成代码:
    SELECT SN,SD FROM S
    WHERE [S#] IN(
        SELECT [S#] FROM C,SC
        WHERE C.[C#]=SC.[C#]
            AND CN=N’税收基础’)

     

  2. 选取正式SQL嵌套语句询问选修课程编号为’C2’的学生姓名和所属单位
    –达成代码:
    SELECT S.SN,S.SD FROM S,SC
    WHERE S.[S#]=SC.[S#]
        AND SC.[C#]=’C2′

     

  3. 使用正式SQL嵌套语句询问不选修课程编号为’C5’的上学的小孩子姓名和所属单位
    –达成代码:
    SELECT SN,SD FROM S
    WHERE [S#] NOT IN(
        SELECT [S#] FROM SC
        WHERE [C#]=’C5′)

     

  4. 行使规范SQL嵌套语句询问选修全体课程的学习者姓名和所属单位
    –完毕代码:
    SELECT SN,SD FROM S
    WHERE [S#] IN(
        SELECT [S#] FROM SC
            RIGHT JOIN C ON SC.[C#]=C.[C#]
        GROUP BY [S#]
        HAVING COUNT(*)=COUNT(DISTINCT [S#]))

     

  5. 查询选修了学科的学习者人数
    –完成代码:
    SELECT 学员人数=COUNT(DISTINCT [S#]) FROM SC

     

  6. 查询选修课程抢先5门的学生学号和所属单位
    –完毕代码:
    SELECT SN,SD FROM S
    WHERE [S#] IN(
        SELECT [S#] FROM SC
        GROUP BY [S#]
        HAVING COUNT(DISTINCT [C#])>5)

     

1七 、按平均成绩从高到低显示全部学员的“数据库”、“企管”、“保加Madison语”三门的学科成绩,按如下方式展示:
学生ID,,数据库,企管,克罗地亚语,有效课程数,有效平均分

 
     7. SQL 创造索引语句的形似格式为

(五)

复制代码 代码如下:

     
      
 CREATE [UNIQUE] [CLUSTER] INDEX <索引名>

 

SELECT S# as 学生ID
,(SELECT score FROM SC WHERE SC.S#=t.S# AND C#=’004′) AS 数据库
,(SELECT score FROM SC WHERE SC.S#=t.S# AND C#=’001′) AS 企管
,(SELECT score FROM SC WHERE SC.S#=t.S# AND C#=’006′) AS 英语
,COUNT(*) AS 有效课程数, AVG(t.score) AS 平均成绩
FROM SC AS t
GROUP BY S#
ORDER BY avg(t.score)

     
      
 ON <表名> (<列名列表> ) ;

一 SQLSE奥德赛VEOdyssey管理有的

1⑧ 、查询各科成绩最高和最低的分:以如下形式显得:课程ID,最高分,最低分

其中UNIQUE:表示创制唯一索引,缺省为非唯一索引;

 

复制代码 代码如下:

      CLUSTER:表示创立聚簇索引,缺省为非聚簇索引;

1
请讲出身份验证方式与登录帐号的涉嫌及如何用各类帐号进行登录,并画出示意图
2 请讲出登录帐号、数据库用户及数据库剧中人物里面的涉嫌,并画出示意图
3
请讲出数据库用户、数据库剧中人物与数据库对象之间的涉及,并画出直接对用户授权与直接对用户授权(系统权限与目的权限)的情势
4
请讲出服务器剧中人物、数据库剧中人物、标准角色与应用程序剧中人物的分歧与认证其权力的点子
5 请讲出数据库还原模型对数据库的影响
6 有三个实践重点职责的数据库,请设计3个数据库备份策略
7 请使用文件与公事组苏醒的法子苏醒数据库
8 请使用工作日志复苏数据库到一个日子点
9 请设计作业进展周期性的备份数据库
10 怎么着监察和控制数据库的封堵,并达成数据库的死锁测试
11 怎么样监督数据库的运动,并能使用索引优化向导生成索引
12 掌握数据库框图的意义并能够设计表与表之间的关系

SELECT L.C# As 课程ID,L.score AS 最高分,R.score AS 最低分
FROM SC L ,SC AS R
WHERE L.C# = R.C# and
L.score = (SELECT MAX(IL.score)
FROM SC AS IL,Student AS IM
WHERE L.C# = IL.C# and IM.S#=IL.S#
GROUP BY IL.C#)
AND
R.Score = (SELECT MIN(IR.score)
FROM SC AS IR
WHERE R.C# = IR.C#
GROUP BY IR.C#
);

      <列名列表>:三个或逗号分隔的四个列名,每一种列名后可跟 ASC 或 DESC,表示升/降序,缺省为升序。多列时则按为千家万户排序。

 

1玖 、按各科平均成绩从低到高和及格率的百分比从高到低依次

     
  8. SQL 查询语句的相似格式为

1 有订单表,需求贯彻它的编号,格式如下:二〇〇一110三千1……二〇〇二22039999等

复制代码 代码如下:

     
      
 SELECT [ALL|DISTINCT] <算术表明式列表> FROM <表名或视图名列表>

 

SELECT t.C# AS 课程号,max(course.Cname)AS 课程名,isnull(AVG(score),0)
AS 平均成绩
,100 * SUM(CASE WHEN isnull(score,0)>=60 THEN 1 ELSE 0
END)/COUNT(*) AS 及格百分数
FROM SC T,Course
where t.C#=course.C#
GROUP BY t.C#
ORDER BY 100 * SUM(CASE WHEN isnull(score,0)>=60 THEN 1 ELSE 0
END)/COUNT(*) DESC

     
      
 [ WHERE <条件表明式 1> ]

2
有表T1,T2,现有一事务,在向表T1添加多少时,同时也亟须向T2也拉长数据,怎么着完结该业务

20、查询如下课程平均成绩和及格率的比重(用”1行”展现):
企业管理(001),马克思(002),OO&UML (003),数据库(004)

     
      
 [ GROUP BY <属性列表 1> [ HAVING <条件表明式 2 > ] ]

 

复制代码 代码如下:

     
      
 [ O陆风X8DE翼虎 BY <属性列表 2> [ ASC|DESC ] ] ;

3
怎么样向T1中的编号字段(codevarchar(20))添加两千0条记下,不充许重复,规则如下:编号的多少必须从小写的a-z之间取值

SELECT SUM(CASE WHEN C# =’001′ THEN score ELSE 0 END)/SUM(CASE C# WHEN
‘001’ THEN 1 ELSE 0 END) AS 企管平均分
,100 * SUM(CASE WHEN C# = ‘001’ AND score >= 60 THEN 1 ELSE 0
END)/SUM(CASE WHEN C# = ‘001’ THEN 1 ELSE 0 END) AS
企管及格百分数
,SUM(CASE WHEN C# = ‘002’ THEN score ELSE 0 END)/SUM(CASE C# WHEN
‘002’ THEN 1 ELSE 0 END) AS 马克思平均分
,100 * SUM(CASE WHEN C# = ‘002’ AND score >= 60 THEN 1 ELSE 0
END)/SUM(CASE WHEN C# = ‘002’ THEN 1 ELSE 0 END) AS 马克思及格百分数
,SUM(CASE WHEN C# = ‘003’ THEN score ELSE 0 END)/SUM(CASE C# WHEN
‘003’ THEN 1 ELSE 0 END) AS UML平均分
,100 * SUM(CASE WHEN C# = ‘003’ AND score >= 60 THEN 1 ELSE 0
END)/SUM(CASE WHEN C# = ‘003’ THEN 1 ELSE 0 END) AS UML及格百分数
,SUM(CASE WHEN C# = ‘004’ THEN score ELSE 0 END)/SUM(CASE C# WHEN
‘004’ THEN 1 ELSE 0 END) AS 数据库平均分
,100 * SUM(CASE WHEN C# = ‘004’ AND score >= 60 THEN 1 ELSE 0
END)/SUM(CASE WHEN C# = ‘004’ THEN 1 ELSE 0 END) AS 数据库及格百分数
FROM SC

其中

 

2一 、查询不一样老师所教分歧科目平均分从高到低展现

   
  ALL/DISTINCT: 缺省为 ALL, 即列出全体查询结果记录, 包含重复记录。 DISTINCT则对重复记录只列出一条。

4 怎么着删除表中的重新数据,请使用游标与分组的方法

复制代码 代码如下:

       算术表明式列表:三个或五个逗号分隔的算术表明式,表达式由常量(包蕴数字和字符串)、列名、函数和算术运算符构成。每一个表明式后还可跟别称。也可用 *代表查询表中的全数列。

 

SELECT max(Z.T#) AS 教授ID,MAX(Z.Tname) AS 教师姓名,C.C# AS
课程ID,MAX(C.Cname) AS 课程名称,AVG(Score) AS 平均成绩
FROM SC AS T,Course AS C ,Teacher AS Z
where T.C#=C.C# and C.T#=Z.T#
GROUP BY C.C#
ORDER BY AVG(Score) DESC

   
  <表名或视图名列表>: 一个或七个逗号分隔的表或视图名。 表或视图名后可跟小名。

5 怎样求表中相邻的两条记下的某字段的值之差

2贰 、查询如下课程战绩第 3 名到第 6
名的学习者战表单:企管(001),马克思(002),UML
(003),数据库(004)
[学生ID],[学生姓名],企管,Marx,UML,数据库,平均成绩

   
  标准化表明式 1:包涵关系或逻辑运算符的表达式,代表询问条件。

 

复制代码 代码如下:

   
  原则发挥式 **2**:包括关系或逻辑运算符的表明式,代表分组条件。

6 哪些总括数据库中存有用户表的多寡,显示格式如下:

SELECT DISTINCT top 3
SC.S# As 学生学号,
Student.Sname AS 学生姓名 ,
T1.score AS 企管,
T2.score AS 马克思,
T3.score AS UML,
T4.score AS 数据库,
ISNULL(T1.score,0) + ISNULL(T2.score,0) + ISNULL(T3.score,0) +
ISNULL(T4.score,0) as 总分
FROM Student,SC LEFT JOIN SC AS T1
ON SC.S# = T1.S# AND T1.C# = ‘001’
LEFT JOIN SC AS T2
ON SC.S# = T2.S# AND T2.C# = ‘002’
LEFT JOIN SC AS T3
ON SC.S# = T3.S# AND T3.C# = ‘003’
LEFT JOIN SC AS T4
ON SC.S# = T4.S# AND T4.C# = ‘004’
WHERE student.S#=SC.S# and
ISNULL(T1.score,0) + ISNULL(T2.score,0) + ISNULL(T3.score,0) +
ISNULL(T4.score,0)
NOT IN
(SELECT
DISTINCT
TOP 15 WITH TIES
ISNULL(T1.score,0) + ISNULL(T2.score,0) + ISNULL(T3.score,0) +
ISNULL(T4.score,0)
FROM sc
LEFT JOIN sc AS T1
ON sc.S# = T1.S# AND T1.C# = ‘k1’
LEFT JOIN sc AS T2
ON sc.S# = T2.S# AND T2.C# = ‘k2’
LEFT JOIN sc AS T3
ON sc.S# = T3.S# AND T3.C# = ‘k3’
LEFT JOIN sc AS T4
ON sc.S# = T4.S# AND T4.C# = ‘k4’
ORDER BY ISNULL(T1.score,0) + ISNULL(T2.score,0) + ISNULL(T3.score,0) +
ISNULL(T4.score,0) DESC);

   
  <属性列表 1>:二个或逗号分隔的三个列名。

 

2三 、总结列印各科成绩,各分数段人数:课程ID,课程名称,[100-85],[85-70],[70-60],[
<60]

   
  <属性列表 2>: 二个或逗号分隔的几个列名, 每个列名后可跟 ASC 或 DESC, 表示升/降序,缺省为升序。

表名      记录数

复制代码 代码如下:

 
   
关于SQL语句的学问这里先作如上不难介绍,具体写法下次将特别拿出一篇来讲述。

 

SELECT SC.C# as 课程ID, Cname as 课程名称
,SUM(CASE WHEN score BETWEEN 85 AND 100 THEN 1 ELSE 0 END) AS [100 –
85]
,SUM(CASE WHEN score BETWEEN 70 AND 85 THEN 1 ELSE 0 END) AS [85 –
70]
,SUM(CASE WHEN score BETWEEN 60 AND 70 THEN 1 ELSE 0 END) AS [70 –
60]
,SUM(CASE WHEN score < 60 THEN 1 ELSE 0 END) AS [60 -]
FROM SC,Course
where SC.C#=Course.C#
GROUP BY SC.C#,Cname;

第四节

  sales      23

2四 、查询学平生均战绩及其排行

一 、相关概念和文化

 

复制代码 代码如下:

     
 1.触发器是用户定义在基本表上的一类由事件驱动的奇特进程。由服务器自动激活, 能执行越发复杂的检讨和操作,具有更精细和更强有力的数额控制能力。使用 CREATE TXC90IGGEGL450 命令建立触发器。

7 怎么着删除数据库中的全数用户表(表与表之间有外键关系)

SELECT 1+(SELECT COUNT( distinct 平均成绩)
FROM (SELECT S#,AVG(score) AS 平均战绩
FROM SC
GROUP BY S#
) AS T1
WHERE 平均成绩 > T2.平均战绩) as 名次,
S# as 学生学号,平均战表
FROM (SELECT S#,AVG(score) 平均成绩
FROM SC
GROUP BY S#
) AS T2
OPAJERODE卡宴 BY 平均成绩 desc;

     
 2.处理器体系存在技巧安全、管理安全和政策法规三类安全性难题。

 

2伍 、查询各科成绩前三名的笔录:(不考虑战绩并列处境)

     
 3. TCSEC/TDI 标准由安全策略、权利、保障和文书档案七个方面内容结合。

8 表A editor_id lb2_id
123 000
123 003
123 003
456 007
456 006
表B lb2_id lb2_name
000 a
003 b
006 c
007 d
显示 a 共1条 (表A内lb2_id为000的条数)
b 共2条(表A内lb2_id为003的条数)

复制代码 代码如下:

     
 4. 常用存取控制方法包涵独立存取控制(DAC)和勒迫存取控制(MAC)两种。

 

SELECT t1.S# as 学生ID,t1.C# as 课程ID,Score as 分数
FROM SC t1
WHERE score IN (SELECT TOP 3 score
FROM SC
WHERE t1.C#= C#
ORDER BY score DESC
)
ORDER BY t1.C#;

     
 5. 独立存取控制(DAC)的 SQL 语句包罗 GRANT 和 REVOKE 五个。 用户权限由数量对象和操作类型两有个别组成。

9
职员景况表(employee):里面有一字段知识水平(wh):包蕴八种情形(本科以上,大专,高级中学,初中以下),现在本人要依据年龄字段查询总括出:表汉语化程度为本科以上,大专,高级中学,初级中学以下,各有微微人,占总人数多少。

2⑥ 、查询每门学科被选修的学员数

澳门新萄京 6

 

复制代码 代码如下:

       6. 常见SQL 自主权力控制命令和例子。
         1) 把对 Student 和 Course 表的万事权力授予全部用户。
            
 GRANT ALL PRIVILIGES ON TABLE Student,Course TO PUBLIC ;
       
 2) 把对 Student 表的查询权和姓名修改权授予用户 U4。
            
 GRANT SELECT,UPDATE(Sname) ON TABLE Student TO U4 ;
       
 3) 把对 SC 表的插入权限授予 U5 用户,并允许他传播该权限。
            
 GRANT INSERT ON TABLE SC TO U5 WITH GRANT OPTION ;
       
 4) 把用户 U5 对 SC 表的 INSEGL450T
权限收回,同时收回被他传播出去的授权。
            
 REVOKE INSERT ON TABLE SC FROM U5 CASCADE ;
       
 5) 创立3个剧中人物 揽胜1,并使其对 Student
表具有数据查询和创新权限。
            
 CREATE ROLE R1;
            
 GRANT SELECT,UPDATE ON TABLE Student TO R1;
       
 6) 对修改 Student 表结构的操作实行审计。
            
 AUDIT ALTER ON Student ;

SELECT wh AS 学历,age as 年龄, Count(*) AS 人数,

select c#,count(S#) from sc group by C#;

=====================================

 

2柒 、查询出只选修了一门科目标漫天学员的学号和人名

数据库知识总计(2)范式

 壹 、相关概念和知识点

       1.数量重视:反映叁个涉及之中属性与品质之间的束缚关系,是现实世界属性间相互关系的架空,属于数据内在的性格和语义的反映。
       2. 规范化理论:是用来布署雅观的涉及方式的核心思论。它经过分解关系情势来祛除当中不妥贴的数码重视,以缓解插入分外、删除极度、更新相当和数目冗余难点。
       3. 函数正视:简单地说,对于涉及格局的多个属性格集X和Y,若X的任一取值能唯一明确Y的值,则称Y函数依赖于X,记作X→Y。
       4. 非经常函数信赖:对于涉及方式的四个属本性集X和Y,假如X→Y,但Y!⊆X,则称X→Y为非日常函数重视;倘使X→Y,但Y⊆X,则称X→Y为非常常函数依赖。
       5. 一心函数重视:对于涉嫌形式的五个属性格集X和Y,假设X→Y,并且对于X的别样1个真子集X’,都不曾X’→Y,则称Y对X完全函数正视。
       6. 范式:指符合某一种级其余关系方式的联谊。在统一筹划关周到据库时,根据满意重视关系供给的例外定义为分化的范式。
       7. 规范化:指将3个低顶尖范式的涉及情势,通过形式分解转换为多少个高顶级范式的关系形式的集聚的进度。
       8. 1NF:若关系方式的全体属性都是不可分的为主数据项,则该关系格局属于1NF。
       9. 2NF:1NF涉嫌格局一旦同时满足每一个非主属性完全函数信赖于码,则该关系情势属于2NF。
       10. 3NF:若关系方式的每1个非主属性既不有的依靠于码也不传递依赖于码,则该关系方式属于3NF。
       11. BCNF:若叁个涉及情势的每1个控制因素都包蕴码,则该关系格局属于BCNF。
       12. 数据库设计:是指对于一个加以的应用环境,构造优化的数据库逻辑形式和大体构造,并因此建立数据库及其使用系统,使之力所能及有效地蕴藏和管理数据,满足各样用户的行使须求,包涵消息保管须要和数据操作须要。
       13. 数据库设计的多少个主导步骤:要求分析,概念结构划设想计,逻辑结构设计,物理结构划设想计,数据库实施,数据库运转和保卫安全。
       14. 概念结构划设想计:指将须求分析拿到的用户须求抽象为音讯结构即概念模型的进度。约等于由此对用户须求开始展览归咎、总结与虚空,形成二个独立于具体DBMS的概念模型。
       15. 逻辑结构设计:将概念结构模型(基本E-奥迪Q3图)转换为某些DBMS产品所协理的数据模型相适合的逻辑结构,并对其展开优化。
       16. 物理结构划设想计:指为3个加以的逻辑数据模型选用3个最符合应用环境的物理结构的长河。蕴含设计数据库的积存结构与存取方法。
       17. 华而不实:指对实际的人、物、事和定义进行人工处理,抽取所关怀的一道特性,忽略非本质的细节,并把这个特征用各样概念精确地加以描述,那些概念组成了某种模型。

     
 18. 数据库设计必须遵照结构划设想计和作为设计相结合的标准化。

     
 19. 数额字典重要包罗数据项、数据结构、数据流、数据存款和储蓄和处理进度四个部分。
       20. 三种常用抽象方法是分类、聚集和包蕴。
       21. 局地 E-Odyssey 图之间的争持首要表未来质量顶牛、命名争论和结构争论八个方面。

       22.
数据库常用的存取方法包蕴索引方法、聚簇方法和
HASH方法两种。
       23. 分明数据存放地点和仓库储存结构亟待考虑的成分至关心重视要有: 存取时间、
存储空间利用率和保卫安全代价等。

贰 、细说数据库三范式

2.1 第②范式(1NF)无重复的列

       第2范式(1NF)中数据库表的每一列都以不可分割的主干数据项
       同一列中不能够有八个值
     
 即实体中的有些属性不能够有八个值恐怕不能够有双重的品质。
     
 一句话来说,第三范式就是无重复的列。

     
 在其余贰个关周密据库中,第2范式(1NF)是对关联方式的着力需要,不满足第③范式(1NF)的数据库就不是关周密据库。

2.2 第1范式(2NF)属性完全信赖于主键[解除部分子函数正视]

     
满意第3范式(2NF)必须先满意第③范式(1NF)。

     
第壹范式(2NF)须要数据库表中的种种实例或行必须能够被惟一地有别于。

     
为贯彻区分经常要求为表加上3个列,以存储各类实例的独步标识。 
     
第三范式(2NF)须求实体的性质完全依靠于主关键字。所谓完全依靠是指不能存在仅凭借主关键字一部分的性情,若是存在,那么那么些本性和主关键字的这一片段应该分离出来形成三个新的实业,新实体与原实体之间是一对多的关系。为兑现区分平时需求为表加上一个列,以存储各种实例的无比标识。简单来讲,第贰范式正是性质完全重视于主键。
2.3 第2范式(3NF)属性不借助于任何非主属性[免去传递信赖]

     
满意第贰范式(3NF)必须先满意第三范式(2NF)。

     
简单的讲,第①范式(3NF)需要一个数据库表中不分包已在别的表中已涵盖的非主关键字新闻。

     
例如,存在2个部门新闻表,当中每种部门有机关编号(dept_id)、部门名称、部门简介等音讯。那么在的职工消息表中列出单位编号后就不能够再将部门名称、部门简介等与机关关于的消息再参与员工音讯表中。若是不设有机构音信表,则基于第一范式(3NF)也理应创设它,不然就会有恢宏的数目冗余。简单的说,第二范式正是性质不依靠于其余非主属性。

2.4
具体实例分析

     
上面列举二个学府的上学的儿童系统的实例,以示几个范式的接纳。

     
 在筹划数据库表结构从前,大家先明确一下要设计的内容包含那多少个。学号、学生姓名、年龄、性别、课程、课程学分、系别、学科成绩,系办地址、系办电话等新闻。为了不难我们临时只考虑这个字段消息。我们对于那几个音讯,说关切的标题有如下多少个地点。

     
 1)学生有那几个基本音讯 
       2)学生选了那些课,战表是什么 
       3)每一种课的学分是有点 
       4)学生属于万分系,系的主导信息是怎样。

       率先第三范式(1NF):数据库表中的字段都以单一属性的,不可再分。这些单一属性由中央类型构成,包涵整型、实数、字符型、逻辑型、日期型等。在如今的其他关周详据库管理种类(DBMS)中,不允许你把数量库表的一列再分为二列或多列,由此做出的都以适合第叁范式的数据库。 

       大家再考虑第一范式,把具有这一个消息放到三个表中(学号,学生姓名、年龄、性别、课程、课程学分、系别、学科成绩,系办地址、系办电话)上面存在如下的信赖关系。 
       1)(学号)→ (姓名, 年龄,性别,系别,系办地址、系办电话) 
       2) (课程名称) → (学分) 
       3)(学号,课程)→ (学科成绩)

依据正视关系我们得以把选课关系表SelectCourse改为如下多个表: 

     
 学生:Student(学号,姓名, 年龄,性别,系别,系办地址、系办电话); 
       课程:Course(课程名称, 学分); 
       选课关系:SelectCourse(学号, 课程名称, 战绩)。

     
 事实上,对照第一范式的必要,那就是满意第壹范式的数据库表,若不满足第3范式,会产生如下难点 
数量冗余: 同一门科目由n个学生选修,”学分”就再也n-三次;同3个上学的儿童选修了m门课程,姓名和年龄就再度了m-一回。

履新万分: 1)若调整了某门课程的学分,数据表中全体行的”学分”值都要更新,不然会出现相同门科目学分不一样的景况。 
               
 2)倘诺要设置一门新的科目,一时还尚无人选修。那样,由于还尚无”学号”关键字,课程名称和学分也无能为力记录入数据库。

删除非凡 : 借使一批学员一度做到课程的选修,那几个选修记录就活该从数据库表中删除。可是,与此同时,课程名称和学分音信也被删去了。很醒目,那也会导致插入至极。

       咱俩再考虑如何将其改成满意第①范式的数据库表,接着看下边包车型客车学生表Student(学号,姓名, 年龄,性别,系别,系办地址、系办电话),关键字为单纯关键字”学号”,因为存在如下决定涉及:

     
(学号)→ (姓名, 年龄,性别,系别,系办地址、系办电话) 
唯独还留存上边包车型地铁控制涉及 
       (学号) → (所在大学)→(高校地方, 大学电话) 
       
即存在非关键字段”高校地点”、”大学电话”对首要字段”学号”的传递函数正视。 
     
 它也会设有多少冗余、更新万分、插入非常和删除卓殊的事态(那里就不具体分析了,参照第③范式中的分析)。依照第叁范式把学生关系表分为如下两个表就足以满意第③范式了:

     
 学生:(学号, 姓名, 年龄, 性别,系别); 
       系别:(系别, 系办地址、系办电话)。

SQL语句总括

SQL语句中常用关键词及其表明如下:

      Count(*) * 100 /(SELECT Count(*) FROMemployee) AS 百分比

复制代码 代码如下:

1)SELECT

将材质从数据库中的表格内选出,八个第二字:从
(FROM) 数据库中的表格内选出 (SELECT)。语法为
SELECT “栏位名” FROM “表格名”。

 

select SC.S#,Student.Sname,count(C#) AS 选课数
from SC ,Student
where SC.S#=Student.S# group by SC.S# ,Student.Sname having
count(C#)=1;

2)DISTINCT

在上述
SELECT 关键词后增加3个 DISTINCT
就足以去除选拔出来的栏位中的重复,从而实现求得那么些表格/栏位内有何样区别的值的成效。语法为
SELECT DISTINCT “栏位名” FROM
“表格名”。

FROM employee GROUP BY wh,age

2⑧ 、查询男士、女孩子人数

3)WHERE

本条重点词能够援助我们接纳性地抓资料,而不是全取出来。语法为
SELECT “栏位名” FROM “表格名”
WHERE “条件” 

 

复制代码 代码如下:

4)AND OR

上例中的
WHERE 指令能够被用来由表格中有原则地选用资料。那些原则也许是大致的
(像上一页的例证),也说不定是复杂的。复杂条件是由二或多个简单标准经过 AND
或是 O安德拉 的连天而成。语法为:
SELECT “栏位名”  FROM “表格名”
 WHERE “不难标准”  {[AND|OR] “不难标准”}+

学历      年龄   人数      百分比

Select count(Ssex) as 汉子人数 from Student group by Ssex having
Ssex=’男’;
Select count(Ssex) as 女孩子人数 from Student group by Ssex having
Ssex=’女’;

5)IN


SQL 中,在四个情况下会用到 IN  这么些命令;这一页将介绍当中之一:与 WHERE
有关的那个处境。在那一个用法下,大家先行已清楚至少2个我们须要的值,而我们将那么些知道的值都放入
IN  这么些子句。语法为:
SELECT “栏位名”  FROM “表格名”
 WHERE “栏位名” IN (‘值一’, ‘值二’, …)  

 

2九 、查询姓“张”的学生名单

6)BETWEEN

IN
那些命令能够让大家依照一或数个不接二连三(discrete)的值的限定之内抓出资料库中的值,而 BETWEEN
则是让我们能够采纳1个限制 (range)  内抓出资料库中的值,语法为:
SELECT “栏位名”  FROM “表格名”
WHERE “栏位名” BETWEEN ‘值一’ AND ‘值二’ 

本科以上  20     34          14

复制代码 代码如下:

7)LIKE

LIKE
是另3个在 WHERE  子句中会用到的通令。基本上, LIKE
 能让大家依据3个形式(pattern) 来找出我们要的资料。语法为:
SELECT “栏位名”  FROM “表格名”
 WHERE “栏位名” LIKE {模式} 

 

SELECT Sname FROM Student WHERE Sname like ‘张%’;

8)ORDER BY

咱俩平常要求能够将抓出的素材做多少个有种类的显得。那只怕是由小往大
(ascending)  或是由大往小(descending)。在那种状态下,我们就足以采用OCRUISERDE奥迪Q5 BY 那么些命令来达到大家的指标。语法为:
SELECT “栏位名”  FROM “表格名
[WHERE “条件”] ORDER BY “栏位名” [ASC, DESC] 

大专      20     33          13

30、查询同名同性学生名单,并总括同有名的人数

9)函数

函数允许大家能够对这么些数字的型态存在的行依然列做运算,包括AVG (平均)、COUNT (计数)、MAX (最大值)、MIN (最小值)、SUM
(总合)。语法为:
SELECT “函数名”(“栏位名”) FROM
“表格名”  

 

复制代码 代码如下:

10)COUNT

本条重点词能够帮本人大家总计有稍许笔资料被选出来,语法为:
SELECT COUNT(“栏位名”) FROM
“表格名”

高中      20     33          13

select Sname,count(*) from Student group by Sname having
count(*)>1;

11)GROUP BY

GROUP
BY 语句用于结合合计函数,依照1个或多少个列对结果集实行分组。语法为:
SELECT “栏位1”, SUM(“栏位2”)  FROM
“表格名”  GROUP BY “栏位1” 

 

3壹 、1983年诞生的学生名单(注:Student表中Sage列的品种是datetime)

12)HAVING

该重庆大学词能够匡助大家对函数发生的值来设定标准。语法为:
SELECT “栏位1”, SUM(“栏位2”)  FROM
“表格名”  GROUP BY “栏位1”  HAVING (函数条件)  

初级中学以下  20     100        40

复制代码 代码如下:

13)ALIAS

咱俩能够通过ALIAS为列名称和表名称内定别称,语法为:
SELECT “表格别称”.”栏位1″
“栏位外号”  FROM “表格名” “表格小名”  

下边为二个事例,通过它大家相应能很好地操纵以上海重机厂大词的运用办法。

Student(S#,Sname,Sage,Ssex) 学生表
Course(C#,Cname,T#) 课程表
SC(S#,C#,score) 成绩表
Teacher(T#,Tname) 教师表

问题:
① 、查询“001”课程比“002”课程战绩高的富有学员的学号;
select a.S#
from (select s#,score from SC where C#=’001′) a,
(select s#,score from SC where C#=’002′) b
where a.score>b.score and a.s#=b.s#;

② 、查询平均成绩超乎六13分的同窗的学号和平均战表;
select S#,avg(score)
from sc
group by S# having avg(score) >60;

叁 、查询全部同学的学号、姓名、选课数、总成绩;
select Student.S#,Student.Sname,count(SC.C#),sum(score)
from Student left Outer join SC on Student.S#=SC.S#
group by Student.S#,Sname

④ 、查询姓“李”的中校的个数;
select count(distinct(Tname))
from Teacher
where Tname like ‘李%’;

⑤ 、查询没学过“叶平”老师课的校友的学号、姓名;
select Student.S#,Student.Sname
from Student
where S# not in (select distinct( SC.S#) from SC,Course,Teacher where
SC.C#=Course.C# and Teacher.T#=Course.T# and
Teacher.Tname=’叶平’);

陆 、查询学过“001”并且也学过数码“002”课程的同学的学号、姓名;
select Student.S#,Student.Sname
from Student,SC

where
Student.S#=SC.S# and SC.C#=’001′and exists( Select * from SC as
SC_2 where SC_2.S#=SC.S# and SC_2.C#=’002′);

七 、查询学过“叶平”老师所教的所有课的校友的学号、姓名;
select S#,Sname
from Student
where S# in
(select S#
from SC ,Course ,Teacher
where SC.C#=Course.C# and Teacher.T#=Course.T# and
Teacher.Tname=’叶平’ group by S# having count(SC.C#)=(select
count(C#) from Course,Teacher where Teacher.T#=Course.T# and
Tname=’叶平’));

⑧ 、查询全体科目成绩小于61分的同学的学号、姓名;
select S#,Sname
from Student
where S# not in (select Student.S# from Student,SC where S.S#=SC.S#
and score>60);

玖 、查询没有学全全部课的校友的学号、姓名;
select Student.S#,Student.Sname
from Student,SC
where Student.S#=SC.S#
group by Student.S#,Student.Sname having count(C#) <(select
count(C#) from Course);

十 、查询至少有一门课与学号为“1001”的同室所学相同的同学的学号和姓名;
select S#,Sname
from Student,SC
where Student.S#=SC.S# and C# in (select C# from SC where
S#=’1001’);

1① 、删除学习“叶平”老师课的SC表记录;
Delect SC
from course ,Teacher
where Course.C#=SC.C# and Course.T#= Teacher.T# and Tname=’叶平’;

1二 、查询各科战绩最高和压低的分:以如下方式呈现:课程ID,最高分,最低分
SELECT L.C# 课程ID,L.score 最高分,R.score 最低分
FROM SC L ,SC R
WHERE L.C# = R.C#
and
L.score = (SELECT MAX(IL.score)
FROM SC IL,Student IM
WHERE IL.C# = L.C# and IM.S#=IL.S#
GROUP BY IL.C#)
and
R.Score = (SELECT MIN(IR.score)
FROM SC IR
WHERE IR.C# = R.C#
GROUP BY IR.C# );

1③ 、查询学生平均战表及其排名
SELECT 1+(SELECT COUNT( distinct 平均战绩)
FROM (SELECT S#,AVG(score) 平均成绩
FROM SC
GROUP BY S# ) T1
WHERE 平均成绩 > T2.等分战绩) 排行, S# 学生学号,平均战绩
FROM (SELECT S#,AVG(score) 平均战表 FROM SC GROUP BY S# ) T2
O宝马7系DEQX56 BY 平均战表 desc;

1④ 、查询各科战绩前三名的记录:(不考虑成绩并列景况)
SELECT t1.S# as 学生ID,t1.C# as 课程ID,Score as 分数
FROM SC t1
WHERE score IN (SELECT TOP 3 score
FROM SC
WHERE t1.C#= C#
ORDER BY score DESC)
ORDER BY t1.C#;

1伍 、查询每门功战绩最好的前两名
SELECT t1.S# as 学生ID,t1.C# as 课程ID,Score as 分数
FROM SC t1
WHERE score IN (SELECT TOP 2 score
FROM SC
WHERE t1.C#= C#
ORDER BY score DESC )

ORDER
BY t1.C#;

=

 

select Sname, CONVERT(char (11),DATEPART(year,Sage)) as age
from student
where CONVERT(char(11),DATEPART(year,Sage))=’1981′;

本科以上  21      50         20

3二 、查询每门课程的平均战表,结果按平均成绩升序排列,平均战绩一样时,按学科号降序排列

 

复制代码 代码如下:

10 今后有两个表student:(FID 学生号,FName  姓名),

Select C#,Avg(score) from SC group by C# order by Avg(score),C# DESC
;

 

3③ 、查询平均战绩超越85的有着学员的学号、姓名和平均成绩

subject:(FSubID  课程号,FSubName 课程名), 

复制代码 代码如下:

 

select Sname,SC.S# ,avg(score)
from Student,SC
where Student.S#=SC.S# group by SC.S#,Sname having
avg(score)>85;

Score(FScoreId  成绩记录号,FSubID   课程号,FStdID    学生号,FScore   
成绩)

3④ 、查询课程名称为“数据库”,且分数低于60的上学的小孩子姓名和分数

 

复制代码 代码如下:

怎么能落实这么些表:

Select Sname,isnull(score,0)
from Student,SC,Course
where SC.S#=Student.S# and SC.C#=Course.C# and
Course.Cname=’数据库’and score <60;

 

3⑤ 、查询全部学员的选课境况;

姓名  英语  数学 语文  历史

复制代码 代码如下:

 

SELECT SC.S#,SC.C#,Sname,Cname
FROM SC,Student,Course
where SC.S#=Student.S# and SC.C#=Course.C# ;

张萨  78    67   89    76

3陆 、查询任何一门学科战绩在六十7分以上的真名、课程名称和分数;

 

复制代码 代码如下:

王强  89    67   84    96 

SELECT distinct student.S#,student.Sname,SC.C#,SC.score
FROM student,Sc
WHERE SC.score>=70 AND SC.S#=student.S#;

 

3⑦ 、查询不及格的教程,并按学科号从大到小排列

SELECT a.FName AS 姓名,

复制代码 代码如下:

 

select c# from sc where scor e <60 order by C# ;

      英语 = SUM(CASEb.FSubName WHEN ‘英语’ THEN c.FScore END),

3捌 、查询课程编号为003且课程成绩在八十分以上的学员的学号和姓名;

 

复制代码 代码如下:

      数学 = SUM(CASEb.FSubName WHEN ‘数学’ THEN c.FScore END),

select SC.S#,Student.Sname from SC,Student where SC.S#=Student.S# and
Score>80 and C#=’003′;

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图