项目五 实现对学生信息的简单查询

news2024/12/30 2:50:32

项目五 实现对学生信息的简单查询

1,查询数据库中部分字段的信息

使用select语句对表的选择及连接等操作,结构会生成一个临时表,将select结果存放到临时表中

查询数据表中所有字段的值

#格式:(*:表示所有列)
select * from 表名;
#检索出的列是未排序的,其显示是按 mysql 底层的存储顺序进行显示。

查询数据表中部分字段的值

#只查询一个字段
select 字段名 from 表名;
#查询多个字段
select 字段名 1,字段名 2......字段名 n from 表名;
#注意:每个字段名后用逗号隔开,但最后一个字段名后不加逗号。

查询数据表中表达式的值

1#使用计算字段(就是字段之间,或数值之间的表达式)
mysql> select * from cj;
+------+------+------+------+------+
| id   | name | sx   | yw   | yy   |
+------+------+------+------+------+
|    1 | aa   |   80 |   90 |   60 |
|    2 | bb   |   86 |   96 |   66 |
|    3 | cc   |   66 |   90 |   96 |
+------+------+------+------+------+
#查看总成绩
mysql> select name,sx+yw+yy from cj;
+------+----------+
| name | sx+yw+yy |
+------+----------+
| aa   |      230 |
| bb   |      248 |
| cc   |      252 |
+------+----------+
#mysql 支持+ - * / 的基本运算,只是在显示结果,原数据并没有变

(2)#使用拼接字段(将多个值联结到一起构成单个值)
concat 函数使用方法: concat(参数 1,参数 2......参数 n)
#其中参数可以是表中的字段名或者加入的字符串,若为字符串,应用引号引起来
mysql> select concat(name,'(',yw,',',sx,',',yy,')') from cj;
+---------------------------------------+
| concat(name,'(',yw,',',sx,',',yy,')') |
+---------------------------------------+
| aa(90,80,60)                          |
| bb(96,86,66)                          |
| cc(90,66,96)                          |
+---------------------------------------+
#本例中,concat 函数连接了八部分内容,其中四个是字段名,左半括号、右半括号及两个逗号为字符。

定义容易理解的列别名

#格式:
select 字段名  [as]  列标题

mysql> select concat(StuName,'(',StuID,',',StuSex,')') from Student;
+------------------------------------------+
| concat(StuName,'(',StuID,',',StuSex,')') |
+------------------------------------------+
| 张林浩(150101,男)                        |
| 张林浩(150101,男)                        |
| 张林浩(150101,男)                        |
+------------------------------------------+

mysql> select concat(StuName,'(',StuID,',',StuSex,')') as info  from Student;
+-----------------------+
| info                  |
+-----------------------+
| 张林浩(150101,男)     |
| 张林浩(150101,男)     |
| 张林浩(150101,男)     |
+-----------------------+

#起别名时,只显示在临时表中,原表没变。如果别名标题有空格,要用单引号括起来,但如果含_.则不用单引号。

使用查询语句的输出功能

  • select 语句可以从数据表中查询信息,但当不提供库时,就只完成输出功能
#例如:
mysql> select 'aa';
+----+
| aa |
+----+
| aa |
+----+

mysql> select '3*2' as 乘积;
+--------+
| 乘积   |
+--------+
| 3*2    |
+--------+

mysql> select now();	#当前时间
+---------------------+
| now()               |
+---------------------+
| 2022-09-23 15:09:40 |
+---------------------+

2,根据指定条件进行查询

消除结果集中的重复行

#在字段名前加关键字distinct过滤相同值
语法:select distinct|distinctrow column_name [,column_name...]

#例如:查询生源地,去掉结果中的重复行
mysql> select distinct Native from Student;
#当检索多个字段时,必须每个字段的值都一样才认为是重复行
#即 distinct 用于后面的所有字段而不仅是紧跟在其后的字段。

实现有条件的筛选

MySQL中的运算符

image.png

1,where子句的使用

  • 可以使用 where 子句和特定的 操作符来实现选择行的目的。
