用SQL语句进行数据库查询(简单查询)_利用sql语句完成以下查询(1)显示前10%的女生记录。(2)查询选修了课程的学生学号。(1)

img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

需要这份系统化资料的朋友,可以戳这里获取


### 3.用中文显示需要查询的属性.


查询学生的**姓名(Sname),学号(Sno),家庭地址信息(home\_addr)**,并且以中文提示显示出来.



select Sname as 学生姓名,Sno as 学号,home_addr as 家庭地址
from Student


运行结果:  
 ![](https://img-blog.csdnimg.cn/d0cce2b5306b41e8947b3ff13bcc2081.png)


补充知识:  
 **as**是**别名关键字**,有时候也可以省略.用于做属性解释.


一般用法:



select 字段 as 别名 from 表名


## 🐼条件查询


 当然实际生活中我们不仅仅只是需要查询表中的全部值或几个值那么简单,我们还往往需要查询表中满足某一特定条件的值.这类查询被称为条件查询.  
 例如:  
 (1)查询**成绩>80**学生的**学号(Sno)、课程号(Cno)和成绩(grade)**



select Sno as 学号,Cno as 课程号,grade as 成绩
from sc
where Grade>80–只有满足条件的数据才会被显示出来


![](https://img-blog.csdnimg.cn/1180686287bf4191b02920362b853618.png)
(2)查询选修了课程号为”002”,且**成绩大于80**的学生的学号.



select Sno as 学号
from sc
where Cno='002’and Grade>80-
-and相当于c语言中的逻辑与(&&),只有左右两边条件都满足才行.
–or相当于c语言中的的逻辑或(||),只要左右两边条件满足任何一个或者都满足都会执行.


(3)查询**选修了课程**却**没有参加考试**的学生的**学号**和相应的**课程号**.



select Sno as 学号,Cno as 姓名
from SC
where Grade is null–null表示为空


### 1.基于IN字句的数据查询


`IN` 的用法-- 查询匹配多个字段(也可单个),允许我们在 `WHERE` 子句中规定多个值。  
 查询单个字段



> 
> –从课程表中查询出高数 与c语言程序设计的所有信息.  
>  提示:Cname表示课程名
> 
> 
> 



select *from Course
where Cname in (‘C语言程序设计’ ,‘高数’)–表示课程名可以为(里面的数据)


运行结果:


![](https://img-blog.csdnimg.cn/0b77fb3732c7431b80f62f3785bb87a0.png)
### 2.基于BETWEEN…AND子句的数据查询


`BETWEEN A AND B` :表示查询 A 到 B 之间的数据,即[A,B].


例如:



> 
> 查询成绩在75到80(闭区间)之间的学生的学号、课程号和成绩
> 
> 
> 



select Sno as 学号,Cno as 课程号,grade as 成绩
from sc
where Grade between 75 and 80


### 3.基于LIKE子句查询


(1)从学生表中分别检索出**姓张**的所有同学的资料或者名字的**第二个字是”红”或”虹**”的所有同学的资料.


补充知识:  
 SQL中的通配符:  
 ①:‘%’ 包含零个或多个字符的任意字符串:  
 ②:‘\_’(下划线) 任何单个字符:


SQL语句示例:



select *from Student
where Sname LIke ‘张%’ or Sname LIKE ‘_红%’ or Sname LIKE ‘_虹%’
–张% 表示姓张的信息.
–_红%和_虹%分别代表名字的第二个字是”红”或”虹”的信息


(2)查询课程名为Visual\_Basic的课程的学分.


由于’‘\_ ‘’(下划线)是通配符,所以在搜索的时候要将’*‘(下划线)转义为普通字符  
 ESCAPE 表示转义字符,让后面的通配符’*'(下划线)为普通字符



select Credit from Course
where Cname LIKE ‘Visual/_Basic’ ESCAPE’/‘–表示让’/'字符后的字符为转义字符


### 4.使用TOP关键字查询


补充知识:  
 TOP关键字的用法:  
 1)返回确定数目的记录个数



语法格式:SELECT TOP n <列表名>FROM<表名>[查询条件]


例如:从选课表中检索出前3个课程的信息.



Select Top 3 *
From Course


2)返回结果集中指定百分比的记录数



语法格式:SELECT TOP n PERCENT<列表名>FROM<表名>[查询条件]


例如:从课表中检索出前20%的课程信息.



select top 20 percent *from Course


### 5…消除重复行(distinct)


关键词 distinct用于返回唯一不同的值。



格式:
1.作用于单列 select distinct name from A
2.作用于多列 select distinct name, id from A


检索出学生已选课程的课程号,要求显示的课程不重复.



select distinct Cno from Course


### 6.时间函数:getdate().


getdate() 函数取得日期/时间信息,可用于获取当前时间,不需要带参数.  
 方法一:



select getdate() --取当前时间


方法二:



print getdate()–注意:在SQL语句中,打印是print与c语言中的printf不同.


结果2:


![](https://img-blog.csdnimg.cn/7d01d6baf1fb4fd8ae09307835fa3fba.png)
用例:  
 查询全体学生的姓名及其年龄  
 我们的表中并没有年龄这一属性,但是我们有学生的出生日期,这样我们可以通过计算(当前日期-出生日期)得到年龄.



select Sname as 姓名 ,year (getdate())-year(Birth) as 年龄 from Student


补充知识:



select year(getdate())–表示获取年份 2022
,month(getdate())–表示获取月份 12
,day(getdate())–表示日期天数 11


### 7.使用ORDER BY语句对查询的结果进行排序.


补充知识:  
 1.`desc`是`descend`降序意思 ,`asc` 是`ascend` 升序意思,  
 2.`ORDER BY`是排序的意思  
 3.`getdate`()表示获取当前时间,`year`(时间)表示精确到’年’  
 (1)显示所有学生的姓名基本信息,按班号排列,班号相同则按学号排列.



select *from Student
order by Classno,Sno–表示按班号排列,班号相同则按学号排列


(2)查询全体学生的姓名及年龄,并按学生的年龄降序排列.



select Sname as 姓名 ,year (getdate())-year(Birth) as 年龄 from Student
order by '年龄’desc–表示按降序排列




![img](https://img-blog.csdnimg.cn/img_convert/b62fbbcf91254630d3365379b5d094f4.png)
![img](https://img-blog.csdnimg.cn/img_convert/2ae303b6ea6e2a253fd3c7fa3f78bdd5.png)

**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**

**[需要这份系统化资料的朋友,可以戳这里获取](https://bbs.youkuaiyun.com/forums/4f45ff00ff254613a03fab5e56a57acb)**


**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**

6pX-1715516885032)]
[外链图片转存中...(img-W81CbTti-1715516885032)]

**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**

**[需要这份系统化资料的朋友,可以戳这里获取](https://bbs.youkuaiyun.com/forums/4f45ff00ff254613a03fab5e56a57acb)**


**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值