数据库语言一些基本操作

1,消除取值重复的行。

例如:查成绩不及格的学号:SELECT DISTINCT sno FROM SC WHERE grade<60.
这里使用DISTINCT表示取消取值重复的行。

2,比较。

例如:查计算机系全体学生的姓名:SELECT Sname FROM Student WHERE Sdept='CS'.
查所有年龄在20岁以下的学生姓名和年龄:
SELECT Sname,Sage
FROM Student
WHERE Sage<20(或者WHERE NOT Sage>=20)

3,确定范围。

例如:查询002号课程且成绩在80到90分之间的学生号。
SELECT sno
FROM SC
WHERE snp='002' AND grade BETWEEN 80 AND 90;

4,确定集合。

例如:查询信息院,数学系,计算机学院学生的姓名和性别。
SELECT sname,sex
FROM Student
WHERE dept IN(‘信息院’,‘数学系’,‘计算机学院’)

5,字符匹配。
%:代表任意长度的字符串。
_:代表任意单个字符。

例如:查询所有姓刘或姓王的学生姓名,学号和性别。
SELECT sname,sno,sex
FROM Student
WHERE sname LIKE '刘%' OR sname LIKE '王%'

查询姓欧阳且全名为三个汉字的学生姓名。
SELECT Sname
FROM Student
WHERE Sname LIKE '欧阳__'
(注意,由于一个汉字占两个字符的位置,所以欧阳后面是两个'_'。

查询第二个字为阳的学生的姓名和学号。
SELECT Sname,Sno
FROM Student
WHERE Sname LIKE '__阳%'

若要查询的串本身就具有%或者_,则使用ESCAPE<换行字符>对通配符进行转义,ESCAPE'\'短语表示\为换码字符,这样匹配串中紧跟在\后面的字符"_"就不在具有通配符的含义,而是取其本身含义,被转义为普通的_符号。

例如:查询以"DB_"开头且倒数第二个字符为i的课程情况。|
SELECT *
FROM Course
WHERE cname LIKE  'DB\_%i_' ESCAPE '\'

6,涉及空值的查询

例如:某些学生没有考试成绩,查询缺少成绩的学生的学号和相应的课程号。
SELECT Sno,Cno
FROM SC
WHERE Grade IS NULL(这里使用IS而不是=)

类似,查询所有成绩都记录的学生学号和课程号只需要将IS替换成IS NOT。

7,多重条件查询

例如:查询计算机系年龄在20岁以下学生的姓名。
SELECT Sname
FROM Student
WHERE Sdept='CS' AND Sage<20

查询计算机系,信息系,数学系学生的姓名和性别。
SELECTSname,Ssex
FROM Student
WHERE Sdept IN ('IS','MA','CS')     ||     WHERE Sdept='IS' OR Sdept='MA' OR Sdept='CS'

8,对查询结果排序

例如:查询所有男生的学号,系,年龄,结果按照所在的系进行升序排序,同一系中学生按照年龄降序排序。
SELECT sno,dept,age
FROM Student
WHERE sex='男'
ORDER BY dept,age DESC

9,使用集函数

COUNT(*)统计元组个数
COUNT(<列名>)统计一列中值的个数

注意,WHERE子句中是不能使用聚集函数作为条件表达式的,聚集函数只能用于SELECT子句和GROUP BY中的HAVING子句。

例如:查询女学生的总人数和平均年龄。
SELECT COUNT(sno),AVG(age)
FROM Student
WHERE sex=‘女’ 

查询选修001号课程并及格的学生的最高分,最低分和总分。
SELECT MAX(grade),MIN(grade),SUM(grade)
FROM SC
WHERE cno='001' AND grade>=60

10,对查询结果进行分组。

将查询结果按照某一行或者多行进行分组,值相等为一组。
目的是:细化集函数的作用对象,如果未对查询结果进行分组,集函数将作用于整个查询结果,即整个查询结果只有一个函数值,否则,集函数将作用于每一组,即每一组都有一个函数值。
例如:查询各个课程号与对应的选课人数。
SELECT Cno,COUNT(Sno)
FROM SC
GROUP BY Cno(过程是先进行分组,再对每一组作用集函数COUNT以求得该组的学生人数)
查询结果如下:

11,筛选。

如果分组之后还要按照一定条件对这些组进行筛选,最终只输出满足条件的组,使用HAVING短句指定筛选条件。
例如:求每个学生的平均成绩,并将超过80分的进行输出。
SELECT sno,AVG(grade)
FROM SC
GROUP BY sno
HAVING AVG(grade)>88

注意区别:HAVING:在各组中选择满足条件的小组
WHERE:在表中选择满足条件的元组

找出选课学生超过30人的课程平均成绩以及选课人数
SELECT cno,AVG(grade),COUNT(*) AS st_number
FROM SC
GROUP BY cno
HAVING st_number>=30

求学生关系中女生的每一年龄组(超过20人)有多少,要求查询结果按照人数升序,人数相同时按照年龄降序排列。
SELECT age,COUNT(sno)AS number
FROM Student
WHERE sex=‘女’
GROUP BY age
HAVING number>20
ORDER BY number,age DESC

剩下练习题:

按照平均成绩降序给出所有课程都及格的学生号及其平均成绩,其中成绩统计时不包括008号考察课。

SELECT sno,AVG(grade) AS avg_g
FROM SC
WHERE cno<>'008'
GROUP BY sno
HAVING MIN(grade)>=60
ORDER BY avg_g DESC

查询选修了三门以上课程的学生学号。
SELECT Sno From SC
GROUP BY sno
HAVING COUNT(*)>3(拥有词条数量大于3)

查询平均成绩大于等于90的学生学号和平均成绩
SELECT Sno,AVG(Grade)
FROM SC
GROUP BY Sno
HAVING AVG(Grade)>=90

查询每个学生及其选修课程的情况
SELECT Student.*,SC.*
FROM Student,SC
WHERE Student.Sno=SC.Sno

自然连接,若在等值连接中把目标列中重复属性去掉则为自然连接。
SELECT Student.Sno,Sname,Ssex,Sdept,Cno,Grade
FROM Student,SC
WHERE Student.Sno=SC.Sno

或者SELECT*
FROM Student,SC
WHERE Student.Sno=SC.Sno

查询系别为信息,课程成绩在90分以上的学生档案及其成绩情况。
SELECT*
FROM Student NATRUAL JOIN SC
WHERE dept='信息' AND grade>=90

查询年龄比王玲大的同学的姓名和年龄
SELECT s1.sname,s1.age
FROM S AS s1,S AS s2
WHERE s1.age>s2.age AND s2.sname='王玲'

查询每个学生学号,姓名,选修课程名及成绩。
SELECT Student.Sno,Sname,Cname,Grade
FROM Student,SC,Course
WHERE Student.Sno=SC.Sno AND SC.Cno=Course.Cno

查询与刘晨在同一个系中的学生的学号,姓名,系
SELECT Sno,Sname,Sdept
FROM Student
WHERE Sdept IN(
SELECT Sdept 
FROM Student
WHERE Sname='刘晨')

由内而外,每个子查询在上一级查询处理之前求解,子查询的结果用于建立其父查询的查找条件。

当然,也可以使用自身连接。
SELECT S1.Sno,S1.Sname,S1.Sdept
FROM Student S1,Student S2
WHERE S1.Sdept=S2.Sdept
AND S2.Sname='刘晨'

查询选修了课程名为'信息系统'的学生学号和姓名
SELECT Sno,Sname
FROM Student
WHERE Sno IN(
SELECT Sno
FROM SC
WHERE Cno IN
(SELECT Cno
FROM Course
WHERE Cname=‘信息系统’))

或者:
SELECT Sno,Sname
FROM Student,SC,Course
WHERE Student.Sno=SC.Sno AND SC.Cno=Course.Cno AND Course.Cname='信息系统'

查询与刘晨在同一个系学习的学生学号姓名系

SELECT Sno,Sname,Sdept
FROM Student
WHERE Sdept IN
(SELECT Sdept 
FROM Student
WHERE Sname='刘晨')

当确切知道返回值是单个值的时候,可以使用=,!=,>,<,>=,<=。
如可将上述的IN改成=。

找出年龄超过平均年龄的学生的姓名:
SELECT sname FROM Student
WHERE age>(
SELECT AVG(age)
FROM Student)

查询有一门课在90分以上的学生的姓名
SELECT sname FROM Student
WHERE sno=SOME
(SELECT DISTINCT sno
FROM SC
WHERE grade>90)

找出平均成绩最高的学生学号
SELECT sno
FROM SC
GROUP BY sno
HAVING AVG(grade)>ALL
(SELECT AVG(grade)
FROM SC
GROUP BY sno)

查询其他系中比IS系任意学生大的学生名单。
SELECT Sname,Sage
FROM Student
WHERE Sage>ALL
(SELECT Sage
FROM Student
WHERE Sdept='IS'
)
AND Sdept<>'IS'

FROM子句查询:

查出选课成绩在80分以上女学生的姓名,课程名和成绩。
SELECT sname,cname,grade
FROM(SELECT sname,cname,grade
FROM Student,SC,Course
WHERE Student.sno=SC.sno
AND SC.cno=Course.cno AND sex='女')AS Temp(sname,cname,grade)
WHERE grade>=80

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/484432.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

模拟实现字符串库函数(一)

在C语言的标准库中提供了很多针对字符串的库函数&#xff0c;这篇文章我们会学习并模拟实现几个简单的库函数 求字符串长度函数strlen strlen函数我们在之前已经用过很多次了&#xff0c;同时也模拟实现过&#xff0c;但是都不是模仿标准库中的strlen来实现&#xff0c;首先我…

三.寄存器(内存访问)

1.内存中字的存储 2.并不是所有cpu都支持将数据段送入段寄存器&#xff0c;所以有时候用个别的寄存器先把数据段存储起来&#xff0c;再把该寄存器mov到段寄存器。 3.字的传送 4.栈 5.栈机制 举例说明 6.栈顶超界问题 push超界 pop超界 7.栈段

pta-洛希极限

科幻电影《流浪地球》中一个重要的情节是地球距离木星太近时&#xff0c;大气开始被木星吸走&#xff0c;而随着不断接近地木“刚体洛希极限”&#xff0c;地球面临被彻底撕碎的危险。但实际上&#xff0c;这个计算是错误的。 洛希极限&#xff08;Roche limit&#xff09;是一…

python写爬虫爬取京东商品信息

工具库 爬虫有两种方案&#xff1a; 第一种方式是使用request模拟请求&#xff0c;并使用bs4解析respond得到数据。第二种是使用selenium和无头浏览器&#xff0c;selenium自动化操作无头浏览器&#xff0c;由无头浏览器实现请求&#xff0c;对得到的数据进行解析。 第一种方…

实战高效RPC方案在嵌入式环境中的应用与揭秘

实战高效RPC方案在嵌入式环境中的应用与揭秘 开篇 在嵌入式系统开发中&#xff0c;大型项目往往采用微服务架构来构建&#xff0c;其核心思想是将一个庞大的单体应用分割成一系列小型、独立、松耦合的服务模块&#xff0c;这些模块可以是以线程或进程形式存在的多个服务单元。…

OpenHarmony开发-线程安全阻塞队列

概述 简介 ​线程安全阻塞队列SafeBlockQueue类&#xff0c;提供阻塞和非阻塞版的入队入队和出队接口&#xff0c;并提供可最追踪任务完成状态的的SafeBlockQueueTracking类。 #include <safe_block_queue.h> 涉及功能 接口说明 OHOS::SafeBlockQueue OHOS::SafeBl…

[Java C++] JNI开发

JNI&#xff08;Java Native Interface&#xff09;是 Java 提供的一种编程桥梁&#xff0c;它允许 Java 代码和本地&#xff08;Native&#xff09;代码进行交互。通过 JNI&#xff0c;Java 程序可以调用本地语言&#xff08;如C、C&#xff09;编写的代码&#xff0c;并且本地…

如何用python编写记录你女友的生日呢?

如何用python编写记录你女友的生日呢&#xff1f; 我这边写一个简单的 Python 程序示例,可以用来记录生日.这个程序将用户输入的姓名和生日信息保存到一个字典中,并允许用户查找特定姓名对应的生日信息. def record_birthday():birthdays {}while True:print("1. 添加生…

IP地址、子网掩码、网关

这些概念的来源 很久以前&#xff0c;有两个计算机想要相互通信&#xff0c;于是它们在自己的设备上安装了一个网卡&#xff0c;并用网线连接&#xff1a; 这个时候&#xff0c;又来了一个计算机想要加入它们&#xff0c;于是这三个计算机互相通过网线连接&#xff1a; 随着想…

taro之Swiper的使用

图样&#xff1a; 往往我们需要轮播图去显示我们想要的图片之类的 这是工作的代码 <View classNametop-title><SwiperclassNamebanner-swiperinterval{3000}circularautoplay>{homeBannerList.map((item) > {return (<SwiperItem key{item.id}><View…

Linux之git

一、什么叫做版本控制 版本控制&#xff08;Revision control&#xff09;是一种在开发的过程中用于管理我们对文件、目录或工程等内容的修改历史&#xff0c;方便查看更改历史记录&#xff0c;备份以便恢复以前的版本的软件工程技术。简单来说就是用于管理多人协同开发项目的技…

MySQL临时表:临时存储数据的灵活利器

MySQL临时表&#xff1a;临时存储数据的灵活利器 MySQL临时表是处理数据时非常有用的工具&#xff0c;它提供了临时存储数据的能力&#xff0c;使得复杂查询、排序、聚合以及数据筛选变得更加高效和简单。在本文中&#xff0c;我们将深入探讨MySQL临时表的概念以及何时需要使用…

【算法刷题day1】Leetcode:704. 二分查找、27. 移除元素

文章目录 Leetcode 704. 二分查找解题思路代码总结 Leetcode 27. 移除元素解题思路代码总结 草稿图网站 java的Deque Leetcode 704. 二分查找 题目&#xff1a;704. 二分查找 解题思路 1.左闭右闭区间的搜索&#xff0c;循环条件为left < right。 2.左闭右开区间的搜索&…

C++一维数组练习oj(3)

为什么C的一维数组练习要出要做那么多的题目&#xff1f;因为我们是竞赛学生&#xff01;想要将每个知识点灵活运用的话就必须刷大量的题目来锻炼思维。 我使用的是jsswoj.com这个刷题网站&#xff0c;当然要钱... C一维数组练习oj(2)-CSDN博客这是上一次的题目讲解 这道题有…

Unity学习笔记 6.2D换帧动画

下载源码 UnityPackage 目录 1.导入图片 1.1. 图片的叠放顺序 2.图片切片 3.用动画控制器让马&#x1f40e;动起来 1.导入图片 直接拖拽进场景 检查 Texture Type&#xff08;纹理类型&#xff09;是否为 Sprite 创建2D精灵对象&#xff0c;拖拽图片到Sprite&#xff08…

【C++】关联式容器——map和set

1 关联式容器 STL中我们常用的部分容器&#xff0c;比如&#xff1a;vector、list、deque、forward_list(C11)等&#xff0c;这些容器统称为序列式容器&#xff0c;因为其底层为线性序列的数据结构&#xff0c;里面存储的是元素本身。 那什么是关联式容器呢&#xff1f;它与序…

蓝桥杯G431RBT6——定时器中使用led冲突以及led与lcd冲突等一系列问题

本文是解决 同时在 定时器中点灯 与 LCD屏幕显示 冲突异常的问题 我们大家都知道&#xff0c;G431RBT6开发板上led与lcd是冲突的&#xff0c;所以在lcd.c文件中的这三个函数中 void LCD_WriteReg(u8 LCD_Reg, u16 LCD_RegValue) void LCD_WriteRAM_Prepare(void) void LCD_Wr…

移动0【双指针】

移动零 cur每次走一步&#xff0c;dest走不走取决于cur有没有找到非0值&#xff0c;一旦找打非0值&#xff0c;交换。不是非0值&#xff0c;dest不动。》【非零&#xff0c;dest】【dest&#xff0c;0】 class Solution { public:void moveZeroes(vector<int>& num…

算法第三十二天-最长公共子序列

最长公共子序列 题目要求 解题思路 求这两个数组或者字符串的最长公共子序列问题&#xff0c;肯定要用到动态规划。 首先区分两个概念&#xff1a;子序列可以是不连续的&#xff1b;子数组&#xff08;子字符串&#xff09;是需要连续的&#xff1b;另外&#xff0c;动态规划…

制冷设备之转子式压缩机

滚动转子式压缩机又称活塞式压缩机&#xff0c;属于回转式压缩机。 转子压缩机结构 滚动转子式压缩机与往复活塞式压缩机相比&#xff0c;具有下列特点 1.零部件少&#xff0c;尺寸紧凑&#xff0c;结构简单&#xff0c;重量轻易损零件少&#xff0c;运行可靠&#xff1b; 2.…