面试题,有三张表,学生表S,课程表C,学生课程表SC,学生可以选修多门课程,一门课程可能被多个学生选修,通过SC表关联。(1)写出建表以及插入语句;(2)写出SQL语句,查询选修了所有选修课程的学生;(3)写出SQL语句,查询选修了至少2门

 1 CREATE TABLE student(
 2 id INT PRIMARY KEY AUTO_INCREMENT,
 3 stuname VARCHAR(20) NOT NULL
 4 )
 5
 6
 7 CREATE TABLE course(
 8 id INT PRIMARY KEY AUTO_INCREMENT,
 9 couname VARCHAR(20) NOT NULL
10 )
11
12 CREATE TABLE stucou
13 (sid INT REFERENCES student(id),
14 cid INT REFERENCES course(id)
15
16 )
17
18 INSERT INTO student VALUES(1,‘zhangsan‘);
19 INSERT INTO student VALUES(2,‘lsii‘);
20 INSERT INTO student VALUES(3,‘wangwu‘);
21 INSERT INTO student VALUES(4,‘zhaoliu‘);
22
23 INSERT INTO course VALUES(1,‘Java‘);
24 INSERT INTO course VALUES(2,‘C++‘);
25 INSERT INTO course VALUES(3,‘Chinese‘);
26 INSERT INTO course VALUES(4,‘English‘);
27
28 INSERT INTO stucou VALUES(1,1);
29 INSERT INTO stucou VALUES(1,2);
30 INSERT INTO stucou VALUES(1,3);
31 INSERT INTO stucou VALUES(1,4);
32 INSERT INTO stucou VALUES(2,1);
33 INSERT INTO stucou VALUES(2,2);
34 INSERT INTO stucou VALUES(2,3);
35 INSERT INTO stucou VALUES(3,1);
36 INSERT INTO stucou VALUES(3,2);
37 INSERT INTO stucou VALUES(4,3);
38 INSERT INTO stucou VALUES(4,4);
39 -- 查询出选所有课程的学生--
40 SELECT student.id,student.stuname
41 FROM student
42 WHERE student.id IN(
43 SELECT sid
44 FROM stucou
45 GROUP BY sid
46 HAVING COUNT(*)=
47 (SELECT COUNT(*)
48 FROM course)
49 );
50 SELECT COUNT(*)
51 FROM course
52
53 -- 查询出选课数大于2的学生--
54
55 SELECT student.id,student.`stuname`
56 FROM student
57 WHERE student.id IN(
58 SELECT sid
59 FROM stucou
60 GROUP BY sid
61 HAVING COUNT(*)>2
62 )
时间: 2024-10-17 00:35:30

面试题,有三张表,学生表S,课程表C,学生课程表SC,学生可以选修多门课程,一门课程可能被多个学生选修,通过SC表关联。(1)写出建表以及插入语句;(2)写出SQL语句,查询选修了所有选修课程的学生;(3)写出SQL语句,查询选修了至少2门的相关文章

借助hibernate自动建表

? Hibernate的ORM关系映射底层框架,为我们的开发提供了很多便利,可以说是一个非常棒的J2EE框架,我这里也不 切入主题,逆向思维,借助hibernate实现快速开发.前提,打算在项目里使用hibernate框架开发底层.仅此而已. 一般情况下,开始一个项目,首先是系统的分析需求,然后就是设计数据库,然后找个数据库客户端开始建表,建字段这是个 漫长的过程,然后开工.如果使用hibernate框架(我当然非常推荐使用),jdbc有点麻烦,很多重复的体力活,也不易维护 拓展.当然我也不否定

关于MySQL建表对DML的影响【转】

