您的位置:68399皇家赌场 > 虚拟主机 > 数据库查询实例(包蕴全体where条件例子)

数据库查询实例(包蕴全体where条件例子)

发布时间:2019-05-12 14:35编辑:虚拟主机浏览(68)

    嵌套查询

    三个SELECT  FROM  WHERE语句称为贰个查询块。

    嵌套查询:将多个查询块嵌套在另二个查询块的WHERE子句大概HAVING短语的尺度中的查询。

    注:子查询的SELECT语句中不能够动用O猎豹CS陆DER BY子句,O冠道DEOdyssey BY子句只能对终极查询结果排序。

     

    至于mysql中的数据查询—嵌套查询,mysql数据查询嵌套

    询问钦点列

    1.饱含IN谓词的子查询:

    子查询往往是3个成团。

    询问与迈克在同2个系的学生:

    SELECT Sno,Sname,Sdept FROM Student WHERE Sdept IN
    (SELECT Sdept FROM Student WHERE Sname='Mike');

    子查询的查询条件不借助于父查询,成称为不相关子查询。

    子查询的查询条件依赖于父查询,成称为相关子查询。

     

    查询选修了DB_Design的上学的儿童学好和人名。

    SELECT Sno,Sname FROM Student WHERE Sno IN
    (SELECT Sno FROM SC WHERE Cno IN
    (SELECT Cno FROM Course WHERE Cname='DB_Design')
    );

     

    嵌套查询

    二个SELECT  FROM  WHERE语句称为2个查询块。

    嵌套查询:将二个询问块嵌套在另二个查询块的WHERE子句大概HAVING短语的规则中的查询。

    注:子查询的SELECT语句中无法选择O途乐DELacrosse BY子句,O牧马人DER BY子句只可以对最后查询结果排序。

     

    [例1] 查询全部学生的学号与姓名。

    二.含有对比运算符的子查询:

    当用户确切知道内层查询重返的是单个值时,能够用>、<、=、>=、<=、!=(<>)等相比运算符。

     

    SELECT Sno,Sname,Sdegree FROM Student WHERE Sdegree=
    (SELECT Sdegree FROM Student WHERE Sname='Mike');

     

    SELECT Sno,Cno FROM SC x WHERE Grade>=
    (SELECT AVG(Grade) FROM SC y WHERE y.Sno=x.Sno);  (相关子查询)

     

    一.富含IN谓词的子查询:

    子查询往往是3个群集。

    询问与迈克在同3个系的学习者:

    SELECT Sno,Sname,Sdept FROM Student WHERE Sdept IN
    (SELECT Sdept FROM Student WHERE Sname='Mike');

    子查询的查询条件不借助于父查询,成称为不相关子查询。

    子查询的询问条件正视于父查询,成称为相关子查询。

     

    查询选修了DB_Design的上学的小孩子学好和姓名。

    SELECT Sno,Sname FROM Student WHERE Sno IN
    (SELECT Sno FROM SC WHERE Cno IN
    (SELECT Cno FROM Course WHERE Cname='DB_Design')
    );

     

    SELECT Sno,Sname

    三.富含ANY(SOME)或ALL谓词的子查询:

    子查询再次来到单值时方可用相比运算符,但回到多值时要用ANY(有的系统用SOME)或ALL谓词修饰符。使用ANY或ALL也亟须同时采用相比运算符。

    >ANY   :  大于子查询结果中的某些值

    >ALL    :  大于子查询结果中的全体值

    =ANY   :   等于子查询结果中的某些值

     

    查询非Computer系中比Computer系自便2个学员年龄小的学习者姓名和年龄。

    SELECT Sname,Sage FROM Student

    WHERE Sage<ANY(SELECT Sage FROM Student WHERE Sdegree='CS') AND Sdegree!='CS';

     可选择聚焦函数,且效用越来越高:

    SELECT Sname,Sage FROM Student

    澳门皇家赌场55533网址,WHERE Sage<

    (SELECT MAX(Sage) FROM Student WHERE Sdegree='CS')

    AND Sdegree!='CS';

     

    二.饱含相比较运算符的子查询:

    当用户确切知道内层查询再次回到的是单个值时,能够用>、<、=、>=、<=、!=(<>)等相比运算符。

     

    SELECT Sno,Sname,Sdegree FROM Student WHERE Sdegree=
    (SELECT Sdegree FROM Student WHERE Sname='Mike');

     

    SELECT Sno,Cno FROM SC x WHERE Grade>=
    (SELECT AVG(Grade) FROM SC y WHERE y.Sno=x.Sno);  (相关子查询)

     

    FROM Student;

     肆.带有EXISTS谓词的子查询:

    EXISTS代表存在量词∃。带有EXISTS谓词的子查询不回去任何数据,只产生逻辑值true或许false。

    查询全体选修了拾01学科的学员姓名。

    SELECT Sname FROM Student WHERE EXISTS
    (SELECT * FROM Sc WHERE Student.Sno=Sc.Sno AND Cno='1001');

    询问没有选修100一课程的学生姓名。

    SELECT Sname FROM Student WHERE NOT EXISTS
    (SELECT * FROM Sc WHERE Student.Sno=Sc.Sno AND Cno='1001');

     

    局地带EXISTS或NOT EXISTS谓词的子查询不可能被别的方式的子查询代替,但持有带IN谓词、相比运算符、ANY和ALL谓词的子查询都能用到EXISTS谓词的子查询代替。

     

    SQL中从不全称量词,全称量词用存在量词表示。

    查询选修了全套科指标学员姓名。(有一点点绕)

    SELECT Sname FROM Student WHERE NOT EXISTS(
    SELECT * FROM Course WHERE NOT EXISTS(
    SELECT * FROM Sc WHERE Student.Sno=Sc.Sno AND Course.Cno=Sc.Cno));

     

    SQL中从不包罗逻辑运算 p→q=¬p∨q

    查询至少选修了学员二零一五00二选修的方方面面科指标学习者号码。

     

    SELECT DISTINCT Sno FROM SC SCX WHERE NOT EXISTS(
    SELECT * FROM SC SCY WHERE SCY.Sno='2016002' AND NOT EXISTS (
    SELECT * FROM SC SCZ WHERE SCZ.Sno=SCX.Sno AND SCZ.Cno=SCY.Cno));

    三.饱含ANY(SOME)或ALL谓词的子查询:

    子查询重回单值时方可用相比运算符,但再次回到多值时要用ANY(有的系统用SOME)或ALL谓词修饰符。使用ANY或ALL也亟须同时利用比较运算符。

    >ANY   :  大于子查询结果中的某些值

    >ALL    :  大于子查询结果中的全数值

    =ANY   :   等于子查询结果中的有些值

     

    查询非Computer系中比Computer系任性三个上学的儿童年龄小的上学的儿童姓名和年龄。

    SELECT Sname,Sage FROM Student

    WHERE Sage<ANY(SELECT Sage FROM Student WHERE Sdegree='CS') AND Sdegree!='CS';

     可选取聚集函数,且功用更加高:

    SELECT Sname,Sage FROM Student

    WHERE Sage<

    (SELECT MAX(Sage) FROM Student WHERE Sdegree='CS')

    AND Sdegree!='CS';

     

     

     四.带有EXISTS谓词的子查询:

    EXISTS代表存在量词∃。带有EXISTS谓词的子查询不回来任何数据,只发生逻辑值true或许false。

    询问全部选修了100壹学科的学童姓名。

    SELECT Sname FROM Student WHERE EXISTS
    (SELECT * FROM Sc WHERE Student.Sno=Sc.Sno AND Cno='1001');

    询问未有选修十0一学科的学员姓名。

    SELECT Sname FROM Student WHERE NOT EXISTS
    (SELECT * FROM Sc WHERE Student.Sno=Sc.Sno AND Cno='1001');

     

    1部分带EXISTS或NOT EXISTS谓词的子查询不可能被其它花样的子查询替代,但装有带IN谓词、相比运算符、ANY和ALL谓词的子查询都能用到EXISTS谓词的子查询取代。

     

    SQL中并未有全称量词,全称量词用存在量词表示。

    询问选修了百分之百学科的学员姓名。(有一些绕)

    SELECT Sname FROM Student WHERE NOT EXISTS(
    SELECT * FROM Course WHERE NOT EXISTS(
    SELECT * FROM Sc WHERE Student.Sno=Sc.Sno AND Course.Cno=Sc.Cno));

     

    SQL中从未包蕴逻辑运算 p→q=¬p∨q

    询问至少选修了学生2014002选修的漫天科目标学生号码。

     

    SELECT DISTINCT Sno FROM SC SCX WHERE NOT EXISTS(
    SELECT * FROM SC SCY WHERE SCY.Sno='2016002' AND NOT EXISTS (
    SELECT * FROM SC SCZ WHERE SCZ.Sno=SCX.Sno AND SCZ.Cno=SCY.Cno));

    嵌套查询 3个SELECT FROM WHERE语句称为3个查询块。 嵌套查询:将八个查询块嵌套在另...

    [例2] 查询整体学生的人名、学号、所在系。

    SELECT Sname,Sno,Sdept

    FROM Student;

    [例3] 查询全体学生的详尽笔录。

    SELECT Sno,Sname,Ssex,Sage,Sdept

    FROM Student;

    SELECT *

    FROM Student;

    [例4] 查全部学生的人名及其出生年份。

    SELECT Sname,2004-Sage /*假诺当年的年份为2004年*/ FROM Student;

    [例5] 查询全部学生的全名、出生年份和具备系,供给用小 写字母表示具有系名

    SELECT Sname,„Year of Birth: ‘,2004-Sage,

    ISLOWER(Sdept)

    FROM Student;

    [例6] 查询选修了课程的学员学号。

    SELECT Sno FROM SC;

    等价于:

    SELECT ALL Sno FROM SC;

    [例7] 查询Computer科学系全部学生的花名册。

    SELECT Sname www.111cn.net

    FROM Student

    WHERE Sdept=„CS‟;

    [例8] 查询全体年龄在20岁以下的学习者姓名及其年龄。 SELECT Sname,Sage

    FROM Student

    WHERE Sage < 20;

    [例玖] 查询考试成绩有不比格的学习者的学号。

    SELECT DISTINCT Sno

    FROM SC

    WHERE Grade<60;

    [例10] 查询年龄在20~2一周岁(包含20岁和212虚岁)之间的学员的 姓名、系别和年龄

    SELECT Sname,Sdept,Sage

    FROM Student

    WHERE Sage BETWEEN 20 AND 23;

    [例11] 查询年龄不在20~二三周岁时期的学员姓名、系别和年龄

    SELECT Sname,Sdept,Sage

    FROM Student

    WHERE Sage NOT BETWEEN 20 AND 23;

    [例12]查询消息系(IS)、数学系(MA)和计算机科学系(CS)学生的真名和 性别。

    SELECT Sname,Ssex

    FROM Student

    WHERE Sdept IN ( ‘IS’,’MA’,’CS’ );

    [例13]查询既不是音信系、数学系,也不是Computer科学系的上学的小孩子的真名和性别。 SELECT Sname,Ssex

    FROM Student

    WHERE Sdept NOT IN ( ‘IS’,’MA’,’CS’ );

    [例14] 查询学号为二零零四151二一的学员的详细意况。

    SELECT *

    FROM Student

    WHERE Sno LIKE „200215121′;

    等价于:

    SELECT *

    FROM Student

    WHERE Sno = ‘ 200215121 ‘;

    [例15] 查询全部姓刘学生的人名、学号和性别。

    SELECT Sname,Sno,Ssex

    FROM Student

    WHERE Sname LIKE „刘%‟;

    [例16] 查询姓”欧阳”且全名字为多个汉字的学习者的人名。

    SELECT Sname

    FROM Student

    WHERE Sname LIKE ‘欧阳__’;

    [例17] 查询名字中第二个字为”阳”字的上学的儿童的人名和学号。

    SELECT Sname,Sno

    FROM Student

    WHERE Sname LIKE „__阳%‟;

    [例18] 查询全体不姓刘的学员姓名。

    SELECT Sname,Sno,Ssex

    FROM Student

    WHERE Sname NOT LIKE ‘刘%’;

    [例19] 查询DB_Design课程的课程号和学分。

    SELECT Cno,Ccredit

    FROM Course

    WHERE Cname LIKE ‘DB_Design’ ESCAPE ‘„;

    [例20] 查询以”DB_”先河,且尾数第叁个字符为 i的课程的详细意况。 SELECT *

    FROM Course

    WHERE Cname LIKE ‘DB_%i_ _’ ESCAPE ‘ „;

    [例21] 有些学生选修课程后尚未加入考试,所以有选课记录,但没有考试成绩。查询缺少战绩的学生的学号和对应的课程号。 SELECT Sno,Cno

    FROM SC

    WHERE Grade IS NULL

    [例22] 查全数有实际业绩的学习者学号和课程号。

    SELECT Sno,Cno

    FROM SC

    WHERE Grade IS NOT NULL;

    [例23] 查询计算机系年龄在20岁以下的上学的小孩子姓名。

    SELECT Sname

    FROM Student

    WHERE Sdept= ‘CS’ AND Sage<20;

    改写[例12]

    [例12] 查询消息系(IS)、数学系(MA)和计算机科学系 (CS)学生的人名和性别。

    SELECT Sname,Ssex

    FROM Student

    WHERE Sdept IN ( ‘IS’,’MA’,’CS’ )

    可改写为:

    SELECT Sname,Ssex

    FROM Student

    WHERE Sdept= ‘ IS ‘ OR Sdept= ‘ MA’ OR Sdept= ‘ CS ‘;

    [例24] 查询选修了三号课程的学生的学号及其成绩,查询结果按分 数降序排列。

    SELECT Sno,Grade

    FROM SC

    WHERE Cno= ‘ 3 ‘

    ORDER BY Grade DESC;

    [例贰伍] 查询全部学生意况,查询结果按所在系的系号升序排 列,同1系中的学生按年龄降序排列。

    SELECT *

    FROM Student

    ORDER BY Sdept,Sage DESC;

    [例26] 查询学生总人数。

    SELECT COUNT(*)

    FROM Student;

    [例27] 查询选修了课程的学习者人数。

    SELECT COUNT(DISTINCT Sno)

    FROM SC;

    [例28] 总结一号课程的学员平均战表。

    SELECT AVG(Grade)

    FROM SC

    WHERE Cno= ‘ 1 ‘;

    本文由68399皇家赌场发布于虚拟主机,转载请注明出处:数据库查询实例(包蕴全体where条件例子)

    关键词: 68399皇家赌场