>

50条SQL查询技艺、查询语句示例

- 编辑:乐百家599手机首页 -

50条SQL查询技艺、查询语句示例

2)DISTINCT

在上述 SELECT 关键词后拉长一个 DISTINCT 就可以去除选拔出来的栏位中的重复,进而做到求得那么些表格/栏位内有如何分化的值的效果与利益。语法为
SELECT DISTINCT "栏位名" FROM "表格名"。

       1. SQL:结构化查询语言的简称, 是关周密据库的正规化语言。SQL 是一种通用的、 功用极强的关周到据库语言, 是对关周全据存取的标准接口, 也是见仁见智数据库系统里头互操作的基础。集数据查询、数据操作、数据定义、和数目调节机能于一体。

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

23、总括列印各科战绩,各分数段人数:课程ID,课程名称,[100-85],[85-70],[70-60],[ <60]
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;

3)WHERE

其一首要词能够协助我们选拔性地抓资料,并不是全抽出来。语法为
SELECT "栏位名" FROM "表格名" WHERE "条件" 

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

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

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

 二、着重知识点

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

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

       3. 实体型之间的关联分为一对一、一对多和多对多三种类型。

       4. 广大的数据模型包蕴:关联、等级次序、网状、面向对象、对象关联映射等几种。

       5. 涉嫌模型的完整性约束富含:实体完整性、参照完整性和用户定义完整性。

      6. 解说数据库三级情势、二级映象的意义及作用。

        数据库三级情势反映的是数码的八个抽象档次: 形式是对数据库中全方位数据的逻辑结会谈特征的陈述内形式又叫做存款和储蓄方式,是对数据库物理结商谈积攒格局的叙说。外形式又称为子格局或用户形式,是对特定数据库用户相关的一对数据的逻辑结交涉特色的描述

        数据库三级情势通过二级映象在 DBMS 内部贯彻那多个抽象档次的联系和转移。外方式面向应用程序, 通过外格局/形式映象与逻辑情势建构联系, 完成多少的逻辑独立性。 格局/内方式映象创立情势与内方式之间的一对一映射, 实现多少的大意独立性

    列级完整性约束为针对单个列(本列)的完整性约束, 包含 P汉兰达IMA福睿斯Y KEY、 REFERENCES表名(列名)、UNIQUE、NOT NULL 等。 

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

