使用DQL语句查询数据

1.创建表

DROP TABLE IF EXISTS `tb_emp`;
CREATE TABLE `tb_emp`  (
  `emp_id` int(11) NOT NULL AUTO_INCREMENT,
  `emp_name` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
  `emp_sex` char(3) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
  `dept_id` int(11) NULL DEFAULT NULL,
  `salary` double(5, 1) NULL DEFAULT 4000.0,
  `emp_mail` varchar(30) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '[email protected]',
  PRIMARY KEY (`emp_id`) USING BTREE,
  INDEX `dept_id`(`dept_id`) USING BTREE,
  CONSTRAINT `tb_emp_ibfk_1` FOREIGN KEY (`dept_id`) REFERENCES `t_dept` (`dept_id`) ON DELETE RESTRICT ON UPDATE RESTRICT
) ENGINE = InnoDB AUTO_INCREMENT = 200004 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;

2.表数据

INSERT INTO `tb_emp` VALUES (2, '信誉昂', '男', 1, 9000.0, '[email protected]');
INSERT INTO `tb_emp` VALUES (3, '张三', '女', 2, 8000.0, '[email protected]');
INSERT INTO `tb_emp` VALUES (10001, '小乔', '女', 1, 7800.0, '[email protected]');
INSERT INTO `tb_emp` VALUES (10002, '大乔', '女', 2, 6500.0, '[email protected]');
INSERT INTO `tb_emp` VALUES (10003, '赵柳', '男', 2, 6700.0, '[email protected]');
INSERT INTO `tb_emp` VALUES (10004, '阳阳', '女', 1, 8000.0, '[email protected]');
INSERT INTO `tb_emp` VALUES (10005, '信誉昂', '男', 3, 4000.0, '[email protected]');
INSERT INTO `tb_emp` VALUES (10006, '赵柳', '男', 2, 5000.0, '[email protected]');
INSERT INTO `tb_emp` VALUES (10007, '阳阳', '女', 2, 6000.0, '[email protected]');
INSERT INTO `tb_emp` VALUES (10008, '赵柳', '男', 2, 5000.0, '[email protected]');
INSERT INTO `tb_emp` VALUES (10009, '阳XXX阳', '女', 3, 6000.0, '[email protected]');
INSERT INTO `tb_emp` VALUES (10014, '赵柳', '男', 3, 5000.0, '[email protected]');
INSERT INTO `tb_emp` VALUES (10015, '阳xxx阳', '男', 2, 6000.0, '[email protected]');
INSERT INTO `tb_emp` VALUES (10016, '赵柳', '男', 2, 5000.0, '[email protected]');
INSERT INTO `tb_emp` VALUES (10017, '阳阳', '女', 3, 6000.0, '[email protected]');
INSERT INTO `tb_emp` VALUES (200001, '新员工', '女', 3, 4000.0, '[email protected]');
INSERT INTO `tb_emp` VALUES (200002, 'admin', '女', 3, 4000.0, NULL);
INSERT INTO `tb_emp` VALUES (200003, '关羽', '男', NULL, 8000.0, '[email protected]');

3.查询数据

# 查询性别为男的员工信息【条件查询】
SELECT * FROM tb_emp WHERE emp_sex = '男';
# 条件查询
# 查询性别为男并且是2号部门员工信息【多条件查询】
SELECT * FROM tb_emp WHERE emp_sex = '男' AND dept_id = 2;
# 查询性别为男或者1号部门员工信息
SELECT * FROM tb_emp WHERE emp_sex = '男' OR dept_id = 1;

# 模糊查询 LIKE
# 查询带姓赵员工 '%' 匹配任意字符
SELECT * FROM tb_emp WHERE  emp_name LIKE '赵%';
# 匹配第二字为阳员工 '_'占位符
SELECT * FROM tb_emp WHERE  emp_name LIKE '_阳%';
# 匹配名字中含有阳员工信息
SELECT * FROM tb_emp WHERE emp_name LIKE '%阳%';

# 去重查询
# 查询部门中有员工的部门编号
SELECT DISTINCT dept_id FROM tb_emp;

#null 查询
# 没有分配部门员工 !=,<> 主要操作的非数据字段默认NULL
SELECT emp_id, emp_name,IFNULL(dept_id,0) FROM tb_emp WHERE dept_id is null;
SELECT emp_id, emp_name,IFNULL(dept_id,0) FROM tb_emp WHERE dept_id is not null;

# 定义别名
SELECT emp_id as 员工编号, emp_name 员工姓名 FROM tb_emp;
SELECT emp_id, emp_name 员工姓名,'AAAA' 常量 FROM tb_emp;

# 获取所有员工薪资并且按照降序排序[默认为升序排序asc, 降序使用desc]
SELECT emp_id as 员工编号, emp_name 员工姓名, salary 薪资 FROM tb_emp ORDER BY salary DESC;

# 使用聚合函数 count(),min(),max(),avg(),sum()
select count(emp_id) 员工数, min(salary) 最低薪资, max(salary) 最高薪资,
        avg(salary) 平均薪资, SUM(salary) 薪资总和 from tb_emp;

# 分组查询
# 查询每一个部门员工数,平均薪资,最高薪资,最低薪资,薪资总和
# 分组查询能够出现的列必须是分组组和聚合函数 [处理小数函数ROUND(值,保留的小数位数)]
select dept_id,count(emp_id) 员工数, min(salary) 最低薪资, max(salary) 最高薪资,
        ROUND(AVG(salary),1) 平均薪资, SUM(salary) 薪资总和 from tb_emp where dept_id is not null GROUP BY dept_id;
