【MySql】第七节 DQL

  • 数据查询语言(DQL Data Query Language) :按照指定的组合、条件表达式或排序检索已存在的数据库中数据,不改变数据库中数据,常用命令为select
  • 数据库执行DQL语句不会对数据进行改变,而是让数据库发送结果集给客户端(这里用navicat),这个结果集是一张虚拟表,存放在内存中
  • 查询所有信息:SELECT * FROM 表名;
  • 查询指定字段:SELECT 字段1,字段2,… FROM 表名;
  • 以下表为例:
    CREATE TABLE employee (
      id int(11) NOT NULL,
      name varchar(50) DEFAULT NULL,
      gender varchar(1) DEFAULT NULL,
      hire_date date DEFAULT NULL,
      salary decimal(10,0) DEFAULT NULL,
      performance double(255,0) DEFAULT NULL,
      manage double(255,0) DEFAULT NULL,
      department varchar(255) DEFAULT NULL
    );
    
    INSERT INTO employee VALUES (1001, '张三', '男', '1991-7-25', 2000, 200, 500, '营销部');
    INSERT INTO employee VALUES (1002, '李四', '男', '2017-7-5', 4000, 500, NULL, '营销部');
    INSERT INTO employee VALUES (1003, '王五', '女', '2018-5-1', 6000, 100, 5000, '研发部');
    INSERT INTO employee VALUES (1004, '赵六', '男', '1991-6-1', 1000, 3000, 4000, '财务部');
    INSERT INTO employee VALUES (1005, '孙七', '女', '2018-3-23', 8000, 1000, NULL, '研发部');
    INSERT INTO employee VALUES (1006, '周八', '男', '2010-9-8', 5000, 500, 1000, '人事部');
    INSERT INTO employee VALUES (1007, '吴九', '女', '2017-7-5', 8000, 601, NULL, '研发部');
    INSERT INTO employee VALUES (1008, '郑十', '女', '2014-4-6', 4000, 1801, NULL, '人事部');
    #查询employee表中所有的数据
    SELECT * FROM employee;
    
    结果为:
    在这里插入图片描述
条件查询

条件查询就是在查询的时候给出WHERE子句,在WHERE子句中可以使用一些运算符及关键字,这些运算符及关键字如下:

  • 等于:=,例:查询该表中男性信息
    SELECT * FROM employee WHERE gender = '男';
    
  • 不等于:!=、<>,例:查询该表中不是男性的信息
    SELECT * FROM employee WHERE gender != '男';
    SELECT * FROM employee WHERE gender <> '男';
    
  • 大于:>,例:查询表中基本工资大于5000的员工信息
    SELECT * FROM employee WHERE salary > 5000;
    
  • 小于:<,例:查询表中基本工资小于5000的员工信息
    SELECT * FROM employee WHERE salary < 5000;
    
  • 大于等于:>=,例:查询表中基本工资大于等于5000的员工信息
    SELECT * FROM employee WHERE salary >= 5000;
    
  • 小于等于:<=,例:查询表中基本工资小于等于5000的员工信息
    SELECT * FROM employee WHERE salary <= 5000;
    
  • 值在什么范围:BETWEEN…AND,包括边界值,例:查询表中基本工资在2000到7000之间的员工信息
    SELECT * FROM employee WHERE salary BETWEEN 2000 AND 7000;
    
  • 与:AND,例:查询表中基本工资在2000到7000之间的员工信息
    SELECT * FROM employee WHERE salary >= 2000 AND salary <= 7000;
    
  • 或:OR,例:查询表中基本工资等于2000或者7000的员工信息
    SELECT * FROM employee WHERE salary = 2000 OR salary = 7000;
    
  • 如果等于某几个值:IN,例:查询表中基本工资等于2000或者7000的员工信息
    SELECT * FROM employee WHERE salary IN (2000,7000);
    
  • 非:NOT,例:查询表中基本工资不等于2000和7000的员工信息
    SELECT * FROM employee WHERE salary NOT IN (2000,7000);
    
  • 是否为空:IS NULL,例:查询表中管理费用为空的员工信息
    SELECT * FROM employee WHERE manage IS NULL;
    
  • 是否不为空:IS NOT NULL,例:查询表中管理费用不为空的员工信息
    SELECT * FROM employee WHERE manage IS NOT NULL;
    
模糊查询
  • 根据指定的关键进行查询,使用LIKE关键字后跟通配符,通配符有以下两种:
    • _ :任意一个字符
    • %:任意0~n个字符
  • 以下表为例:
    在这里插入图片描述
  • 1.查询姓名由三个字符构成的学生信息:
    SELECT * FROM student WHERE name LIKE '___';
    
    结果为:
    在这里插入图片描述
  • 2.查询姓名由三个字符构成并且第二个字符是“三”的学生信息:
    SELECT * FROM student WHERE name LIKE '_三_';
    
    结果为:
    在这里插入图片描述
  • 3.查询姓张的学生:
    SELECT * FROM student WHERE name LIKE '张%';
    
    结果为:
    在这里插入图片描述
  • 4.查询姓名第二个字符是“三”的学生信息:
    SELECT * FROM student WHERE name LIKE '_三%';
    
    结果为:
    在这里插入图片描述
  • 5.查询姓名中含有“三”的学生信息:
    SELECT * FROM student WHERE name LIKE '%三%';
    
    结果为:
    在这里插入图片描述
  • 6.查询姓名中含有%的学生信息:
    #ESCAPE 字符A :将字符A后面的通配符取消变成普通的字符
    SELECT * FROM student WHERE name LIKE '%A%%' ESCAPE 'A';
    
    结果为:
    在这里插入图片描述
字段控制查询
  • 去除重复记录:DISTINCT,例:查询employee表中有哪些部门
    SELECT DISTINCT department FROM employee;
    
    结果为:
    在这里插入图片描述
  • 把查询字段的结果进行数值运算,必须都要是数值型,例:在原来所有信息的基础上加入总工资字段(基本工资、绩效和管理费用的和)
    SELECT *,salary + performance + IFNULL(manage,0) sumsalary FROM employee;
    
    结果为:
    在这里插入图片描述
  • 对查询结果起别名:在字段后面写上别名,用空格或as隔开,例:
    SELECT id,name,hire_date hd,department as dep,salary + performance + IFNULL(manage,0) sumsalary FROM employee;
    
    结果为:
    在这里插入图片描述
排序
  • 排序:对查询的结果进行排序,使用关键字ORDER BY,排序的类型有以下两种:
    • ASC:升序,不指定关键字默认升序
    • DESC:降序
  • 例:对所有员工的薪水升序排序
    #下面两种方式效果一样
    SELECT *FROM employee ORDER BY salary ASC;
    SELECT *FROM employee ORDER BY salary;
    
    结果为:
    在这里插入图片描述
  • 例:对所有员工的薪水降序排序
    SELECT *FROM employee ORDER BY salary DESC;
    
    结果为:
    在这里插入图片描述
  • 例:对所有员工的薪水降序排序,如果薪水相同时,按绩效降序排序
    SELECT *FROM employee ORDER BY salary DESC,performance DESC;
    
    结果为:
    在这里插入图片描述
聚合函数
分组查询
多表查询
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值