25、查询各科成绩前三名的笔录:(不思考战表并列景况)
SELECT t1.S# as 学生ID,t1.C# as 课程ID,Score as 分数
FROM SC t1
乐百家lo599,WHERE score IN (SELECT TOP 3 score
FROM SC
WHERE t1.C#= C#
ORDER BY score DESC
)
ORDER BY t1.C#;
26、查询每门学科被选修的学习者数
select c#,count(S#) from sc group by C#;
27、查询出只选修了一门学科的全套学生的学号和人名
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;
28、查询男子、女子人数
Select count(Ssex) as 男人人数 from Student group by Ssex having Ssex='男';
Select count(Ssex) as 女人人数 from Student group by Ssex having Ssex='女';
29、查询姓“张”的学生名单
SELECT Sname FROM Student WHERE Sname like '张%';
30、查询同名同性学生名单,并总括同有名气的人数
select Sname,count(*) from Student group by Sname having count(*)>1;;
31、1983年降生的学生名单(注:Student表中Sage列的项目是datetime)
select Sname, CONVERT(char (11),DATEPART(year,Sage)) as age
from student
where CONVERT(char(11),DATEPART(year,Sage))='1981';
32、查询每门课程的平分成绩,结果按平均战绩升序排列,平均战绩一样时,按学科号降序排列
Select C#,Avg(score) from SC group by C# order by Avg(score),C# DESC ;
33、查询平均战表超过85的有所学生的学号、姓名和平均成绩
select Sname,SC.S# ,avg(score)
from Student,SC
where Student.S#=SC.S# group by SC.S#,Sname having    avg(score)>85;
34、查询课程名叫“数据库”,且分数低于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;
35、查询全体学员的选课景况;
SELECT SC.S#,SC.C#,Sname,Cname
FROM SC,Student,Course
where SC.S#=Student.S# and SC.C#=Course.C# ;
36、查询任何一门学科战表在70分以上的人名、课程名称和分数;
SELECT distinct student.S#,student.Sname,SC.C#,SC.score
FROM student,Sc
WHERE SC.score>=70 AND SC.S#=student.S#;
37、查询比不上格的课程,并按学科号从大到小排列
select c# from sc where scor e <60 order by C# ;
38、查询课程编号为003且课程战表在80分以上的上学的小孩子的学号和人名;
select SC.S#,Student.Sname from SC,Student where SC.S#=Student.S# and Score>80 and C#='003';
39、求选了课程的学员人数
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=(select max(score)from SC where C#=C.C# );
41、查询各种学科及相应的选修人数
select count(*) from sc group by C#;
42、查询不一样科目战绩同样的学生的学号、课程号、学生战表
select distinct A.S#,B.score from SC A ,SC B where A.Score=B.Score and A.C# <>B.C# ;
43、查询每门功战表最佳的前两名
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#;
44、总计每门课程的学习者选修人数(当先10人的学科才总结)。须要输出课程号和选修人数,查询结果按人口降序排列,查询结果按人头降序排列,若人数一样,按学科号升序排列
select C# as 课程号,count(*) as 人数
from sc
group by C#
order by count(*) desc,c#
45、检索至少选修两门学科的学习者学号
select S#
from sc
group by s#
having count(*) > = 2
46、查询任何学生都选修的课程的课程号和科目名
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# from Course,Teacher,SC where Course.T#=Teacher.T# and SC.C#=course.C# and Tname='叶平');
48、查询两门以上不比格课程的校友的学号及其平均成绩
select S#,avg(isnull(score,0)) from SC where S# in (select S# from SC where score <60 group by S# having count(*)>2)group by S#;
49、检索“004”课程分数小于60,按分数降序排列的同学学号
select S# from SC where C#='004'and score <60 order by score desc;
50、删除“002”同学的“001”课程的成就
delete from Sc where S#='001'and C#='001';

1)SELECT

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

10)COUNT

本条入眼词能够帮自身大家总括有稍许笔资料被选出来,语法为:
SELECT COUNT("栏位名") FROM "表格名"

您恐怕感兴趣的小说:

  • MySQL学习笔记3:表的基本操作介绍
  • 单个select语句完结MySQL查询总计次数
  • sql查询出各科成绩最棒的学习者消息
  • mysql查询后天 二日前 四月前些年前的多少
  • mysql查询前几天、昨日、近7天、近30天、前些日子、上2月的SQL语句
  • MySql查询时间段的形式
  • MySQL查询和修改auto_increment的方法
  • 二个优化MySQL查询操作的求实案例剖析
  • MySQL查询尾数第二条记下实现情势
  • SQL查询出表、存款和储蓄进程、触发器的创导时间和最后修改时间示例
  • 大幅度优化MySQL查询品质的奇技淫巧
  • SQL大批量数码查询的优化及非用like不可时的管理方案
  • 什么样使用MySQL查询有个别列中同样值的数码总计
  • SQL怎样落到实处MYSQL的递归查询
  • 数量库表的查询操作(实验二)
  • 多少库表的询问操作奉行演习(实验三)

 

5)IN

在 SQL 中,在多个景况下会用到 IN  那一个命令;这一页将介绍在那之中之一:与 WHERE 有关的那多少个场所。在那几个用法下,大家事先已清楚至少二个大家必要的值,而大家将这几个知道的值都放入IN  这些子句。语法为:
SELECT "栏位名"  FROM "表格名"  WHERE "栏位名" IN ('值一', '值二', ...)  

数据库也是测算机类笔试面试中不可幸免会遇到的考试的场合,尤其是银行和有个别古板软件类企业。这里依据整理的素材,对数据库的有关知识也做个小结吧。希望学过数据库但长日子不用的同班依据那么些知识能够回想和重拾,没学过的校友能操纵一些数据库的基础知识。

4、查询姓“李”的教师职员和工人的个数;

