【WEEK6】 【DAY1】DQL查询数据-第一部分【中文版】
2024.4.1 Monday
目录
- 4.DQL查询数据(重点!)
- 4.1.Data Query Language查询数据语言
- 4.2.SELECT
- 4.2.1.语法
- 4.2.2.实践
- 4.2.2.1.查询字段 SELECT 字段/* FROM 表
- 查询全部的某某
- 查询指定字段
- 4.2.2.2.给查询结果或者查询的这个表起别名(不用原本的字段名) AS
- 4.2.2.3.使用函数拼接字符串 Concat(A, B)
- 4.2.2.4.DISTINCT关键字的使用
- 查询有参加过考试的同学 -> 通过考试‘有’成绩来选择
- 查询有哪些同学参加过考试
- 对于‘参加过’考试的同学StudentNo数据去重
- 4.2.2.5.数据库中的表达式 : 一般由文本值 , 列值 , NULL , 函数和操作符等组成应用场景
- 4.2.2.6.查看学员考试成绩加了1分的结果
- 4.3.Where条件字句
- 4.3.1.作用:检索数据中符合条件的值
- 4.3.2.逻辑操作符
- 4.3.3.例
- 4.3.3.1.查询StudentResult在95~100之间的
- 4.3.3.2.查询除了1000号手机以外的同学的成绩
- 4.3.4.模糊查询:比较运算符
- 4.3.5.例
- 4.3.5.1.LIKE搭配 %表示0~任意个字符,_表示一个字符 --
- 查询姓刘的同学
- 查询姓刘的二字同学
- 查询姓刘的三字同学
- 查询名字中间有‘强’字的同学
- 4.3.5.2.IN 具体的一个或多个值
- 查询1001,1002,1003号学员
- 查询在北京朝阳的学生(同理,多个地点满足一个即可时,就在‘’后加逗号继续写上其他的可选值)
- 4.3.5.3.NULL NOT NULL
- 查询地址为空的学生(null或者'')
- 查询有出生日期的同学(borndate不为空)
- 查询没有出生日期的同学(borndate为空)
4.DQL查询数据(重点!)
4.1.Data Query Language查询数据语言
4.1.1.查询数据库数据 , 如SELECT语句
4.1.2.简单 的单表查询或多表的复杂查询和嵌套查询
4.1.3.是数据库语言中最核心,最重要的语句
4.1.4.使用频率最高的语句
4.2.SELECT
这里开始的数据库名称为‘p16select’
建表查询相关代码如下:(数据库名称为‘school’)
create database if not exists `school`;
-- 创建一个school数据库
use `school`;-- 创建学生表
drop table if exists `student`;
create table `student`(`studentno` int(4) not null comment '学号',`loginpwd` varchar(20) default null,`studentname` varchar(20) default null comment '学生姓名',`sex` tinyint(1) default null comment '性别,0或1',`gradeid` int(11) default null comment '年级编号',`phone` varchar(50) not null comment '联系电话,允许为空',`address` varchar(255) not null comment '地址,允许为空',`borndate` datetime default null comment '出生时间',`email` varchar (50) not null comment '邮箱账号允许为空',`identitycard` varchar(18) default null comment '身份证号',primary key (`studentno`),unique key `identitycard`(`identitycard`),key `email` (`email`)
)engine=myisam default charset=utf8;-- 创建年级表
drop table if exists `grade`;
create table `grade`(`gradeid` int(11) not null auto_increment comment '年级编号',`gradename` varchar(50) not null comment '年级名称',primary key (`gradeid`)
) engine=innodb auto_increment = 6 default charset = utf8;-- 创建科目表
drop table if exists `subject`;
create table `subject`(`subjectno`int(11) not null auto_increment comment '课程编号',`subjectname` varchar(50) default null comment '课程名称',`classhour` int(4) default null comment '学时',`gradeid` int(4) default null comment '年级编号',primary key (`subjectno`)
)engine = innodb auto_increment = 19 default charset = utf8;-- 创建成绩表
drop table if exists `result`;
create table `result`(`studentno` int(4) not null comment '学号',`subjectno` int(4) not null comment '课程编号',`examdate` datetime not null comment '考试日期',`studentresult` int (4) not null comment '考试成绩',key `subjectno` (`subjectno`)
)engine = innodb default charset = utf8;#3
-- 插入学生数据 其余自行添加 这里只添加了2行
insert into `student` (`studentno`,`loginpwd`,`studentname`,`sex`,`gradeid`,`phone`,`address`,`borndate`,`email`,`identitycard`)
values
(1000,'123456','张伟',0,2,'13800001234','北京朝阳','1980-1-1','text123@qq.com','123456198001011234'),
(1001,'123456','赵强',1,3,'13800002222','广东深圳','1990-1-1','text111@qq.com','123456199001011233'),
(1002,'123456','刘福',0,4,'13800002333','广东深圳','1990-1-1','text211@qq.com','123456199091011232'),
(1003,'123456','刘大福',0,5,'13800002233','广东深圳','1990-1-1','text221@qq.com','123456199091011332'),
(1004,'123456','吴福',0,5,'13800003333','北京',NULL,'text222@qq.com','123456199991011332');-- 插入成绩数据 这里仅插入了一组,其余自行添加
insert into `result`(`studentno`,`subjectno`,`examdate`,`studentresult`)
values
(1000,1,'2013-11-11 16:00:00',85),
(1000,2,'2013-11-12 16:00:00',70),
(1000,3,'2013-11-11 09:00:00',68),
(1000,4,'2013-11-13 16:00:00',98),
(1000,5,'2013-11-14 16:00:00',58),
(1001,1,'2013-11-11 16:00:00',70),
(1001,2,'2013-11-12 16:00:00',0),
(1001,3,'2013-11-11 09:00:00',80);-- 插入年级数据
insert into `grade` (`gradeid`,`gradename`) values(1,'大一'),(2,'大二'),(3,'大三'),(4,'大四'),(5,'预科班');#4
-- 插入科目数据
insert into `subject`(`subjectno`,`subjectname`,`classhour`,`gradeid`)values
(1,'高等数学-1',110,1),
(2,'高等数学-2',110,2),
(3,'高等数学-3',100,3),
(4,'高等数学-4',130,4),
(5,'C语言-1',110,1),
(6,'C语言-2',110,2),
(7,'C语言-3',100,3),
(8,'C语言-4',130,4),
(9,'Java程序设计-1',110,1),
(10,'Java程序设计-2',110,2),
(11,'Java程序设计-3',100,3),
(12,'Java程序设计-4',130,4),
(13,'数据库结构-1',110,1),
(14,'数据库结构-2',110,2),
(15,'数据库结构-3',100,3),
(16,'数据库结构-4',130,4),
(17,'C#基础',130,1);#5
CREATE TABLE `category`(`categoryid` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主题id', -- 不同的名字算不一样的id`pid` INT(10) NOT NULL COMMENT '父id', -- 大类的第x类`categoryname` VARCHAR(50) NOT NULL COMMENT '主题名字',
PRIMARY KEY (`categoryid`) ) ENGINE=INNODB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8; INSERT INTO `category` (`categoryid`, `pid`, `categoryname`)
VALUES ('2','1','信息技术'),
('3','1','软件开发'),
('5','1','美术设计'),
('4','3','数据库'),
('8','2','办公信息'),
('6','3','web开发'),
('7','5','ps技术');
4.2.1.语法
SELECT [ALL | DISTINCT]
{* | table.* | [table.field1[as alias1][,table.field2[as alias2]][,...]]}
FROM table_name [as table_alias][left | right | inner join table_name2] -- 联合查询[WHERE ...] -- 指定结果需满足的条件[GROUP BY ...] -- 指定结果按照哪几个字段来分组[HAVING] -- 过滤分组的记录必须满足的次要条件[ORDER BY ...] -- 指定查询记录按一个或多个条件排序[LIMIT {[offset,]row_count | row_countOFFSET offset}];-- 指定查询的记录从哪条至哪条
4.2.2.实践
4.2.2.1.查询字段 SELECT 字段/* FROM 表
查询全部的某某
-- 查询全部的某某 SELECT 字段/* FROM 表
SELECT * FROM student
SELECT * FROM result
查询指定字段
-- 查询指定字段
SELECT `StudentNo`,`StudentName` FROM student
4.2.2.2.给查询结果或者查询的这个表起别名(不用原本的字段名) AS
-- 给查询的字段/结果/查询的这个表起别名(不用原本的字段名) AS
SELECT `StudentNo` AS 学号,`StudentName` AS 姓名 FROM student AS STU
4.2.2.3.使用函数拼接字符串 Concat(A, B)
-- 使用函数拼接字符串 Concat(A, B)
SELECT CONCAT('姓名:',StudentName) AS 新格式 FROM student
4.2.2.4.DISTINCT关键字的使用
查询有参加过考试的同学 -> 通过考试‘有’成绩来选择
-- 查询有参加过考试的同学 -> 通过考试‘有’成绩来选择
SELECT * FROM result
查询有哪些同学参加过考试
-- 查询有哪些同学参加过考试
SELECT `StudentNo` FROM result
对于‘参加过’考试的同学StudentNo数据去重
-- 对于‘参加过’考试的同学StudentNo数据去重
SELECT DISTINCT `StudentNo` FROM result
4.2.2.5.数据库中的表达式 : 一般由文本值 , 列值 , NULL , 函数和操作符等组成应用场景
- SELECT语句返回结果列中使用
- SELECT语句中的ORDER BY , HAVING等子句中使用
- DML语句中的 where 条件语句中使用表达式
-- 查询系统版本(函数)
SELECT VERSION()
-- 计算数学算式结果(表达式)
SELECT 1021*3-999 AS CAL_RESULT
-- 查询自增步长(变量)
SELECT @@AUTO_INCREMENT_INCREMENT
4.2.2.6.查看学员考试成绩加了1分的结果
-- 查看学员考试成绩加了1分的结果
SELECT `StudentNo`, `StudentResult`+1 AS 显示时加一分 FROM result
4.3.Where条件字句
4.3.1.作用:检索数据中符合条件的值
搜索条件可由一个或多个逻辑表达式组成 , 结果一般为布尔值(真或假)
4.3.2.逻辑操作符
4.3.3.例
4.3.3.1.查询StudentResult在95~100之间的
#where条件语句
SELECT studentNo, StudentResult FROM result -- 查询全部的
#逻辑查询
-- 查询StudentResult在95~100之间的
SELECT studentNo, StudentResult FROM result
WHERE StudentResult >= 95 AND StudentResult <= 100
-- 用AND或者&&都可以
SELECT studentNo, StudentResult FROM result
WHERE StudentResult >= 95 && StudentResult <= 100
-- 用‘模糊查询’(区间查询)也可以
SELECT studentNo, StudentResult FROM result
WHERE StudentResult BETWEEN 95 AND 100
4.3.3.2.查询除了1000号手机以外的同学的成绩
-- 查询除了1000号手机以外的同学的成绩
SELECT studentNo, StudentResult FROM result
WHERE studentNo != 1000; -- 或者<>
SELECT studentNo, StudentResult FROM result
WHERE NOT studentNo = 1000; -- 注意NOT的位置
4.3.4.模糊查询:比较运算符
4.3.5.例
4.3.5.1.LIKE搭配 %表示0~任意个字符,_表示一个字符 –
查询姓刘的同学
#模糊查询
-- LIKE搭配 %表示0~任意个字符,_表示一个字符 --
-- 查询姓刘的同学
SELECT `studentNo`,`StudentName` FROM `student` -- 这里选择的列名不区分大小写,但会决定查询结果列明中的大小写
WHERE studentName LIKE '刘%'
查询姓刘的二字同学
-- 查询姓刘的二字同学
SELECT `studentNo`,`StudentName` FROM `student`
WHERE studentName LIKE '刘_'
查询姓刘的三字同学
-- 查询姓刘的三字同学
SELECT `studentNo`,`StudentName` FROM `student`
WHERE studentName LIKE '刘__'
查询名字中间有‘强’字的同学
-- 查询名字中间有‘强’字的同学
SELECT `studentNo`,`StudentName` FROM `student`
WHERE studentName LIKE '%强%'
-- 查询姓名中含有特殊字符的需要使用转义符号 '\'
-- 自定义转义符关键字: ESCAPE ':'
4.3.5.2.IN 具体的一个或多个值
查询1001,1002,1003号学员
-- IN 具体的一个或多个值 --
-- 查询1001,1002,1003号学员
SELECT `studentNo`,`StudentName` FROM `student`
WHERE StudentNo IN (1001,1002,1003);
-- 和以下OR语句作用相同
SELECT `studentNo`,`StudentName` FROM `student`
WHERE StudentNo = 1001 OR StudentNo = 1002 OR StudentNo = 1003
查询在北京朝阳的学生(同理,多个地点满足一个即可时,就在‘’后加逗号继续写上其他的可选值)
-- 查询在北京朝阳的学生(同理,多个地点满足一个即可时,就在‘’后加逗号继续写上其他的可选值)
SELECT `studentNo`,`StudentName`,`address` FROM `student`
WHERE `Address` IN ('北京朝阳')
4.3.5.3.NULL NOT NULL
查询地址为空的学生(null或者’')
-- NULL NOT NULL --
-- 查询地址为空的学生(null或者'')
SELECT `studentNo`,`StudentName`,`address` FROM `student`
WHERE address = '' OR address IS NULL
查询有出生日期的同学(borndate不为空)
-- 查询有出生日期的同学(borndate不为空)
SELECT `studentNo`,`StudentName`,`borndate` FROM `student`
WHERE borndate IS NOT NULL
查询没有出生日期的同学(borndate为空)
-- 查询没有出生日期的同学(borndate为空)
SELECT `studentNo`,`StudentName`,`borndate` FROM `student`
WHERE borndate IS NULL
相关文章:

【WEEK6】 【DAY1】DQL查询数据-第一部分【中文版】
2024.4.1 Monday 目录 4.DQL查询数据(重点!)4.1.Data Query Language查询数据语言4.2.SELECT4.2.1.语法4.2.2.实践4.2.2.1.查询字段 SELECT 字段/* FROM 表查询全部的某某查询指定字段 4.2.2.2.给查询结果或者查询的这个表起别名(…...

Linux:权限篇
文章目录 前言1.用户2.文件的权限管理2.1 修改文件的权限2.2 修改文件的拥有者2.3 修改文件的所属组 3.file指令4.umask指令4.目录的权限管理总结 前言 Linux权限在两个地方有所体现,一种是使用用户:分为root超级用户员与普通用户。另一个是体现在文件的…...

Lua热更新(xlua)
发现错误时检查是否:冒号调用 只需要导入asset文件夹下的Plugins和Xlua这两个文件即可,别的不用导入 生成代码 和清空代码 C#调用lua using Xlua; 需要引入命名空间 解析器里面执行lua语法 lua解析器 LuaEnv 单引号是为了避免引号冲突 第二个参数是报错时显示什么提示…...
并查集(基础+带权以及可撤销并查集后期更新)
并查集 并查集是一种图形数据结构,用于存储图中结点的连通关系。 每个结点有一个父亲,可以理解为“一只伸出去的手”,会指向另一个点,初始时指向自己。一个点的根节点是该点的父亲的父亲的..的父亲,直到某个点的父亲…...
基于 Java 的数据结构和算法 (不定期更新)
JavaIsBestLang 数据结构 Collection 是 Java 中的接口,被多个泛型容器接口所实现。在这里,Collection 是指代存放对象类型的数据结构。 ArrayList 函数名功能size()返回 this 的长度add(Integer val)在 this 尾部插入一个元素add(int idx, Integer …...

考研回忆录【二本->211】
备考时长差不多快一年半,从22年的11月底开始陆陆续续地准备考研,因为开始的早所以整个备考过程显得压力不是很大,中途还去一些地方旅游,我不喜欢把自己绷得太紧。虽然考的不是很好,考完我甚至都没准备复试,…...
【XCPC笔记】2023 (ICPC) Jiangxi Provincial Contest——ABCIJKL 做题记录
补题 赛后gym练习及补题,gym链接:2023 (ICPC) Jiangxi Provincial Contest – Official Contest 另外,D题我也打算找机会学习写下,C题的博弈论还需要好好理解,感觉都是比较有趣的数学问题 补题顺序如下 补题L [Zhang …...

猫头虎分享已解决Bug || **URLError (URL错误)** 全方位解析
博主猫头虎的技术世界 🌟 欢迎来到猫头虎的博客 — 探索技术的无限可能! 专栏链接: 🔗 精选专栏: 《面试题大全》 — 面试准备的宝典!《IDEA开发秘籍》 — 提升你的IDEA技能!《100天精通鸿蒙》 …...

如何使用极狐GitLab 启用自动备份功能
本文作者:徐晓伟 GitLab 是一个全球知名的一体化 DevOps 平台,很多人都通过私有化部署 GitLab 来进行源代码托管。极狐GitLab 是 GitLab 在中国的发行版,专门为中国程序员服务。可以一键式部署极狐GitLab。 本文主要讲述了如何极狐GitLab 自…...
HTML/XML转义字符对照
特殊字符转义表 字符十进制转义字符""&&<<<>>>不断开空格(non-breaking space) 最常用的转义字符列表 显示说明实体名称十进制编号半方大的空白 全方大的空白 不断行的空白格 <小于<<>大于&g…...
设计模式:组合模式示例
组合模式的典型例子通常涉及到树形结构的处理,下面是几个形象且易于理解的例子: 文件系统 在文件系统中,目录可以包含文件或者其他目录,但是从用户的角度来看,目录和文件都可以被“打开”或者“获取大小”。这里的目…...

普通情况和高并发时,Redis缓存和数据库怎么保持一致?
普通情况和高并发时,Redis缓存和数据库怎么保持一致? 普通情况思路 高并发时思路 Q:缓存和数据库怎么保持一致? A:绝对不可能保持一致的,在实际业务开发中,有一些方案可以做取舍。 实际业务中&a…...
Django -- 自动化测试
概述 测试是一种例行的、不可缺失的工作,用于检查你的程序是否符合预期。 测试可以划分为不同的级别。一些测试可能专注于小细节(比如某一个模型的方法是否会返回预期的值?), 一些测试则专注于检查软件的整体运行是否…...
NodeJS 在Windows / Mac 上实现多版本控制
NodeJS 的多版本控制 本文介绍一下在 windows/MacOS 上 如何 切换和使用多个版本的 NodeJS。 Windows 本小节介绍一下在windows上管理不同版本的NodeJS。 nvm-windows 工具 nvm-windows 是在 windows 上管理 NodeJS 版本的一个工具。 它可以很方便的 下载、移除、查看、切…...

Web3 游戏周报(3.24-3.30)
【3.24-3.30】Web3 游戏行业动态: Web3 开发平台 Mirror World 在 Solana 上推出首个游戏 rollup 链 NFT 卡牌游戏 Parallel 完成 3,500 万美元融资,Solana Ventures 等参投 加密游戏开发公司 Gunzilla Games 完成 3,000 万美元融资 Telegram 游戏 No…...
算法思想1. 分治法2. 动态规划法3. 贪心算法4. 回溯法
目录 递归和动态的区别:空间和时间复杂度之争 递归空间复杂度低;动态时间复杂度第低...

SpringBoot+ECharts+Html 地图案例详解
1. 技术点 SpringBoot、MyBatis、thymeleaf、MySQL、ECharts 等 此案例使用的地图是在ECharts社区中查找的:makeapie echarts社区图表可视化案例 2. 准备条件 在mysql中创建数据库echartsdb,数据库中创建表t_location_count表,表中设置两个…...

达梦数据库 优化
谁进行优化?优化什么? 优化不能仅从数据库方面考虑,比如,在存储达到数据库极限、应用涉及人员设计的代码稀巴烂的情况下,进行调优就是杯水车薪的效果。 涉及到优化人员: 数据库管理员应用程序架构师应用…...

数据如何才能供得出、流得动、用得好、还安全
众所周知,数据要素已经列入基本生产要素,同时成立国家数据局进行工作统筹。目前数据要素如何发挥其价值,全国掀起了一浪一浪的热潮。 随着国外大语言模型的袭来,国内在大语言模型领域的应用也大放异彩,与此同时&#x…...

idea开发 java web 酒店推荐系统bootstrap框架开发协同过滤算法web结构java编程计算机网页
一、源码特点 java 酒店推荐推荐系统是一套完善的完整信息系统,结合java web开发和bootstrap UI框架完成本系统 采用协同过滤算法进行推荐 ,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式…...

idea大量爆红问题解决
问题描述 在学习和工作中,idea是程序员不可缺少的一个工具,但是突然在有些时候就会出现大量爆红的问题,发现无法跳转,无论是关机重启或者是替换root都无法解决 就是如上所展示的问题,但是程序依然可以启动。 问题解决…...

【入坑系列】TiDB 强制索引在不同库下不生效问题
文章目录 背景SQL 优化情况线上SQL运行情况分析怀疑1:执行计划绑定问题?尝试:SHOW WARNINGS 查看警告探索 TiDB 的 USE_INDEX 写法Hint 不生效问题排查解决参考背景 项目中使用 TiDB 数据库,并对 SQL 进行优化了,添加了强制索引。 UAT 环境已经生效,但 PROD 环境强制索…...

iPhone密码忘记了办?iPhoneUnlocker,iPhone解锁工具Aiseesoft iPhone Unlocker 高级注册版分享
平时用 iPhone 的时候,难免会碰到解锁的麻烦事。比如密码忘了、人脸识别 / 指纹识别突然不灵,或者买了二手 iPhone 却被原来的 iCloud 账号锁住,这时候就需要靠谱的解锁工具来帮忙了。Aiseesoft iPhone Unlocker 就是专门解决这些问题的软件&…...

ESP32读取DHT11温湿度数据
芯片:ESP32 环境:Arduino 一、安装DHT11传感器库 红框的库,别安装错了 二、代码 注意,DATA口要连接在D15上 #include "DHT.h" // 包含DHT库#define DHTPIN 15 // 定义DHT11数据引脚连接到ESP32的GPIO15 #define D…...
MVC 数据库
MVC 数据库 引言 在软件开发领域,Model-View-Controller(MVC)是一种流行的软件架构模式,它将应用程序分为三个核心组件:模型(Model)、视图(View)和控制器(Controller)。这种模式有助于提高代码的可维护性和可扩展性。本文将深入探讨MVC架构与数据库之间的关系,以…...

CMake 从 GitHub 下载第三方库并使用
有时我们希望直接使用 GitHub 上的开源库,而不想手动下载、编译和安装。 可以利用 CMake 提供的 FetchContent 模块来实现自动下载、构建和链接第三方库。 FetchContent 命令官方文档✅ 示例代码 我们将以 fmt 这个流行的格式化库为例,演示如何: 使用 FetchContent 从 GitH…...
根据万维钢·精英日课6的内容,使用AI(2025)可以参考以下方法:
根据万维钢精英日课6的内容,使用AI(2025)可以参考以下方法: 四个洞见 模型已经比人聪明:以ChatGPT o3为代表的AI非常强大,能运用高级理论解释道理、引用最新学术论文,生成对顶尖科学家都有用的…...
MySQL用户和授权
开放MySQL白名单 可以通过iptables-save命令确认对应客户端ip是否可以访问MySQL服务: test: # iptables-save | grep 3306 -A mp_srv_whitelist -s 172.16.14.102/32 -p tcp -m tcp --dport 3306 -j ACCEPT -A mp_srv_whitelist -s 172.16.4.16/32 -p tcp -m tcp -…...

C# 求圆面积的程序(Program to find area of a circle)
给定半径r,求圆的面积。圆的面积应精确到小数点后5位。 例子: 输入:r 5 输出:78.53982 解释:由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982,因为我们只保留小数点后 5 位数字。 输…...

sipsak:SIP瑞士军刀!全参数详细教程!Kali Linux教程!
简介 sipsak 是一个面向会话初始协议 (SIP) 应用程序开发人员和管理员的小型命令行工具。它可以用于对 SIP 应用程序和设备进行一些简单的测试。 sipsak 是一款 SIP 压力和诊断实用程序。它通过 sip-uri 向服务器发送 SIP 请求,并检查收到的响应。它以以下模式之一…...