主键外键练习

use xinxi2
go

--创建院系表
create table xiyuan
(
pcode int primary key not null,--主键
pname varchar(20),
pteacher varchar(20),
ptel     varchar(20),
)
--创建可选修课程表
create table kecheng
(
kcode int primary key not null,--主键
kname varchar(20),
kteacher varchar(20),
ktel     varchar(20),
)

--创建学生列表

create table xuesheng
(
xcode int primary key identity(001,1) not null,--主键
xname varchar(20),
xsex   char(10),
xpart   int,--外键
xlesson int,--外键
)

--输入院系信息
insert into xiyuan values(101,‘计算机系‘,‘王法‘,‘12345678‘)
insert into xiyuan values(102,‘外语系‘,‘张能‘,‘23456789‘)
insert into xiyuan values(103,‘数学系‘,‘赵强‘,‘34567890‘)
insert into xiyuan values(104,‘历史系‘,‘钱进‘,‘12345678901‘)

--输入选修课数据
insert into kecheng values(201,‘计算机工程‘,‘王强‘,‘123123123‘)
insert into kecheng values(202,‘国防安全‘,‘刘发‘,‘321321321‘)
insert into kecheng values(203,‘文艺鉴赏‘,‘齐值‘,‘456456456‘)
insert into kecheng values(204,‘科技创新‘,‘李志‘,‘654654654‘)
insert into kecheng values(205,‘旅游管理‘,‘王明‘,‘258258258‘)

--输入学生数据
insert into xuesheng values(‘张三‘,‘男‘,101,201)
insert into xuesheng values(‘李四‘,‘男‘,101,202)
insert into xuesheng values(‘王五‘,‘男‘,101,203)
insert into xuesheng values(‘赵六‘,‘男‘,101,204)
insert into xuesheng values(‘张七‘,‘男‘,101,205)
insert into xuesheng values(‘李五‘,‘男‘,101,202)
insert into xuesheng values(‘王五‘,‘男‘,101,203)
insert into xuesheng values(‘赵丽‘,‘女‘,101,205)

insert into xuesheng values(‘赵颖‘,‘女‘,102,204)
insert into xuesheng values(‘张丽丽‘,‘女‘,102,201)
insert into xuesheng values(‘李莉‘,‘女‘,102,201)
insert into xuesheng values(‘王器‘,‘男‘,102,203)
insert into xuesheng values(‘王丽‘,‘女‘,102,205)

insert into xuesheng values(‘张甜甜‘,‘女‘,103,201)
insert into xuesheng values(‘任盈盈‘,‘女‘,103,203)
insert into xuesheng values(‘周芷若‘,‘女‘,103,205)

insert into xuesheng values(‘李莫愁‘,‘女‘,104,201)
insert into xuesheng values(‘黄蓉‘,‘女‘,104,202)
insert into xuesheng values(‘小龙女‘,‘女‘,104,202)
insert into xuesheng values(‘林胡冲‘,‘男‘,104,203)
insert into xuesheng values(‘林平之‘,‘男‘,104,205)

go
select * from xiyuan
select * from kecheng
select * from xuesheng

--查看选修人数最多的课程的名称
select kname from kecheng where kcode=
(select top 1 xlesson from xuesheng group by xlesson order by COUNT(*)desc )

--查看男生选修 女生选修课程最多课程的详细信息
select xlesson,COUNT(*) from xuesheng where xsex=‘男‘ group by xlesson
select xlesson,COUNT(*) from xuesheng where xsex=‘男‘ group by xlesson order by COUNT(*)desc
select top 1 xlesson,COUNT(*) from xuesheng where xsex=‘男‘ group by xlesson order by COUNT(*)desc
select top 1 xlesson from xuesheng where xsex =‘男‘ group by xlesson order by COUNT(xlesson)desc
select * from kecheng where kcode=(select top 1 xlesson from xuesheng where xsex =‘男‘ group by xlesson order by COUNT(*)desc)

--查看计算机系人数
select xsex,COUNT(*) from xuesheng where xpart=(select pcode from xiyuan where pname=‘计算机系‘) group by xsex

--查看计算机系男生,女生人数
select COUNT(*) from xuesheng where xpart=(select pcode from xiyuan where pname=‘计算机系‘)and xsex=‘男‘

--5查看哪个系院的男生最多、女生最多
select pname from xiyuan where pcode=
(select top 1 xpart from xuesheng  where xsex=‘男‘group by xpart  order by COUNT(*) desc)

select pname from xiyuan where pcode=
(select top 1 xpart from xuesheng where xsex=‘女‘ group by xpart order by COUNT(*) desc)
--6、查看王强老师的课程有多少人选修
select COUNT(*) from xuesheng where xlesson=
(select kcode from kecheng where kteacher=‘王强‘)

--7、查看张丽丽同学的系院的电话
select ptel from xiyuan where pcode=
(select xpart from xuesheng where xname=‘张丽丽‘)

--8、查看周芷若同学的选修课程任课老师的名字及联系方式
select kteacher,ktel from kecheng where kcode=
(select xlesson from xuesheng where xname=‘周芷若‘)
时间: 2024-11-05 06:07:50

主键外键练习的相关文章

数据库系统基础笔记(3)--主键/外键 索引

本文转载自:http://www.cnblogs.com/longyi1234/archive/2010/03/24/1693738.html 作者:蔚蓝色的天空 一.什么是主键.外键 关系型数据库中的一条记录中有若干个属性,若其中某一个属性组(注意是组)能唯一标识一条记录,该属性组就可以成为一个主键 比如 :  学生表 (学号,姓名,性别,班级)  其中每个学生的学号是唯一的,学号就是一个主键  课程表(课程编号,课程名,学分)  其中课程编号是唯一的,课程编号就是一个主键  成绩表(学号,课

