• 数据库SQL练习(一):数据查询


      先创建以下3张基本表

    1、学生信息表(Student):

    2、课程表(Course):

     3、成绩表(Score):

     4、 将下列数据输入各个表中

     

     

    建表SQL:

    CREATE DATABASE Studentdb;
    //学生信息表
    CREATE TABLE Student (
    Sno char(4) not null PRIMARY KEY,
    Sname varchar(8) not null,
    Sgender enum ('男','女'),
    Sbirth date,
    Saddr varchar(50),
    Sheight decimal(3,2),
    Memo text
    ) character set utf8;
    
    //课程表
    CREATE TABLE Course(
    Cno char(4) not null,
    Cname varchar(50) not null,
    Ccredit int 
    )character set utf8;
    
    //成绩表
    CREATE TABLE Score (
    Sno char(4) not null,
    Cno char(4) not null,
    Cscore decimal(3,1)
    )character set utf8; 
    
    //插入学生信息表
    INSERT INTO Student(Sno,Sname,Sgender,Sbirth,Saddr,Sheight) values 
    (0001,'刘一平','男','1990-10-1','温州市环城西路201号','1.78'),
    (0002,'张得民','男','1990-12-2','杭州市下沙路22号','1.65'),
    (0003,'马东','男','1990-7-4','宁波市中山北道20号','1.71'),
    (0004,'肖海燕','女','1990-3-15','温州市越秀北路43号','1.65'),
    (0005,'张民华','女','1991-5-15','宁波市艮山路7号','1.63'); 
    
    //插入课程信息
    INSERT INTO Course values 
    (0001,'计算机基础','2'),
    (0002,'管理学原理','3'),
    (0003,'数据库技术','3'),
    (0004,'项目管理','2'),
    (0005,'毕业论文','10'); 
    
    //插入学生成绩信息
    INSERT INTO Score values
    (0001,0001,80.0), 
    (0001,0002,90.0),
    (0001,0003,70.0),
    (0001,0004,85.0),
    (0002,0001,78.0),
    (0002,0002,NULL),
    (0002,0003,77.0),
    (0002,0004,67.0),
    (0003,0001,66.0), 
    (0003,0002,76.0),
    (0003,0003,NULL),
    (0003,0004,73.0);
    

      

    熟练度练习:

    1、使用SQL语句修改学生信息表(Student)中字段属性如下:姓名 varchar 20 N    

    ALTER table Student MODIFY Sname varchar(20) not null;
    

    2、使用SQL语句删除学生信息表(Student)中“备注”字段

    ALTER table Student drop Memo;
    

    3、查询全体学生的详细记录

    SELECT * FROM Student;
    

    4、查询学生信息表中学生的姓名和地址信息

    SELECT Sname,Saddr FROM Student;
    

    5、查询学生信息表中“刘”姓学生的信息

    SELECT * FROM Student where Sname LIKE '刘%';
    

    6、查询学生信息表中姓名含“民”的学生的信息

    SELECT * FROM Student where Sname LIKE '%民%'; 
    

    7、查询所有身高1.75以上的男学生的学号和姓名

    SELECT Sno,Sname FROM Student where Sgender='男' and Sheight>1.75;
    

    8、查询所有来自“宁波”的学生姓名、性别和年龄

    SELECT Sname,Sgender,2020-YEAR(Sbirth) as Sage from Student where Saddr LIKE '%宁波%';
    

    9、查询没有考试成绩的学生学号和课程编号

    SELECT Sno,Cno from Score where Cscore is NULL;
    

    10、查询所有参加过考试的学生学号

    SELECT DISTINCT(Sno) from Score where Cscore is not null;
    

    11、查询所有学分不小于3的课程名

    SELECT Cname from Course where Ccredit>=3;
    

    12、查询学分在1~5范围内的课程编号和课程名

    SELECT Cno,Cname FROM Course where Ccredit BETWEEN 1 AND 5;
    //
    SELECT Cno,Cname FROM Course where Ccredit >=1 and Ccredit <=5;
    

    13、查询“数据库技术”课程的信息

    SELECT * FROM Course where Cname='数据库技术';
    

    14、计算“0003”号课程中所有参加过考试的学生平均分

    SELECT AVG(Cscore) FROM Score where Cno=0003;
    

    15、查询选修“0002”号课程的学生的成绩最高分

    SELECT MAX(Cscore) FROM Score where Cno=0002;
    

    16、统计参加“0001”号课程考试的学生人数

    SELECT count(*) FROM Score Where Cno=0001;
    

    17、查询每个学生及其选修课程的情况(包括没有选修课程的学生)

    SELECT * FROM Student LEFT OUTER JOIN Score ON (Student.Sno=Score.Sno);  #LEFT OUTER JOIN=LEFT JOIN
    

    18、查询每门选修课以及选修该课程的学生信息

    SELECT Course.Cname,Student.* FROM Student,Course where Student.Sno=Course.Cno;

      

      

      

     

      

      

      

      

      

      

      

      

      

      

      

      

     

  • 相关阅读:
    【linux]】lighttpd的日志格式
    【vi】awk为指定行的指定字段添加一个单词
    【Android】命令行操作-启动应用程序
    CCS设置第一个li的元素与其他li样式不同
    nginx+tomcat 下POST响应参数过大无法显示完整及文件下载服务遇到过大文件无法下载解决办法
    有重复行,查询时只保留最新一行的sql
    Android定时执行和停止某任务
    MySQL每天自动增加分区
    <html:option获取文本值
    easyui datagrid 增删改查示例
  • 原文地址:https://www.cnblogs.com/python-wen/p/12294491.html
Copyright © 2020-2023  润新知