问题:
1、查询“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#;
2、查询平均成绩超乎60分的同窗的学号和平均战绩;
select S#,avg(score)
from sc
group by S# having avg(score) >60;
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
4、查询姓“李”的教员职员和工人的个数;
select count(distinct(Tname))
from Teacher
where Tname like '李%';
5、查询没学过“叶平”老师课的同桌的学号、姓名;
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='叶平');
6、查询学过“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');
7、查询学过“叶平”老师所教的全数课的同桌的学号、姓名;
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='叶平'));
8、查询课程编号“002”的成绩比课程编号“001”课程低的具备同学的学号、姓名;
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、查询全数科目战表小于60分的同室的学号、姓名;
select S#,Sname
from Student
where S# not in (select Student.S# from Student,SC where S.S#=SC.S# and score>60);
10、查询未有学全全体课的同班的学号、姓名;
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);
11、查询至少有一门课与学号为“1001”的同室所学同样的同室的学号和人名;
select S#,Sname from Student,SC where Student.S#=SC.S# and C# in select C# from SC where S#='1001';
12、查询至少学过学号为“001”同学全数一门课的其他同学学号和姓名;
select distinct SC.S#,Sname
from Student,SC
where Student.S#=SC.S# and C# in (select C# from SC where S#='001');
13、把“SC”表中“叶平”老师教的课的成绩都改成为此课程的平均成绩;
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='叶平');
14、查询和“1002”号的同桌学习的教程完全同样的其余同学学号和人名;
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');
15、删除学习“叶平”老师课的SC表记录;
Delect SC
from course ,Teacher
where Course.C#=SC.C# and Course.T#= Teacher.T# and Tname='叶平';
16、向SC表中插入一些记录,这么些记录供给符合以下条件:没有上过编号“003”课程的同室学号、2、
号课的平分成绩;
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');
17、按平均成绩从高到低展现全部学员的“数据库”、“集团处理”、“英文”三门的学科成绩,按如下格局显得: 学生ID,,数据库,公司管理,波兰语,有效课程数,有效平均分
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)
18、查询各科成绩最高和最低的分:以如下方式显得:课程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#
);
19、按各科平均战表从低到高和及格率的比重从高到低依次
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
20、查询如下课程平均战表和及格率的比例(用"1行"显示): 企管(001),马克思(002),OO&UML (003),数据库(004)
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
21、查询不相同老师所教不一致学科平均分从高到低呈现
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
22、查询如下课程成绩第 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 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);

7)LIKE

LIKE 是另三个在 WHERE  子句中会用到的命令。基本上, LIKE  能让大家依据贰个方式(pattern) 来搜索我们要的资料。语法为:
SELECT "栏位名"  FROM "表格名"  WHERE "栏位名" LIKE {模式} 

    表级完整性约束能够是基于表中多列的牢笼,满含 POdysseyIMARAV4Y KEY ( 列名列表) 、FOREIGN KEY REFERENCES 表名(列名) 等。

45、检索至少选修两门科指标学员学号

(转 )

9)函数

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

       7. SQL 创立索引语句的相似格式为

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;

24、查询学毕生均战绩及其排名
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
O路虎极光DEEscort BY 平均成绩 desc;

12)HAVING

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

      3.关乎形式是对涉嫌的叙说,五元组方式化表示为:CRUISER(U,D,DOM,F),当中

复制代码 代码如下:

问题:

1、查询“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#;

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

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

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

5、查询没学过“叶平”老师课的同班的学号、姓名;
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=’叶平’);

6、查询学过“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′);

 

7、查询学过“叶平”老师所教的全数课的同班的学号、姓名;
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=’叶平’));

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

9、查询未有学全所有课的同班的学号、姓名;
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);

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

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

12、查询各科战绩最高和最低的分:以如下形式显示:课程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# );

13、查询学生平均战绩及其排行
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;

14、查询各科战表前三名的记录:(不思量成绩并列意况)
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#;

15、查询每门功成绩最佳的前两名
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#;

2)DISTINCT

在上述 SELECT 关键词后增进一个 DISTINCT 就能够去除选用出来的栏位中的重复,进而做到求得那一个表格/栏位内有哪些差别的值的效果与利益。语法为
SELECT DISTINCT "栏位名" FROM "表格名"。

