mysql查询男生基本情况_MySQL(一)基本查询

MySQL(一)基本查询

场景:学生信息系统,包括学生信息、教师信息、专业信息和选课信息。

建表语句 :

--学生信息表

DROP TABLE IF EXISTSStudents;CREATE TABLEStudents(

Student_IDINT PRIMARY KEY NOT NULL,

Student_NameNVARCHAR(50),

Student_AgeINT,

Student_SexINT,

Student_CityNVARCHAR(50),

Student_MajorIDINT);--专业信息表

DROP TABLE IF EXISTSMajors;CREATE TABLEMajors(

Major_IDINT PRIMARY KEY NOT NULL,

Major_NameNVARCHAR(50)

);--课程信息表

DROP TABLE IF EXISTSCourses;CREATE TABLECourses(

Course_IDINT PRIMARY KEY NOT NULL,

Course_NameNVARCHAR(50)

);--选课信息表

DROP TABLE IF EXISTSSC;CREATE TABLESC(

SC_IDINT PRIMARY KEY NOT NULL,

SC_StudentIDINT,

SC_CourseIDINT,

SC_ScoreINT);

插入数据语句:

--插入学生信息

INSERT INTOStudents (Student_ID,Student_Name,Student_Age,Student_Sex,Student_City,Student_MajorID)VALUES (40001,‘李煜‘,18,1,‘南京‘,1001);INSERT INTOStudents (Student_ID,Student_Name,Student_Age,Student_Sex,Student_City,Student_MajorID)VALUES (40002,‘唐云‘,20,1,‘杭州‘,1002);INSERT INTOStudents (Student_ID,Student_Name,Student_Age,Student_Sex,Student_City,Student_MajorID)VALUES (40003,‘吴广‘,19,1,‘南京‘,1001);INSERT INTOStudents (Student_ID,Student_Name,Student_Age,Student_Sex,Student_City,Student_MajorID)VALUES (40004,‘刘云宇‘,18,1,‘武汉‘,1003);INSERT INTOStudents (Student_ID,Student_Name,Student_Age,Student_Sex,Student_City,Student_MajorID)VALUES (40005,‘王梦琦‘,17,0,‘北京‘,1004);

mysql查询男生基本情况_MySQL(一)基本查询_第1张图片

--插入专业信息

INSERT INTO Majors (Major_ID,Major_Name) VALUE(1001,‘软件工程‘);INSERT INTO Majors (Major_ID,Major_Name) VALUE(1002,‘土木工程‘);INSERT INTO Majors (Major_ID,Major_Name) VALUE(1003,‘信息安全‘);INSERT INTO Majors (Major_ID,Major_Name) VALUE(1004,‘工商管理‘);

a065b6e18d82883a7130cc6f77c92221.png

--插入课程信息

INSERT INTO Courses (Course_ID,Course_Name) VALUE (1001,‘高等数学‘);INSERT INTO Courses (Course_ID,Course_Name) VALUE (1002,‘大学英语‘);INSERT INTO Courses (Course_ID,Course_Name) VALUE (1003,‘数据结构‘);INSERT INTO Courses (Course_ID,Course_Name) VALUE (1004,‘结构力学‘);INSERT INTO Courses (Course_ID,Course_Name) VALUE (1005,‘日语‘);

mysql查询男生基本情况_MySQL(一)基本查询_第2张图片

--插入选课信息

INSERT INTO SC (SC_ID,SC_StudentID,SC_CourseID,SC_Score) VALUE(100001,40001,1001,2);INSERT INTO SC (SC_ID,SC_StudentID,SC_CourseID,SC_Score) VALUE(100002,40001,1002,3);INSERT INTO SC (SC_ID,SC_StudentID,SC_CourseID,SC_Score) VALUE(100003,40002,1001,2);INSERT INTO SC (SC_ID,SC_StudentID,SC_CourseID,SC_Score) VALUE(100004,40003,1003,3);INSERT INTO SC (SC_ID,SC_StudentID,SC_CourseID,SC_Score) VALUE(100005,40004,1004,2);

mysql查询男生基本情况_MySQL(一)基本查询_第3张图片

1.基础查询

作用:查询某数据表中的某些数据列的数据

语法:

SELECT 列名1,列名2,列名N FROM 表名

实例:

1.查询学生信息表中的ID,年龄,性别。

SELECT Student_ID,Student_Name,Student_Sex FROM Students;

