【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

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Spark-Scala语言实战(13)

在之前的文章中&#xff0c;我们学习了如何在spark中使用键值对中的keys和values,reduceByKey,groupByKey三种方法。想了解的朋友可以查看这篇文章。同时&#xff0c;希望我的文章能帮助到你&#xff0c;如果觉得我的文章写的不错&#xff0c;请留下你宝贵的点赞&#xff0c;谢…

【瑞萨RA6M3】1. 基于 vscode 搭建开发环境

基于 vscode 搭建开发环境 1. 准备2. 安装2.1. 安装瑞萨软件包2.2. 安装编译器2.3. 安装 cmake2.4. 安装 openocd2.5. 安装 ninja2.6. 安装 make 3. 生成初始代码4. 修改 cmake 脚本5. 调试准备6. 仿真 1. 准备 需要瑞萨仓库中的两个软件&#xff1a; MDK_Device_Packs.zipse…

浅谈物联网高速公路智慧配电室系统构建方案

关键词&#xff1a;高速公路&#xff1b;智慧供配电&#xff1b;电力监控&#xff1b;配电室智能运维托管&#xff1b;安全隐患 0、引言 随着高速公路事业的不断发展和路网的不断延伸&#xff0c;传统的管理方式已难以满足日益增长的需求&#xff0c;动态管理和安全隐患预警成…

ubuntu16如何使用高版本cmake

1.引言 最近在尝试ubuntu16.04下编译开源项目vsome&#xff0c;发现使用apt命令默认安装cmake的的版本太低。如下 最终得知&#xff0c;ubuntu16默认安装确实只能到3.5.1。解决办法只能是源码安装更高版本。 2.源码下载3.20 //定位到opt目录 cd /opt 下载 wget https://cmak…

ADB 命令之 模拟按键/输入

ADB 命令之 模拟按键/输入 模拟按键/输入 在 ​​adb shell​​​ 里有个很实用的命令叫 ​​input​​&#xff0c;通过它可以做一些有趣的事情。 ​​input​​ 命令的完整 help 信息如下&#xff1a; Usage: input [<source>] <command> [<arg>...] Th…

leetcode.面试题 02.07. 链表相交

题目 给你两个单链表的头节点 headA 和 headB &#xff0c;请你找出并返回两个单链表相交的起始节点。如果两个链表没有交点&#xff0c;返回 null 。 图示两个链表在节点 c1 开始相交&#xff1a; 思路 假a在链表A上移动,b在链表B上移动&#xff0c;a移动完在B上开始&…

javaweb学习(day11-监听器Listener过滤器Filter)

一、监听器Listener 1 Listener介绍 Listener 监听器它是 JavaWeb 的三大组件之一。JavaWeb 的三大组件分别是&#xff1a;Servlet 程 序、Listener 监听器、Filter 过滤器 Listener 是 JavaEE 的规范&#xff0c;就是接口 监听器的作用是&#xff0c;监听某种变化(一般就是对…

XRDP登录ubuntu桌面闪退问题

修改 /etc/xrdp/startwm.sh unset DBUS_SESSION_BUS_ADDRESS unset XDG_RUNTIME_DIR . $HOME/.profile

​如何使用ArcGIS Pro进行洪水淹没分析

洪水淹没分析是一种常见的水文地理信息系统应用&#xff0c;用于模拟和预测洪水事件中可能受到淹没影响的地区&#xff0c;这里为大家介绍一下ArcGIS Pro进行洪水淹没分析的方法&#xff0c;希望能对你有所帮助。 数据来源 教程所使用的数据是从水经微图中下载的DEM数据&…

数据结构(六)——图的应用

6.4 图的应用 6.4.1 最小生成树 对于⼀个带权连通⽆向图G (V, E)&#xff0c;⽣成树不同&#xff0c;每棵树的权&#xff08;即树中所有边上的权值之和&#xff09;也可能不同。设R为G的所有⽣成树的集合&#xff0c;若T为R中边的权值之和最小的生成树&#xff0c;则T称为G的…

