MySQL-DQL语句简单查询

一.什么是DQL


🥴DQL:Data Query Language数据查询语言,select用于从一个或者多个表中检索中的行(Recod)

🎯在开始进行数据库查询之前,我们需要创建几张表并且为这几张表插入相应的数据。

sql 复制代码
# 创建学生信息表
CREATE TABLE student_info (
    number INT PRIMARY KEY,
    name VARCHAR(5),
    sex ENUM('男', '女'),
    id_number CHAR(18),
    department VARCHAR(30),
    major VARCHAR(30),
    enrollment_time DATE,
    UNIQUE KEY (id_number)
);

# 创建学生成绩表
CREATE TABLE student_score (
    number INT,
    subject VARCHAR(30),
    score TINYINT,
    PRIMARY KEY (number, subject),
    CONSTRAINT FOREIGN KEY(number) REFERENCES student_info(number)
);

然后我们向我们创建的表中插入对应的数据。

sql 复制代码
# 向学生信息表中插入数据
INSERT INTO student_info ( number, NAME, sex, id_number, department, major, enrollment_time )
VALUES
	( 20180101, '杜子腾', '男', '158177199901044792', '计算机学院', '计算机科学与工程', '2018-09-01' ),
	( 20180102, '杜琦燕', '女', '151008199801178529', '计算机学院', '计算机科学与工程', '2018-09-01' ),
	( 20180103, '范统', '男', '17156319980116959X', '计算机学院', '软件工程', '2018-09-01' ),
	( 20180104, '史珍香', '女', '141992199701078600', '计算机学院', '软件工程', '2018-09-01' ),
	( 20180105, '范剑', '男', '181048199308156368', '航天学院', '飞行器设计', '2018-09-01' ),
	( 20180106, '朱逸群', '男', '197995199501078445', '航天学院', '电子信息', '2018-09-01' );

# 向学生成绩表中插入数据
INSERT INTO student_score ( number, SUBJECT, score )
VALUES
	( 20180101, '母猪的产后护理', 78 ),
	( 20180101, '论萨达姆的战争准备', 88 ),
	( 20180102, '母猪的产后护理', 100 ),
	( 20180102, '论萨达姆的战争准备', 98 ),
	( 20180103, '母猪的产后护理', 59 ),
	( 20180103, '论萨达姆的战争准备', 61 ),
	( 20180104, '母猪的产后护理', 55 ),
	( 20180104, '论萨达姆的战争准备', 46 );

然后我们可以在Navicat上面查询自己创建的表首先是学生信息表。

然后我们再查看学生成绩表。

二.简单的查询


😊查询表中的某一列的数据。

sql 复制代码
SELECT `name` from `student_info`;

我们在查询某一列的数据的时候还可以指定列的别名,通过以下的方式。

sql 复制代码
SELECT `name` AS 'othername' from `student_info`;

我们会发现查询的结果列的别名发生了变化,从原来的name变成了我们指定的othername,别名也有简写的方式来指定。

sql 复制代码
SELECT `name` '名字' FROM `student_info`;

🧙一次性查询多个表中的字段,多个字段之间通过,分割。

sql 复制代码
SELECT `name`,`sex`,`number` FROM `student_info`;

🤡一次性查询表中的所有数据字段;

sql 复制代码
SELECT * FROM `student_info`;

😁对查询结果去重,我们查询下student_info然后查看下结果。

sql 复制代码
SELECT `department` FROM `student_info`;

我们会看到有很多重复的内容,我们需要对它们进行去重,去重需要使用DISTINCT放在列名前进行去重

sql 复制代码
SELECT DISTINCT `department` FROM `student_info`;

然后我们就会发现重复的内容被我们去掉了。


👽对多行的重复的情况进行去重

sql 复制代码
SELECT DISTINCT `department`,`major` FROM `student_info`;

🦊对查询的条数进行限制,因为有的时候数据很多会直接把屏幕撑爆,所以我们很多情况下需要限制条数

sql 复制代码
LIMIT 开始行, 限制条数;
sql 复制代码
SELECT `number`,`name`,`department` FROM `student_info` LIMIT 0,4;

当然我们也可以使用MySQL指定的默认行,仅仅对条数进行限制。

sql 复制代码
SELECT `number`,`name`,`department` FROM `student_info` LIMIT 4;

😶‍🌫️对查询结果进行排序,排序的语法如下:其中ASC表示升序,DESC表示降序。

sql 复制代码
ORDER BY 列名 ASC|DESC

那么我们对刚才新建的成绩表进行按照score进行降序排序。

sql 复制代码
SELECT * FROM `student_score` ORDER BY `score` DESC;

🎯按照多列的值进行排序,语法如下,不同的字段使用,隔开,不写排序方式默认升序排序。

sql 复制代码
ORDER BY 列1 ASC|DESC, 列2 ASC|DESC ...
sql 复制代码
SELECT * FROM `student_score` ORDER BY `subject`,`score` DESC; 

三.案例练习


😊找出成绩表中成绩最低的那条记录。

sql 复制代码
SELECT * FROM `student_score` ORDER BY `score` ASC LIMIT 1;

🧙其实这就涉及到了limit和order by的混合使用,limit需要在order by后面使用,然后让整个成绩表进行升序,然后取第一条就是成绩最低的那条数据。

相关推荐
子兮曰4 天前
jev-ultrafast 深度解析:7 秒订机票的浏览器 Agent 是如何炼成的
前端·后端·agent
子兮曰4 天前
Jev 爆发一周:7 秒 Agent 背后的 System One 生态与三场争议
前端·后端·ai编程
前端小万4 天前
写公众号赚了 3000 块后,我做了一款叫 "一键成稿" 的软件
前端·微信小程序
爱勇宝4 天前
ZCode 开源 24 小时:一份没有历史的账本,回答不了"有没有偷代码"
前端·后端·chatglm (智谱)
三十而立洋4 天前
Cookie 详解:从产生到安全,一次讲透
前端·javascript
卡布鲁4 天前
把一个 Vite + Vue3 应用塞进 qiankun (React + Umi3) 主站:十个坑的复盘
前端·javascript·react.js
汉堡大王95274 天前
Jev:不是聊天机器人, 而是一个智能 if 语句
前端·人工智能·后端
梦想很大很大4 天前
从运行事实到回归证据:Workrun 的 Telemetry 与 Evaluation 实践
前端·人工智能·后端
计算机魔术师4 天前
Meta Muse agent 接入 Shopify 的 Shop Pay 实现代理式购物
前端
沙蒿同学4 天前
我用 Go 搭了一条 AI Agent 流水线:从 1 张商品图到一整套淘宝详情页
前端·javascript·后端