【数据库】简单&连接&嵌套查询

简介: 【数据库】简单&连接&嵌套查询



🎇简单查询

--练习简单查询
--select * from classes
--select * from student
--select * from scores
--1.按Schedule表的结构要求用SQL语言创建Schedule表
--字段名 字段描述  数据类型  主键  外键  非空  唯一  自增
--ID        编号      int         是√  否      是        是√  是√
--TeacherID 教师号    char(8)      否     是√   是√   否 否
--CourseID  课程号     char(8)     否     是      是        否 否
--ClassID   班级号 char(8)     否     是      是        否 否
--Semester  开课学期  int         否     否      是        否 否
--SchoolYear  学年  int         否     否      否        否 否
--❗
--use student
--go
--create table schedule
--(
--ID int identity primary key,
--TeacherID char(8) not null references Teacher(TeacherID),
--CourseID char(8) not null references Course(CourseID),
--ClassID char(8) not null references Class(ClassID),
--Semester int not null,
--SchoolYear int
--)
--go
--//
--(2)查询teacher表中所有教师的姓名和年龄。
--select teachername 姓名,year(getdate())-year(birth) 年龄
--from teacher
--//
--(2)查询student表中所有学生的姓名和性别。
--select sname 姓名,ssex 性别 from student
--(3)查询所有系的信息。
--select * from classes
--(4).查询成绩值大于等于60的学生的学号。
--select sno from scores
--where grade>60
--(5)查询软件06101班的女生信息。
--select * from student
--where ssex='女'
--and classno='软件06101'
--(6)查询学生姓名中第2个字为“丽”的学生信息。
--select * from student
--where sname like '_丽%'
--(7)查询student表姓名和性别。
--select sname 姓名,ssex 性别 from student
--(8)查询student表中前5行数据。
--select top 5 * from student
--(9)查询选修了体育课程的学生的学号和成绩,将查询结果按成绩降序排序,成绩相同按学号升序排序。
--select sno 学号,grade 成绩 from scores
--where course='大学英语'
--order by grade desc,sno asc--成绩降序,学号升序
----//(10)查询course表中的最大学分的课程名。(用order by子句)。
--select top 1 with ties coursename
--from course
--order by credit desc//降序
----//
--(11)查询不同系部的班级数。
--select count(classno)
--from classes
--group by dept
----(12)统计各个班的学生人数。
--select classno,count(sno)
--from student
--group by classno
--(13)查询课程Dp030001的最高分、最低分和平均分。
--select max(grade) 最高分,min(grade) 最低分,avg(grade) 平均分
--from scores
--where course='体育'
--(14)查询grade表中选修了3门以上课程的学生学号。
--select studentid
--from grade
--group by studentid
--having count(courseid)>3
----(15)查询不同班级不同性别学生人数。
--select classno,ssex,count(sno) from student
--group by classno,ssex

🎇连接查询

--(1)查询课程名及该课程的得分情况。
--select course 课程名,grade 得分 from scores 
--两张表
--(2)查询学生姓名及其所学生的课程名。
--select sname 姓名,course 课程名 from student join scores on student.sno=scores.sno
------(3)查询和‘程玲’同学同班的学生信息。
--select * from student
--where classno=(select classno from student where sname='程玲')
--一张表
--(4)查询比6320210615 同学成绩高的信息。
--select s1.grade from scores s1 
--join scores s2 on s1.grade>s2.grade
--and s2.sno='6320210615 '
--(5)
--select dept,student.classno,sno,sname,ssex from student join classes on student.classno=classes.classno
--(6)查询既学了了又选修了课程的学生的学号,姓名。
--select student.sno 学号,sname 姓名 from student join scores on student.sno=scores.sno
--where course='大学英语' and course='体育'
--(7) “大学英语(一)”成绩不及格的学生人数是多少?
--select count(student.sno) from student join scores on student.sno=scores.sno
--where course='大学英语' and grade<60
--(8)计算机系的平均成绩为多少?
--select avg(grade) from student 
--join classes on student.classno=classes.classno
--join scores on student.sno=scores.sno
--where dept='计算机系'
--(9)查询全部教师、全部课程的课程安排。
--(10)查询“大学英语”课程前三名的学生学号、姓名和成绩。
--select top 3 with ties 
--student.sno,sname,grade from student join scores on student.sno=scores.sno
--where grade='大学英语'
--order by grade desc--降序

🎇嵌套查询

