1.查询所有列   * 为所有列

select * from table_name;

2.查询指定列

select id,age from table_name;

3.查询时添加常量列-------本次查询有效,不会添加到表中,只显示  可以用as来命名本列名

select 'java0328' from table_name;

select 'java班' as '班级' from table_name;

4.查询时合并列------只能合并类型为数值的字段

select  (html + js)from table_name;

5.查询时去除重复记录-------字段名加不加括号效果一样

select distinct sex from table_name;

6.条件查询   where

select * from class0328 where html = '88';

  6.1逻辑条件:and(与:都要满足)  or(或:满足其中一个即可)

select *from class0328 where sex = '男' and html = '88';    合集

select * from class0328 where sex = '男' or html < 30;      交集

  6.2比较条件: <    >    >=     <=  =      <>(不等于)     between    and (等价于   >= and   <=);

需求: 查询html成绩大于70分的学生

select * from class0328  where html > 70;

需求: 查询js成绩大于等于75,且小于等于90分的学生

select * from class0328 where js between 75 and 90;(包前包后)

或者  select * from class0328 where js >= 75 and <= 90;

  6.3判空条件(null 空字符串):

  当字段内没有值 为 null,id = ‘1’,sex =null, 当字段内为空字符串单有字段时,也就是有值!,值为 ‘ ’, 比如 id = ‘1’,sex = ''

  is null / is not null                 = ' ' / <>' '

查询年龄为空的学生信息:

select * from class0328 where age is null;

显示姓名为空字符串的字段:

select *from class0328 where ename = ' ';

需求: 查询有地址的学生(不包括null和空字符串)

select * from class0328 where is not null and address <>'';

  6.4模糊条件: like

  通常使用一下替换标记:

  %:百分号表示任意个字符

  _:一个下划线表示一个字符

  需求: 查询姓‘张’的学生

select * from class0328 where ename like '张%';      对名字的长度没有限制,都可以查询到

  需求:查询名字字数为两位的学生

select * from class0328 where ename like '__';          两个下划线表示 值长度为两个字符

  6.5聚合查询(使用聚合函数的查询)

  常用的聚合函数: sum() 求和函数   avg()平均函数   max()最大函数 min()最小函数    count()统计数值函数

  注意:聚合函数跟()间不能有空格,否则会报错!!!

  count()函数统计的数量不包含null的数据

  使用count统计表的记录数,要使用不包含null值的字段

  查询 js 成绩的总成绩

  select sum(js) from class0328;

  查询 js 成绩的平均分

  select avg(js) from class0328;

  查询当前 js 最高分

  select max(js) from class0328;

  查询当前 js 最低分
  select min(js) from class0328;

  统计当前一共有多少个 js 的成绩

  select count(js) from class0328;

  6.6分页查询 : limie 起始行,查询几行;

  起始行从0开始

  分页:当前页 每页显示多少条

  分页查询当前页的数据的sql公式:

  select * from class0328 limit(当前页 - 1) * 每页显示多少行 , 每页显示多少行;

-- 需求: 查询第1,2条记录(第1页的数据)

  SELECT * FROM student LIMIT 0,2;

  -- 查询第3,4条记录(第2页的数据)

  SELECT * FROM student LIMIT 2,2;

  -- 查询第5,6条记录(第3页的数据)

  SELECT * FROM student LIMIT 4,2;

  -- 查询第7,8条记录 (没有记录不显示)

  SELECT * FROM student LIMIT 6,2;

  6.7查询排序: order by

  语法: order by 字段 asc / desc

  asc:顺序:正序;数值:递增,越来越大;字母:自然顺序(a-z)

  desc: 顺序:反序;数值:递减,越来越小;字母:自然反序(z-a) 

  默认情况下,按照插入记录顺序排序

  SELECT * FROM student;

   需求: 按照id顺序排序

  SELECT * FROM student ORDER BY id ASC;

  SELECT * FROM student ORDER BY id; -- 默认正序

  SELECT * FROM student ORDER BY id DESC;-- 反序

    注意:多个排序条件,中间用逗号隔开

  需求: 按照servlet正序,按照jsp的倒序

