• SELECT子句:用来指定查询返回字段,星号(*)表示返回所有字段

SELECT  [DISTINCT]*|字段列表        #DISTINCT 用来过滤重复数据

  • FROM子句:用来指定数据来源的表

FROM <表名>

  • WHERE子句:用来定义查询返回数据的条件

WHERE 查询条件

  • GROUP BY子句:用来指定查询结果的分组条件

GROUP BY 分组字段 [HAVING 分组条件]

  • ORDER BY子句:用来给指定字段排序,ASC(升序)可省略,DESC(降序)

ORDER BY 排序字段 [ASC|DESC]         #ASC 为升序|DESC为降序

  • LIMIT子句:用来限制select语句返回的记录数

LIMIT [初始位置],记录数

举例说明:

以student、course、score三张表示范, 三张表的创建语句如下

--
-- Database: stuInfo
--
CREATE DATABASE stuInfo
DEFAULT CHARACTER SET utf8;
USE stuInfo;--
-- 表的结构 student        /*学生表*/
--
CREATE TABLE student (
sNo CHAR(10) NOT NULL COMMENT '学号',
sName VARCHAR(20) NOT NULL COMMENT '姓名',
sex CHAR(2) NOT NULL DEFAULT '男' COMMENT '性别',
birthday DATE NOT NULL COMMENT '出生日期',
deptName VARCHAR(30) NOT NULL COMMENT '所属班级',
remark VARCHAR(80) COMMENT '备注',
PRIMARY KEY (sNo),     /*设置sNo为主键*/
INDEX (sName)         /*设置sName为普通索引*/
) ENGINE=InnoDB DEFAULT CHARSET=utf8;--
-- 转存表中的数据 student
--
INSERT INTO student (sNo, sName, sex, birthday, deptName, remark) VALUES
('1308013101', '陈斌', '男', '1993-03-20', '软件131', ''),
('1308013102', '张洁', '女', '1996-02-08', '软件131', ''),
('1308013103', '郑先超', '男', '1994-04-25', '软件131', ''),
('1308013104', '徐孝兵', '男', '1994-08-06', '软件131', ''),
('1308013105', '王群', '女', '1995-03-27', '软件131', ''),
('1309122501', '刘威', '男', '1994-07-13', '网络131', ''),
('1309122502', '沈雁斌', '男', '1994-05-28', '网络131', ''),
('1309122503', '杨群', '女', '1995-10-18', '网络131', ''),
('1309122504', '蒋维维', '男', '1994-10-19', '网络131', ''),
('1309122505', '杨璐', '女', '1995-09-26', '网络131', ''),
('1312054901', '王林林', '男', '1994-04-16', '机电131', ''),
('1312054902', '杨一超', '男', '1994-08-27', '机电131', ''),
('1312054903', '张伟', '男', '1995-01-03', '机电131', ''),
('1312054904', '田翠萍', '女', '1994-10-20', '机电131', ''),
('1312054905', '周伟', '男', '1995-09-10', '机电131', '');--
-- 表的结构 course        /*课程表*/
--
CREATE TABLE course (
cNo CHAR(5) NOT NULL COMMENT '课程编号',
cName VARCHAR(30) NOT NULL COMMENT '课程名称',
credit TINYINT UNSIGNED COMMENT '学分',
remark VARCHAR(100) COMMENT '备注',
PRIMARY KEY (cNo),     /*设置cNo为主键*/
UNIQUE (cName)         /*设置cName为唯一索引*/
) ENGINE=InnoDB DEFAULT CHARSET=utf8;--
-- 转存表中的数据 course
--
INSERT INTO course (cNo, cName, credit, remark) VALUES
('01001', 'C语言程序设计', 5, '计算机类专业课程'),
('01002', '数据结构', 4, '计算机类专业课程'),
('01003', 'Java程序设计', 4, '计算机类专业课程'),
('02001', '网络基础', 3, '计算机类专业课程'),
('02002', '数据库原理及应用', 4, '计算机类专业课程'),
('02003', '操作系统', 4, '计算机类专业课程'),
('09001', '机械设计基础', 5, NULL),
('09002', '机械制造基础', 4, NULL),
('09003', '机械制图', 4, NULL);--
-- 表的结构 score        /*成绩表*/
--
CREATE TABLE score (
sNo CHAR(10) NOT NULL COMMENT '学号',
cNo CHAR(5) NOT NULL COMMENT '课程编号',
grade TINYINT UNSIGNED NOT NULL COMMENT '成绩',
PRIMARY KEY(sNo, cNo),     /*设置sNo和cNo为复合主键*/
FOREIGN KEY(sNo) REFERENCES student(sNo)    /*与学生表关联*/
ON UPDATE NO ACTION ON DELETE NO ACTION,
FOREIGN KEY(cNo) REFERENCES course(cNo)    /*与课程表关联*/
ON UPDATE NO ACTION ON DELETE NO ACTION
) ENGINE=InnoDB DEFAULT CHARSET=utf8;--
-- 转存表中的数据 score
--
INSERT INTO score (sNo, cNo, grade) VALUES
('1308013101', '01001', 72),
('1308013101', '01002', 56),
('1308013101', '01003', 77),
('1308013102', '01001', 85),
('1308013102', '01002', 73),
('1308013102', '01003', 90),
('1308013103', '01001', 79),
('1308013104', '01001', 82),
('1308013105', '01001', 63),
('1309122501', '02001', 84),
('1309122501', '02002', 92),
('1309122501', '02003', 71),
('1312054901', '09001', 87),
('1312054901', '09002', 90),
('1312054901', '09003', 95);