复制代码 代码如下:

 一、相关概念    

  1. Data:数据,是数据库中积累的主干目的,是描述事物的暗记记录。

       2. Database:数据库,是驴年马月储存在Computer内、有集体的、可分享的大方数目标会见

       3. DBMS:数据库处理连串,是身处用户与操作系统之间的一层多少管理软件,用于科学地公司、存储和管理数据、高效地获取和保证数据。

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

       5. 数据模型:是用来抽象、表示和管理具体世界中的数据和音讯的工具,是对实际世界的模仿,是数据库系统的主干和根基;其重组成分有数据结构、数据操作和完整性约束

       6. 概念模型:也称新闻模型,是按用户的见识来对数码和新闻建立模型,重要用来数据库设计。

       7. 逻辑模型:是按Computer种类的视角对数码建立模型,用于DBMS实现。

       8. 物理模型:是对数据最底部的虚幻,描述数据在系统里头的意味方法和存取方法,在磁盘或磁带上的贮存形式和存取方法,是面向计算机体系的。

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

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

       11.关系方式:从用户意见看,关系方式是由一组关系构成,每种关系的数据结构是一张标准化的二维表。

       12.型/值:型是对某一类数据的布局和性质的认证;值是型的三个有血有肉赋值,是型的实例。

       13.数据库方式:是对数据库中任何数据的逻辑结构(数据项的名字、类型、取值范围等)和性子(数据里面包车型地铁关系以及数占有关的安全性、完整性须要)的陈述。

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

       15.数据库内方式:又称之为累积格局,是对数据库物理构造和存款和储蓄情势的陈诉,是数码在数据库内部的意味方法。贰个数据库唯有二个内方式

       16.数据库外形式:又称为子情势或用户情势,它是数据库用户能够看见和动用的一对数据的逻辑结会谈特色的描述,是数据库用户的数码视图。平日是形式的子集。二个数据库可有几个外方式

       17.数据库的二级影像:外格局/格局影像、方式/内方式影像。

       2. 外键:如果三个涉及的八个或一组属性引用(参照)了另三个关联的主键,则称这么些或那组属性为外码或外键(Foreign key)。

复制代码 代码如下:

一、相关概念

       1. SQL:结构化查询语言的简称, 是关周密据库的正式语言。SQL 是一种通用的、 作用极强的关周到据库语言, 是对关周密据存取的标准接口, 也是分歧数据库系统之间互操作的根底。集数据查询、数据操作、数据定义、和数量调整作而成效于一体。

       2. 数量定义:数据定义功用包含形式定义、表定义、视图和目录的概念。

       3. 嵌套查询:指将二个询问块嵌套在另叁个查询块的 WHERE 子句或 HAVING 短语的条件中的查询。

5)IN

在 SQL 中,在七个情景下会用到 IN  那个命令;这一页将介绍在那之中之一:与 WHERE 有关的这一个情景。在那些用法下,大家先行已领略至少三个我们必要的值,而笔者辈将这一个知道的值都放入IN  那么些子句。语法为:
SELECT "栏位名"  FROM "表格名"  WHERE "栏位名" IN ('值一', '值二', ...)  

44、总计每门课程的学员选修人数(超越10人的课程才总结)。须求输出课程号和选修人数,查询结果按人口降序排列,查询结果按人头降序排列,若人数一样,按学科号升序排列

 一、相关概念和知识点

       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:若关系形式的每一个非主属性既不有的借助于码也不传递注重于码,则该关系情势属于3NF。

       11. BCNF:若一个关系格局的每三个说了算因素都包涵码,则该关系形式属于BCNF。

       12. 数据库设计:是指对于二个加以的应用景况,构造优化的数据库逻辑形式和物理结构,并因而创设数据库及其应用系列,使之能够使得地囤积和保管数据,知足种种用户的应用需要,包罗音讯保管必要和数据操作须要。

       13. 数据库设计的6个主导步骤:必要分析,概念结构划虚构计,逻辑结构划设想计,物理结构划虚拟计,数据库实践,数据库运营和保卫安全。

       14. 概念结构划虚拟计:指将须要深入分析获得的用户供给抽象为音信结构即概念模型的进度。也正是因而对用户须要开始展览归结、归结与虚空,产生三个单身于现实DBMS的概念模型。

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

       16. 物理结构划设想计:指为三个加以的逻辑数据模型采纳四个最适合应用情状的物理结构的进程。满含设计数据库的存储结构与存取方法。

       17. 虚幻:指对实际的人、物、事和定义进行人工管理,抽出所关怀的协同特点,忽略非本质的细节,并把那一个特色用各类概念准确地加以描述,这个概念组成了某种模型。       18. 数据库设计必须依据结构划虚构计和作为设计相结合的条件。       19. 数量字典首要富含数据项、数据结构、数据流、数据存款和储蓄和管理进度五个部分。

       20. 三种常用抽象方法是分类、聚焦和归纳。

       21. 部分 E-CR-V图之间的争执主要呈今后性质顶牛、命名抵触和结构争辩四个地点。       22. 数据库常用的存取方法包含索引方法、聚簇方法和 HASH方法两种。

       23. 鲜明数据贮存地方和仓库储存结构必要思考的元素至关心珍重要有: 存取时间、 存储空间利用率和保卫安全代价等。

              CREATE TABLE <表名>

