微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

数据库表的查询操作实践演练实验三

继前两次的实验,本次实验以熟练掌握利用select语句进行各种查询操作:单表查询、多表连接及查询、嵌套查询、集合查询等,巩固数据库查询操作。
下面就跟着小编一起练习吧!
在实验一创建并插入数据的表(Student, Course,SC,Teacher,TC)的基础上,完成以下操作。
(1)将教师‘罗莉'的名字改为‘罗莉莉'。

代码如下:

(2)将两个同学(数据自己临时设置,用后即删除)的两门课程的成绩以运行sql程序文件的形式插入score表中。该题用以验证、理解和掌握关系模型的完整性规则;
插入:
代码如下:
score(sno,cno,grade) values ('04261006','C003','64')
insert into score(sno,grade) values('04261007','C004','79')

查询
代码如下:
score where sno=04261006 or sno=04261007;

删除
代码如下:
score where sno=04261006 or sno=04261007;

(3)求每门课的平均成绩,并把结果存入average表(自行设计并创建);
代码如下:
(
cno CHAR(8),
avscore numeric(5,2),
constraint a1 primary key (cno),
constraint a2 foreign key (cno) references Course(cno),
)
insert into average(cno,avscore)
select distinct cno,avg(grade) from score group by cno

(4)将学生“马丽”的年龄改为24;
代码如下:

(5)将所有学生的szipcode属性列值填补上;
代码如下:

(6)将average表中的所有课程的平均成绩置零;
代码如下:
score='0'

(7)删除average表中的课程号为‘C007'的平均成绩记录;
代码如下:

(8)删除所有average表中平均成绩记录;
代码如下:

(9)建立一个临时学生信息表(tstudent),删除该表中的学号含‘101'的所有学生记录。
代码如下:
Delete from tstudent where Sno like '001011%';

(10)查询全体学生的学号与姓名;
代码如下:

(11)查询全体学生的学号、姓名、所属系;
代码如下:

(12)查询全体学生的详细记录;
代码如下:

(13)查询全体学生的姓名及其年龄;
代码如下:

(14)查询全体学生的姓名、出生年份;
代码如下:

(15)查询所有修过课的学生的学号;
代码如下:
distinct sno from score
select distinct student.sno from Student,score where Student.sno=score.sno and score.grade>0 ;

(16)查询“计算机系”班全体学生名单;
代码如下:

(17)查询查询所有年龄在23岁以下的学生姓名及其年龄;
代码如下:

(18)查询考试成绩有不及格的学生的学号;
代码如下:
distinct sno from score where grade<60;

(19)查询年龄在20至22岁之间的学生姓名、系和年龄;
代码如下:

(20)查询年龄不在20至22岁之间的学生姓名、系和年龄;
代码如下:

(21)查询“计算机系”和“电商系”的学生的姓名;
代码如下:

(22)查询既不是“计11”也不是“计61”班的学生的姓名和班级信息;
代码如下:
(23)查询学号为“04262002”的学生的详细情况;
[code]select student.sno,sname,ssex,2014-year(sbirth),sclass,grade from Student,score where Student.sno=score.sno and Student.sno='04262002';

(24)查询学号以“04262”打头的学生信息;
代码如下:

(25)查询所有姓“张”学生的学号、姓名、性别、年龄;
代码如下:

(26)查询名字中第二个字有“海”字的学生的学号、姓名、性别、年龄;
代码如下:

(27)查询所有不姓“刘”学生的姓名;
代码如下:

(28)查询课程号以“C”开头的最后两个字母为“05”的课程号和课程名;
代码如下:

(29)某些学生选修某门课程后没有参加考试,所以有选修课记录,但没有考试成绩,试查找缺少考试成绩的学生和相应的课程号;
代码如下:
score where Student.sno=score.sno and grade is NULL;

(30)查找全部有成绩记录的学生学号、课程号;
代码如下:
score where grade is not NULL;

(31)查找“计算机系”年龄在22岁以下的学生学号、姓名;
代码如下:

(32)查找选修了“C001”号课程的学生学号及其成绩,查询结果按分数降序排序;
代码如下:
score where Student.sno=score.sno and cno='C001' order by grade desc;

(33)查询全体学生情况,查询结果按所在系升序排列,对同一系中的学生按年龄降序排列;
代码如下:

(34)查询学生总人数;
代码如下:

(35)查询选修了课程的学生人数;
代码如下:
distinct sno)人数from score;

(36)在所有课程中查询最高分的学生学号和成绩;
代码如下:
score where grade =(select max(grade)from score )

代码如下:
distinct a.* from score a where a.sno IN (select top 1 score.sno from score where score.cno = a.cno order by grade desc)

(37)查询学习“C001”课程的学生最高分数;
代码如下:
score where cno='C001'

(38)计算各个课程号与相应的选课人数;
代码如下:
score group by cno;

(39)查询“计算机系”选修了两门课程以上的学生学号、姓名;
代码如下:
(select Student.sno from Student,score where
sdept='计算机系'and Student.sno=score.sno group by Student.sno having count(cno)>=2);

(40)自然连接student和score表;
代码如下:
score.grade from student,score where student.sno=score.sno;

(41)使用自身连接查询每一门课程的间接先行课(即先行课的先行课)
代码如下:

(42)使用复合条件连接查询选修“c001”号课程且成绩在90分以上的所有同学;
代码如下:
=90;

(43)使用复合条件连接查询每个学生选修的课程名及其成绩;
代码如下:
score,Student where Course.cno=score.cno and student.sno=score.sno;