三张表的创建

查询语句如下:

 -- 查询学生表的所有字段
SELECT * from student;
-- 查询学生表的学号,姓名,性别字段
SELECT sNo,sName,sex from student;
-- 查询查询学生表的学号,姓名,性别字段,并用 as 定义字段别名
SELECT sNo as '学号',sName as '姓名',sex as '性别' FROM student;
-- 查询学生表的所有女生信息
SELECT *from student WHERE sex='女';
-- 查询课程表中学分大于4的课程所有信息
SELECT *FROM course WHERE credit>4;
-- 查询学生表中在1995年出生的学生信息
select *FROM student where birthday>='1995-1-1' AND birthday<='1995-12-31';
-- 查询学生表中姓杨的信息
SELECT *FROM student where sName LIKE '杨%';
-- 查询学生表中姓杨的姓名为两个字的学生信息
SELECT *FROM student where sName LIKE '杨_';
-- 查询学生表中姓杨的姓名为三个字的学生信息
SELECT *FROM student where sName LIKE '杨__';-- 查询学生表中姓名的第二个字为伟和先的同学信息
select *FROM student where sName LIKE '_伟%' OR sName LIKE '_先%';
-- 查询学生表中在1995年出生的学生信息
SELECT *FROM student where birthday BETWEEN '1995-1-1' AND '1995-12-31';
-- 查询成绩表中成绩在60到89之间的信息
SELECT *FROM score WHERE grade  BETWEEN 60 and 89;
-- 查询学生表学号为 1308013101,1309122503,1312054904 的学生信息
SELECT *FROM student WHERE sNo in('1308013101','1309122503','1312054904');
-- 查询课程表中标记为空的信息
SELECT *FROM course where remark is NULL;
-- 查询学生表中男生的信息并按生日降序排序
SELECT *FROM student WHERE sex='男' ORDER BY birthday DESC;
-- 查询学生表所有信息并按性别降序,学号升序排列
SELECT *FROM student ORDER BY sex DESC,sNo;
-- 查询学生表信息并按生日降序,取前五个记录
SELECT *FROM student ORDER BY birthday DESC
LIMIT 5;
-- 查询成绩表中当课程号为01001的学号,课程号,成绩信息,并以成绩降序排列
SELECT sNo,cNo,grade FROM score WHERE cNo='01001' ORDER BY grade DESC
LIMIT 1,3;
-- 查询成绩表中选修的学号 并用DISTINCT去重
SELECT DISTINCT sNo FROM score;
-- 用内连接 INNER JOIN 来查询信息
SELECT student.sNo,sName,sex,cNo,grade FROM student inner JOIN score ON student.sNo=score.sNo
where sex='女';SELECT student.sNo,sName,sex,cNo,grade FROM student,score where student.sNo=score.sNo and sex='女';
-- 查询学号为1308013101 的信息
select S.sNo,sName,sex,C.cNo,cName,grade FROM student S INNER JOIN score G ON S.sNo=G.sNo
INNER JOIN course C on C.cNo=G.cNo
where S.sNo='1308013101';SELECT S.sNo,sName,sex,C.cNo,cName,grade from student S ,course C,score G
where S.sNo=G.sNo and G.cNo=C.cNo and S.sNo='1308013101';
-- 查询学号为1308013101的最高分,最低分及平均分和总分信息
SELECT max(grade) as '最高分',min(grade) as '最低分' ,avg(grade) as '平均分',sum(grade) as '总分' FROM score WHERE sNo='1308013101' ;
-- 查询学生表男生人数
SELECT count(*) as '男生人数' from student where sex='男';
-- 查询成绩表中已选修课程的人数并用DISTINCT去重
select count(DISTINCT sNo)as '已选修课程学生人数' from score;
-- 分组统计男、女生人数
SELECT sex as '性别',count(*) as '学生人数' from student GROUP BY sex;
-- 分组统计不同班级人数
SELECT deptName AS '班级',count(*) as '学生人数' from student GROUP BY deptName;
-- 5分组查询学生的学号、姓名、选修课程数及平均分
SELECT student.sNo as '学号',sName as '姓名', count(*)as '选修课程数',avg(grade) as '平均分' from score INNER JOIN student on score.sNo=student.sNo
GROUP BY student.sNo;
-- 用嵌套查询学号为1308013101的同学在同一个班级的学生信息
SELECT *FROM student where deptName=(SELECT deptName from student where sNo='1308013101');
-- 查询课程编号为01001的课程,且成绩超过该课程平均分的学生的学号、姓名、所属班级、课程编号、课程名称及成绩
select student.sNo,sName,deptName,course.cNo,cName,grade FROM student,score,course
where student.sNo=score.sNo and score.cNo=course.cNo
AND course.cNo='01001'and grade>(SELECT avg(grade)FROM score,course
where course.cNo=score.cNo and course.cNo='01001');
-- 创建新数据表,查询网络131的学生记录,将查询结果插入到新数据表中
CREATE TABLE tempStudent(stuNo char(10) not null PRIMARY KEY,StuName VARCHAR(20)not NULL,sex char(1),deptName varchar(30) not null
);
INSERT into tempStudent(stuNo,stuName,sex,deptName)SELECT sNo,sName,sex,deptName from student where deptName='网络131';
-- 将数据结构 课程成绩统一减去5
update score SET grade=grade-5
where cNo=(SELECT cNO from course WHERE cName='数据结构');
-- 查询更新完的成绩表
select *from score where cNo=(SELECT cNO from course WHERE cName='数据结构');-- 删除机电131的学生的成绩记录
delete from score
where sNo in (SELECT sNo from student where deptName='机电131');-- 查询 删除后的机电131成绩记录
SELECT *from score where sNo in (SELECT sNo from student where deptName='机电131');