复制代码 代码如下:

13)ALIAS

大家能够通过ALIAS为列名称和表名称钦定外号,语法为:
SELECT "表格小名"."栏位1" "栏位外号"  FROM "表格名" "表格外号"  

  • *

      <表名或视图名列表>: 三个或几个逗号分隔的表或视图名。 表或视图名后可跟别称。

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

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

     

复制代码 代码如下:

第一节

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

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

一、相关概念和文化

       1.触发器是用户定义在基本表上的一类由事件驱动的异样进程。由服务器自动激活, 能实行越发复杂的自己商量和操作,具备更加精细和越来越强硬的数额调节本事。使用 CREATE TEnclaveIGGELX570 命令创设触发器。

       2.计算机类别存在本领安全、管理安全和政策法则三类安全性问题。

       3. TCSEC/TDI 标准由安全战略、权利、保证和文档八个地方内容结合。

       4. 常用存取调控方法富含自立存取调控(DAC)和强制存取调节(MAC)两种。

       5. 自主存取调节(DAC)的 SQL 语句包含 GRANT 和 REVOKE 三个。 用户权限由数据对象和操作类型两片段构成。

乐百家数据库 1

       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 表的 INSERT 权限收回,同不经常常间打消被他传播出去的授权。

              REVOKE INSERT ON TABLE SC FROM U5 CASCADE ;

         5) 创造叁个剧中人物 RAV41,并使其对 Student 表具备数据查询和更新权限。

              CREATE ROLE R1;

              GRANT SELECT,UPDATE ON TABLE Student TO R1;

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

              AUDIT ALTER ON Student ;

       1. Data:数据,是数据库中蕴藏的基本目的,是陈诉事物的号子记录。
       2. Database:数据库,是经久不衰积累在Computer内、有集体的、可分享的雅量数额的会集。
       3. DBMS:数据库管理连串,是位于用户与操作系统以内的一层数据处理软件,用于科学地集团、存款和储蓄和管理数据、高效地取得和爱戴数据。
       4. DBS:数据库系统,指在管理器连串中引入数据库后的体系,一般由数据库、数据库管理系列、应用系统、数据库管理员(DBA)构成。
       5. 数据模型:是用来抽象、表示和管理具体世界中的数据和音信的工具,是对具体世界的一成不改变,是数据库系统的为主和基础;其构成要素有数据结构、数据操作和完整性约束。
       6. 概念模型:也称音讯模型,是按用户的思想来对数码和新闻建立模型,首要用以数据库设计。
       7. 逻辑模型:是按计算机类别的理念对数据建立模型,用于DBMS达成。
       8. 概略模型:是对数据最尾巴部分的空洞,描述数据在系统内部的代表方法和存取方法,在磁盘或磁带上的贮存情势和存取方法,是面向Computer类别的。
       9. 实体和总体性:客观存在并可相互区分的东西称为实体。实体所具有的某一风味称为属性。
       10.E-ENVISION图:即实体-关系图,用于描述现实世界的东西及其相互关系,是数据库概念模型设计的关键工具。
       11.涉嫌格局:从用户意见看,关系形式是由一组关系构成,种种关系的数据结构是一张标准化的二维表。
       12.型/值:型是对某一类数据的布局和质量的认证;值是型的二个有血有肉赋值,是型的实例。
       13.数据库情势:是对数据库中任何数据的逻辑结构(数据项的名字、类型、取值范围等)和特色(数据里面包车型地铁沟通以及数额有关的安全性、完整性要求)的叙说。
       14.数据库的三级系统结构:外情势、形式和内格局。
       15.数据库内格局:又称为存款和储蓄格局,是对数据库物理构造和积攒情势的叙述,是数额在数据库内部的象征方法。叁个数据库独有贰个内格局。
       16.数据库外格局:又称为子方式或用户方式,它是数据库用户能够看见和利用的有的数据的逻辑结构和性情的描述,是数据库用户的多少视图。日常是形式的子集。三个数据库可有八个外形式。
       17.数据库的二级影象:外情势/形式影像、形式/内格局影像。

