MySQL数据查询(重点)
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关键字
练习题:
USE test02;
CREATE TABLE day02(
empno INT,
ename VARCHAR(10),
job VARCHAR(10),
mgr INT,
hiredate DATE,
sal DOUBLE,
COMM DOUBLE,
deptno INT
)
SELECT * FROM day02;
INSERT INTO day02 VALUES(1001,'甘宁','文员',1013,'2000-12-17',8000.00,NULL,20);
INSERT INTO day02 VALUES(1002,'黛琦丝','销售员',1006,'2001-02-20',16000.00,3000.00,30);
INSERT INTO day02 VALUES(1003,'殷天正','销售员',1006,'2001-02-22',12500.00,5000.00,30);
INSERT INTO day02 VALUES(1004,'刘备','经理',1009,'2001-04-02',29750.00,NULL,20);
INSERT INTO day02 VALUES(1005,'谢逊','销售员',1006,'2001-09-28',12500.00,14000.00,30);
INSERT INTO day02 VALUES(1006,'关羽','经理',1009,'2001-05-01',28500.00,NULL,30);
INSERT INTO day02 VALUES(1007,'张飞','经理',1009,'2001-09-01',24500.00,NULL,10);
INSERT INTO day02 VALUES(1008,'诸葛亮','分析师',1004,'2007-04-19',30000.00,NULL,20);
INSERT INTO day02 VALUES(1009,'曾阿牛','董事长',NULL,'2001-11-17',50000.00,NULL,10);
INSERT INTO day02 VALUES(1010,'韦一笑','销售员',1006,'2001-09-08',15000.00,0.00,30);
INSERT INTO day02 VALUES(1011,'周泰','文员',1008,'2007-05-23',11000.00,NULL,20);
INSERT INTO day02 VALUES(1012,'程普','文员',1006,'2001-12-03',9500.00,NULL,30);
INSERT INTO day02 VALUES(1013,'庞统','分析师',1004,'2001-12-03',30000.00,NULL,20);
INSERT INTO day02 VALUES(1014,'黄盖','文员',1007,'2002-01-23',13000.00,NULL,10);
INSERT INTO day02 VALUES(1015,'张三','保洁员',1001,'2013-05-01',80000.00,50000.00,50);
/*1.查出部门编号为30的员工*/
SELECT ename FROM day02 WHERE deptno = '';
/*2.所有销售员的姓名、编号和部门编号*/
SELECT empno,ename,deptno FROM day02;
/*3.找出奖金高于工资的员工*/
SELECT ename FROM day02 WHERE COMM > sal;
/*4. 找出奖金高于工资60%的员工*/
SELECT ename FROM day02 WHERE COMM > (sal * 0.6);
/*5.找出部门编号为10中所有经理,和部门编号为20中所有销售员的详细资料*/
SELECT * FROM day02 WHERE (deptno = '' AND job = '经理') OR (deptno = '' AND job = '销售员');
/*6. 找出部门编号为10中所有经理,部门编号为20中所有销售员,还有即不是经理又不是销售员但其工资大或等于20000的所有员工详细资料*/
SELECT * FROM day02 WHERE (deptno = '' AND job = '经理') OR (deptno = '' AND job = '销售员')
OR (job <> '经理' AND job <> '销售员' AND sal >= '');
/*7. 无奖金或奖金低于1000的员工。*/
SELECT ename FROM day02 WHERE COMM IS NULL OR COMM < 1000;
/*8. 查询名字由三个字组成的员工*/
SELECT ename FROM day02 WHERE ename LIKE '___';
/*9.查询2000年入职的员工*/
SELECT ename FROM day02 WHERE hiredate LIKE '2000%';
/*10. 查询所有员工详细信息,用编号升序排序*/
SELECT * FROM day02 ORDER BY empno ASC;
/*11. 查询所有员工详细信息,用工资降序排序,如果工资相同使用入职日期升序排序*/
SELECT *FROM day02 ORDER BY sal DESC,hiredate ASC;
/*12. 查询姓周的两个名字的员工。*/
SELECT ename FROM day02 WHERE ename LIKE '周_';
/*13. 查询所有姓张的员工*/
SELECT ename FROM day02 WHERE ename LIKE '张%';
/*14.查询该部门有多少个岗位,每个岗位有多少人*/
SELECT deptno,job,COUNT(job) FROM day02 GROUP BY job;
/*15.查询哪个岗位中人数大于3*/
SELECT job,COUNT(*) FROM day02 GROUP BY job
HAVING COUNT(*) > 3;
MySQL数据查询(重点)的更多相关文章
- nodejs mysql 数据查询例子
1.安装nodejs 2.安装mysql npm包 地址:https://github.com/felixge/node-mysql npm install mysql 3.相应API查看及调用: ...
- MySQL数据查询之单表查询
单表查询 简单查询 - 创建表 DROP TABLE IF EXISTS `person`; CREATE TABLE `person` ( `id` ) NOT NULL AUTO_INCREMEN ...
- mysql 数据查询全讲
数据查询 涉及到DQL(Data Query Language)是sql语句的一类 本文全面介绍了mysql下 select 语句的各种查询方式:普通查询,模糊查询,查询排序,分页查询,聚合函数查询 ...
- MySQL - 数据查询 - 简单查询
1. 简述 查询数据是指从数据库中获取所需要的数据.如Jack 要达到验证用户名和密码的目的,就需要从数据库已保存的用户表中读取当前用户的密码进行验证,以验明正身!保存查询数据是数据库操作中常用且重要 ...
- MySQL数据查询之多表查询
多表查询 多表联合查询 #创建部门 CREATE TABLE IF NOT EXISTS dept ( did int not null auto_increment PRIMARY KEY, dna ...
- 【初学python】使用python连接mysql数据查询结果并显示
因为测试工作经常需要与后台数据库进行数据比较和统计,所以采用python编写连接数据库脚本方便测试,提高工作效率,脚本如下(python连接mysql需要引入第三方库MySQLdb,百度下载安装) # ...
- Packets larger than max_allowed_packet are not allowed(mysql数据查询提示:不允许超过允许的最大数据包)解决方案
问题背景: 首先我的项目运用的时Mysql,在做一个数据更新操作的时候,提示异常:System.Exception:“ExecuteNonQuery:Packets larger than max_a ...
- MySQL数据查询
数据查询语言DQL select [all | distinct] 字段或表达式列表 [from子句] [where子句] [group by子句] [having子句] [order by子句] [ ...
- MySql数据查询的逻辑蕴含条件问题
SQL语言中没有蕴含逻辑运算.但是,可以利用谓词演算将一个逻辑蕴含的谓词等价转换为:p->q ≡┐p∨q. 我们通过一个具体的题目来分析:(具体的表和数据详见文章:Mysql数据库中的EXIST ...
随机推荐
- WebService程序数据集之WSDL取数
在通用的webservice集合中,在集合中使用wsdl取数的方式获取数据,并将数据转换为程序数据集,那么怎样通过wsdl取数并转换为程序数据集呢? 首先将wsdl获取到的数据数据转换为二维数组,然后 ...
- Web前端和后端开发的区别和要求
Web前端和后端开发的区别和要求 有时候自己会分不清,其实是因为前后端都了解,类似于全栈工程师,但又什么都不是很精通.那到底什么是前端.后端呢,我整理了一些企业要求级别的前端/后端基础,开发框架等. ...
- MUI框架-06-静态页制作(图片轮播)
MUI框架-06-静态页制作(图片轮播) 轮播也是静态,是相对页面交互来说 上一篇介绍了如何设计一个简单的界面,还没有接触过,请先查看: MUI框架-01-介绍-创建项目-简单页面 轮播组件 之前也介 ...
- .net core Web应用启动类
在ASP.NET Core中,Startup类为Web应用的入口类,用于配置Web服务的管道/过滤器以及Web应用所能用到的服务.在启动Web应用后,ASP.NET将在主库中查询名为Startup的类 ...
- 毕向东_Java基础视频教程第19天_IO流(18~19)
第19天-18-IO流(流操作规律 - 1) 通过三个步骤来明确"流操作"的规律: 明确数据流的"源和目的" 源, 输入流: InputStream/Reade ...
- C/C++面试问题分类大汇总 ZZ 【C++】
http://www.mianwww.com/html/2014/05/21208.html 指针和引用的区别 指针指向一块内存,它的内容是指向内存的地址:引用是某内存的别名 引用使用是无需解引用,指 ...
- SQL 语句及关键字的用法
一.SELECT select [ALL|DISTINCT] select_list [into new table] FROM table_source [where serch_conditaio ...
- margin的用法
margin塌陷问题 当时说到了盒模型,盒模型包含着margin,为什么要在这里说margin呢?因为元素和元素在垂直方向上margin里面有坑. 我们来看一个例子: html结构: <div ...
- 每年支付 m 次的年金
每年支付 m 次的年金 n 表示年数.m 表示每年的付款次数.i 表示年实际利率. 一.期末付年金(annuity-immediate payable mthly): 每年支付m次, 每次的付款为1/ ...
- sqlserver-一次updlock和withnolock和with check option 的报错原因分析
接口程序一直运行的很稳定,其中有一天进行了数据库的整改,导致程序不断报错, 报错信息如下 原因: 程序代码写入以下代码 select * from ViewName with(updlock) whe ...