转载于:https://www.cnblogs.com/strive99/p/10190853.html

MySQL 数据查询相关推荐

  1. 9.MySQL数据查询SQL

    9.MySQL数据查询SQL 语法格式: select 字段列表|* from 表名 [where 搜索条件] [group by 分组字段 [having 分组条件]] [order by 排序字段 ...

  2. limit mysql 取最后_更优美的 limit 使用方法 (limit 对 mysql 数据查询的性能影响)

    更优美的 limit 使用方法(limit 对 MySQL 数据查询的性能影响) 本文在 zhangyachen 的基础上重新排版 来源:zhangyachen 一,前言 首先说明一下 MySQL 的 ...

  3. MySQL数据查询语句

    MySQL数据查询语句 MySQL 表单查询是指从一张表的数据中查询所需的数据,主要有查询所有字段.查询指定字段.查询指定记录.查询空值.多条件的查询.对查询结果进行排序分组等. 查询结构 SELEC ...

  4. 03 mysql数据查询_MySql学习day03:数据表之间的连接、查询详解

    主键: 关键字:primary key 特点:不能为null,并且唯一. 主键分类: 逻辑主键:例如ID,不代表实际的业务意义,只是用来唯一标识一条记录(推荐) 业务主键:例如username,参与实 ...

  5. PHP中mysql查询全部过程_PHP到MySQL数据查询过程概述_MySQL

    摘要 本文概述了从PHP层发起mysql查询请求到mysql server 返回结果集的工作流程,并简单描述了各层可能涉及到的动作和组件.从全局把握整个交互过程. PHP层到MySQL层 Php到sq ...

  6. 【227期】面试官:MySQL 数据查询太多会 OOM 吗?

    点击上方"Java精选",选择"设为星标" 别问别人为什么,多问自己凭什么! 下方有惊喜,留言必回,有问必答! 每天 08:15 更新文章,每天进步一点点... ...

  7. 艺赛旗(RPA)Mysql 数据查询慢 - 索引调优 Explain 用法

    艺赛旗 RPA8.0全新首发免费下载 点击下载 http://www.i-search.com.cn/index.html?from=line1 在日常工作中,我们会有时会开慢查询去记录一些执行时间比 ...

  8. mysql数据查询——复杂查询

    <实验五 数据查询--复杂查询>实验说明 一. 适用课程:<数据库原理与应用> 实验学时:3 二.实验目的: (1) 掌握SELECT语句的语法格式: (2) 熟练运用SELE ...

  9. MySQL数据查询—MysqlDay2

    目录 1.条件查询(上) 2.条件查询(下) 3.聚合函数(上) 4.聚合函数(下) 5.分组与分页 6.连接查询 7.子查询 8.保存查询结果 重点: 条件查询.分组分页.连接查询 难点: 条件查询 ...

  10. python链接mysql 判断是否成功_【初学python】使用python连接mysql数据查询结果并显示...

    因为测试工作经常需要与后台数据库进行数据比较和统计,所以采用python编写连接数据库脚本方便测试,提高工作效率,脚本如下(python连接mysql需要引入第三方库MySQLdb,百度下载安装) # ...

最新文章

  1. EJSS: 南土所梁玉婷组-生境决定了土壤植物系统中细菌、抗性基因和可移动元件间的关系...
  2. 算法(第四版)之快速排序
  3. 如何自学python数据分析-『』python数据分析该怎么入门呢?
  4. 【Docker】Linux安装docker-compose
  5. sublime text3安装python插件和flake8_让你的代码符合PEP8标准——sublime text 2 安装及使用 Python Flake8 Lint 插件...
  6. 06_NoSQL数据库之Redis数据库:Redis的高级应用之登录授权和主从复制
  7. c++ find_last_of 函数应用一个例子
  8. 界址点号_界址点及四至优化
  9. 性能测试之二——性能测试的流程
  10. log4j MDC用户操作日志追踪配置
  11. 使用电子签章确立电子劳动合同的法律效力
  12. 微信打不开拼多多提示服务器吃撑,微信拼多多助力打不开
  13. 注册表禁用计算机管理,解除封锁注册表被禁用的几种解决办法
  14. matlab的omega0是什么,ABO设定中,A具体是怎么标记O的?
  15. 439、Java框架93 -【SpringMVC - 拦截器】 2020.12.14
  16. 通过快递鸟如何接入圆通速递电子面单
  17. EMD——EEMD——CEEMD
  18. 开箱即用的 SQL Server Docker
  19. 计算机科学与技术专业考数媒,数字媒体技术研究生院校排名
  20. 三种基于自监督深度估计的语义分割方法(arXiv 2021)

热门文章

  1. 55种开源数据可视化工具简介
  2. 丰田chr内外循环怎么区分_雨季车窗起雾怎么办?空调内外循环别错用
  3. mysql8.0创建用户权限,详解mysql8.0创建用户授予权限报错解决方法
  4. word ctrl v 不能用
  5. ubuntu docker-compose: command not found
  6. 微信小程序云开发教程-微信小程序的JS基础-js文件基本结构与生命周期
  7. 偏微分方程数值解法python_微分方程 | 常微分
  8. 设计模式之GOF23状态模式
  9. idea中本地git如何切换分支
  10. springboot学习笔记2106版