复制代码 代码如下:

第二节

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

复制代码 代码如下:

第四节

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

复制代码 代码如下:

二、重要知识点

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

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

       3. CRUISERDBMS 中索引一般采纳 B 树或 HASH 来实现

       4. 索引可以分成独一索引、非独一索引和聚簇索引三类别型。

乐百家数据库 2

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

              CREATE TABLE <表名>

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

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

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

内部<数据类型>能够是数据库系统帮助的各类数据类型,包蕴长度和精度。 

    列级完整性约束为针对单个列(本列)的完整性约束, 富含 P哈弗IMAEvoqueY KEY、 REFERENCES表名(列名)、UNIQUE、NOT NULL 等。 

    表级完整性约束可以是基于表中多列的羁绊,包罗 PHavalIMA奥迪Q5Y KEY ( 列名列表) 、FOREIGN KEY REFERENCES 表名(列名) 等。

       7. SQL 创造索引语句的一般格式为

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

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

内部UNIQUE:表示成立独一索引,缺省为非独一索引;

      CLUSTELAND:表示创制聚簇索引,缺省为非聚簇索引;

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

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

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

              [ WHERE <条件表达式 1> ]

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

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

其中

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

       算术表明式列表:一个或多个逗号分隔的算术表明式,表明式由常量(满含数字和字符串)、列名、函数和算术运算符构成。各样表明式后还可跟外号。也可用 *意味着查询表中的全体列。

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

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

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

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

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

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

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

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

       3. 实体型之间的沟通分为一对一、一对多多对多二种档期的顺序。

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;

数据库也是持筹握算机类笔试面试中不可幸免会遇见的考试的场合,越发是银行和局部守旧软件类公司。这里依据整理的资料,对数据库的连锁文化也做个计算吧。希望学过数据库但长日子不用的校友依据那么些文化能够纪念和重拾,没学过的同桌能调控一些数据库的基础知识。

       2. 数据模型的构成成分是:数据结构、数据操作、完整性约束原则

9、查询全数科目战绩小于60分的同窗的学号、姓名;

