• 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三张表示范, 三张表的创建语句如下

  1. --
  2. -- Database: stuInfo
  3. --
  4. CREATE DATABASE stuInfo
  5. DEFAULT CHARACTER SET utf8;
  6. USE stuInfo;
  7.  
  8. --
  9. -- 表的结构 student /*学生表*/
  10. --
  11. CREATE TABLE student (
  12. sNo CHAR(10) NOT NULL COMMENT '学号',
  13. sName VARCHAR(20) NOT NULL COMMENT '姓名',
  14. sex CHAR(2) NOT NULL DEFAULT '男' COMMENT '性别',
  15. birthday DATE NOT NULL COMMENT '出生日期',
  16. deptName VARCHAR(30) NOT NULL COMMENT '所属班级',
  17. remark VARCHAR(80) COMMENT '备注',
  18. PRIMARY KEY (sNo), /*设置sNo为主键*/
  19. INDEX (sName) /*设置sName为普通索引*/
  20. ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
  21.  
  22. --
  23. -- 转存表中的数据 student
  24. --
  25. INSERT INTO student (sNo, sName, sex, birthday, deptName, remark) VALUES
  26. ('', '陈斌', '男', '1993-03-20', '软件131', ''),
  27. ('', '张洁', '女', '1996-02-08', '软件131', ''),
  28. ('', '郑先超', '男', '1994-04-25', '软件131', ''),
  29. ('', '徐孝兵', '男', '1994-08-06', '软件131', ''),
  30. ('', '王群', '女', '1995-03-27', '软件131', ''),
  31. ('', '刘威', '男', '1994-07-13', '网络131', ''),
  32. ('', '沈雁斌', '男', '1994-05-28', '网络131', ''),
  33. ('', '杨群', '女', '1995-10-18', '网络131', ''),
  34. ('', '蒋维维', '男', '1994-10-19', '网络131', ''),
  35. ('', '杨璐', '女', '1995-09-26', '网络131', ''),
  36. ('', '王林林', '男', '1994-04-16', '机电131', ''),
  37. ('', '杨一超', '男', '1994-08-27', '机电131', ''),
  38. ('', '张伟', '男', '1995-01-03', '机电131', ''),
  39. ('', '田翠萍', '女', '1994-10-20', '机电131', ''),
  40. ('', '周伟', '男', '1995-09-10', '机电131', '');
  41.  
  42. --
  43. -- 表的结构 course /*课程表*/
  44. --
  45. CREATE TABLE course (
  46. cNo CHAR(5) NOT NULL COMMENT '课程编号',
  47. cName VARCHAR(30) NOT NULL COMMENT '课程名称',
  48. credit TINYINT UNSIGNED COMMENT '学分',
  49. remark VARCHAR(100) COMMENT '备注',
  50. PRIMARY KEY (cNo), /*设置cNo为主键*/
  51. UNIQUE (cName) /*设置cName为唯一索引*/
  52. ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
  53.  
  54. --
  55. -- 转存表中的数据 course
  56. --
  57. INSERT INTO course (cNo, cName, credit, remark) VALUES
  58. ('', 'C语言程序设计', 5, '计算机类专业课程'),
  59. ('', '数据结构', 4, '计算机类专业课程'),
  60. ('', 'Java程序设计', 4, '计算机类专业课程'),
  61. ('', '网络基础', 3, '计算机类专业课程'),
  62. ('', '数据库原理及应用', 4, '计算机类专业课程'),
  63. ('', '操作系统', 4, '计算机类专业课程'),
  64. ('', '机械设计基础', 5, NULL),
  65. ('', '机械制造基础', 4, NULL),
  66. ('', '机械制图', 4, NULL);
  67.  
  68. --
  69. -- 表的结构 score /*成绩表*/
  70. --
  71. CREATE TABLE score (
  72. sNo CHAR(10) NOT NULL COMMENT '学号',
  73. cNo CHAR(5) NOT NULL COMMENT '课程编号',
  74. grade TINYINT UNSIGNED NOT NULL COMMENT '成绩',
  75. PRIMARY KEY(sNo, cNo), /*设置sNo和cNo为复合主键*/
  76. FOREIGN KEY(sNo) REFERENCES student(sNo) /*与学生表关联*/
  77. ON UPDATE NO ACTION ON DELETE NO ACTION,
  78. FOREIGN KEY(cNo) REFERENCES course(cNo) /*与课程表关联*/
  79. ON UPDATE NO ACTION ON DELETE NO ACTION
  80. ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
  81.  
  82. --
  83. -- 转存表中的数据 score
  84. --
  85. INSERT INTO score (sNo, cNo, grade) VALUES
  86. ('', '', 72),
  87. ('', '', 56),
  88. ('', '', 77),
  89. ('', '', 85),
  90. ('', '', 73),
  91. ('', '', 90),
  92. ('', '', 79),
  93. ('', '', 82),
  94. ('', '', 63),
  95. ('', '', 84),
  96. ('', '', 92),
  97. ('', '', 71),
  98. ('', '', 87),
  99. ('', '', 90),
  100. ('', '', 95);

三张表的创建

查询语句如下:

  1. -- 查询学生表的所有字段
  2. SELECT * from student;
  3. -- 查询学生表的学号,姓名,性别字段
  4. SELECT sNo,sName,sex from student;
  5. -- 查询查询学生表的学号,姓名,性别字段,并用 as 定义字段别名
  6. SELECT sNo as '学号',sName as '姓名',sex as '性别' FROM student;
  7. -- 查询学生表的所有女生信息
  8. SELECT *from student WHERE sex='女';
  9. -- 查询课程表中学分大于4的课程所有信息
  10. SELECT *FROM course WHERE credit>4;
  11. -- 查询学生表中在1995年出生的学生信息
  12. select *FROM student where birthday>='1995-1-1' AND birthday<='1995-12-31';
  13. -- 查询学生表中姓杨的信息
  14. SELECT *FROM student where sName LIKE '杨%';
  15. -- 查询学生表中姓杨的姓名为两个字的学生信息
  16. SELECT *FROM student where sName LIKE '杨_';
  17. -- 查询学生表中姓杨的姓名为三个字的学生信息
  18. SELECT *FROM student where sName LIKE '杨__';
  19.  
  20. -- 查询学生表中姓名的第二个字为伟和先的同学信息
  21. select *FROM student where sName LIKE '_伟%' OR sName LIKE '_先%';
  22. -- 查询学生表中在1995年出生的学生信息
  23. SELECT *FROM student where birthday BETWEEN '1995-1-1' AND '1995-12-31';
  24. -- 查询成绩表中成绩在6089之间的信息
  25. SELECT *FROM score WHERE grade BETWEEN 60 and 89;
  26. -- 查询学生表学号为 130801310113091225031312054904 的学生信息
  27. SELECT *FROM student WHERE sNo in('','','');
  28. -- 查询课程表中标记为空的信息
  29. SELECT *FROM course where remark is NULL;
  30. -- 查询学生表中男生的信息并按生日降序排序
  31. SELECT *FROM student WHERE sex='男' ORDER BY birthday DESC;
  32. -- 查询学生表所有信息并按性别降序,学号升序排列
  33. SELECT *FROM student ORDER BY sex DESC,sNo;
  34. -- 查询学生表信息并按生日降序,取前五个记录
  35. SELECT *FROM student ORDER BY birthday DESC
  36. LIMIT 5;
  37. -- 查询成绩表中当课程号为01001的学号,课程号,成绩信息,并以成绩降序排列
  38. SELECT sNo,cNo,grade FROM score WHERE cNo='' ORDER BY grade DESC
  39. LIMIT 1,3;
  40. -- 查询成绩表中选修的学号 并用DISTINCT去重
  41. SELECT DISTINCT sNo FROM score;
  42. -- 用内连接 INNER JOIN 来查询信息
  43. SELECT student.sNo,sName,sex,cNo,grade FROM student inner JOIN score ON student.sNo=score.sNo
  44. where sex='女';
  45.  
  46. SELECT student.sNo,sName,sex,cNo,grade FROM student,score where student.sNo=score.sNo and sex='女';
  47. -- 查询学号为1308013101 的信息
  48. select S.sNo,sName,sex,C.cNo,cName,grade FROM student S INNER JOIN score G ON S.sNo=G.sNo
  49. INNER JOIN course C on C.cNo=G.cNo
  50. where S.sNo='';
  51.  
  52. SELECT S.sNo,sName,sex,C.cNo,cName,grade from student S ,course C,score G
  53. where S.sNo=G.sNo and G.cNo=C.cNo and S.sNo='';
  54. -- 查询学号为1308013101的最高分,最低分及平均分和总分信息
  55. SELECT max(grade) as '最高分',min(grade) as '最低分' ,avg(grade) as '平均分',sum(grade) as '总分' FROM score WHERE sNo='' ;
  56. -- 查询学生表男生人数
  57. SELECT count(*) as '男生人数' from student where sex='男';
  58. -- 查询成绩表中已选修课程的人数并用DISTINCT去重
  59. select count(DISTINCT sNo)as '已选修课程学生人数' from score;
  60. -- 分组统计男、女生人数
  61. SELECT sex as '性别',count(*) as '学生人数' from student GROUP BY sex;
  62. -- 分组统计不同班级人数
  63. SELECT deptName AS '班级',count(*) as '学生人数' from student GROUP BY deptName;
  64. -- 5分组查询学生的学号、姓名、选修课程数及平均分
  65. SELECT student.sNo as '学号',sName as '姓名', count(*)as '选修课程数',avg(grade) as '平均分' from score INNER JOIN student on score.sNo=student.sNo
  66. GROUP BY student.sNo;
  67. -- 用嵌套查询学号为1308013101的同学在同一个班级的学生信息
  68. SELECT *FROM student where deptName=(SELECT deptName from student where sNo='');
  69. -- 查询课程编号为01001的课程,且成绩超过该课程平均分的学生的学号、姓名、所属班级、课程编号、课程名称及成绩
  70. select student.sNo,sName,deptName,course.cNo,cName,grade FROM student,score,course
  71. where student.sNo=score.sNo and score.cNo=course.cNo
  72. AND course.cNo=''and grade>(SELECT avg(grade)FROM score,course
  73. where course.cNo=score.cNo and course.cNo='');
  74. -- 创建新数据表,查询网络131的学生记录,将查询结果插入到新数据表中
  75. CREATE TABLE tempStudent(
  76. stuNo char(10) not null PRIMARY KEY,
  77. StuName VARCHAR(20)not NULL,
  78. sex char(1),
  79. deptName varchar(30) not null
  80. );
  81. INSERT into tempStudent(stuNo,stuName,sex,deptName)
  82. SELECT sNo,sName,sex,deptName from student where deptName='网络131';
  83. -- 将数据结构 课程成绩统一减去5
  84. update score SET grade=grade-5
  85. where cNo=(SELECT cNO from course WHERE cName='数据结构');
  86. -- 查询更新完的成绩表
  87. select *from score where cNo=(SELECT cNO from course WHERE cName='数据结构');
  88.  
  89. -- 删除机电131的学生的成绩记录
  90. delete from score
  91. where sNo in (SELECT sNo from student where deptName='机电131');
  92.  
  93. -- 查询 删除后的机电131成绩记录
  94. SELECT *from score where sNo in (SELECT sNo from student where deptName='机电131');

MySQL 数据查询的更多相关文章

  1. nodejs mysql 数据查询例子

    1.安装nodejs 2.安装mysql  npm包 地址:https://github.com/felixge/node-mysql npm install mysql 3.相应API查看及调用: ...

  2. MySQL数据查询之单表查询

    单表查询 简单查询 - 创建表 DROP TABLE IF EXISTS `person`; CREATE TABLE `person` ( `id` ) NOT NULL AUTO_INCREMEN ...

  3. mysql 数据查询全讲

    数据查询 涉及到DQL(Data Query Language)是sql语句的一类 本文全面介绍了mysql下 select 语句的各种查询方式:普通查询,模糊查询,查询排序,分页查询,聚合函数查询  ...

  4. MySQL - 数据查询 - 简单查询

    1. 简述 查询数据是指从数据库中获取所需要的数据.如Jack 要达到验证用户名和密码的目的,就需要从数据库已保存的用户表中读取当前用户的密码进行验证,以验明正身!保存查询数据是数据库操作中常用且重要 ...

  5. 【初学python】使用python连接mysql数据查询结果并显示

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

  6. Packets larger than max_allowed_packet are not allowed(mysql数据查询提示:不允许超过允许的最大数据包)解决方案

    问题背景: 首先我的项目运用的时Mysql,在做一个数据更新操作的时候,提示异常:System.Exception:“ExecuteNonQuery:Packets larger than max_a ...

  7. MySQL数据查询

    数据查询语言DQL select [all | distinct] 字段或表达式列表 [from子句] [where子句] [group by子句] [having子句] [order by子句] [ ...

  8. MySQL数据查询之多表查询

    多表查询 多表联合查询 #创建部门 CREATE TABLE IF NOT EXISTS dept ( did int not null auto_increment PRIMARY KEY, dna ...

  9. MySql数据查询的逻辑蕴含条件问题

    SQL语言中没有蕴含逻辑运算.但是,可以利用谓词演算将一个逻辑蕴含的谓词等价转换为:p->q ≡┐p∨q. 我们通过一个具体的题目来分析:(具体的表和数据详见文章:Mysql数据库中的EXIST ...

  10. 笔记-4:mysql数据查询

    1.创建查询表 1.1 创建班级表 含义 字段名 数据类型 宽度 班级编号 classNo 字符型 6 班级名称 className 字符型 20 所属院系 department 字符型 30 年级 ...

随机推荐

  1. .NET Core实战项目之CMS 第十四章 开发篇-防止跨站请求伪造(XSRF/CSRF)攻击处理

    通过 ASP.NET Core,开发者可轻松配置和管理其应用的安全性. ASP.NET Core 中包含管理身份验证.授权.数据保护.SSL 强制.应用机密.请求防伪保护及 CORS 管理等等安全方面 ...

  2. 并发编程(九)—— Java 并发队列 BlockingQueue 实现之 LinkedBlockingQueue 源码分析

    LinkedBlockingQueue 在看源码之前,通过查询API发现对LinkedBlockingQueue特点的简单介绍: 1.LinkedBlockingQueue是一个由链表实现的有界队列阻 ...

  3. 并发编程(一)—— volatile关键字和 atomic包

    本文将讲解volatile关键字和 atomic包,为什么放到一起讲呢,主要是因为这两个可以解决并发编程中的原子性.可见性.有序性,让我们一起来看看吧. Java内存模型 JMM(java内存模型) ...

  4. 关于HotSpot VM以及Java语言的动态编译 你可能想知道这些

    目录 1 HotSpot VM的历史 2 HotSpot VM 概述 2.1 编译器 2.2 解释器 2.3 解释型语言 VS 编译型语言 3 动态编译 3.1 什么是动态编译 3.2 HotSpot ...

  5. 痞子衡嵌入式:串口调试工具Jays-PyCOM诞生记(3)- 串口功能实现(pySerial)

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是串口调试工具Jays-PyCOM诞生之串口功能实现. 串口调试助手是最核心的当然是串口数据收发与显示的功能,Jays-PyCOM借助的是 ...

  6. Docker公共&本地镜像仓库(七)--技术流ken

    分发镜像 我们已经会构建自己的镜像了,那么如果在多个docker主机上使用镜像那?有如下的几种可用的方法: 用相同的Dockerfile在其他host上构建镜像 将镜像上传到公共registry(比如 ...

  7. Haskell复习笔记(二)

    Haskell中的递归 递归就是定义函数以调用自身的方式,关于递归解决问题的实例有很多,如斐波那契数列,还有汉诺塔问题,递归也正是Haskell中用来解决循环问题的关键. 自定义maxinum函数 m ...

  8. Asp.NetCore程序发布到CentOs(含安装部署netcore)--最佳实践(一)

    环境 本地 win7 服务器:Virtual Box 上的Centos ssh工具: Xshell 文件传输: xftp 1.在本地创建asp.net core应用发布 1.1 使用Vs2017 新建 ...

  9. windows下Jmeter压力测试工具的安装

    JMeter是Apache软件基金会的产品,用于对静态的和动态的资源(文件,Servlet,Perl脚本,Java 对象,数据库和查询,FTP服务器等等)的性能进行测试.是一款很方便的测试软件. 系统 ...

  10. Android破解学习之路(十)—— 我们恋爱吧 三色绘恋 二次破解

    前言 好久没有写破解教程了(我不会告诉你我太懒了),找到一款恋爱游戏,像我这样的宅男只能玩玩恋爱游戏感觉一下恋爱的心动了.. 这款游戏免费试玩,但是后续章节得花6元钱购买,我怎么会有钱呢,而且身在吾爱 ...