mysql查询男生基本情况_MySQL(一)基本查询_第4张图片

2.条件查询

作用:

查询某数据表中的某些数据列的数据

语法:

SELECT 列名1,列名2,列名N FROM 表名 WHERE 列名 运算符 值

主要运算符

运算符

描述

=

等于

<> 或 !=

不等于

<

小于

<=

小于等于

>

大于

>=

大于等于

BETWEEN......AND......

在某个范围内

IS NULL

为NULL

AND

并且

OR

或者

IN

NOT

LIKE

模糊查询

REGEXP

正则表达式

主要通配符

通配符

描述

_

匹配单个字符

%

匹配任意个字符

.

匹配任意单个字符

[]

匹配[]中的任意一个字符

*

匹配零个或多个在它前面的东西

^

以什么开始

$

以什么结尾

实例:

1.查询学生信息表中年龄为18的学生信息。

SELECT*FROM Students WHERE Student_Age = 18;

256d006238a2bb770638e131e6242e62.png

2.查询学生信息表中年龄不为18的学生信息。

SELECT*FROM Students WHERE Student_Age <> 18;

2094802c601536533431fc4bfc9120e2.png

3.查询学生信息表中年龄小于18的学生信息。

SELECT*FROM Students WHERE Student_Age < 18;

9feff05566124be71d543eff83249972.png

4.查询学生信息表中年龄小于等于18的学生信息。

SELECT*FROM Students WHERE Student_Age <= 18;

5c67efb108f3c008e78da1472b335d12.png

5.查询学生信息表中年龄大于18的学生信息。

SELECT*FROM Students WHERE Student_Age > 18;

1cda0852208b7b175012ad89b646dfa3.png

6.查询学生信息表中年龄大于等于18的学生信息。

SELECT*FROM Students WHERE Student_Age >=18;

mysql查询男生基本情况_MySQL(一)基本查询_第5张图片

7.查询学生信息表中年龄17-19的学生信息。

SELECT*FROM Students WHERE Student_Age BETWEEN 17 and 19;

mysql查询男生基本情况_MySQL(一)基本查询_第6张图片

8.查询学生信息表中姓名为null的学生ID

SELECT Student_ID FROM Students WHERE Student_Name IS NULL;

b21961160ecc88ad3d3ba79638d98eb6.png

9.查询来自于南京并且年龄为19的学生信息

SELECT * FROM Students WHERE Student_City = ‘南京‘ AND Student_Age = 19;

a9292eb5a910d38b05f74517e33d5093.png

10.查询来自于南京或者武汉的学生信息

SELECT * FROM Students WHERE Student_City =‘南京‘ OR Student_City =‘武汉‘;

3a8a5c518c7a6b6850029d4282112216.png

SELECT * FROM Students WHERE Student_City IN(‘南京‘,‘武汉‘);

bf7fe30e4d2ee9077571b02d461482bd.png

11.查询姓名中不含有云的学生信息

SELECT * FROM Students WHERE Student_Name NOT LIKE‘%云%‘;

6ac5448ba13eb31bff81ff6619e7a6be.png

12.查询姓唐的同学信息

SELECT * FROM Students WHERE Student_Name REGEXP ‘^唐‘

3.ORDER BY

作用:对需要查询后的结果集进行排序

标识

含义

说明

ASC

升序

默认

DESC

倒序

实例:

1.查询学生信息表中的信息表并且按照年龄升序排列 如果年龄相同则按照ID降序排列

SELECT * FROM Students ORDER BY Student_Age,Student_ID DESC;

mysql查询男生基本情况_MySQL(一)基本查询_第7张图片

4.AS

作用:为表名或者列名指定别名

实例:

1.将结果列改为指定的名称

SELECT Student_Name AS ‘姓名‘,Student_Sex AS ‘性别‘,Student_Age AS‘年龄‘ FROM Students

mysql查询男生基本情况_MySQL(一)基本查询_第8张图片

2.使用表别名来查询李煜的选课信息

SELECTS.Student_ID,S.Student_Name,C.Course_Name,SC_ScoreFROM (SELECT Student_ID,Student_Name FROM Students WHERE Student_Name = ‘李煜‘) ASSLEFT JOIN SC ON S.Student_ID = SC_StudentID LEFT JOIN Courses ASCON SC_CourseID = C.Course_ID

9a3ffe8620c6d9df61e975ac84f892cd.png

