SELECT DISTINCT SNo -- 去重
FROM SC A
WHERE CNo IN ('001', '002') --选修了二门之一
AND NOT EXISTS ( -- 排除选修了其它课程的人)
SELECT
FROM SC
WHERE SNo = ACNo --该学生
AND CNo NOT IN ('001', '002') --其它课程
)
1、这个“只”字可以很复杂(当且仅当);
略微简单的话,就是选修了二者之五,且没有选修其它课程
2、只需要学号,那从SC表中查询就够了,没有必要关联S表与C表
insert into 表名(字段名逗号隔开(不用写自动增长那列)) values(对应的值也是逗号隔开)
要是每个字段都要插入那就可以写成
insert into 表名 values(顺序写值,每个字段都要写(不包括自动增长列))
into可以省略不写
insert into语句可以有两种编写形式:
1、无需指定要插入数据的列名,只需提供被插入的值即可:
insert into table_name
values (value1,value2,value3,);
2、需要指定列名及被插入的值:
insert into table_name (column1,column2,column3,)
values (value1,value2,value3,);
扩展资料
SQL常用语句
查所有数据库 show databases;
创建数据库 create database db1;
查看数据库 show create database db1;
创建数据库指定字符集 create database db1 character set utf8/gbk
删除数据库 drop database db1;
使用数据库 use db1;
创建表 create table t1(id int,name varchar(10));
查看所有表 show tables;
查看单个表属性 show create table t1;
查看表字段 desc t1;
创建表指定引擎和字符集 create table t1(id int,name varchar(10)) engine=myisam/innodb charset=utf8/gbk;
所有离开了数据结构(表结构)的SQL语句都是白搭!
先假设数据结构为
学生表(学号 主键或设有唯一索引,姓名,性别)
课程表(课程号 主键或设有唯一索引,课程名)
选课表(课程号,学号)-- 字段“课程号”和“学号"设有双字段唯一索引
查询出选修了所有课程的学生的学号、姓名和选修门数:
select a学号,b姓名,acnt as 选修门数 from
(select 学号,count(1) as as cnt from 选课表 group by 学号
having count(1)=(select count(1) from 课程表)) a,
学生表 b where a学号=b学号;
SELECT a编号 FROM(
SELECT 编号,成绩 FROM student WHERE 科目=‘科目一’
)AS a
LEFT JOIN (
SELECT 编号,成绩 FROM student WHERE 科目=‘科目二’
)AS b ON a编号=b编号
WHERE a成绩>b成绩
比如选修课表2列: 学号, 选修课程
select 学号,
count(选修课程)
from 选修课
having count(选修课程) >= 2
group by 学号
use student;
go
1 alter table student alter column 学号 学生编号;
2select from student where 专业=‘计算机’ ;
3 delete from student where 英语成绩 < 60;
4 drop database student;
以上就是关于数据库 关系代数 只选修了001和002号课程的学生学号怎么表示!(S表,C表,SC表)全部的内容,包括:数据库 关系代数 只选修了001和002号课程的学生学号怎么表示!(S表,C表,SC表)、使用SQL语句向表插入一条学生记录:(其中学号的值为自动编号)如何实现、SQL数据库中查询选修了所有课程的学生的学号和姓名及选修门数等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)