# 查询平均薪资和大于6000的信息 [HAVING 对分组后信息再次筛选]
select dept_id,count(emp_id) 员工数, min(salary) 最低薪资, max(salary) 最高薪资,
        ROUND(AVG(salary),1) 平均薪资, SUM(salary) 薪资总和 from tb_emp where dept_id is not null GROUP BY dept_id HAVING ROUND(AVG(salary),1) > 6000;
# 查询平均薪资和大于6000的信部门中最高平均薪资部门 [LIMIT 限制查询记录数]
select dept_id,count(emp_id) 员工数, min(salary) 最低薪资, max(salary) 最高薪资,
        ROUND(AVG(salary),1) 平均薪资, SUM(salary) 薪资总和 from tb_emp
        where dept_id is not null
        GROUP BY dept_id
        HAVING ROUND(AVG(salary),1) > 6000
        ORDER BY ROUND(AVG(salary),1) DESC
        LIMIT 1;

原文地址:https://www.cnblogs.com/sunBinary/p/12416998.html

时间: 2024-10-09 09:05:50

使用DQL语句查询数据的相关文章

第十七章 使用DQL命令查询数据

1.查询所有:select * from subject; 2.查询指定列:SELECT studentNo,Phone FROM student: 3.As作用: 给数据列取别名:select subjectName as 科目名称 from subject: 给表取别名:select subjectName 科目名称 from subject as s; 给计算或总结的结果取别名:select classHour+5 as 课时 from subject ; 注意:As可以忽略不写 4.DI

6.2笔记-DQL语句查询数据库

一.DQL语句 1.常量列 SELECT `StudentName` AS 姓名, `Address` AS 地址, '北京信息中心' AS 学校名称 FROM `student`; 2.常用函数 聚合函数 AVG() 求平均分 count() 统计记录数 SELECT COUNT(1) FROM student; //效率高 select count(*) from student; max() 最大值 min() 最小值 sum() 求和 字符串函数: 日期函数: CURDATE(); #获

Excel 中使用SQL 语句查询数据(七)-----用LIKE 运算符进行模糊匹配查询

这篇博文要和大家分享的是用LIKE 运算符进行模糊匹配查询下图数据源商品代号包含数字的数据. 我们用Microsoft query连接数据源,步骤请参考本系列第一篇博文.语句如下图 其中 LIKE '%[0-9]%' 执行结果如下 然后将结果导入excel  的sheet中

Excel 中使用SQL 语句查询数据(二)

上一篇博文我们在导入外部数据的时候用的是OLE DB的方式(请参考上一篇博文)我们今天分享如何用Microsoft query导入外部数据.大家会有疑问OLE DB 和Microsoftquery 连接外部数据有什么区别的,我这里只说他们是两种不同的标准.具体的区别有机会再解释. 大家体会以下步骤,如图 首先请看数据源.(employee.xlsx中的sheet1) 我们选择要显示导入数据的位置,(比如我这里在employee.xlsx的sheet2显示导入的数据)并选择data菜单,from

Excel 中使用SQL 语句查询数据(五)

今天我们来分享的数据查询语句是UNION ALL,用来连接不连续去域.结合union all 语句的话我们还需要来对不同的区域定义 名称 .如下图 一月份定义名称为 JAN ,二月份定义为FEB 定义名称过程如下 然后,用OLE DB 的方式创建数据连接.过程请看之前博文. 是在命令窗口中输入 SELECT * FROM JAN UNION ALL SELECT * FROM FEB 执行命令后,结果如下 大家可以多多练习.

Excel 中使用SQL 语句查询数据

对于Excel中进行数据分析,除了强大的数据透视表之外,还可以利用SQL 语句进行数据分析:当然,前提是你需要熟悉SQL 语句. 首先我们来看下图的员工数据表.也就是数据源 这里我们将使用现有的的连接.以后我们会分享 从其他数据源,可以在一个表中以命名的方式来创建table 点击完之后会出现下图,然后点击browser for more 然后选择数据表.他将sheet变成了数据表 点确定后会出现如下对话框.点击properties 然后在下图就可以输入sql语句了...注意下图的几个选项. 下图

Excel 中使用SQL 语句查询数据(四)

今天和大家分享的SQL语句是通过主键和where语句将两个表连接起来, 大家首先来看下两图的数据源 下面我们通过OLE BD创建数据连接,然后输入语句,过程请参考之前博文. 语句如下图,这里将sheet1中的NO 列作为主键. 运行结果如下,当然这里的功能用vlookup也能实现,但是我们从基础语句慢慢来,之后会有意想不到的功能.

Excel 中使用SQL 语句查询数据(六)-----IN 语句的应用

今天要和大家分享的是SQL 语句中的IN 关键字.这个IN 的用处就是显示 字段值包含在某个集合中的所有数据.字段名 IN 集合                    大家如果不理解,可以从下面的过程中慢慢体会.下图数据源中是三门课程 BASIC ,CONFERENCE ,  SAP的报名情况,我们要找出同时报了basic 和 conference课程的姓名,也就是找出两列相同的数据. 首先用OLE DB创建数据连接,然后输入如下SQL 语句: SELECT Basic AS 'basicand

Excel 中使用SQL 语句查询数据(三)

上两篇博文和大家分享如何创建数据源连接,接下来我们就用SQL 语句来进行数据分析.我还是比较习惯用microsoft query的连接方式. 请看下图,是数据源.我们要从数据源中找出,位置在New York的并且性别为Male的员工 创建Microsoft query连接的过程我就省略了 点击窗口中的sql后出现sql语句编辑窗口.详细看一下语句 SELECT Employee, Location,Sex FROM Sheet1$ WHERE Location='New York' 注:SELE