怎样把学浪上的视频保存到电脑

怎样把学浪上的视频保存到电脑,这里给大家一个工具,专门用来下载学浪上的视频 这个工具叫做小浪助手.exe 我已经打包好了,有需要的自己取一下 链接&#xff1a;https://pan.baidu.com/s/1y7vcqILToULrYApxfEzj_Q?pwdkqvj 提取码&#xff1a;kqvj --来自百度网盘超级会员V…

【三维重建】3D Gaussian Splatting:实时的神经场渲染

文章目录 摘要一、前言二、相关工作1.传统的场景重建与渲染2.神经渲染和辐射场3.基于点的渲染和辐射场4.*什么是 Tile-based rasterizer (快速光栅化) 三、OVERVIEW四、可微的三维高斯 Splatting五、三维高斯 自适应密度控制的优化1.优化2.高斯的自适应控制 六、高斯分布的快速…

计算机网络—HTTP协议:深入解析与应用实践

​ &#x1f3ac;慕斯主页&#xff1a;修仙—别有洞天 ♈️今日夜电波&#xff1a;ヒステリックナイトガール 1:03━━━━━━️&#x1f49f;──────── 5:06 &#x1f504; ◀️ ⏸ ▶️ ☰…

Photoshop 2024 中文---专业图像处理软件的又一次飞跃

Photoshop 2024是一款功能强大的图像处理软件&#xff0c;广泛应用于创意设计和图像处理领域。它提供了丰富的绘画和编辑工具&#xff0c;包括画笔、铅笔、颜色替换、混合器画笔等&#xff0c;使用户能够轻松进行图片编辑、合成、校色、抠图等操作&#xff0c;实现各种视觉效果…

如何使用极狐GitLab 启用自动备份功能

本文作者&#xff1a;徐晓伟 GitLab 是一个全球知名的一体化 DevOps 平台&#xff0c;很多人都通过私有化部署 GitLab 来进行源代码托管。极狐GitLab 是 GitLab 在中国的发行版&#xff0c;专门为中国程序员服务。可以一键式部署极狐GitLab。 本文主要讲述了如何极狐GitLab 自…

利用Node.js实现拉勾网数据爬取

引言 拉勾网作为中国领先的互联网招聘平台&#xff0c;汇集了丰富的职位信息&#xff0c;对于求职者和人力资源专业人士来说是一个宝贵的数据源。通过编写网络爬虫程序&#xff0c;我们可以自动化地收集这些信息&#xff0c;为求职决策和市场研究提供数据支持。Node.js以其非阻…

基于Python的豆瓣电影评分可视化,豆瓣电影评分预测系统

博主介绍&#xff1a;✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;…

【stm32】I2C通信外设

【stm32】I2C通信外设 概念部分 如果简单应用&#xff0c;选择软件I2C。如果对性能指标要求比较高 选择硬件I2C 有硬件电路自动反转引脚电平&#xff0c;软件只需要写入控制寄存器CR和数据寄存器DR 为了实时监控时序的状态&#xff0c;还要读取状态寄存器SR 写入控制寄存器CR…

nodeJs 实现视频的转换(超详细教程)

前段时间拿到一个视频是4k的&#xff0c;没法播放&#xff0c;于是通过 node.js 和 ffmpeg 实现了视频的转换。在win10 系统下实现。 所需工具 node 16.19 直接安装 ffmpeg-5.1.1-essentials_build 解压后重名 ffmpeg 放到C盘 然后配置下环境变量 Git-2.42.0.2-64-bit 直接…

一键更换ip地址命令的应用方法

在数字化时代&#xff0c;IP地址作为网络设备的标识符&#xff0c;其重要性不言而喻。然而&#xff0c;在某些特定场景下&#xff0c;我们可能需要频繁地更换IP地址&#xff0c;如网络爬虫、隐私保护或测试环境等。这时&#xff0c;一键更换IP地址的命令就显得尤为重要。虎观代…