栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Mysql核心之DQL语句(Select基本用法)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Mysql核心之DQL语句(Select基本用法)

Mysql核心之DQL语句
  • 什么是DQL语句
    • 数据库查询语句,也就是凡是带有select关键字的都是查询语句
    • 语法格式
      • select 字段名 from 表名;
      • sql是以分号结尾
      • sql是不分大小写的,保持一种风格,要么都是大写,要么都是小写
  1. 一般使用select 是根据需求查询所需要的。比如在员工表中,查询所有员工的姓名,就可以用

    select 姓名 from 员工表 
    
  2. 就可以直接进行查询了,而如果对于要查询的有条件时,我们就可以用where来加上后面的条件

    ​ 比如 查询员工表中性别为男的所有员工姓名

    select 姓名 from 员工表 where 性别 = '男'
    
  3. 如果我们需要查询的不止一个信息,就比如查询年龄和姓名时,可以用逗号隔开,例如

    查询员工表中性别为男的所有员工姓名和年龄

    select 姓名,年龄 from 员工表 where 性别 = '男'
    
  4. 如果想要查询表中的所有信息时,也可以用*代替,或者把所有信息都用逗号隔开

    例如,查询员工表中性别为男的所有员工信息

    select * from 员工表 where 性别 = '男'
    
  5. (and ,or) 如果需要查找的条件不止一个时,就需要把每个条件用and或者是or连接,其中and表示的是两边都要满足,而or表示的是只需要满足一个就可以。

    比如查询员工表中年龄等于20或者年龄等于40的人的信息

    select * from 员工表 where 年龄 = 20 or 年龄 = 40
    
  6. (between and ) 如果查找的信息数值在一个区间里时,也可以用between and 进行筛选

    比如查询员工表中年龄20到40 的人的信息

    select * from 员工表 where 年龄 between 20 and 40
    
  7. (in) 如果查询时,需要判断的值很多时,也可以用 in进行筛选,其中,in是后面应用最广泛的一个

    例如 ,查询年龄为20,30,40 的员工信息

    select * from 员工表 where 年龄in (20,30,40)
    
  8. (order by) 如果需要进行排序时,可以利用排序查询,即order by 而且order by执行顺序小于where,要放到where后面

    • 其中 desc是降序

    • asc是升序查询(默认升序)

      例如 ,查询员工信息,并按薪资降序排列
      select * from 员工表  order by 薪资 desc
      
  9. 注意:!=和<>都是判断不等于的意思,但是MySQL推荐使用<>

  10. (limit) 如果想要进行排序查询,就需要用limit进行查询 其中limit要传入两个数值,第一个数值是从哪一个位置开始查,0代表第一个位置。 第二个数值代表要查询几位。

    例如 ,查询薪资排名第6到第10的员工

    select * from 员工表  order by 薪资 desc limit 5,5
    

对于DQL也有一些针对性的联系,感兴趣的话可以在Mysql中尝试一下

  1. 分别创建三张表:员工信息表(emp),部门信息表(dept),薪资等级表(sal)

    CREATE TABLE dept(
        deptnu      INT  PRIMARY KEY comment '部门编号',
        dname       VARCHAr(50) comment '部门名称',
        addr        VARCHAr(50) comment '部门地址'
    );
    
    
    CREATE TABLE emp(
        empno       INT  PRIMARY KEY comment '雇员编号',
        ename       VARCHAr(50) comment '雇员姓名',
        job         VARCHAr(50) comment '雇员职位',
        mgr         INT comment '雇员上级编号',
        hiredate    DATE comment '雇佣日期',
        sal         DECIMAL(7,2) comment '薪资',
        deptnu      INT comment '部门编号'
    )ENGINE=MyISAM DEFAULT CHARSET=utf8;
    
    
    CREATE TABLE sal(
        grade       INT  PRIMARY KEY comment '等级',
        lowsal      INT comment '最低薪资',
        higsal      INT comment '最高薪资'
    );
    
    
    
    
    INSERT INTO dept VALUES (10, '研发部', '北京');
    INSERT INTO dept VALUES (20, '工程部', '上海');
    INSERT INTO dept VALUES (30, '销售部', '广州');
    INSERT INTO dept VALUES (40, '财务部', '深圳');
    
    
    
    INSERT INTO emp VALUES (1009, '唐僧', '董事长', NULL, '2010-11-17', 50000,  10);
    INSERT INTO emp VALUES (1004, '猪八戒', '经理', 1009, '2001-04-02', 29750, 20);
    INSERT INTO emp VALUES (1006, '猴子', '经理', 1009, '2011-05-01', 28500, 30);
    INSERT INTO emp VALUES (1007, '张飞', '经理', 1009, '2011-09-01', 24500,10);
    INSERT INTO emp VALUES (1008, '诸葛亮', '分析师', 1004, '2017-04-19', 30000, 20);
    INSERT INTO emp VALUES (1013, '林俊杰', '分析师', 1004, '2011-12-03', 30000, 20);
    INSERT INTO emp VALUES (1002, '牛魔王', '销售员', 1006, '2018-02-20', 16000, 30);
    INSERT INTO emp VALUES (1003, '程咬金', '销售员', 1006, '2017-02-22', 12500, 30);
    INSERT INTO emp VALUES (1005, '后裔', '销售员', 1006, '2011-09-28', 12500, 30);
    INSERT INTO emp VALUES (1010, '韩信', '销售员', 1006, '2018-09-08', 15000,30);
    INSERT INTO emp VALUES (1012, '安琪拉', '文员', 1006, '2011-12-03', 9500,  30);
    INSERT INTO emp VALUES (1014, '甄姬', '文员', 1007, '2019-01-23', 7500, 10);
    INSERT INTO emp VALUES (1011, '妲己', '文员', 1008, '2018-05-23', 11000, 20);
    INSERT INTO emp VALUES (1001, '小乔', '文员', 1013, '2018-12-17', 8000, 20);
    
    
    INSERT INTO sal VALUES (1, 7000, 12000);
    INSERT INTO sal VALUES (2, 12010, 14000);
    INSERT INTO sal VALUES (3, 14010, 20000);
    INSERT INTO sal VALUES (4, 20010, 30000);
    INSERT INTO sal VALUES (5, 30010, 99990);
    
  2. 查询以下条件

    -- 查询10 , 20部门 薪资前三的员工信息
    
    -- 查询10,20部门中员工姓名含有王的员工信息
    
    -- 按照30部门入职时间最早的3名员工,并加薪500
    
    -- 查询所有员工年薪大于160000万的所有员工信息
    
    -- 将20部门的所有的销售员的工资降序排列
    
    -- 查询在北京工作的所有员工
    
-- 查询10 , 20部门 薪资前三的员工信息
select * from emp 
where deptnu=10 or deptnu=20 order by sal desc limit 0,3;


select * from emp


-- 查询10,20部门中员工姓名含有王的员工信息
select * from emp where (deptnu=10 or deptnu=20) and ename in(select ename from emp where ename like '%王%' )
	
	
-- 按照30部门入职时间最早的3名员工,并加薪500

select ename ,hiredate ,sal+500 sss ,deptnu from	emp where deptnu=30 order by hiredate limit 0,3
	
	
-- 查询所有员工年薪大于160000万的所有员工信息

select	* from	emp where sal*12>=160000 order by sal desc 
	
	
	
-- 将20部门的所有的销售员的工资降序排列
select	* from	emp where deptnu =20 order by sal desc
	
	

-- 查询在北京工作的所有员工
select	* from 	emp where	deptnu  in(select deptnu from dept where addr = '北京' );
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1002637.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号