zoukankan      html  css  js  c++  java
  • 编写SQL语句(快速回顾)

    注:源自于《Java程序员面试秘笈》!

    1.创建数据库MYDB

    create database MYDB
    

    2.创建学生表student (sno,sname,ssex,sage,sclass)

    create table student(
        sno int primary key,
        sname varchar(8),
        ssex varchar(3),
        sage int,
        scalss varchar(6)
    )
    

    3.创建课程表course(cno,cname,ccredit)

    create table course(
        cno int primary key,
        cname varchar(20),
        ccredit int
    )
    

    4.创建选课表SC(sno,cno,grade)

    create table SC(
        sno int foreign key references student(sno),
        cno int foreign key references course(cno),
        grade int
    )
    

    5.添加数据

    insert into student values (1,'李勇','男',20, 'y01')
    insert into student values (2,'刘晨','男',21, 'y02')
    insert into student values (3,'王敏','女',19, 'y02')
    insert into student values (4,'张力','男',20, 'y05')
    

    6.添加数据

    insert into course values (1, '数据库', 5)
    insert into course values (2, 'C语言', 5)
    insert into course values (3, '开发模式', 5)
    
    

    7.添加数据

    insert into SC values (1,1,5)
    insert into SC values (1,2,5)
    insert into SC values (1,1,5)
    insert into SC values (1,3,5)
    

    8.查询全体同学的学号、姓名

    select sno, sname
    from student
    

    9.查询全体同学的姓名学号班级(按顺序输出)

    select sname,snao,sclass
    from student
    

    10.查询全体同学的记录(显示所有行)

    select * from student
    

    11.查询全体同学的姓名及出生年份

    select sname , 2017 - sage
    from student
    

    12.查询全体同学姓名、出生年份、班级(班级要用小写字母LOWER函数)

    select sname , 2017 - sage 出生年份, lower(sclass)
    from student
    

    13.查询全体同学的姓名、出生年份、所在班级,列为YearOfBirth

    select sname, 2017 - sage YearOfBirth, sclass
    from student
    

    14.查询选课中学员的学号,并且去掉重复行,用distinct

    select distinct sno
    from sc
    

    15.查询Y02班全体同学名单

    select *
    from student
    where sclass = 'Y02'
    

    16.查询考试不及格的同学学号

    select sno
    from sc
    where grade < 60
    

    17.查询所有年龄在20岁以下的同学的姓名及年龄

    select sname,sage
    from student
    where sage < 20
    

    18.查询年龄在1920岁(包括1920)之间的同学姓名、班级、年龄。

    select sname,sclass,sage
    from student
    where sage>=19 and sage<=20
    where between 19 and 20
    

    19.查询年龄不在19~20岁之间的同学的姓名、班级、年龄。

    select sname,sclass,sage
    from student
    where sage not between 19 and 20 
    

    20.查询不是Y02班和Y05班的同学的姓名、性别。

    select sname,ssex
    from student
    where not sclass = 'Y02' and not sclass = 'Y05'
    

    21.查询Y02班和Y05班的同学姓名、性别

    select sname , ssex
    from student
    where sclass = 'Y02' or sclass = 'Y05'
    

    22.查询所有姓刘的同学的姓名、学号、性别。

    select sname, sno, ssex
    from student
    where sname like '刘%'
    

    23.查询所有姓张且全名为2个汉字的学生姓名

    select sname
    from student
    where sname like '张_'
    

    24.某些学生未考试,查询缺少成绩的同学的学号和课程号

    select sno,cno
    from sc
    where grade is null
    

    25.查询所有有成绩的同学的学号、课程号和成绩

    select sno,cno
    from sc
    where grade is not null
    

    26.查询Y02班年龄在20岁以下的学生的姓名和年龄

    select sname, sage
    from student
    where sclass = 'Y02' and sage < 20
    

    27.查询选修1号课程的同学的学号和成绩,按降序排列。

    select sno,grade
    from sc
    where cno = 1
    order by grade desc
    

    28.查询全体同学信息查询结果,按所在班级的班级名称降序排列,同级同学按年龄升序排列。

    select * 
    from student
    order by sclass desc , sage asc
    

    29.查询学员总人数

    select count(*) from student
    

    30.查询选修课程学员人数。

    select count(*) from sc
    

    31.统计1号课的学员平均成绩。

    select avg(grade)
    from sc
    where cno = 1
    

    32.求各个课程号及相应的选课人数 (重点)

    select count(*)
    from sc
    group by cno
    

    33.查询选修1号课的同学的最高成绩

    select max(grade)
    from sc
    where cno = 1
    

    34.查询选取1门以上课程的同学学号

    select sno 
    from sc 
    group by sno having count(cno) > 1
    

    35.查询每个学员及其选修课程情况

    select sno,cno
    from sc
    

    36.查询每个学员及其选修课情况,对没有选课的也要输出其名字、学号、性别、班级

    select a.sno, a.sname, a.sage, a.ssex, a.sclass, sc.cno, sc.grade
    from student a left outer join sc 
    on a.sno = sc.sno order by a.sname
    

    37.查询选取2号课程且成绩在90分以上的同学。

    select * 
    from sc
    where cno = 2 and grade > 90
    

    38.查询每个同学学号姓名、选修课程名及成绩。

    select a.sno, a.sname, sc.cno, sc.grade
    from student a left outer join sc
    on a.sno = sc.sno
    order by sc.sno
    

    39.查询与刘晨在一个班的同学

    select sname from student
    where sclass in (
        select sclass
        from student
        where sname = '刘晨'
    )
    

    40.选取C语言的同学学号和姓名

    select sno , sname
    from student
    where sno in (
        select sno
        from sc
        where cno in (
            select cno
            from course
            where cname = 'C语言'
        )
    )
    

    41.查询其他班中比Y02班某一同学大的同学姓名和年龄。

    select sname , sage
    from student 
    where sage > any (
        select sage 
        from student 
        where sclass = 'Y02'
    ) and sclass <> 'Y02'
    

    42.查询其他班中比Y02班同学全部都大的同学姓名和年龄。

    select sname , sage
    from student 
    where sage > all (
        select sage 
        from student 
        where sclass = 'Y02'
    ) and sclass <> 'Y02'
    

    43.查询选取1号课程的学员的姓名。

    select sname
    from student
    where sno in(
        select sno
        from sc
        where cno = 1
    )
    

    44.查询没有选取1号课程的学员的姓名。

    select sname
    from student
    where sno not in (
        select sno
        from sc
        where cno = 1
    )
    

    45.查询Y02班同学及年龄不大于19的学员(union)。

    select * 
    from student
    where sclass = 'Y02' union
    select *
    from student
    where sage <= 19
    

    46.查询选取1号课程或者2号课程的同学学号

    select distinct sno
    from sc
    where cno = 1 or cno = 2
    

    47.将4号学员的年龄改为23岁。

    update student set sage = 23 where sno = 4
    

    48.将所有同学的年龄增加1岁

    update student set sage = sage + 1
    

    49.Y02班同学的成绩改为100分

    update sc set grade = 100 
    where sno in (
        select sno
        from student
        where sclass = 'y02'
    )
    

    50.删除学号为1的同学记录。

    delete from student where sno = 1
    
  • 相关阅读:
    夯实Java基础系列5:Java文件和Java包结构
    夯实Java基础系列4:一文了解final关键字的特性、使用方法,以及实现原理
    夯实Java基础系列3:一文搞懂String常见面试题,从基础到实战,更有原理分析和源码解析!
    夯实Java基础系列1:Java面向对象三大特性(基础篇)
    走进JavaWeb技术世界16:极简配置的SpringBoot
    深入JavaWeb技术世界15:深入浅出Mybatis基本原理
    走进JavaWeb技术世界14:Mybatis入门
    走进JavaWeb技术世界13:Hibernate入门经典与注解式开发
    [转]ssm整合1(环境搭建)
    [转]基于S2SH框架的项目—antlr-2.7.2.jar包冲突问题
  • 原文地址:https://www.cnblogs.com/sanjun/p/7976191.html
Copyright © 2011-2022 走看看