二、细说数据库三范式

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

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

       同一列中不能有多个值

       即实业中的有些属性不可能有三个值或许不可能有重复的属性

       简单的说,第一范式正是无重复的列。

       在任何贰个关周全据库中,第一范式(1NF)是对关乎格局的宗旨须求,不满足第一范式(1NF)的数据库就不是关周详据库

  

  2.2 第二范式(2NF)属性完全依据于主键[扫除部分子函数重视]     

  满意第二范式(2NF)必须先满足第一范式(1NF)。     

  第二范式(2NF)供给数据库表中的各类实例或行必须能够被惟一地有别于。     

  为促成区分平日要求为表加上一个列,以存款和储蓄各个实例的旷世标志。 

  第二范式(2NF)供给实体的特性完全注重于主关键字。所谓完全正视是指不能够存在仅凭仗主关键字一部分的品质,假若存在,那么那几个脾气和主关键字的这一有个别应该分离出来产生三个新的实业,新实体与原实体之间是一对多的关系。为落到实处区分经常要求为表加上三个列,以存款和储蓄各种实例的绝世标志。简单的说,第二范式就是性质完全依赖于主键。

  2.3 第三范式(3NF)属性不依赖于另外非主属性[解除传递注重]

       满足第三范式(3NF)必须先知足第二范式(2NF)。

       简单的说,第三范式(3NF)必要一个数据库表中不分包已在其余表中已涵盖的非主关键字消息。

       举例,存在三个部门音信表,当中每一种部门有机关编号(dept_id)、部门名称、部门简单介绍等新闻。那么在的职工音讯表中列出单位编号后就不可能再将部门名称、部门简单介绍等与机关关于的新闻再出席职员和工人音信表中。假使不设有机构消息表,则依照第三范式(3NF)也应该塑造它,不然就能有恢宏的多寡冗余。简单来讲,第三范式正是性质不依赖于任何非主属性。

  

  2.4 具体实例深入分析

  下边罗列三个高校的学生系统的实例,以示多少个范式的应用。

  在计划数据库表结构在此以前,大家先分明一下要统一筹算的故事情节囊括那多少个。学号、学生姓名、年龄、性别、课程、课程学分、系别、学科战表,系办地址、系办电话等音信。为了轻易我们一时只思虑那么些字段消息。大家对此那么些音讯,说关切的主题材料有如下多少个地方。

       1)学生有这么些基本新闻 
       2)学生选了那么些课,战表是什么样 
       3)各样课的学分是不怎么 
       4)学生属于相当系,系的骨干音信是什么。

       首先第一范式(1NF):数据库表中的字段都以单一属性的,不可再分。这几个单一属性由基本项目构成,包涵整型、实数、字符型、逻辑型、日期型等。在当前的别的关全面据库管理类别(DBMS)中,分化意你把数据库表的一列再分为二列或多列,因而做出的都以适合第一范式的数据库。 

       我们再思量第二范式,把全体这一个音讯放到一个表中(学号,学生姓名、年龄、性别、课程、课程学分、系别、学科成绩,系办地址、系办电话)下边存在如下的正视关系。 
       1)(学号)→ (姓名, 年龄,性别,系别,系办地址、系办电话) 
       2) (课程名称) → (学分) 
       3)(学号,课程)→ (学科成绩)

  依据正视关系我们能够把选课关系表SelectCourse改为如下五个表: 

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

       事实上,对照第二范式的渴求,那就是满意第二范式的数据库表,若不满意第二范式,会发出如下难点:
  (1)数据冗余: 同一门学科由n个学生选修,"学分"就重新n-1次;同贰个上学的儿童选修了m门课程,姓名和年龄就再也了m-1次。

  (2)更新特别:1)若调治了某门课程的学分,数据表中所有行的"学分"值都要革新,否则会油然则生相同门学科学分不相同的意况。 
                 2)即使要举行一门新的学科,临时还未有人选修。那样,由于还未曾"学号"关键字,课程名称和学分也无从记录入数据库。

  (3)删除格外 : 假若一堆学员早就达成课程的选修,这么些选修记录就活该从数据库表中删除。但是,与此相同的时间,课程名称和学分音讯也被剔除了。很引人瞩目,那也会促成插入卓殊。

  大家再考虑怎样将其改成满意第三范式的数量库表,接着看上面包车型客车学员表Student(学号,姓名, 年龄,性别,系别,系办地址、系办电话),关键字为单纯关键字"学号",因为存在如下决定涉及:

      (学号)→ (姓名, 年龄,性别,系别,系办地址、系办电话) 
  不过还设有下边包车型地铁调整涉及 
       (学号) → (所在高校)→(大学地方, 高校电话) 
        即存在非关键字段"大学地点"、"大学电话"对主要字段"学号"的传递函数正视。 
       它也会设有数量冗余、更新非凡、插入十分和删除十分的动静(这里就不具体剖析了,参照第二范式中的深入分析)。依照第三范式把学生关系表分为如下几个表就可以知足第三范式了:

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

SQL语句总计

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

复制代码 代码如下:

4)AND OR

上例中的 WHERE 指令能够被用来由表格中有法规地选取资料。那个条件恐怕是粗略的 (像上一页的事例),也只怕是犬牙交错的。复杂条件是由二或八个简易标准经过 AND 或是 O昂科拉 的连接而成。语法为:
SELECT "栏位名"  FROM "表格名"  WHERE "轻松规范"  {[AND|OR] "简单典型"}

       2. 数码定义:数据定义作用包蕴形式定义、表定义、视图和目录的定义。

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