----(1)嵌套查询 “计算机系”的学生信息。
--select * from student
--where classno in(select classno from classes where dept='计算机系')
--(2)嵌套查询“计算机系”的全部学生信息。
--select * from student
--where classno in(select classno from classes where dept='计算机系')
--(3)嵌套查询xx课程中成绩未达到该门课程平均分的同学信息。
--SELECT *
--FROM grade
--WHERE CourseID = 'Dp010001'
--AND grade <
--  (SELECT AVG(grade)
--  FROM grade
--  WHERE CourseID='Dp010001')
--或者
--select * from student 
--where sno in(select sno from scores where course='大学英语' and
--grade <(select avg(grade) from scores where course='大学英语'
--))
--(4)嵌套查询大学英语课程中最低分的学生信息。
--select * from student where sno in
--(select sno from scores where course='大学英语'
--and grade=(select min(grade) from scores where course='大学英语'))
--(4)嵌套查询Dp010001课程中最低分的学生信息。
--SELECT *
--FROM student
--WHERE StudentID IN
--  (SELECT StudentID
--  FROM grade
--  WHERE CourseID = 'Dp010001'
--    AND grade =
--      (SELECT MIN(grade)
--      FROM grade
--      WHERE CourseID = 'Dp010001'))
--(5)嵌套查询Cs010901班比Cs010902班年龄都大的学生信息。
--SELECT *
--FROM student
--WHERE ClassID='Cs010901'
--AND Birth < ALL
--  (SELECT Birth
--  FROM student
--  WHERE ClassID='Cs010902')
--(6)用带EXISTS子查询选修了Dp010001的学生学号和姓名。
--SELECT StudentID,StudentName
--FROM student
--WHERE EXISTS
--  (SELECT *
--  FROM grade 
--  WHERE CourseID='Dp010001'
--  AND student.StudentID=grade.StudentID)
--(7)查询选修了Dp010001课程而没有选修Dp010002号课程的学生学号。
--SELECT StudentID
--FROM  grade 
--WHERE CourseID='Dp010001' 
--AND StudentID NOT IN
--  (SELECT StudentID
--  FROM grade
--  WHERE CourseID='Dp010002')
----(8)合并显示教师中的男性教师和有教授职称的教师。
--SELECT *
--FROM Teacher
--WHERE Sex='男'
--UNION
--SELECT *
--FROM Teacher
--WHERE Profession='教授'
--(9)查询student表中女同学的学号,姓名及根据学号前两位判断所处年级(St01为‘大一’02为‘大二’,其他的不清楚)。
--SELECT StudentID,StudentName,
--  CASE
--    WHEN StudentID LIKE 'St01%' THEN '大一'
--    WHEN StudentID LIKE 'St02%' THEN '大二'
--    ELSE '不清楚'
--  END as 年级
--FROM Student
--WHERE Sex='女'

分析&思考

目录
相关文章
|
9天前
|
关系型数据库 MySQL 数据库
轻松入门MySQL:精准查询,巧用WHERE与HAVING,数据库查询如虎添翼(7)
轻松入门MySQL:精准查询,巧用WHERE与HAVING,数据库查询如虎添翼(7)
|
23天前
|
SQL 缓存 PHP
PHP技术探究:优化数据库查询效率的实用方法
本文将深入探讨PHP中优化数据库查询效率的实用方法,包括索引优化、SQL语句优化以及缓存机制的应用。通过合理的优化策略和技巧,可以显著提升系统性能,提高用户体验,是PHP开发者不容忽视的重要议题。
|
25天前
|
SQL 关系型数据库 MySQL
2024年阿里云数据库创建_数据库账号密码和连接教程
阿里云数据库怎么使用?阿里云百科整理阿里云数据库从购买到使用全流程,阿里云支持MySQL、SQL Server、PostgreSQL和MariaDB等数据库引擎,阿里云数据库具有高可用、高容灾特性,阿里云提供数据库备份、恢复、迁移全套解决方案。详细阿里云数据库购买和使用流程方法如下
|
29天前
|
数据采集 Java 关系型数据库
Java代码高效连接数据库
Java代码高效连接数据库
15 2
|
1月前
|
SQL 数据库 C#
C# .NET面试系列十一:数据库SQL查询(附建表语句)
#### 第1题 用一条 SQL 语句 查询出每门课都大于80 分的学生姓名 建表语句: ```sql create table tableA ( name varchar(10), kecheng varchar(10), fenshu int(11) ) DEFAULT CHARSET = 'utf8'; ``` 插入数据 ```sql insert into tableA values ('张三', '语文', 81); insert into tableA values ('张三', '数学', 75); insert into tableA values ('李四',
61 2
C# .NET面试系列十一:数据库SQL查询(附建表语句)
|
21天前
|
SQL 关系型数据库 MySQL
阿里云MySQL数据库价格、购买、创建账号密码和连接数据库教程
阿里云数据库使用指南:购买MySQL、SQL Server等RDS实例,选择配置和地区,完成支付。创建数据库和账号,设置权限。通过DMS登录数据库,使用账号密码访问。同地域VPC内的ECS需将IP加入白名单以实现内网连接。参考链接提供详细步骤。
363 3
|
1天前
|
SQL 监控 关系型数据库
PG数据库释放闲置连接
PG数据库释放闲置连接
4 0
|
10天前
|
缓存 监控 数据库
优化数据库查询性能的八大技巧
在今天的互联网时代,数据库是许多应用程序的核心组件之一。优化数据库查询性能是提升应用程序整体性能的关键。本文介绍了八种有效的技巧,帮助开发人员提高数据库查询性能,从而提升应用程序的响应速度和用户体验。
|
10天前
|
弹性计算 关系型数据库 MySQL
阿里云数据库服务器价格表,数据库创建、连接和使用教程
阿里云数据库使用流程包括购买和管理。选择所需数据库类型如MySQL,完成实名认证后购买,配置CPU、内存和存储。确保数据库地域与ECS相同以允许内网连接。创建数据库和账号,设置权限。通过DMS登录数据库,使用账号密码连接。同一VPC内的ECS需添加至白名单以进行内网通信。参考官方文档进行详细操作。
70 3
|
11天前
|
网络协议 数据库连接 网络安全
DM数据库连接数据库时报:创建sokect连接失败
DM数据库连接数据库时报:创建sokect连接失败
12 0