SQL主键&外键

SQL的主键和外键约束 SQL的主键和外键的作用: 外键取值规则:空值或参照的主键值. (1)插入非空值时,如果主键表中没有这个值,则不能插入. (2)更新时,不能改为主键表中没有的值. (3)删除主键表记录时,你可以在建外键时选定外键记录一起级联删除还是拒绝删除. (4)更新主键记录时,同样有级联更新和拒绝执行的选择. 简而言之,SQL的主键和外键就是起约束作用. 关系型数据库中的一条记录中有若干个属性,若其中某一个属性组(注意是组)能唯一标识一条记录,该属性组就可以成为一个主键. 比如: 学

数据库主从表、关系;主、外键关系和作用

从数据库是主数据库的备份,当主数据库变化时从数据库要更新,这些数据库软件可以设计更新周期.这是提高信息安全的手段.主从数据库服务器不在一个地理位置上,当发生意外时数据库可以保存.主外键的关系结构:1,一对一,不用引用主外键,把它们放一个表中即可例如:一个学生只能有一个卡号,那么学生跟卡号放在一个表中即可2,一对多,引用主外键,'一'相当于主键,'多'即是引用主键的外键.例如:一个班级可以有多个学生,并且一个学生只能属于一个班级,这就是一对多的关系:3,多对多关系,需要创建一个表,表中需要两个字段

通过 jdbc 分析数据库中的表结构和主键外键

文章转自:http://ivan4126.blog.163.com/blog/static/20949109220137753214811/ 在某项目中用到了 hibernate ,大家都知道 hibernate 是 ORM 框架,他是有能力根据实体生成数据库表的.我们在单元测试的时候用到了 dbUnit ,dbUnit 可以帮助我们在测试前把数据库的测试数据准备好,然后我们就利用现成的数据库环境测试,测试完成后需将数据库中的所有数据清除(为了不影响其他的单元测试),然后接着下一个测试.虽然已经

MySQL主键 外键 索引

一.什么是主键.外键: 关系型数据库中的一条记录中有若干个属性,若其中某一个属性组(注意是组)能唯一标识一条记录,该属性组就可以成为一个主键比如 : 学生表(学号,姓名,性别,班级) 其中每个学生的学号是唯一的,学号就是一个主键 用户表(用户名.密码.登录级别) 其中用户名是唯一的, 用户名就是一个主键 上机记录表(卡号,学号,姓名.序列号) 上机记录表中单一一个属性无法唯一标识一条记录,学号和姓名的组合才可以唯一标识一条记录,所以 学号和姓名的属性组是一个主键 上机记录表中的序列号不是成绩表的

主键外键

主键 外键 唯一键 CHECK约束 主键:是唯一的,不可重复的,它能提高查询效率,但是会减慢新增数据效率 外键:主键是本张表的主键,是唯一且非空的,而外键是另一张表中与这张表的某个字段的类型,字段名相同的字段,一般是用作关联两张或两张以上的数据表时用的. 外间的取值规则:空值或参照的主键值. (1)插入非空值时,如果主键表中没有这个值,则不能插入. (2)更新时,不能改为主键表中没有的值. (3)删除主键表记录时,你可以在建外键时选定外键记录一起级联删除还是拒绝删除.(4)更新主键记录时,同样有

MySQL 主键外键

笛卡儿积 多表查询 ,多个表变成一个表 完整性约束条件primary key    标识该属性为该表的主键,可以唯一的标识对应的元组foreign key    标识该属性为该表的外键,是与之联系的某表的主键not null       标识该属性不能为空unique         标识该属性的值是唯一的auto_increment 标识该属性的值自动增加default        为该属性设置默认值设置从表 外键constraint 外键别名 foreign key(属性1.1, 属性1.

数据库中创建表(包括创建主键,外键,非空列,唯一)

创建表(包括创建主键,外键,非空列,唯一) - PROS - 博客园 http://www.cnblogs.com/CodingArt/articles/1621921.html **************** 创建主键(三种方法) **************** 创建学生表: 第一种: create table student (sno char(5) primary key,/*学号*/ /*可以直接指定主键*/ sname char(20) not null,/*姓名*/ ssex c

聚集索引和取消外键,外键影响在大并发下的性能.删除外键

聚集索引是指数据库表行中数据的物理顺序与键值的逻辑(索引)顺序相同.一个表只能有一个聚集索引,因为一个表的物理顺序只有一种情况,所以,对应的聚集索引只能有一个.如果某索引不是聚集索引,则表中的行物理顺序与索引顺序不匹配,与非聚集索引相同,聚集索引有着更快的检索速度. 不相关的拆离.查询不一定关联的列单独分出一张表. 做对应关联. 外键. 外键约束去掉,锁很多,占用资源.多表关联较多. 列有空值,空值不走索引. 外键是否采用看业务应用场景,以及开发成本的,大致列下什么时候适合,什么时候不适合使用:

SQL主、外键,子查询

主键 数据库主键是指表中一个列或列的组合,其值能唯一地标识表中的每一行.这样的一列或多列称为表的主键,通过它可强制表的实体完整性.当创建或更改表时可通过定义 PRIMARY KEY约束来创建主键.一个表只能有一个 PRIMARY KEY 约束,而且 PRIMARY KEY 约束中的列不能接受空值.由于 PRIMARY KEY 约束确保唯一数据,所以经常用来定义标识列. 主键的作用 主键的主要作用如下: (1)保证实体的完整性: (2)加快数据库的操作速度: (3) 在表中添加新记录时,数据库会自