#语法:
select 字段名 1,字段名 2....字段名 n
from 表名
where 筛选条件;

#案例:查看所有男生的学号,姓名(字符串常量用单引号括起来)
select StuID,StuName,StuSex from Student where StuSex='男';
#between 操作符的使用方法为:
(not)between 表达式 1 and 表达式 2
#表示值在表达式 1 和表达式 2 之间,包含表达式 1 和表达式 2。

#案例:查询所有期末考试成绩在 80-90 之间的同学的成绩。
select * from Score
where ExamScore between 80 and 90;

2,where子句常使用的操作符:

  • and操作符:两个或多个条件同时满足
  • or操作符:满足多个条件中的任何一个即检索成功
  • in操作符:满足多个条件中的一个
  • like 操作符:配合%通配符和_通配符实现模糊查询
(1)#and操作符案例:
mysql> select *from Student where ClassID='mb1501' and StuSex='男';

(2)#or操作符案例(or前后必须是完整的条件)
mysql> select * from Student where Native='河北保定' or Native='河北石家庄'; 

(3)#in操作符案例
in 操作符的使用格式如下:(not) in (1,值 2,值 3....)
#其含义是使用 in 关键字可以指定一个值表,值表中列出所有可能的值,当与值表中的任一个匹配时,即返回 TRUE,否则返回 FALSE。
mysql> select * from Score where CourseID in ('10101','10102');

(4)#like 操作符与%通配符搭配使用(这是模糊查询),当其与%通配符搭配使用时,可实现匹配任意多个任意字符,包含零个字符。
mysql> select * from Student where StuName like '张%';

(5)#like 操作符与_通配符搭配使用
当 like 操作符与_通配符搭配使用时,可实现匹配任意单个字符。
#查询姓名为两个字的李姓同学。
mysql> select * from Student where StuName like '张__';

#注意事项:
1,根据 SQL 的配置方式,搜索可以是区分大小写的。
2,尾空格可能会干扰通配符,可在最后加一个%,或使用函数
3,%不能匹配 null,如使用 like ‘%’ 并不能搜索出结果中有 null 的行
4,不要过度使用,尽可能用其它操作符
5,除非绝对必要,否则不要放在开始处,因为速度最慢
6,小心通配符的位置,否则达不到效果

4、多个操作符时的计算次序

  • 当 where 子句的条件中有多个操作符时,SQL 语言优先组合 and 操作符

  • 解决的办法是将优先组合的条件用括号括起来

mysql> select * from Student where (Native=河北保定’or Native=’河北石家庄’) and Stusex=’男’;
#如果条件语句意思不明确时,可以加入圆括号

3,完成对查询结果的排序

使用一个字段进行排序

#order by排序语句
ORDER BY {col_name | expr | position} [ASC | DESC] , ...

#ORDER BY 子句后可以是一个列、一个表达式或一个正整数。默认是按升序排列,即 ASC,如果想按某一列降序排列,则应指定 DESC。

#例如1:查询Student表中学生的学号和姓名,并按学号升序排列。
mysql> select StuID,StuName from Student  order by StuID[ASC];

#例如2:查询 Score 表中 10101 课程的成绩,并按成绩降序排列
mysql> select * from Score  where CourseID='10101'  order by ExamScore DESC;

#mysql 中的 orber by 子句还可以用非检索的列来进行排序.
#例如3:查询 Student 表中的学生的姓名和性别并按学号升序排列。
mysql> select StuName,StuSex  from Student order by StuID;

#order by 后面如果是正整数表示按检索结果中整数对应位置上的列进行排序。

使用多个字段进行排序

排序的规则是:若检索结果中第一个字不同,则按第一个字段排序,第一个字段相同时,再按第二个字段排序,依次类推。

#使用多字段排序的查询语句的书写方式为:
select 字段名 1,字段名 2......字段名 n
from 表名
order by 字段名 1,字段名 2......字段名 n
#即 order by 子句的各个字段名间用逗号隔开,最后一个字段后不加逗号。