(44)查询选修了全部课程的学生;
代码如下:
score where Sno=Student.Sno and Cno=Course.Cno))

(45)查询所有选修了C001号课程的学生学号、姓名;
代码如下:
score where student.sno=score.sno and cno='C001';
(46)查询选修了课程C001或C007的学生学号、姓名;
[code]select student.sno,cno from student,score where student.sno=score.sno and cno in ('C001','C007');
[/code]
(47)查询“计算机系”的学生及年龄不大于23岁的学生;
代码如下:

(48)查询既选修了课程C001又选修了课程C007的所有学生学号、姓名;
代码如下:
score where student.sno=score.sno and cno='C001' and student.sno in (select student.sno from student,score where student.sno=score.sno and cno='C007')

(49)查询选修了课程名为“数据库原理”的学生的学号、姓名、性别、年龄;
代码如下:
score.sno and score.cno=Course.cno and cname='数据库原理';

(50)查询其他班中比“计算机系”所有学生年龄都小的学生名单;
代码如下:

(51)查询与“夏天”在同一个系学习的学生学号、姓名、性别、年龄;
代码如下:

(52)建立“计算机系”学生的视图1;
代码如下:
as select sno,sbirth,sclass from student where sclass='13z网络'

(53)建立“计算机系”学生的视图2,并要求进行修改与插入时,仍须保证该视图只有“计算机系”班学生;
代码如下:
as select sno,sclass from student where sclass='13z网络' with check option;

(54)建立“计算机系”选修了“C001”课程的学生的视图,定义视图名为“v_cs_C001_student1”;
代码如下:
as select student.sno,sclass from Student,score where
student.sno=score.sno and sclass='13z网络' and cno='C001';

(55)建立“计算机系”班选修了“C001”课程且成绩在90分以上的学生的视图,定义视图名为“cs_c001_student2”;
代码如下:
as
select student.sno,score where
student.sno=score.sno and cno='C001' and sclass='13z网络'and student.sno in (select student.sno from student,score where student.sno=score.sno and grade>90)

(56)定义一个反映学生年龄的视图,定义视图名为“v_birth_student”;
代码如下:
as
select sno,2014-year(sbirth) age from student

(57)将学生表中所有女生记录定义为一个视图,视图名为“v_female_student”;
代码如下:
as
select * from student where ssex='女';

(58)将学生的学号及其平均成绩定义为一个视图,视图名为“v_average_student”;
代码如下:
as
select sno,avg(grade) avscore from score group by sno;

(59)在“计算机系”学生视图中找出年龄小于22岁的学生;
代码如下:

(60)利用视图查询“计算机系”选修了“C001”课程的学生;
代码如下:

(61)通过(52)中的“计算机系”视图修改某个学生的名字;
代码如下:

(62)通过(53)中的“计算机系”视图,插入一个新学生记录。
代码如下:

(63)通过(53)中的“计算机系”视图,删除一个学生记录。
代码如下:

实验课结束了,相信通过本节课的实践操作,小伙伴们都对数据库表的操作有了更进一步的了解。
以上就是查询数据库表的基本操作,几乎涵盖了各种查询操作所遇到的情况,值得大家亲自操作一下,相信对大家的学习有所帮助。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


SELECT a.*,b.dp_name,c.pa_name,fm_name=(CASE WHEN a.fm_no=&#39;LJCG001H&#39; THEN dbo.ELTPNAME(a.fw_nu) ELSE d.fm_name END),e.fw_state_nm,f.fw_rmk_nm
if not exists(select name from syscolumns where name=&#39;tod_no&#39; and id=object_id(&#39;iebo09d12&#39;)) alter table iebo09d12 add tod_no varchar(
select a.*,pano=a.pa_no,b.pa_name,f.dp_name,e.fw_state_nm,g.fa_name from LJSS007H a (nolock) Left join LJPA002H b (nolock) On a.pa_no =b.pa_no Left jo
要在 SQL Server 2019 中设置定时自动重启,可以使用 Windows 任务计划程序。下面是详细的步骤: 步骤一:创建批处理文件 打开记事本。 输入以下内容: net stop &quot;SQL Server (MSSQLSERVER)&quot; net start &quot;SQ
您收到的错误消息表明数据库 &#39;EastRiver&#39; 的事务日志已满,导致数据库操作失败。要解决这个问题,可以按照以下步骤操作: 1. 备份事务日志首先,备份事务日志以释放空间: BACKUP LOG [EastRiver] TO DISK = N&#39;C:\Backup\East
首先我需要查询出需要使用SQL Server Profiler跟踪的数据库标识ID,若不知道怎么查询数据库的标识ID, 打开SQL Server management studio,点击工具。选择SQL Server Profiler。 登录,登录成功后,如果有个默认弹窗,先取消 新建追踪 命名
--最新的解决方法 --先创建用户帐户,不进行授权,然后通过下面的SQL语句将该用户帐户关联至对应的数据库用户。优点是避免了重新授权的操作。 USE tempdbEXEC sp_change_users_login &#39;Update_One&#39;, &#39;iemis&#39;, &#3
命令: ALTER TABLE 表名 add 列名 数据类型 default 默认值 not null 例如: ALTER TABLE LJEL005H add el_req int default 15 not null
declare @i int set @i=340 while @i&lt;415 begin set @i=@iʱ insert into LJWK007H select &#39;2024&#39;,&#39;28&#39;,&#39;9110&#39;,&#39;3PTSD621000000