SELECT * FROM student ORDER BY servlet ASC,jsp DESC;

  6.8分组查询(group by)

  需求: 查询男女的人数

1) 把学生按照性别分组(GROUP BY gender)

    2) 统计每组的人数(COUNT(*))

  SELECT gender,COUNT(*) FROM student GROUP BY gender;

  分组查询后筛选  (having)

  需求: 查询总人数大于2的性别

  SELECT gender,COUNT(*) FROM student

   WHERE GROUP BY gender HAVING COUNT(*)>2 ;

  注意: 分组之前条件使用where关键字,分组之后条件使用having关键字

练习题:

  1. USE test02;
  2. CREATE TABLE day02(
  3. empno INT,
  4. ename VARCHAR(10),
  5. job VARCHAR(10),
  6. mgr INT,
  7. hiredate DATE,
  8. sal DOUBLE,
  9. COMM DOUBLE,
  10. deptno INT
  11. )
  12. SELECT * FROM day02;
  13. INSERT INTO day02 VALUES(1001,'甘宁','文员',1013,'2000-12-17',8000.00,NULL,20);
  14. INSERT INTO day02 VALUES(1002,'黛琦丝','销售员',1006,'2001-02-20',16000.00,3000.00,30);
  15. INSERT INTO day02 VALUES(1003,'殷天正','销售员',1006,'2001-02-22',12500.00,5000.00,30);
  16. INSERT INTO day02 VALUES(1004,'刘备','经理',1009,'2001-04-02',29750.00,NULL,20);
  17. INSERT INTO day02 VALUES(1005,'谢逊','销售员',1006,'2001-09-28',12500.00,14000.00,30);
  18. INSERT INTO day02 VALUES(1006,'关羽','经理',1009,'2001-05-01',28500.00,NULL,30);
  19. INSERT INTO day02 VALUES(1007,'张飞','经理',1009,'2001-09-01',24500.00,NULL,10);
  20. INSERT INTO day02 VALUES(1008,'诸葛亮','分析师',1004,'2007-04-19',30000.00,NULL,20);
  21. INSERT INTO day02 VALUES(1009,'曾阿牛','董事长',NULL,'2001-11-17',50000.00,NULL,10);
  22. INSERT INTO day02 VALUES(1010,'韦一笑','销售员',1006,'2001-09-08',15000.00,0.00,30);
  23. INSERT INTO day02 VALUES(1011,'周泰','文员',1008,'2007-05-23',11000.00,NULL,20);
  24. INSERT INTO day02 VALUES(1012,'程普','文员',1006,'2001-12-03',9500.00,NULL,30);
  25. INSERT INTO day02 VALUES(1013,'庞统','分析师',1004,'2001-12-03',30000.00,NULL,20);
  26. INSERT INTO day02 VALUES(1014,'黄盖','文员',1007,'2002-01-23',13000.00,NULL,10);
  27. INSERT INTO day02 VALUES(1015,'张三','保洁员',1001,'2013-05-01',80000.00,50000.00,50);
  28. /*1.查出部门编号为30的员工*/
  29. SELECT ename FROM day02 WHERE deptno = '';
  30. /*2.所有销售员的姓名、编号和部门编号*/
  31. SELECT empno,ename,deptno FROM day02;
  32. /*3.找出奖金高于工资的员工*/
  33. SELECT ename FROM day02 WHERE COMM > sal;
  34. /*4. 找出奖金高于工资60%的员工*/
  35. SELECT ename FROM day02 WHERE COMM > (sal * 0.6);
  36. /*5.找出部门编号为10中所有经理,和部门编号为20中所有销售员的详细资料*/
  37. SELECT * FROM day02 WHERE (deptno = '' AND job = '经理') OR (deptno = '' AND job = '销售员');
  38. /*6. 找出部门编号为10中所有经理,部门编号为20中所有销售员,还有即不是经理又不是销售员但其工资大或等于20000的所有员工详细资料*/
  39. SELECT * FROM day02 WHERE (deptno = '' AND job = '经理') OR (deptno = '' AND job = '销售员')
  40. OR (job <> '经理' AND job <> '销售员' AND sal >= '');
  41. /*7. 无奖金或奖金低于1000的员工。*/
  42. SELECT ename FROM day02 WHERE COMM IS NULL OR COMM < 1000;
  43. /*8. 查询名字由三个字组成的员工*/
  44. SELECT ename FROM day02 WHERE ename LIKE '___';
  45. /*9.查询2000年入职的员工*/
  46. SELECT ename FROM day02 WHERE hiredate LIKE '2000%';
  47. /*10. 查询所有员工详细信息,用编号升序排序*/
  48. SELECT * FROM day02 ORDER BY empno ASC;
  49. /*11. 查询所有员工详细信息,用工资降序排序,如果工资相同使用入职日期升序排序*/
  50. SELECT *FROM day02 ORDER BY sal DESC,hiredate ASC;
  51. /*12. 查询姓周的两个名字的员工。*/
  52. SELECT ename FROM day02 WHERE ename LIKE '周_';
  53. /*13. 查询所有姓张的员工*/
  54. SELECT ename FROM day02 WHERE ename LIKE '张%';
  55. /*14.查询该部门有多少个岗位,每个岗位有多少人*/
  56. SELECT deptno,job,COUNT(job) FROM day02 GROUP BY job;
  57. /*15.查询哪个岗位中人数大于3*/
  58. SELECT job,COUNT(*) FROM day02 GROUP BY job
  59. HAVING COUNT(*) > 3;

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. MySQL数据查询之多表查询

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

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

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

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

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

  8. MySQL数据查询

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

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

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