#例如:查询 Score 表中的信息,按课程号降序排列,相同课程号按学号降序排列。
mysql> select * from Score order by CourseID DESC,StuID DESC;

#当 order by 后面有多个字段时,需逐个指定排序方向,即每个待排序字段后都要加关键字 ASC 或 DESC,否则未加关键字的字段将默认为 ASC。

4,实现分页查询的基础

  • LIMIT 子句:主要用于限制被 SELECT 语句返回的行数
LIMIT {[offset,] row_count | row_count OFFSET offset}
#语法格式中的 offset 和 row count 都必须是非负的整数常数,offset 指定返回的第一行的偏移量,row count是返回的行数。值得注意的是初始行的偏移量为 0 而不是 1。

#例如:查询 Student 表中的前三个同学的信息
mysql> select * from Student limit 3;
#使用 limit 子句时,当实际记录数小于指定显示条数时,按实际记录数显示
#例如,“LIMIT 3”表示返回 SELECT 语句的结果集中最前面 3 行,而“LIMIT 5,3”则表示从第6 行开始返回 3 行

ount 都必须是非负的整数常数,offset 指定返回的第一行的偏移量,row count是返回的行数。值得注意的是初始行的偏移量为 0 而不是 1。

#例如:查询 Student 表中的前三个同学的信息
mysql> select * from Student limit 3;
#使用 limit 子句时,当实际记录数小于指定显示条数时,按实际记录数显示


