MySQL学习之《查询数据》
发布日期:2021-05-15 01:24:06 浏览次数:9 分类:精选文章

本文共 6559 字,大约阅读时间需要 21 分钟。

DQL ������������������������

������������������������������Data Query Language (DQL) ���������������������������������������������������������������������������MySQL���������������������������������������������DQL���������������������������������������where������������������������������������������������������������������������������������������

1. DQL ������

DQL���Data Query Language��� ���MySQL ���������������������������������������������������������������������������������������������������������������DQL ���������������������������������������������������������������������������������

2. ������������������

���������������������������������������������������������������������������������������������������������������������������������������

CREATE DATABASE IF NOT EXISTS `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;

���������������������������������������������������������������

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;
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;
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. where ������������

where ���������������������������������������������������������������������������������������������������������������������������������������������������������

3.1 ���������������

��������� ������ ������
and a and b ���������������������������������������������������
or a or b ������������������������������������������������
not not a ���������������������������������������

3.2 ������������

������������������������90������������

select `studentno`,`studentresult` from result where studentresult >= 90;

���������������90���100������������������

select `studentno`,`studentresult` from result where studentresult between 90 and 100;

������������������������60������������

select `studentno`,`studentresult` from result where studentresult != 60;

������������������������������

select `studentno`,`studentname` from student where address = '' or address is null;

4. ������������

������������ ���DQL ������������������������������������������������������������������������������������������join������������ INNER JOIN���LEFT JOIN ��� RIGHT JOIN���

4.1 join ������������

join ������ ������
INNER JOIN ������������������������������������������������
LEFT JOIN ���������������������������������������������
RIGHT JOIN ���������������������������������������������

���������������������������������

select s.studentno, studentname, subjectno, studentresult from student as sinner join result as r on s.studentno = r.studentno;

������������������������������

select subjectname, gradename from subject as sub inner join grade as g on sub.gradeid = g.gradeid;

���������������������������

select categoryName as '���������', categoryName as '���������' from category as a, category as b where a.categoryid = b.pid;

5. ���������������

������ ��� ������ ���DQL ���������������������������������������������������������

5.1 ������

������ ������ ORDER BY ��������������������������������������������������������� (ASC) ��������� (DESC) ���������������

������������������������������������

select studentno, studentname, subjectname, studentresult from student as sinner join result as r on s.studentno = r.studentno where subjectname = '���������������-1' order by studentresult desc;

5.2 ������

������ ������������������������������������������ LIMIT ��������������������������� LIMIT [offset,] count���

���������5������������

select * from table limit 5;

���������������

select s.studentno, studentname, subjectname, studentresult from student as sinner join result as r on s.studentno = r.studentno where subjectname = '���������������-1' order by studentresult desc limit 0,5;

6. ���������������

������ ���������������������GROUP BY ���������������������������������having ������������������������������������������������

���������������������������������������������������������

select subjectname, avg(studentresult) as ���������, max(studentresult) as ���������, min(studentresult) as ��������� from result as r inner join subject as sub on r.subjectno = sub.subjectno group by r.subjectno having avg(studentresult) > 80;

7. ������������������������

��������� ������ WHERE ���������������������������������������������������������������������

���������������������-1������������������

select studentno, subjectno, studentresult from result where subjectno = (select subjectno from subject where subjectname = '���������������-1');

������������������������������������

select studentno, studentname from student where studentno in (select studentno from result where studentresult > 80 and subjectno = (select subjectno from subject where subjectname = '������������-1'));

8. DQL ������

DQL ������������������������

select [all | distinct] {���������[as ������]} from ������ [as ���������] [join ...] [where ...] [group by ...] [having ...] [order by ...] [limit ...];

������������������������������������������������������������������������������������������������DQL ������������������MySQL ���������������������������������������������������

上一篇:MySQL学习之《函数使用》
下一篇:MySQL学习之《数据管理》

发表评论

最新留言

路过按个爪印,很不错,赞一个!
[***.219.124.196]2025年04月28日 08时03分51秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章