zoukankan      html  css  js  c++  java
  • 数据库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;

      

      

      

     

      

      

      

      

      

      

      

      

      

      

      

      

     

  • 相关阅读:
    NOI2010 能量采集
    NOI2011 兔兔与蛋蛋游戏
    动态规划——min/max的单调性优化总结
    NOI2011 NOI嘉年华
    NOI2011 阿狸的打字机
    NOI2011 智能车比赛
    NOI2011 兔农
    NOI2012 魔幻棋盘
    NOI2012 美食节
    NOI2012 迷失游乐园
  • 原文地址:https://www.cnblogs.com/python-wen/p/12294491.html
Copyright © 2011-2022 走看看