`

sql 语句练习

阅读更多

 

CREATE TABLE student

(

       stu_id NUMBER,

       stu_name NVARCHAR2(20),

       stu_age NUMBER(3) DEFAULT 15,

       stu_sex NUMBER(1),

       CONSTRAINT PK_stu_id PRIMARY KEY (stu_id)

);

 

COMMENT ON TABLE student IS '学员';

COMMENT ON COLUMN student.stu_id IS '主键';

 

CREATE TABLE teacher

(

       tea_id  NUMBER,

       tea_name NVARCHAR2(20),

       CONSTRAINT PK_teacher_tea_id  PRIMARY KEY (tea_id),

       CONSTRAINT UQ_tea_name unique (tea_name) 

);

 

CREATE TABLE course

(

       cou_id NUMBER,

       cou_name NVARCHAR2(20),

       cou_tea_id NUMBER,

       CONSTRAINT PK_course PRIMARY KEY (cou_id)

);

 

CREATE TABLE score

(

       stu_id NUMBER,

       cou_id NUMBER,

       score VARCHAR2(50)

);

 

CREATE SEQUENCE seq_stu_id START WITH 1 INCREMENT BY 1 NOMAXVALUE;

CREATE SEQUENCE seq_tea_id START WITH 1 INCREMENT BY 1 NOMAXVALUE;

CREATE SEQUENCE seq_cou_id START WITH 1 INCREMENT BY 1 NOMAXVALUE;

 

ALTER TABLE course ADD CONSTRAINT FK_course_tea_id 

FOREIGN KEY (cou_tea_id) REFERENCES teacher(tea_id) ;

ALTER TABLE score ADD CONSTRAINT FK_score_stu_id 

FOREIGN KEY (stu_id) REFERENCES student(stu_id) ;

ALTER TABLE score ADD CONSTRAINT FK_score_cou_id 

FOREIGN KEY (cou_id) REFERENCES course(cou_id) ;

 

INSERT INTO student(stu_id,stu_name,stu_age,stu_sex)

VALUES (seq_stu_id.nextval,'李红',17,0);

INSERT INTO student(stu_id,stu_name,stu_age,stu_sex)

VALUES (seq_stu_id.nextval,'王米',17,0);

INSERT INTO student(stu_id,stu_name,stu_age,stu_sex)

VALUES (seq_stu_id.nextval,'戴小凤',19,0);

INSERT INTO student(stu_id,stu_name,stu_age,stu_sex)

VALUES (seq_stu_id.nextval,'李小凤',17,0);

INSERT INTO student(stu_id,stu_name,stu_age,stu_sex)

VALUES (seq_stu_id.nextval,'陈红',18,0);

INSERT INTO student(stu_id,stu_name,stu_age,stu_sex)

VALUES (seq_stu_id.nextval,'张喜',17,1);

INSERT INTO student(stu_id,stu_name,stu_age,stu_sex)

VALUES (seq_stu_id.nextval,'李刚',16,1);

INSERT INTO student(stu_id,stu_name,stu_age,stu_sex)

VALUES (seq_stu_id.nextval,'张正峰',16,1);

INSERT INTO student(stu_id,stu_name,stu_age,stu_sex)

VALUES (seq_stu_id.nextval,'王君',16,1);

INSERT INTO student(stu_id,stu_name,stu_age,stu_sex)

VALUES (seq_stu_id.nextval,'吴越',17,1);

 

INSERT INTO teacher (tea_id,tea_name)

VALUES (seq_tea_id.nextval,'李果');

INSERT INTO teacher (tea_id,tea_name)

VALUES (seq_tea_id.nextval,'毛勇军');

INSERT INTO teacher (tea_id,tea_name)

VALUES (seq_tea_id.nextval,'范君蒲');

INSERT INTO teacher (tea_id,tea_name)

VALUES (seq_tea_id.nextval,'卢君红');

 

 

INSERT INTO course(cou_id,cou_name,cou_tea_id)

VALUES (seq_cou_id.nextval,'数学',2);

INSERT INTO course(cou_id,cou_name,cou_tea_id)

VALUES (seq_cou_id.nextval,'历史',3);

INSERT INTO course(cou_id,cou_name,cou_tea_id)

VALUES (seq_cou_id.nextval,'语文',1);

INSERT INTO course(cou_id,cou_name,cou_tea_id)

VALUES (seq_cou_id.nextval,'英语',4);

 

INSERT INTO score(stu_id,cou_id,score)

VALUES (1,3,77);

INSERT INTO score(stu_id,cou_id,score)

VALUES (2,1,78);

INSERT INTO score(stu_id,cou_id,score)

VALUES (2,2,67);

INSERT INTO score(stu_id,cou_id,score)

VALUES (2,3,67);

INSERT INTO score(stu_id,cou_id,score)

VALUES (2,4,55);

INSERT INTO score(stu_id,cou_id,score)

VALUES (3,1,67);

INSERT INTO score(stu_id,cou_id,score)

VALUES (3,2,80);

INSERT INTO score(stu_id,cou_id,score)

VALUES (3,4,66);

INSERT INTO score(stu_id,cou_id,score)

VALUES (4,1,67);

INSERT INTO score(stu_id,cou_id,score)

VALUES (4,2,55);

INSERT INTO score(stu_id,cou_id,score)

VALUES (4,3,78);

INSERT INTO score(stu_id,cou_id,score)

VALUES (4,4,89);

INSERT INTO score(stu_id,cou_id,score)

VALUES (5,1,62);

INSERT INTO score(stu_id,cou_id,score)

VALUES (5,2,67);

INSERT INTO score(stu_id,cou_id,score)

VALUES (5,4,57);

INSERT INTO score(stu_id,cou_id,score)

VALUES (6,1,76);

INSERT INTO score(stu_id,cou_id,score)

VALUES (6,2,45);

INSERT INTO score(stu_id,cou_id,score)

VALUES (6,3,87);

INSERT INTO score(stu_id,cou_id,score)

VALUES (6,4,56);

INSERT INTO score(stu_id,cou_id,score)

VALUES (7,1,67);

INSERT INTO score(stu_id,cou_id,score)

VALUES (7,2,73);

INSERT INTO score(stu_id,cou_id,score)

VALUES (7,3,55);

INSERT INTO score(stu_id,cou_id,score)

VALUES (8,1,67);

INSERT INTO score(stu_id,cou_id,score)

VALUES (8,2,49);

INSERT INTO score(stu_id,cou_id,score)

VALUES (8,3,56);

INSERT INTO score(stu_id,cou_id,score)

VALUES (8,4,75);

INSERT INTO score(stu_id,cou_id,score)

VALUES (9,1,58);

INSERT INTO score(stu_id,cou_id,score)

VALUES (9,2,66);

INSERT INTO score(stu_id,cou_id,score)

VALUES (9,3,78);

INSERT INTO score(stu_id,cou_id,score)

VALUES (9,4,59);

INSERT INTO score(stu_id,cou_id,score)

VALUES (10,1,48);

INSERT INTO score(stu_id,cou_id,score)

VALUES (10,2,77);

INSERT INTO score(stu_id,cou_id,score)

VALUES (10,3,78);

INSERT INTO score(stu_id,cou_id,score)

VALUES (10,4,64);

 

数据库有以下几表:

student 学员表

列名

数据类型

含义

stu_id

int

主键,标识列

stu_name

nvarchar(20)

性名

stu_age

int

年龄,默认15

stu_sex

bit

姓别,1男,0

 

teacher 教师表

列名

数据类型

含义

tea_id

int

主键,标识列

tea_name

nvarchar(20)

教师名,唯一

 

course 课程项

列名

数据类型

含义

cou_id

int

主键

cou_name

nvarchar(20)

课程名

cou_tea_id

int

外键,教师

score 成绩表

列名

数据类型

含义

stu_id

int

外键,学员

cou_id

int

外键,课程

score

varchar(50)

分数

1. 完成以下查询功能,每个功能只写一条SQL命令
查询“1”课程比“2”课程成绩高的所有学生的学号;
select stu_id from(select s1.stu_id,s1.score c1,s2.score c2,s3.score c3 from score s1,score s2,score s3 where s1.stu_id=s2.stu_id and s2.stu_id=s3.stu_id and s1.cou_id=1 and s2.cou_id=2 and s3.cou_id=3)where c1>c2

select a.stu_id,a.score,b.score from (select * from score sc where sc.cou_id=1) a ,(select * from score sc where sc.cou_id=2) b where a.stu_id=b.stu_id and a.score>b.score
2. 查询平均成绩大于70分的同学的学号和平均成绩;
select sc.stu_id,avg(sc.score) from score sc group by sc.stu_id having avg(sc.score)>70
3. 查询所有同学的学号、姓名、参考课数、总成绩;

select s.stu_id,s.stu_name,count(sc.cou_id),sum(sc.score) from score sc ,student s,course c where sc.stu_id=s.stu_id and sc.cou_id=c.cou_id group by s.stu_id,s.stu_name

select s.stu_id,s.stu_name,count(sc.cou_id),sum(sc.score) from student s left join score sc on s.stu_id=sc.stu_id left join course c on c.cou_id=sc.cou_id group by s.stu_id,s.stu_name
4. 查询没学过“李果”老师课的同学的学号、姓名;
select s.stu_id from student s where s.stu_id not in(select stu_id from teacher t left join course c on t.tea_id=c.cou_tea_id left join score sc on sc.cou_id=c.cou_id where tea_name='李果')
5. 查询学过“1”并且也学过编号“2”课程的同学的学号、姓名;
select * from student s where s.stu_id in(select a.stu_id from score a,score b where a.stu_id=b.stu_id and a.cou_id=1 and b.cou_id=2)

select s.* from score a join score b on a.stu_id=b.stu_id join student s on s.stu_id=a.stu_id where a.cou_id=1 and b.cou_id=2

select * from student s where s.stu_id in(select sc.stu_id from score sc,course c where sc.cou_id=1 and c.cou_id=2)
6. 查询学过“李果”老师所教的所有课的同学的学号、姓名;
select s.stu_id,s.stu_name from student s where s.stu_id in(select sc.stu_id from teacher t,course c,score sc where t.tea_id=c.cou_tea_id and sc.cou_id=c.cou_id and t.tea_name='李果'
7. 查询所有课程成绩小于60分的同学的学号、姓名;
select * from student s where s.stu_id not in(select distinct sc.stu_id from score sc where sc.score>=60)
8. 查询没有学全所有课的同学的学号、姓名
select s.stu_id,s.stu_name from student s where s.stu_id in(select sc.stu_id from score sc group by sc.stu_id having count(sc.cou_id)<(select count(c.cou_id) from course c))
9. 查询至少有一门课与学号为“1”的同学所学相同的同学的学号和姓名;
select s.stu_id,s.stu_name from student s where s.stu_id!=1 and s.stu_id in (select distinct s.stu_id from score s where s.cou_id in(select sc.cou_id from score sc where sc.stu_id=1))

select * from student s,(select a.stu_id from score a,(select * from score sc where sc.stu_id=1) b where a.cou_id=b.cou_id) h where s.stu_id=h.stu_id and s.stu_id!=1

select s.stu_id,s.stu_name from score sc left join student s on s.stu_id=sc.stu_id where sc.stu_id!=1 and sc.cou_id in(select a.cou_id from score a where a.stu_id=1)

 

分享到:
评论

相关推荐

    MySQL SQL语句练习题及答案

    MySQL SQL语句练习题及答案 本资源提供了 MySQL SQL 语句的练习题及答案,涵盖了创建表、插入数据、删除数据、更新数据、查询数据等多方面的知识点。 一、创建表 在 MySQL 中,创建表使用 CREATE TABLE 语句。...

    数据库sql语句练习

    数据库SQL语句练习 本资源旨在通过若干SQL语句练习,帮助读者更好地理解数据库的各项数据操作。下面是相关知识点的详细解释: 1. 关系代数和SQL语言查询 在关系代数和SQL语言中,查询至少选修了一门其直接先行课...

    sql语句练习题(带答案版本)

    这是带答案的sql语句练习这是带答案的sql语句练习这是带答案的sql语句练习这是带答案的sql语句练习这是带答案的sql语句练习这是带答案的sql语句练习这是带答案的sql语句练习这是带答案的sql语句练习

    经典的SQL语句练习

    经典的SQL语句练习

    SQL语句练习题及答案

    ### SQL语句强化练习知识点详解 #### 一、简单查询 **知识点1:查询所有记录** - **描述**: 使用 `SELECT * FROM 表名` 可以查询表中的所有记录。 - **示例**: 查询所有学生的信息。 - **SQL语句**: `SELECT * ...

    SQL语句练习题

    SQL 语句练习题 本节课练习题目涵盖了 SQL 语句的各种知识点,旨在考察学生对 SQL 语句的掌握程度。练习题目包括关系运算、定义表操作、查询语句操作、表数据操作、视图操作、授权操作、索引操作、匹配操作和触发器...

    SQL语句练习大全

    DDL用来创建数据库中的各种对象,包括数据库模式、表、视图、索引、同义词、聚簇等,它的基本语句有:CREATE DATABASE、CREATE TABLE、CREATE VIEW、CREATE INDEX等。 (4)数据控制语言(DCL) DCL用来授予或回收...

    SQL语句练习及答案

    根据给定文件中的标题“SQL语句练习及答案”与描述“一个非常适合在笔试前看的SQL练习题。也可在在平时作为SQL语言练习题来使用”,我们可以看出这份材料主要包含了一系列针对SQL语言的练习题及其解答,适用于考前...

    3-SQL.rar_sql语句练习

    SQL语句练习、学生可以查看自学SQL相关语句的练习

    全国计算机二级(vf)sql语句练习

    全国计算机二级(vf)sql语句练习 本资源提供了多种SQL语句练习题,涵盖了基本的数据查询、数据归纳、数据排序、数据筛选等操作。每个练习题都提供了明确的需求和相应的解决方案,帮助学生更好地掌握SQL语句的使用...

    SQL语句练习提高

    【SQL语句练习提高】 在SQL中,查询和操作数据是其核心功能。以下通过给出的练习题目,我们将深入理解SQL的基本句式和用法。 28. 题目要求从`employee`表中抽取部门名称(depart_name),计算平均工资(avg(wage)...

    SQL语句练习系统

    SQL语句练习系统是一款专为学习和提升SQL技能设计的应用,它提供了丰富的练习题和实例,帮助用户深入理解和掌握SQL语言。SQL(Structured Query Language),结构化查询语言,是用于管理关系数据库的标准语言,广泛...

    数据库SQL语句练习

    在这个"数据库SQL语句练习"中,我们可以通过一系列的练习题和PPT讲解来深入理解SQL的基础概念和实际应用。以下是对这些知识点的详细阐述: 1. **SQL简介**:SQL,全称Structured Query Language,即结构化查询语言...

    sql语句练习题单表+多表各四套

    "sql语句练习题单表+多表各四套"提供了一套全面的练习资源,旨在帮助你提升SQL技能,特别是针对MySQL数据库的使用。这个资源包含了四组单表练习题和四组多表练习题,这些题目设计得既实用又具有挑战性,能够让你在...

    SQL语句练习册

    《SQL语句练习册》是一本专为程序员设计的实用教程,旨在帮助他们巩固和提升SQL语言技能。SQL,全称Structured Query Language,是用于管理关系数据库的强大工具,广泛应用于数据查询、更新、插入和删除等操作。对于...

    经典sql语句练习

    "经典sql语句练习"这个压缩包提供了一套适合初学者的基础练习题,可以帮助你更好地理解和运用SQL语言。下面,我们将深入探讨SQL的基本概念、常用语句以及它们在实际中的应用。 SQL,全称为结构化查询语言,是用于...

    oracle经典sql语句练习题和答案

    本资源“oracle经典sql语句练习题和答案”提供了在scott用户下的两个典型表格——emp(员工表)和dept(部门表)的实践操作题目,旨在帮助用户提升SQL技能。 首先,让我们来了解这两个核心表格。`emp`表通常包含...

    Oracle的sql语句练习题及参考答案

    在“Oracle的SQL语句练习题及参考答案”中,我们很可能会遇到各种与`SELECT`语句相关的练习,这是SQL中最基础且最重要的部分。 `SELECT`语句用于从数据库中检索数据,其基本语法结构如下: ```sql SELECT column1,...

    SQL语句练习--数据库

    ### SQL语句练习知识点解析 #### 一、创建数据库与数据表 1. **创建数据库:** - **SQL语句:** `CREATE DATABASE student;` - **知识点解析:** 这条命令用于创建一个新的数据库`student`。在创建数据库时,...

    Orcale的SQL语句练习.zip

    本压缩包中的"Orcale的SQL语句练习.zip"包含了两个SQL脚本文件——SQL_Test.sql和SQL_Test_02.sql,主要是为了帮助学习者熟悉和提高在Oracle环境下使用SQL的能力。以下是针对这些文件中可能涉及的SQL知识点的详细...

Global site tag (gtag.js) - Google Analytics