`

举例:MySQL 使用DQL命令查询数据

 
阅读更多
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;
 
INSERT  INTO `grade`(`GradeID`,`GradeName`) VALUES (1,'大一'),(2,'大二'),(3,'大三'),(4,'大四'),(5,'预科班');
  
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;
 

INSERT  INTO `result`(`StudentNo`,`SubjectNo`,`ExamDate`,`StudentResult`) VALUES (1000,'111111','郭靖',1,1,'13500000001','北京海淀区中关村大街1号','1986-12-11 00:00:00','test1@163.cn','450323198612111234'),(1001,'123456','李文才',1,2,'13500000002','河南洛阳','1981-12-31 00:00:00','test1@163.cn','450323198112311234'),(1002,'111111','李斯文',1,1,'13500000003','天津市和平区','1986-11-30 00:00:00','test1@163.cn','450323198611301234'),(1003,'123456','武松',1,3,'13500000004','上海卢湾区','1986-12-31 00:00:00','test1@163.cn','450323198612314234'),(1004,'123456','张三',1,4,'13500000005','北京市通州','1989-12-31 00:00:00','test1@163.cn','450323198612311244'),(1005,'123456','张秋丽 ',2,1,'13500000006','广西桂林市灵川','1986-12-31 00:00:00','test1@163.cn','450323198612311214'),(1006,'123456','肖梅',2,4,'13500000007','地址不详','1986-12-31 00:00:00','test1@163.cn','450323198612311134'),(1007,'111111','欧阳峻峰',1,1,'13500000008','北京东城区','1986-12-31 00:00:00','test1@163.cn','450323198612311133'),(1008,'111111','梅超风',1,1,'13500000009','河南洛阳','1986-12-31 00:00:00','test1@163.cn','450323198612311221'),(1009,'123456','刘毅',1,2,'13500000011','安徽','1986-12-31 00:00:00','test1@163.cn','450323198612311231'),(1010,'111111','大凡',1,1,'13500000012','河南洛阳','1986-12-31 00:00:00','test1@163.cn','450323198612311044'),(1011,'111111','奥丹斯',1,1,'13500000013','北京海淀区中关村大街*号','1984-12-31 00:00:00','test1@163.cn','450323198412311234'),(1012,'123456','多伦',2,3,'13500000014','广西南宁中央大街','1986-12-31 00:00:00','test1@163.cn','450323198612311334'),(1013,'123456','李梅',2,1,'13500000015','上海卢湾区','1986-12-31 00:00:00','test1@163.cn','450323198612311534'),(1014,'123456','张得',2,4,'13500000016','北京海淀区中关村大街*号','1986-12-31 00:00:00','test1@163.cn','450323198612311264'),(1015,'123456','李东方',1,4,'13500000017','广西桂林市灵川','1976-12-31 00:00:00','test1@163.cn','450323197612311234'),(1016,'111111','刘奋斗',1,1,'13500000018','上海卢湾区','1986-12-31 00:00:00','test1@163.cn','450323198612311251'),(1017,'123456','可可',2,3,'13500000019','北京长安街1号','1981-09-10 00:00:00','test1@163.cn','450323198109108311'),(10066,'','Tom',1,1,'13500000000','','0000-00-00 00:00:00','email@22.com','33123123123123123');

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;
 
INSERT  INTO `student`(`StudentNo`,`LoginPwd`,`StudentName`,`Sex`,`GradeId`,`Phone`,`Address`,`BornDate`,`Email`,`IdentityCard`) VALUES (1000,'111111','郭靖',1,1,'13500000001','北京海淀区中关村大街1号','1986-12-11 00:00:00','test1@bdqn.cn','450323198612111234'),(1001,'123456','李文才',1,2,'13500000002','河南洛阳','1981-12-31 00:00:00','test1@bdqn.cn','450323198112311234'),(1002,'111111','李斯文',1,1,'13500000003','天津市和平区','1986-11-30 00:00:00','test1@bdqn.cn','450323198611301234'),(1003,'123456','武松',1,3,'13500000004','上海卢湾区','1986-12-31 00:00:00','test1@bdqn.cn','450323198612314234'),(1004,'123456','张三',1,4,'13500000005','北京市通州','1989-12-31 00:00:00','test1@bdqn.cn','450323198612311244'),(1005,'123456','张秋丽 ',2,1,'13500000006','广西桂林市灵川','1986-12-31 00:00:00','test1@bdqn.cn','450323198612311214'),(1006,'123456','肖梅',2,4,'13500000007','地址不详','1986-12-31 00:00:00','test1@bdqn.cn','450323198612311134'),(1007,'111111','欧阳峻峰',1,1,'13500000008','北京东城区','1986-12-31 00:00:00','test1@bdqn.cn','450323198612311133'),(1008,'111111','梅超风',1,1,'13500000009','河南洛阳','1986-12-31 00:00:00','test1@bdqn.cn','450323198612311221'),(1009,'123456','刘毅',1,2,'13500000011','安徽','1986-12-31 00:00:00','test1@bdqn.cn','450323198612311231'),(1010,'111111','大凡',1,1,'13500000012','河南洛阳','1986-12-31 00:00:00','test1@bdqn.cn','450323198612311044'),(1011,'111111','奥丹斯',1,1,'13500000013','北京海淀区中关村大街*号','1984-12-31 00:00:00','test1@bdqn.cn','450323198412311234'),(1012,'123456','多伦',2,3,'13500000014','广西南宁中央大街','1986-12-31 00:00:00','test1@bdqn.cn','450323198612311334'),(1013,'123456','李梅',2,1,'13500000015','上海卢湾区','1986-12-31 00:00:00','test1@bdqn.cn','450323198612311534'),(1014,'123456','张得',2,4,'13500000016','北京海淀区中关村大街*号','1986-12-31 00:00:00','test1@bdqn.cn','450323198612311264'),(1015,'123456','李东方',1,4,'13500000017','广西桂林市灵川','1976-12-31 00:00:00','test1@bdqn.cn','450323197612311234'),(1016,'111111','刘奋斗',1,1,'13500000018','上海卢湾区','1986-12-31 00:00:00','test1@bdqn.cn','450323198612311251'),(1017,'123456','可可',2,3,'13500000019','北京长安街1号','1981-09-10 00:00:00','test1@bdqn.cn','450323198109108311'),(10066,'','Tom',1,1,'13500000000','','0000-00-00 00:00:00','email@22.com','33123123123123123');

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=18 DEFAULT CHARSET=utf8;
  
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第一学年',110,1),(10,'JAVA第二学年',110,2),(11,'JAVA第三学年',100,3),(12,'JAVA第四学年',130,4),(13,'数据库结构-1',110,1),(14,'数据库结构-2',110,2),(15,'数据库结构-3',100,3),(16,'数据库结构-4',130,4),(17,'C#基础',130,1);
 

 

#select concat('学生:',studentname) 学生姓名 ,concat('+86',phone) 电话 from student;

# select count(studnetno) 学生总数 from student;

#DISTINCT关键字作用:去掉SELECT查询返回的记录结果中重复的记录(所有返回列 的值都相同),只返回一条 语法: SELECT DISTINCT 字段名1,字段名2... FROM 表名 
#注意:ALL 关键字是默认的,返回所有的记录,与之相反
#DISTINCT关键字的使用
#查询成绩表中的所包含的课程ID 
SELECT   DISTINCT  SubjectNo  FROM  result;

#BETWEEN AND查询
SELECT  *  FROM  SUBJECT  WHERE     ClassHour   BETWEEN  110   AND  120;
#等同于:
SELECT  *  FROM  SUBJECT  WHERE     ClassHour >= 110  AND  ClassHour <=120;

#查询课程名称、总课时及每天10课时计算的天数
SELECT  
SubjectName AS "课程名称",
ClassHour AS "总课时", 
(ClassHour/10)  AS "均课时/天" 
FROM  SUBJECT; 

#查询包含“数学”的所有课程
SELECT   *  FROM SUBJECT WHERE SubjectName  LIKE  "%数学%";
#查询所有姓名为“李**”三个字的学生信息
 SELECT  StudentNo,StudentName FROM student  WHERE StudentName 
LIKE "李__";

#案例 查找地址不为空的学生信息
SELECT  *
FROM  student
WHERE  Address IS NOT NUL

#内连接 左连接 右链接
SELECT s.studentno,s.studentname,g.Gradename FROM 
student s INNER JOIN `grade` g ON g.gradeid=s.GradeID;
SELECT s.studentno,s.studentname,g.Gradename FROM 
student s LEFT JOIN `grade` g ON g.gradeid=s.GradeID;
SELECT s.studentno,s.studentname,g.Gradename FROM 
student s  RIGHT JOIN `grade` g ON g.gradeid=s.GradeID;

#使用IN进行范围查询
SELECT  *  FROM  SUBJECT  WHERE    ClassHour = 100  OR ClassHour =110 OR ClassHour  = 120;  #普通组处理方式
SELECT  *  FROM  SUBJECT  WHERE ClassHour  IN ( 100, 110,120 );#使用IN进行查询方式,更为简洁,效率更高

#子查询   in
SELECT studentno,studentname
FROM student
WHERE StudentNo IN 
(SELECT studentno FROM result WHERE 
subjectno=(SELECT subjectno FROM `subject` WHERE subjectname='高等数学-2' )
AND StudentResult>=80
 ) ;

#常用统计函数
#COUNT(),MAX(),MIN(),AVG(),SUM
SELECT  COUNT(StudentResult) AS "成绩总个数", MAX(StudentResult) AS "最高分" ,  MIN(StudentResult) AS "最低分" , AVG(StudentResult) AS "平均分"
FROM result;

#按照不同的课程,分别算出其平均分、最高分和最低分,对于低于60分平均分的不予显示
SELECT 
s.SubjectName AS "课程名",MAX(StudentResult) AS "最高分" ,  MIN(StudentResult) AS "最低分" ,  AVG(StudentResult) AS "平均分" 
FROM 
result  AS r 
LEFT JOIN 
`subject` AS s ON s.SubjectNo = r.SubjectNo
GROUP BY  r.SubjectNo HAVING   AVG(StudentResult) >= 60 ;

# ORDER BY 排序
SELECT studentresult
 FROM result r WHERE 
 r.subjectno IN(SELECT subjectno FROM `subject` WHERE subjectname="数据库结构-1" )
ORDER BY studentresult DESC ; #默认ASC

#查询所有课程《数据库结构-2》的考试成绩,并按照由高到低的显示,同时把该成绩对应的学生的学号、姓名打印出来
#要求:
#第一次查询前10条记录
#第二次查询11-20条记录
SELECT s.studentno,s.studentname,c.subjectname,r.studentresult
FROM student s JOIN result r
ON s.StudentNo=r.StudentNo
JOIN SUBJECT c
ON r.SubjectNo=c.SubjectNo
WHERE c.subjectname="数据库结构-2"
ORDER BY r.StudentResult DESC LIMIT 0,5;  #limit 5,5

#要求:从subject和grade数据表查询课程名称和所属年级 名称
#非等值连接查询
SELECT SubjectName,GradeName FROM SUBJECT,grade;  
#等值查询
SELECT SubjectName,GradeName FROM SUBJECT,grade WHERE  subject.GradeID= grade.GradeID;  .GradeID; 

 

分享到:
评论

相关推荐

    MySQL 使用DQL命令查询数据的实现方法

    在MySQL中,DQL(Data Query Language)是用于查询数据的主要工具,它的核心在于SELECT语句。本篇文章将深入探讨如何使用SELECT语句查询数据,包括各种查询方式和选项。 SELECT语句的基本语法如下: ```sql SELECT ...

    MYSQL_DQL思维导图

    ### MySQL DQL思维导图详解 #### 数据查询语言(DQL) 数据查询语言(Data Query Language,简称...以上就是关于MySQL中数据查询语言(DQL)的详细解析。掌握这些概念对于进行有效的数据库管理和数据分析至关重要。

    跟老男孩学Linux运维:MySQL入门与提高实践.zip

    SQL(Structured Query Language)是与数据库交互的语言,教程会深入讲解SQL的语法,包括DQL(数据查询语言)、DML(数据操纵语言)、DDL(数据定义语言)和DCL(数据控制语言)。 6. **数据库安全管理**: 学习...

    MySQL数据库学习之旅

    本资源为 MySQL 数据库学习之旅的知识分享,涵盖 MySQL 数据库的安装、配置、基本操作、数据管理、DQL 命令查询、多表查询、数据完整性等方面的知识点。 知识点一:MySQL 的安装与配置 MySQL 的安装与配置是 MySQL...

    教义函数::books:MySQL的DQL函数集

    教义功能 该软件包包含教义函数,您可以分叉它,并使用自己的函数提出请求请求。 可用功能列表: DATE(expr) DATEDIFF(expr1, expr2) DAYOFWEEK(expr) WEEK(expr) DAY(expr) DAYOFMONTH(expr) DAYOFYEAR(expr) HOUR...

    lotus domino DQL查询前提条件.docx

    Lotus Domino 是一款功能强大且灵活的企业级软件平台,提供了强大的数据存储和查询功能其中,DQL(Domino Query Language)是 Lotus Domino 中的一种查询语言,允许用户使用 SQL 风格的语句来查询 Domino 数据库。...

    MySQL DQL - 分组查询.md

    在MySQL数据库中,数据查询语言(Data Query Language,简称DQL)主要用于检索数据。其中,分组查询是DQL的一个重要组成部分,它允许用户根据一个或多个列对结果集进行分组,并对每个分组执行聚合函数,以获取有意义...

    MySQL复习笔记七:MySQL官方文档及阅读辅助工具

    - **DQL(数据查询语言)**:主要用于检索数据。 - **DCL(数据控制语言)**:用于管理用户的访问权限和安全性。 ##### 5. 存储引擎 - **InnoDB**:支持事务处理、行级锁定和外键约束。 - **MyISAM**:不支持事务...

    MySQL DQL - 排序查询.md

    MySQL 提供了强大的数据查询语言 (Data Query Language, DQL) 功能,其中最常用的就是 `SELECT` 语句。在 `SELECT` 语句中,可以通过 `ORDER BY` 子句来实现对查询结果的排序功能。本篇文章将详细介绍如何在 MySQL ...

    Mysql 的DQL的学习以及掌握

    学习mysql查询命令,可以帮助你快速掌握,里面的东西比较齐全,知识比较详细,可观性较强,希望里面的东西能够帮助到你

    MySQL DQL - 分页查询.md

    ### MySQL DQL - 分页查询 #### 知识点概览 1. **分页查询的概念**:在处理大量数据时,为了提高用户体验并减轻服务器压力,常常需要将数据分成多页显示。 2. **LIMIT关键字**:是实现MySQL分页查询的核心关键字,...

    深入浅出MySQL全文

    * 高性能:MySQL 能够处理大量数据,提供高速的查询和插入操作。 * 安全性强:MySQL 提供了多种安全机制,例如身份验证、访问控制等。 * opensource:MySQL 是开源软件,用户可以免费使用和修改。 MySQL 的缺点 ...

    MySQL中DQL练习题答案.md

    该内容是本人博客练习sql使用的原素材,主要有:创建sql语句和插入大量数据。让你将更多的精力放在sql语句的其他学习方向上,而不再需要自己做创建sql语句和插入大量数据这样既浪费时间又毫无技术含量的工作。

    2024最新数据库MySQL-DQL-HM

    DQL,即Data Query Language(数据查询语言),主要用于从数据库表中检索数据。在实际应用中,查询操作相较于其他数据库操作(如增删改)更为频繁。DQL的核心功能在于能够高效、准确地获取所需数据,以支持各种业务...

    MySQL基本查询-DQL

    MySQL基本查询-DQL

    MySQL-DQL基础.zip

    DQL基础查询语句,包含数据准备执行语句

    MySQL.rar_MYSQL_MYSQL server

    SQL包括数据定义语言(DDL)、数据操作语言(DML)、数据控制语言(DCL)和数据查询语言(DQL)。 3. **数据库对象**:MySQL支持多种数据库对象,如表、视图、索引、触发器、存储过程和函数。这些对象各自扮演着...

    MySQL之DQL配套SQL文件

    这是MySQL之DQL文章的配套SQL文件

    mysql安装及使用笔记

    #### 数据查询语言 (DQL) - **查询数据** (`SELECT`) #### 数据控制语言 (DCL) - **授权** (`GRANT`) - **撤销权限** (`REVOKE`) 以上就是从给定的文件标题、描述、标签以及部分内容中提取的关键知识点。这些...

Global site tag (gtag.js) - Google Analytics