本文来自这里 今天一位同学问到线上曾经碰到过连续建表,导致阻塞普通的insert.update等.不过也没有保留现场.因此有疑问为什么建表会影响DML? 分析          首先这个现象不是在所有场景都会碰到(否则MySQL的用户们早就跳起来了). 一来建表这个操作本身很快,只涉及到写表定义文件和初始化表空间.中间涉及到redo和undo的操作也很少(这里只讨论InnoDB表).因此除非碰到磁盘IO响应不了,否则多数情况下建表操作很快结束,不会"稳定复现" 二来即使由于io原因,建

生成建表脚本up_CreateTable

已经很久没用使用这个脚本了,今天用到,并做修改,增加了生成扩展属性功能. Go if object_ID('[up_CreateTable]') is not null Drop Procedure [up_CreateTable] Go /* 生成建表脚本(V4.0) Andy 2017-3-28 */ Create Proc up_CreateTable ( @objectList nvarchar(max)=null ) as --With ENCRYPTION /* 参数说明: @obj

hive中执行hql或建表语句时,抛出Display all 459 possibilities? (y or n)错误的解决方法

我昨天在hive上建表,一直报Display all 459 possibilities? (y or n) ,之前我以为是建表语句有问题,一直在改语句,后来在网上搜这个错误,原来语句里混杂了Tab缩进,这可能是我使用notepad++的时候打出来的: 解决方案:把它粘到plsql里,将空格和缩进都重新打一遍就好了,在plsql里可以用tab键: 原文地址:https://www.cnblogs.com/xiao02fang/p/10006748.html

点评阿里JAVA手册之MySQL数据库 (建表规约、索引规约、SQL语句、ORM映射)

下载原版阿里JAVA开发手册  [阿里巴巴Java开发手册v1.2.0] 本文主要是对照阿里开发手册,注释自己在工作中运用情况. 本文内容:MySQL数据库 (建表规约.索引规约.SQL语句.ORM映射) 本文难度系数为三星(★★★) 本文为第四篇 第一篇 点评阿里JAVA手册之编程规约(命名风格.常量定义.代码风格.控制语句.注释规约) 第二篇 点评阿里JAVA手册之编程规约(OOP 规约 .集合处理 .并发处理 .其他) 第三篇 点评阿里JAVA手册之异常日志(异常处理 日志规约 ) 第四篇

五、oracle基本建表语句

--创建用户create user han identified by han default tablespaceusers Temporary TABLESPACE Temp;grant connect,resource,dba to han; //授予用户han开发人员的权利 --------------------对表的操作----------------------------创建表create table classes(       id number(9) not null pr

Oracle拉出在sqlserver建表的语句

我们将Oracle数据同步到sqlserver时,是先得在sqlserver端建表的. 复杂的字段我们不同步,就只考虑下面四种数据类型. Oracle到SQLServer做的映射: int -> int number -> decimal(18,6) number(p,s) -> decimal(p,s) date -> datetime varchar2(n) -> nvarchar(n) 下面是从Oracle端执行的plsql脚本. /* 简介:从oracle拉出在mss

ORACLE基本SQL语句-用户及建表篇

一.用户相关SQL语句 /*新建用户*/create user SA identified by 2013; 说明:SA用户名,2013密码 /*授权connect,resource给用户sa*/grant connect,resource to sa; 说明:CONNECT角色: --是授予最终用户的典型权利,最基本的 . ESOURCE 角色: --是授予开发人员的 /*查询所有的用户*/select * from all_users; /*将表STU查询权限授予SA*/GRANT SELE

存储引擎,详细建表语句,数据类型,约束

引擎指的是一个系统的核心部分引擎有不同分类是为了适应不同的使用场景查看mysql支持的所有引擎show engines MRG_MYISAM 是一堆MYISAM表的集合 用于做水平分表,如果一个表中数据量太大 将导致效率降低 水平分表就是把整个大表拆成不同的小表,每一次查询会先判断数据在哪一个表中 然后对应去查找 以此来提高效率垂直分表 当一个表中 字段太多 然而常用的信息就那么一两个 那就可以把不常用字段切到另一个表中 然后建立关联关系 innodb 是最最常用的引擎 因为支持 事务 行锁 外