一、相关概念

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

       2. 外键:若是一个关乎的三个或一组属性援引(参照)了另三个涉嫌的主键,则称那个或这组属性为外码或外键(Foreign key)。

       3. 关系数据库: 安分守己关系模型创设的数据库称为关周全据库。 它是在有些应用领域的有着涉及的会合

       4. 涉嫌方式: 简单地说,关系情势正是对关系的型的定义, 包涵涉嫌的性质构成、各属性的数据类型、 属性间的注重、 元组语义及完整性约束等。 论及是关联格局在某不平日刻的事态或内容, 关系模型是型, 关系是值, 关系模型是静态的、 稳定的, 而关系是动态的、随时间不断转换的,因为论及操作在时时随地地立异着数据库中的数据

       5. 实体完整性:用于标志实体的独一性。它须求中央关系必要求有二个可见标志元组独一性的主键,主键不可能为空,也不可取重复值。

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

       7. 用户定义的完整性:就是指向某一现进行使的数据必须满意的语义约束。满含非空、 独一和布尔条件约束三种意况。

第二节

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

6)BETWEEN

IN 那几个命令能够让大家依据一或数个不一而再(discrete)的值的限定之内抓出资料库中的值,而 BETWEEN 则是让大家能够动用一个范围 (range)  内抓出资料库中的值,语法为:
SELECT "栏位名"  FROM "表格名" WHERE "栏位名" BETWEEN '值一' AND '值二' 

            F —— 属性间的多寡依赖关系群集

11、查询至少有一门课与学号为“1001”的同班所学同样的同班的学号和姓名;

11)GROUP BY

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

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

复制代码 代码如下:

二、主要知识点

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

      2. 关联的5种基本操作是选料、投影、并、差、笛Carl积

      3.涉及方式是对关乎的叙说,五元组方式化表示为:Tiguan(U,D,DOM,F),个中

            R —— 关系名

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

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

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

            F —— 属性间的数据依赖关系群集

      4.笛Carl乘积,采纳和阴影运算如下

乐百家数据库 3

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

复制代码 代码如下:

第三节

       2.Computer种类设有本事安全、管理安全和政策法律三类安全性难点。

复制代码 代码如下:

10)COUNT

本条关键词能够帮作者大家总括有稍许笔资料被选出来,语法为:
SELECT COUNT("栏位名") FROM "表格名"

      一、相关概念

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

8)ORDER BY

大家平常索要能够将抓出的资料做贰个有系统的来得。那也许是由小往大 (ascending)  或是由大往小(descending)。在这种情况下,大家就足以应用 O中华VDE福特Explorer BY 那个命令来完毕大家的指标。语法为:
SELECT "栏位名"  FROM "表格名 [WHERE "条件"] ORDER BY "栏位名" [ASC, DESC] 

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

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;

       5. . 实体完整性:用于标志实体的独一性。它要求着力关系供给求有二个能够标志元组独一性的主键,主键无法为空,也不得取重复值

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#
);

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

复制代码 代码如下:

7)LIKE

LIKE 是另三个在 WHERE  子句中会用到的吩咐。基本上, LIKE  能让大家依照二个情势(pattern) 来寻觅大家要的素材。语法为:
SELECT "栏位名"  FROM "表格名"  WHERE "栏位名" LIKE {模式} 

17、按平均战绩从高到低突显全体学员的“数据库”、“集团管理”、“保加圣克鲁斯语”三门的学科战绩,按如下格局呈现: 学生ID,,数据库,公司管理,英文,有效课程数,有效平均分

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

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

6)BETWEEN

IN 那一个命令能够让大家遵照一或数个不连续(discrete)的值的限量之内抓出资料库中的值,而 BETWEEN 则是让我们得以应用一个限制 (range)  内抓出资料库中的值,语法为:
SELECT "栏位名"  FROM "表格名" WHERE "栏位名" BETWEEN '值一' AND '值二' 

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');

       算术表明式列表:三个或多少个逗号分隔的算术表明式,表明式由常量(富含数字和字符串)、列名、函数和算术运算符构成。各种表明式后还可跟外号。也可用 *意味着查询表中的全体列。

复制代码 代码如下:

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

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

其中

22、查询如下课程战表第 3 名到第 6 名的学员成绩单:集团管理(001),马克思(002),UML (003),数据库(004)
[学生ID],[学员姓名],企业管理,马克思,UML,数据库,平均成绩

本文由乐百家数据库发布,转载请注明来源:50条SQL查询技艺、查询语句示例