zoukankan      html  css  js  c++  java
  • 数据库实例

    # 表结构部分

    1 drop database if exists `SchoolExam`;
    2 create database if not exists `SchoolExam`  default character set utf8 collate utf8_unicode_ci;
    3 use SchoolExam;

    # 创建Student表

     1 drop table if exists `Student`;
     2 create table if not exists `Student`(
     3     ID                INT(10)     not null    auto_increment comment '学生学号',
     4     `Name`         varchar(20) not null                      comment '学生姓名',
     5     Sex            char(4)                                 comment '性别',
     6     Birth        year                                    comment '出生日期',
     7     Department     varchar(20) not null                       comment '院系',
     8     Address        varchar(50)                            comment '家庭住址',
     9     primary key(ID),
    10     unique(ID)
    11 )engine=InnoDB charset=utf8;

    # 创建Score表

    1 drop table if exists `Score`;
    2 create table if not exists `Score`(
    3     ID         int(10)        not null    auto_increment    comment '成绩编号',
    4     Stu_ID    int(10)        not null                    comment '学生学号',
    5     C_name     VARCHAR(20)                                comment '科目编号',
    6     Grade    int(10)                                    comment '考试成绩',
    7     primary key(ID),
    8     unique(ID)
    9 )engine=InnoDB charset=utf8;

    # 数据部分

     1 insert into Student values(901, '张老大',     '',  1985,  '计算机系',  '北京市海淀区');
     2 insert into Student values(902, '张老二',     '',  1986,  '中文系',  '北京市昌平区');
     3 insert into Student values(903, '张三',     '',  1990,  '中文系',  '湖南省永州市');
     4 insert into Student values(904, '李四',     '',  1990,  '英语系',  '辽宁省阜新市');
     5 insert into Student values(905, '王五',     '',  1991,  '英语系',  '福建省厦门市');
     6 insert into Student values(906, '王六',     '',  1988,  '计算机系',  '湖南省衡阳市');
     7 
     8 insert into Score values(null, 901,  '计算机', 98);
     9 insert into Score values(null, 901,  '英语', 80);
    10 insert into Score values(null, 902,  '计算机', 65);
    11 insert into Score values(null, 902,  '中文', 88);
    12 insert into Score values(null, 903,  '中文', 95);
    13 insert into Score values(null, 904,  '计算机', 70);
    14 insert into Score values(null, 904,  '英语', 92);
    15 insert into Score values(null, 905,  '英语', 94);
    16 insert into Score values(null, 906,  '计算机', 90);
    17 insert into Score values(null, 906,  '英语', 85);

    #3.查询student表的所有记录

    1 select * from Student;

    #4.查询student表的第2条到4条记录

    1 #limit 1,3--第2条到4条记录
    2 select * from Student limit 1,3;

    #5.从student表查询所有学生的学号(id)、姓名(name)和院系(department)的信息

    1 select `id`,`name`,`department` from Student;

    #6.从student表中查询计算机系和英语系的学生的信息

    1 select * from Student where `department` in ('计算机系','英语系');

    #7.从student表中查询年龄18~22岁的学生信息

    1 select * from Student where `Birth`<='1995' and `Birth`>='1991';
    2 select id,`name`,sex,(2013-birth) AS age,department,address from Student where (2013-birth) between 18 and 22;
    3 #select id,(date_format(from_days(to_days(now()) - to_days(birth)),'%Y') + 0) as 年龄 from Student;

    #8.从student表中查询每个院系有多少人

    select `department`院系, count(`id`)总人数 from Student group by `department`; 

    #9.从score表中查询每个科目的最高分

    select `C_name`科目, max(`Grade`)最高分 from Score group by `C_name`;

    #10.查询李四的考试科目(c_name)和考试成绩(grade)

    1 select `Name`,`C_name`, `Grade` from Score sc, Student st where sc.Stu_id=st.`Id` and st.`Name`='李四';
    2 #select`C_name`, `Grade` from Score where Stu_id=(select id from Student where `name`='李四');

    #11.用连接的方式查询所有学生的信息和考试信息

    1 /*select * from Student inner join Score
    2 on (Student.`Id`=Score.Stu_id);*/
    3 select student.id,name,sex,birth,department,address,c_name,grade from Student,Score where Student.`Id`=Score.Stu_id;

    #12.计算每个学生的总成绩

    1 #select `Stu_id`,sum(`Grade`) from Score group by `Stu_id`;
    2 select `Stu_id`,`name`,sum(`Grade`) from Student,Score where Student.`Id`=Score.Stu_id group by `Stu_id` ;

    #13.计算每个考试科目的平均成绩

    select `C_name`科目, avg(`Grade`)平均分 from Score group by `C_name`;

    #14.查询计算机成绩低于95的学生信息

    select * from Student where `id` in (select `Stu_id` from Score where `C_name`='计算机' and Grade<95);

    #15.查询同时参加计算机和英语考试的学生的信息

    1 select * from Student where `id` in (select `Stu_id` from Score where `Stu_id` in (select `Stu_id` from Score where `C_name`='计算机') and `C_name`='英语');
    2 /*select a.* from Student a,Score b,Score c
    3 where a.id=b.stu_id and b.c_name='计算机' and a.id=c.stu_id and c.c_name='英语';*/

    #16.将计算机考试成绩按从高到低进行排序

    select * from Score where `C_name`='计算机' order by Grade desc;

    #17.从student表和score表中查询出学生的学号,然后合并查询结果

    1 #union--合并字段,去掉重复
    2 /*select * from Student
    3 left join Score
    4 on(Student.`id`=Score.Stu_id);*/
    5 select id from Student union select stu_id from Score;

    #18.查询姓张或者姓王的同学的姓名、院系和考试科目及成绩

    1 /*select `Name`姓名, Department 院系,C_name 考试科目,Grade 成绩 from Student
    2 left join Score
    3 on(Student.`id`=Score.Stu_id)
    4 where `Name` like '张%' or `Name` like '王%';*/
    5 select `Name`姓名, Department 院系,C_name 考试科目,Grade 成绩 from Student,Score
    6 where (`Name` like '张%' or `Name` like '王%') and Student.`id`=Score.Stu_id;

    #19.查询都是湖南的学生的姓名、年龄、院系和考试科目及成绩

    1 /*select `Name`姓名, Department 院系,C_name 考试科目,Grade 成绩 from Student
    2 left join Score
    3 on(Student.`id`=Score.Stu_id)
    4 where `Address` like '湖南%' ;*/
    5 select `Name`姓名,(select timestampdiff(year,Birth,now())) as 年龄, Department 院系,C_name 考试科目,Grade 成绩 from Student,Score
    6 where `Address` like '湖南%' and Student.`id`=Score.Stu_id;

    #20.统计分数低于60分,60分——70分,70分——80分,大于80分的学生人数。

    1 #select stu_id,count(stu_id) from Score where Grade between 70 and 80 group by stu_id;
    2 select
    3 count(case when Grade<60 then 1 end ) as '60分以下人数',
    4 count(case when Grade>=60 and Grade<70 then 1 end ) as '60~70分人数',
    5 count(case when Grade>=70 and Grade<80 then 1 end ) as '70~80分人数',
    6 count(case when Grade>=80 then 1 end ) as '80分以上人数'
    7 from Score;

    #21.统计平均成绩大于90分的学生,显示学号、姓名、总平均成绩。

    1 select `Stu_id`,`name`,avg(Grade) from Score,Student where Student.`id`=Score.Stu_id group by `Stu_id`,`name` having avg(Grade)>90;
    2 /*SELECT `Stu_id`,`name`,avg(Grade)
    3 FROM Score,Student
    4 WHERE Student.`id`=Score.Stu_id
    5 GROUP BY `Stu_id`,`name`
    6 HAVING AVG(GRADE)>=90;*/
  • 相关阅读:
    apue第16章笔记
    重构与重写
    架构方面的笔记
    多进程失败拉起的demo
    Elasticsearch match_phrase用法
    c++风格
    cocos2d-x 3.2 移植到android
    Mac 下配置 Cocos2d-x 3-x android 的环境
    解决最新版的ADT没有NDK选项的问题
    待飞日记(第六天和第七天)
  • 原文地址:https://www.cnblogs.com/ivy-xu/p/5436814.html
Copyright © 2011-2022 走看看