数据库sql语句查询补充

2023-12-19 00:48:56

0.前言

数据库期末复习,对自己做错的题进行知识总结和梳理

1.Like谓语

like谓语主要有两个操作

  • %:百分号,表示任意长度的字符串
  • _:下划线,表示任意单个字符

like谓语的语法格式如下:

在这里插入图片描述

LIke谓语容易出现的难点:需要在查询的内容当中本身带有’_‘或者’%’
此时要使用到换码字符
eg:

插叙开头为’DB_'的课程情况

对应的sql查询语句:

SELECT *
FROM S
WHERE SNAME LIKE 'DB\_' ESCAPE '\'

意思也就是在’_‘的前面要添加相应的换码符号,然后在后面进行一个逃脱ESCAPE,需要注意到的是,’‘可以进行多种符号更改,比如可以更改成’@',那么对应查询语句如下:

SELECT *
FROM S
WHERE SNAME LIKE 'DB@_' ESCAPE '@'

2.带有Having当中的分组查询

最终只输出满足指定条件的组

eg. 例题:

在SC表当中查询选修了2门以上课程的学生学号

对应的Sql语句

Select SNO
FROM SC
GROUP BY SNO
HAVING COUNT(CNO)>2

可以通过添加DIstinct避免输出的结果重复

错题重做:

在spj表当中,查询使用3种以上零件的工程号

这道题和同学沟通了一下,发现了自己的问题,我理解成是多表查询了,但是其实不是的,应该是先进行按照JNO的组队,然后在通过HAVING进行一定条件的限制,正确的sql语句如下

SELECT JNO
FROM SPJ
GROUP BY JNO
HAVING COUNT(DISTINCT PNO)>3

3.内连接

主要是在需要同时使用到两次同一个表的情况下如何进行书写,那么此时就要对该表进行一个内连接的操作

例题

至少选修了课程号为0121和0125两门课的学生学号

那么此时关键次有’至少’并且要求的操作是在同一个表当中同一列的不同数据的一个查询
对应的sql语句如下:

SELECT A.SNO--这里也可以写成B.SNO
FROM SC a join SC b ON a.SNO=b.SNO--给同一个表设定不同的名称
	AND a.CNO='0121'	
	AND b,CNO='0125'

文章来源:https://blog.csdn.net/qq_62904883/article/details/134587129
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。