用SQL语句进行数据库查询(简单查询)

简介: 用SQL语句进行数据库查询(简单查询)

🐻简单查询


上一篇我们介绍了如何用SQL语句创建表、修改表以及向表中插入数据.现在我们可以通过SQL语句对表中的数据按照自己的需求来进行查询.


废话不多说,直接上栗子🌰


1.查询数据表中的全部信息


🌰查询学生表(student)的全体学生所有信息(相当于查询整张表)


select* from Student


运行结果:



补充知识:


’ * '(字符星号)代表所有.


2.查询数据表中的部分属性


🌰查询全体学生的学号(Sno)和姓名(sname)(查询表中的部分属性)


select Sno,sname--表示需要查找的属性
from Student--属性所属表格


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


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


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


运行结果:



补充知识:


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


一般用法:


select  字段  as  别名  from  表名


🐼条件查询


当然实际生活中我们不仅仅只是需要查询表中的全部值或几个值那么简单,我们还往往需要查询表中满足某一特定条件的值.这类查询被称为条件查询.


例如:


(1)查询成绩>80学生的学号(Sno)、课程号(Cno)和成绩(grade)


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



(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语言程序设计' ,'高数')--表示课程名可以为(里面的数据)


运行结果:



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中的通配符:


①:‘%’ 包含零个或多个字符的任意字符串:


②:‘_’(下划线) 任何单个字符:


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:



用例:


查询全体学生的姓名及其年龄


我们的表中并没有年龄这一属性,但是我们有学生的出生日期,这样我们可以通过计算(当前日期-出生日期)得到年龄.


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--表示按降序排列


运行结果:



🐶使用聚合函数


count函数


补充知识:


COUNT()函数返回表中的行数。 COUNT()函数允许您对表中符合特定条件的所有行进行计数。

COUNT()函数返回由SELECT语句返回的结果集中的行数。COUNT()函数计算中包含NULL和非NULL值的行,也就是用计算所有行.


(1)查询学生总人数.


select count (distinct Sno) as 学生总人数 from Student--distinct表示计算不同学号的行数,即学生总人数.


(2)计算”002”号课程的学生平均成绩、最高分、最低分.


  • avg()函数用于计算平均值


  • max()函数用于计算最大值


  • min()函数用于计算最小值


select avg(Grade) as 平均分,max(Grade) as 最高分,min(Grade) as 最低分 from sc
where Cno='002'


运行结果:



使用Group子句进行查询


group如字面意思一样,表示分组,group by表示按某规则分组.将一个数据集分为若干个小区域.


例如:


(1)查询各班级学生总人数.


提示:按班级分类


select Classno as 班级,COUNT(*)as 学生人数
from Student
group by classno--按班级分类


运行结果:



(2)汇总总分大于150分的学生的学号及总成绩.


补充知识:


having 作用类似于where,差别是


where:删选符合条件的行,


having:删选符合条件的组.


select Sno as 学号,sum (Grade) as 总成绩
from sc
group by Sno
having sum (Grade)>150


(3)查询各个课程号相应的选课人数.


select Cno as 课程号,count(*) as 学生人数
from SC
group by Cno--按课程号分类


运行结果:



目录
相关文章
|
2天前
|
SQL NoSQL Java
Java使用sql查询mongodb
通过使用 MongoDB Connector for BI 和 JDBC,开发者可以在 Java 中使用 SQL 语法查询 MongoDB 数据库。这种方法对于熟悉 SQL 的团队非常有帮助,能够快速实现对 MongoDB 数据的操作。同时,也需要注意到这种方法的性能和功能限制,根据具体应用场景进行选择和优化。
25 9
|
23天前
|
SQL 存储 人工智能
Vanna:开源 AI 检索生成框架,自动生成精确的 SQL 查询
Vanna 是一个开源的 Python RAG(Retrieval-Augmented Generation)框架,能够基于大型语言模型(LLMs)为数据库生成精确的 SQL 查询。Vanna 支持多种 LLMs、向量数据库和 SQL 数据库,提供高准确性查询,同时确保数据库内容安全私密,不外泄。
92 7
Vanna:开源 AI 检索生成框架,自动生成精确的 SQL 查询
|
8天前
|
SQL Oracle 数据库
使用访问指导(SQL Access Advisor)优化数据库业务负载
本文介绍了Oracle的SQL访问指导(SQL Access Advisor)的应用场景及其使用方法。访问指导通过分析给定的工作负载,提供索引、物化视图和分区等方面的优化建议,帮助DBA提升数据库性能。具体步骤包括创建访问指导任务、创建工作负载、连接工作负载至访问指导、设置任务参数、运行访问指导、查看和应用优化建议。访问指导不仅针对单条SQL语句,还能综合考虑多条SQL语句的优化效果,为DBA提供全面的决策支持。
31 11
|
23天前
|
存储 缓存 网络协议
数据库执行查询请求的过程?
客户端发起TCP连接请求,服务端通过连接器验证主机信息、用户名及密码,验证通过后创建专用进程处理交互。服务端进程缓存以减少创建和销毁线程的开销。后续步骤包括缓存查询(8.0版后移除)、语法解析、查询优化及存储引擎调用,最终返回查询结果。
29 6
|
22天前
|
SQL 关系型数据库 MySQL
MySQL导入.sql文件后数据库乱码问题
本文分析了导入.sql文件后数据库备注出现乱码的原因,包括字符集不匹配、备注内容编码问题及MySQL版本或配置问题,并提供了详细的解决步骤,如检查和统一字符集设置、修改客户端连接方式、检查MySQL配置等,确保导入过程顺利。
|
21天前
|
SQL 监控 安全
SQL Servers审核提高数据库安全性
SQL Server审核是一种追踪和审查SQL Server上所有活动的机制,旨在检测潜在威胁和漏洞,监控服务器设置的更改。审核日志记录安全问题和数据泄露的详细信息,帮助管理员追踪数据库中的特定活动,确保数据安全和合规性。SQL Server审核分为服务器级和数据库级,涵盖登录、配置变更和数据操作等事件。审核工具如EventLog Analyzer提供实时监控和即时告警,帮助快速响应安全事件。
|
1月前
|
SQL Java
使用java在未知表字段情况下通过sql查询信息
使用java在未知表字段情况下通过sql查询信息
37 8
|
1月前
|
SQL 安全 PHP
PHP开发中防止SQL注入的方法,包括使用参数化查询、对用户输入进行过滤和验证、使用安全的框架和库等,旨在帮助开发者有效应对SQL注入这一常见安全威胁,保障应用安全
本文深入探讨了PHP开发中防止SQL注入的方法,包括使用参数化查询、对用户输入进行过滤和验证、使用安全的框架和库等,旨在帮助开发者有效应对SQL注入这一常见安全威胁,保障应用安全。
59 4
|
1月前
|
SQL 监控 关系型数据库
SQL语句当前及历史信息查询-performance schema的使用
本文介绍了如何使用MySQL的Performance Schema来获取SQL语句的当前和历史执行信息。Performance Schema默认在MySQL 8.0中启用,可以通过查询相关表来获取详细的SQL执行信息,包括当前执行的SQL、历史执行记录和统计汇总信息,从而快速定位和解决性能瓶颈。
|
21天前
|
SQL JavaScript 程序员
数据库LIKE查询屡试不爽?揭秘大多数人都忽视的秘密操作符!
本文分析了因数据库中的不可见空白字符导致的数据查询问题,探讨了问题的成因与特性,并提出了使用 SQL 语句修复问题的有效方案。同时,总结了避免类似问题的经验和注意事项。
30 0