5.DISTINCT

作用:查询结果去除重复的

语法:

--查重依据为 DISTINCT后的所有列名

SELECT DISTINCT 列名 FROM表名--查重依据为 GROUP BY后的所有列名

SELECT DISTINCT 列名 FROM 表名 GROUP BY 列名

实例:

1.查询学生表中的姓名和年龄并去除重复的

SELECT DISTINCT Student_name,Student_age FROM Students

mysql查询男生基本情况_MySQL(一)基本查询_第9张图片

2.查询学生表中的姓名和年龄并去除年龄重复的

SELECT DISTINCT Student_name,Student_age FROM Students GROUP BY Student_Age

mysql查询男生基本情况_MySQL(一)基本查询_第10张图片

6.GROUP BY

作用:根据指定的一个列或多个列对查询结果进行分组

实例:

1.查询专业分布情况

SELECT Student_MajorID,COUNT(Student_ID) FROM Students GROUP BY Student_MajorID

mysql查询男生基本情况_MySQL(一)基本查询_第11张图片

2.删除重复的学生信息,并保留最新的那条

--先插入两条重复的数据

INSERT INTOStudents (Student_ID,Student_Name,Student_Age,Student_Sex,Student_City,Student_MajorID)VALUES (40007,‘沈鹏‘,17,0,‘大理‘,1004);INSERT INTOStudents (Student_ID,Student_Name,Student_Age,Student_Sex,Student_City,Student_MajorID)VALUES (40008,‘沈鹏‘,17,0,‘大理‘,1004);

mysql查询男生基本情况_MySQL(一)基本查询_第12张图片

DELETE FROM Students WHERE Student_ID NOT IN(SELECT * FROM (SELECT MAX(Student_ID) FROM Students GROUP BY Student_Name,Student_Age,Student_Sex,Student_City,Student_MajorID)AS S)

mysql查询男生基本情况_MySQL(一)基本查询_第13张图片

7.LIMIT

作用:LIMIT 子句可以被用于强制 SELECT 语句返回指定的记录数

语法:

--当LIMIT 后面的参数只有一个时为条数,而默认偏移量为0

SELECT 列名 FROM 表名 LIMIT 偏移量,条数

实例:

1.查询学生信息表中年龄最大的三位同学的信息

SELECT * FROM Students ORDER BY Student_Age DESC LIMIT 3

a7bcac98179fbb58b8970763739ff587.png

2.查询年龄第二到第四的学生信息

SELECT * FROM Students ORDER BY Student_Age DESC LIMIT 1,4

mysql查询男生基本情况_MySQL(一)基本查询_第14张图片

8.HAVING

作用:having字句可以让我们筛选成组后的各种数据,一般而言就是可以在条件里面用聚组函数函数。

语法:

SELECT 列名 FROM 表名 GROUP BY 列名 HAVING 聚合函数 运算符 值

实例:

查询平均年龄大于18的专业ID和人数

SELECT Student_MajorID,COUNT(Student_ID)FROM Students GROUP BY Student_MajorID HAVING AVG(Student_Age) > 18

d13247c52518a8d131761bc0438754c9.png

9.CASE WHEN

作用:用于计算条件列表并返回多个可能结果表达式之一

语法:

--表达式语法

CASE列名WHEN 值 THEN 值 [...n]

ELSE值END

--搜索式语法

CASE

WHEN 布尔表达式 THEN 值 [...n]

ELSE值END

实例:

查询男性年龄大于18女性大于16的学生信息

SELECT * FROM Students WHERE CASE Student_Sex WHEN 1 THEN Student_Age>=19 WHEN 0 THEN Student_Age >=16 END

mysql查询男生基本情况_MySQL(一)基本查询_第15张图片

分别统计男性女性中的成年未成年的人数

SELECT CASE Student_Sex WHEN 0 THEN ‘女‘ WHEN 1 THEN ‘男‘ END AS ‘性别‘,SUM(CASE WHEN Student_Age >=18 THEN 1 ELSE 0 END) AS‘成年‘,SUM(CASE WHEN Student_Age <18 THEN 1 ELSE 0 END) AS‘未成年‘

FROM Students GROUP BY Student_Sex

1a5b711e550645916eca2f8e053519f3.png

原文:https://www.cnblogs.com/calpo/p/9430195.html

你可能感兴趣的:(mysql查询男生基本情况)