欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 运维知识 > 数据库 >内容正文

数据库

mysql数据库关联练习_mysql数据库建立数据表的练习(附代码)

发布时间:2025/3/11 数据库 28 豆豆
生活随笔 收集整理的这篇文章主要介绍了 mysql数据库关联练习_mysql数据库建立数据表的练习(附代码) 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

数据库操作和学习并不难,难的是如何在各种实际运用情况下编写SQL语句的实现。这个过程,需要大量的练习,那么从这里开始,我们来讲解实现。

任务概述

具体关系数据库如下:

数据库名:教师数据库

教师表(编号 char(6),姓名,性别,民族,职称,身份证号)

课程表(课号 char(6),名称)

任课表(ID,教师编号,课号,课时数)

用SQL语言实现下列功能的sql语句代码:

(1).创建上述三表的建库、建表代码;

要求使用:主键(教师表.编号,课程表.课号)、外键(任课表.教师编号,任课表.课号)、默认(民族)、非空(民族,姓名)、唯一(身份证号)、检查(性别(男、女)、课时数(0-200)),自动编号(ID)

(2).将下列课程信息添加到课程表的代码

课号      课程名称

100001    SQL Server数据库

100002    数据结构

100003    VB程序设计

修改  课号为100003的课程名称:Visual Basic程序设计

删除  课号为100003的课程信息

(3).写出读取(教师编号,姓名,课号,课程名称,课时数)的代码;

(4). 读取所有代'SQL Server数据库'这门课程的老师姓名的检索代码;

(5). 写出创建[统计课时数]的代码,要求加上别名:输出最大课时数、最低课时数、平均课时的执行代码;

(6).写出创建:计算某教师代课总课时,代码。

执行:计算“郭老师”的总课时。

(7).检索有一门或一门以上课程课时数大于90的所有教师的信息,包括编号、姓名。

(8).建一个规则,并将其绑定到教师表的职称列上,规定取值为('教授','副教授','讲师', '助教')之一。

示例源码如下

#(1)

drop database if exists TeacherDB;

create database TeacherDB default character set utf8 collate

utf8_bin;

use TeacherDB;

create table Teacher(

tid char(6) primary key,

tName varchar(16) not null,

tSex char(2) check(tSex='男' or tSex='女'),

tNation varchar(16) default '汉' not null,

tLevel varchar(16),

tCode varchar(18),

unique(tCode)

);

create table Course(

cid char(6) primary key,

cName varchar(64)

);

create table TeacherCourses(

ID int primary key auto_increment,

tid char(6),

cid char(6),

cCount float check(cCount>=0 and cCount<=200),

foreign key(tid) references Teacher(tid),

foreign key(cid) references Course(cid)

);

insert into Teacher values('t001','郭老师','男',default,'助教','123');

insert into Teacher values('t002','何老师','男',default,'副教授','456');

insert into Teacher values('t003','蒋老师','女','苗','讲师','789');

#(2)

insert into Course values('100001','SQL Server数据库');

insert into Course values('100002','数据结构');

insert into Course values('100003','VB程序设计');

insert into TeacherCourses values(null,'t001','100001',80);

insert into TeacherCourses values(null,'t002','100002',90);

insert into TeacherCourses values(null,'t002','100003',70);

insert into TeacherCourses values(null,'t001','100002',100);

insert into TeacherCourses values(null,'t001','100002',90);

#(3)

select Teacher.tid,tName,Course.cid,cName,cCount from

TeacherCourses,Teacher,Course where

TeacherCourses.tid=Teacher.tid and

TeacherCourses.cid=Course.cid;

#(4)

select tName from Teacher where tid in(

select tid from TeacherCourses where cid in

(select cid from Course where cName='SQL Server数据库'));

#链表思路

select tName from Teacher,Course,TeacherCourses where

TeacherCourses.tid=Teacher.tid and

TeacherCourses.cid=Course.cid and cName='SQL Server数据库';

#(5)

select max(cCount) as 最大课时数,min(cCount) 最小课时数,avg

(cCount) 平均课时数 from TeacherCourses;

#(6)

select sum(cCount) from TeacherCourses where tid=(

select tid from Teacher where tName='郭老师');

#链表思路

select sum(cCount) from Teacher,TeacherCourses where

Teacher.tid=TeacherCourses.tid and tName='郭老师';

#改动:若想获得郭老师分别带了哪些课,然后哪些课的总课时

select cid,sum(cCount) from Teacher,TeacherCourses where

Teacher.tid=TeacherCourses.tid and tName='郭老师' group by cid;

#试一试:若想获得郭老师分别带了哪些课,然后哪些课的课程号、课程名和

总课时

#(7)

select tid,tName from Teacher where tid in(

select tid from TeacherCourses where cCount>90);

#链表思路自己完成

#(8)

alter table Teacher add constraint CK_Teacher_tLevel check

(tLevel in('教授','副教授','讲师','助教'));

发表评论

发表评论电子邮件地址不会被公开。 必填项已用*标注

姓名 *

电子邮件 *

在此浏览器中保存我的名字、电邮和网站。

总结

以上是生活随笔为你收集整理的mysql数据库关联练习_mysql数据库建立数据表的练习(附代码)的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。