```shell
#例如,“LIMIT 3”表示返回 SELECT 语句的结果集中最前面 3 行,而“LIMIT 5,3”则表示从第6 行开始返回 3 行

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

milvus安装

milvus安装 sudo curl -L “https://github.com/docker/compose/releases/download/1.29.2/docker-compose- $ (uname -s)- $ (uname -m)” -o /usr/local/bin/docker-compose sudo chmod x /usr/local/bin/docker-compose sudo ln -s /usr/local/bin/docker-compose /usr/bin/…

SpringBoot项目通过触发器调度实现定时任务

文章目录 前言一、quartz是什么?二、quartz中核心概念三、集成步骤1.引入依赖2.demo样例a.定义一个任务参数实体类b.定义操作触发器、定时任务接口及实现c.作业实现d.结果截图 四、其他1.QuartzJobBean和Job区别2.注意事项3.作业(Job)和触发器…

考虑功率均分与电压频率的事件触发分布式二次控制MATLAB模型

微❤关注“电气仔推送”获得资料(专享优惠) 模型简介 此模型是在《基于事件触发机制的孤岛微电网二次电压与频率协同控制MATLAB仿真模型》上进一步创作的,之前的模型只考虑了二次电压与频率控制,并没有考虑均分这一项点。 因此…

STM32相关资料汇总

STM32选型表 STM32手册参考网站 https://www.stmcu.org.cn/

文件包含漏洞之包含NGINX日志文件(常用)

条件:知道目标服务器的日志文件存贮路径,并且存在文件包含漏洞 首先对目标服务器发送一次含有木马的请求,目的是让目标服务器日志中生成含有木马的日志记录。因为发送过程中,使用了url编码,我们抓包进行更改成能够执行…

网络——入门基础

目录 协议 网络协议 OSI七层模型 网络传输基本流程 网络传输流程图 局域网通信 数据包的封装和解包 广域网通信 网络地址管理 IP地址 MAC地址 协议 关于什么是局域网,什么是广域网,我这里就不过多赘述了,我们直接来谈一下什么…

复旦发布层次性奖励学习框架,增强大模型人类偏好对齐

在人工智能领域,强化学习(Reinforcement Learning, RL)一直是实现智能体自主学习的关键技术之一。通过与环境的交互,智能体能够自我优化其行为策略,以获得更多的奖励。然而,当涉及到复杂的人类偏好时&#…

codeforces 1600分

文章目录 1.[G. Special Permutation](https://codeforces.com/problemset/problem/1352/G)2.[D. Constructing the Array](https://codeforces.com/problemset/problem/1353/D)3.[C2. k-LCM (hard version)](https://codeforces.com/problemset/problem/1497/C2)4.[C. Circle …

【ollama】linux、window系统更改模型存放位置,全网首发2024!

首先是window系统 so easy 直接进入系统环境变量添加就行 其次是linux系统 全靠自己试出来的,去Ollama官网找半天文档不知道在哪,而且linux也没有说:【 https://github.com/ollama/ollama/blob/main/docs/README.md https://github.com/o…

CSS Module

CSS Module的作用:将CSS样式作用域限制在特定的组件范围内,以避免全局样式污染和命名冲突。 Vue中如何实现样式模块…

一款博客网站源码

一款博客网站源码 源码软件库 为大家内置了主题 清爽又强大真正的永久可用的一条源码,该版本为整合版本,内置了Joe主题,搭建后直接启用即可~ 安装环境要求: PHP 7.2 以上 MySQL, PostgreSQL, SQLite 任意一种数据库支持&#xff…

BUUCTF-WEB1

[ACTF2020 新生赛]Exec1 1.打开靶机 是一个ping命令 2.利用管道符“|” ping一下本地主机并查看ls ping 127.0.0.1 | ls 可以看到回显的内容是一个文件 127.0.0.1 | cat index.php #查看主机下index.php 127.0.0.1 | ls / #查看主机根目录下的文件 看的一个flag文件 …

专升本 C语言 万字考点笔记全国通用

前言 全章内容多次校验整理,可以放心食用;如果发现内容有不严谨的地方,请随时私信张三xy 形而上学者谓之道,形而下学者谓之器 目录 前言 常考概念 一、C语言的基础知识 第一节、对C语言的基础认识 第二节、C语言程序生命周期 第三节、标识符 第四节、进制的转…

帆软笔记整理

一:表格值自定义显示 1、日期型格式化:FORMAT($$$,"MM月dd日") 或者: 2、普通值自定义显示:if($$$SW_1,丝网一号机,if($$$SW_2,丝网二号机,丝网三号机)) 或者: 二:从数据集中再次筛选&#…

Wireshare捕获接口中没有本地连接

1. 查看npf服务是否启动 服务名无效,需要安转WinPcap 2. 勾选Npcap Packet Driver (NPCAP) 3. 重新启动Wireshark 重新启动Wireshark后,本地连接有了

吴恩达机器学习-可选实验室:简单神经网络(Simple Neural Network)

在这个实验室中,我们将使用Tensorflow构建一个小型神经网络 import numpy as np import matplotlib.pyplot as plt plt.style.use(./deeplearning.mplstyle) import tensorflow as tf from tensorflow.keras.models import Sequential from tensorflow.keras.laye…

C++:继承:面向对象编程的重要特性

(❁◡❁)(●◡●)╰(*▽*)╯(*/ω\*)(^///^)(❁◡❁)(❁◡❁)(●◡●)╰(*▽*)╯(*/ω\*)(❁◡❁)(●’◡’●)╰(▽)╯(/ω\)(///) C:继承:面向对象编程的重要特性 前言**继承**1.继承的概念及定义1.1继承的概念1.2继…

联合和枚举

联合体类型的声明 联合体(Union)是一种特殊的数据类型,它允许在同一内存位置存储不同类型的数据。与结构体不同的是,联合体的所有成员共享同一块内存空间,因此联合体的大小取决于它最大的成员的大小。 所以联合体也叫…

vue学习笔记27-组件生命周期⭐

每个vue组件实例在创建时都需要经历一系列初始化步骤,比如设置好数据侦听,编译模板,挂载实列到DOM,以及在数据改变时更新DOM。在此过程中,它也会运行称为生命周期钩子的函数,让开发者有机会在特定阶段运行自…

金融知识分享系列之:KD指标

金融知识分享系列之:KD指标 一、KD指标二、KD指标计算三、KD指标原理四、KD指标应用 一、KD指标 KD信号提供入场的工具 名称:随机震荡指标参数:(9,3,3)组成:K线,D线,20轴&#xff0…