mysql查找所有男生_MYSQL-SELECT查

本文详细介绍了SQL查询的基本步骤,包括FROM、WHERE、GROUP BY、HAVING、ORDER BY等关键语法的应用,以及如何使用LIMIT、LIKE、RLIKE等进行数据筛选。

SELECT语句的执行过程(单表查询)

eec57663169452afd1cde5e23e545366.png

过程如下 :

1、先执行FROM,先找表,先确定对应数据库中的表

2、执行WHERE,表确定了以后,把这些表中复符合WHERE条件的行先过滤出来

3、如果有分组GROUP BY,那么我们就先对分组进行统计

4、如果分组完成后,我们就要使用HAVING,对分组后的内容再进行条件过滤

5、如果还有ORDER BY,进行排序

6、排序完成后,特定的行就可以显示了,我们可以选择要显示的字段

7、最后我们如果使用了LIMIT,我们还可以挑选特定的行进行过滤,最后显示出来

SELECT

SELECT

[ALL | DISTINCT | DISTINCTROW ]

[SQL_CACHE | SQL_NO_CACHE]

select_expr [, select_expr ...]

[FROM table_references

[WHERE where_condition]

[GROUP BY {col_name | expr | position}

[ASC | DESC], ... [WITH ROLLUP]]

[HAVING where_condition]

[ORDER BY {col_name | expr | position}

[ASC | DESC], ...]

[LIMIT {[offset,] row_count | row_count OFFSET offset}]

[FOR UPDATE | LOCK IN SHARE MODE]

总结:

1、字段显示可以显示别名

2、LIMIT [[offset,]rowcount]:对查询的结果进行输出行数数量限制

3、like:单个任意字符

%: 任意长度字符

4、rlike

支持正则表达式

5、 IN (element1, element2, ...)

in 等于

not in 不等于

6、 ORDER BY: 根据指定的字段对查询结果进行排序

升序:ASC

降序:DESC

7、DISTINCT 去除重复列

8、逻辑操作符:

NOT

AND

OR

XOR

9、BETWEEN min_num AND max_num

10、

IS NULL

IS NOT NULL

示例:

查找指定表中的所有字段

seletc * from students

查找students表中的所有数据,显示指定的行

select * from students limit 6;

查找指定字段行

select name,age from students;

查找tb1表中age 不等于24 的数据

select * from stdents where age != 24;

查找指定表中age大于等于24并且小于等于20的数据

selsct * from students where age>=24 and age <=20;

select * fromstudents where age between 20 and 24;

查找指定表中age等于20或者等于24的数据

select * from students where age=20 or age=24;

查找指定表中的查询出age 不在20到24的区间中的数据

select * from students where age <25 or age >24;

select * from students where not between 20 and 24;

通过like 结合通配符进行模糊搜索

查找所有字段开头是s的任意长度数据

select * frim students where name like 's%';

查找所有字段开始是s,但是只有三个字符的数据

select * from students where name like 's__'

通过rlike结合正则表达式

查找所有字段开头是s的任意长度数据

select * from students where name rlike '^s.*'

查找指定字段匹配对应的条件,使用in关键字指定

查找指定表中age 等于21 20 23 的数据

select * from students where age in (20,21,23);

查找指定表中age不等于21 20 23 的数据

select * from students where age not in (20,21,23);

对指定字段进行排序

查找所有表数据,并且指定字段进行排序

查询studentsd 的所有数据,并指定age字段的值从大到小进行降序排序,如果多行之间的age字段相同时,在将name字段进行升序排序

select * from students order by age desc, name asc;

注意:

order by 后面跟的要排序的字段,顺序不一样,结果也不一样

比如:

1、select * from students order by age,classid;

2、select * from students order by classid,age;

第一条是先对age进行排序后,再对classid进行排序

第二条是先对classid进行排序,然后再对age进行排序

去重

使用DISTINCT关键字进行去重

select distinct age from students;

别名

查询时给字段添加别名,显示的时候显示别名

select name as Name,age from students;

分组

分组

GROUP:根据指定的条件把查询结果进行“分组”以用于做“聚合”运算

avg(), 统计最小值

max(), 统计最大值

min(), 统计最小值

count(), 统计每个分组的数量

sum() 统计每个分组的总和

HAVING: 对分组聚合运算后的结果指定过滤条件

示例:

对sudents表的gender字段进行分组

select * from students group by gender;

需要注意的是,显示的是第一次查找到男生和女生数据

41e183ef63da473977b14937f7853665.png

聚合操作

select count(*),gender from students group by gender;

先对性别进行分组,然后统计每组中的人数。

count()就是一种聚合函数,这个函数能统计数量

a0b5b9c1576c80522ef28bcf64cdc087.png

先对性别进行分组,然后将每个分组中的age字段进行平均计算,得到每个组的平均年龄

select avg(age),gender from students group by gender;

0b6a1a2a2e00c9a01e633fd054a8cd7a.png

group_concat()用法

select gender,group_concat(name) from students group by gender;

先将性别分组后,然后显示男生和女生组中的名字

79d9919d2a89c404c5bb54b70482b0d7.png

HAVING用法

select gender,avg(age) from students group by gender having avg(age) > 20;

将分组过后的信息在进行条件过滤,

67777461cc3ae03bc1ccc0cbac251350.png

### 安工大 MySQL 基础询教程 以下是基于提供的引用内容以及标准 SQL 询语法整理的关于安工大 MySQL 的基本询示例: #### 1. 单表询 假设有一个学生表 `Student`,其结构如下: | 字段名 | 类型 | 描述 | |-----------|--------------|------------| | 学号 | CHAR(10) | 主键 | | 姓名 | NVARCHAR(20) | 非空 | | 性别 | CHAR(2) | | | 年龄 | INT | | 可以通过以下方式实现简单的单表询操作。 - **询所有列** 如果需要询整个表格的内容,则可以直接使用星号 (`*`) 来表示全部字段。 ```sql SELECT * FROM Student; ``` - **指定字段询** 若只需要部分字段的数据,可明确写出这些字段名称。例如只获取学生的学号、姓名和班级信息[^1]。 ```sql SELECT 学号, 姓名, 班级 FROM Student; ``` - **带条件过滤** 使用 WHERE 子句筛选符合条件的结果集。比如查找年龄大于等于20岁的男生记录。 ```sql SELECT * FROM Student WHERE 性别='男' AND 年龄 >= 20; ``` #### 2. 排序与分页 当数据量较大时,通常会涉及排序及分页处理。 - **按某字段升序/降序排列** 利用 ORDER BY 关键字完成排序功能,默认为 ASC(升序),DESC 表示降序。 ```sql -- 按照年龄从小到大排序 SELECT * FROM Student ORDER BY 年龄; -- 按照年龄从大到小排序 SELECT * FROM Student ORDER BY 年龄 DESC; ``` - **限制返回条目数** 结合 LIMIT 和 OFFSET 实现分页效果。 ```sql -- 获取第一页共5条记录 SELECT * FROM Student LIMIT 5; -- 跳过前五条取下五个 SELECT * FROM Student LIMIT 5 OFFSET 5; ``` #### 3. 多表联 假设有两个关联表分别为 `Book` 和 `Borrow_Record` ,它们通过外键建立联系。 - 创建书籍表 Book 及借阅记录 Borrow_Record 示例[^3]: ```sql CREATE TABLE book ( book_id CHAR(8) NOT NULL, book_name NVARCHAR(50) NOT NULL, book_isbn CHAR(17) NOT NULL, book_author NVARCHAR(10) NOT NULL, book_publisher NVARCHAR(50) NOT NULL, interview_times SMALLINT NOT NULL, price MONEY NOT NULL, CONSTRAINT un_isbn UNIQUE (book_isbn) ); CREATE TABLE borrow_record( record_id INT AUTO_INCREMENT PRIMARY KEY, student_no CHAR(10), borrowed_book_id CHAR(8), borrow_date DATE, return_date DATE, FOREIGN KEY(student_no) REFERENCES Student(学号), FOREIGN KEY(borrowed_book_id) REFERENCES book(book_id) ); ``` - 进行多表连接询: 下面的例子展示了如何找到某个特定学生所借的所有书及其详情。 ```sql SELECT s.姓名 AS '学生名字', b.book_name AS '书名' FROM Student s JOIN borrow_record br ON s.学号=br.student_no JOIN book b ON br.borrowed_book_id=b.book_id WHERE s.学号='20200101'; ``` #### 4. 函数应用 SQL 提供了许多内置函数支持复杂计算或字符串操作等场景。 - 计算平均值 AVG() : 统计全体学生的平均年龄。 ```sql SELECT AVG(年龄) AS avg_age FROM Student; ``` - 文本拼接 CONCAT(): 将多个字段组合成新的显示形式。 ```sql SELECT CONCAT('同学:', 姓名,'-',性别) AS info FROM Student; ``` --- ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值