随机推荐

  1. NuGet 2.0 (.NET软件包管理器) 发布了-现在升级吧

    原文:https://blogs.msdn.microsoft.com/scott_hanselman/2012/07/10/nuget-2-0-net/ [原文发表地址]  NuGet 2.0 (. ...

  2. 获取所有后缀DDE打开命令

    概述: 由于需要使用DDE方式打开文件,所以把支持DDE方式打开文件的参数都导出来到文件,方便查找. 并且提供运行DDE命令的工具,可以用于测试DDE功能. 1.运行脚步GetDDE.vbs可以获取系 ...

  3. php 函数func_get_args()、func_get_arg()与func_num_args()之间的区别

    php经常会有一些看似相近的函数,然而区别很大.[func_get_arg(),func_get_args(),func_num_args()]的区别,我们先看一下,下面的实例代码 从上面的结果中我们 ...

  4. F5 IIS Log获取客户端源IP

    1.配置F5启用X-Forwarded-For方法: 1:Local Traffic-Profiles-Http-改"Insert XForwarded For"为Enable 2 ...

  5. 如何在CentOS 6.7上将PHP 5.3升级到PHP 5.6

    如何在CentOS 6.7上将PHP 5.3升级到PHP 5.6  andyz  博客  45评论   Facebook的TwitterGoogle+Reddit 在本文中,我将介绍如何在CentOS ...

  6. php中的html元素

    我们先看下面的代码 form2.php <html> <head><title>greetins eartyling</title></head& ...

  7. codeforces 808G Anthem of Berland

    codeforces 808G Anthem of Berland 题面 给定\(s\)串和\(t\)串,字符集是小写字母.\(s\)串中有些位置的值不确定,要求你确定这些位置上的值,使得\(t\)在 ...

  8. ECharts.js学习(三)交互组件

    ECharts.js 交互组件 ECharts.js有很多的交互组件,一般经常用到的组件有这些: title:标题组件,包含主标题和副标题. legend:图例组件,展现了不同系列的标记(symbol ...

  9. 使用Hash直接登录Windows(HASH传递)

    抓取windows hash值 得到administrator的hash: 598DDCE2660D3193AAD3B435B51404EE:2D20D252A479F485CDF5E171D9398 ...

  10. HTML 教程

    HTML5 标准 超文本标记语言(英语:HyperText Markup Language,简称:HTML) 是一种用于创建网页的标准标记语言. 您可以使用 HTML 来建立自己的 WEB 站点,HT ...