0
点赞
收藏
分享

微信扫一扫

MySQL数据库中DQL 数据查询语言

秀妮_5519 2022-03-30 阅读 99
mysql

功能:从表中(数据库中数据是存储在二维表格当中的)查询获取自己想要的数据,对应到生活中的软件功能:百度搜索、淘宝搜索、12306 查询......

==》语法
1、查询表中所有的数据信息:   表名

SELECT * FROM 表名;

2、查询表中部分列信息: 表名  列名

SELECT 列名1,列名2,列名3,..... FROM 表名;

3、给列起别名: 列名1 别名,列名2 别名2, 列名3 别名3 (别名不要重复)

SELECT user_name 用户名,phone 手机号,email 邮箱 FROM user_tab;

4、去重,(重复显示的数据,只显示一行,多余的不显示去掉),重复是指完全一模一样

关键字:  DISTINCT  

SELECT DISTINCT job,deptno FROM emp;

***5、带条件的查询语句:根据查询条件来查询获取数据(实际工作中用的最多的)

关键字: WHERE

查询条件: 列名  运算符  搜索值  

备注:搜索值除过数字以外,其它类型必须加单引号括起来,或者是双引号括起来。

SELECT *  FROM 表名 WHERE 查询条件

一、单条件查询语句:一个查询条件

SELECT * FROM 表名 WHERE 查询条件

单条件查询的运算符: = , !=,<>,>,<,>=,<=

= 精确查询:将跟搜索值一模一样的数据查询出来,实际应用非常广(银行的身份证号码查询个人信息)

备注:搜索值区分大小写,区分中英文,搜索值数字可以不加引号,其它类型必须加引号括起来。

SELECT * FROM emp WHERE ename='scott';  -- Oracle 中必须和表中一样,都是大写

!= 不等于,将跟查询条件不一样的数据全部查询出来;

SELECT * FROM emp WHERE ename!='scott';

二、多条件查询:多个查询条件

条件连接: AND  OR

查询条件 AND 查询条件 :功能,将同时满足两个条件的数据查询出来

查询条件 OR 查询条件 : 功能,只要满足其中一个查询条件就把数据找出来

例如:

SELECT ename FROM emp WHERE sal>2000 AND deptno=10;

SELECT * FROM user_tab WHERE user_name='司马懿' OR user_name='张春华'

多条件运算符:  IN    BETWEEN ... AND ...    NOT

IN 多值运算符

用法: IN(搜索值1,搜索值2,搜索值3,...)  功能:将满足这几个搜索值的数据全部查询出来

等价于:列名=搜索值1 OR 列名=搜索值2 OR 列名=搜索值3 OR ...  列名必须是一样的

SELECT * FROM user_tab WHERE user_name IN('司马懿','张春华','曹丕');

SELECT * FROM user_tab WHERE user_name='司马懿' OR user_name='张春华' OR user_name='曹丕';

例如:查询员工薪水高于2000,并且在部门10或者部门20当中员工信息;

SELECT * FROM emp WHERE sal>2000 AND deptno IN(10,20);

SELECT * FROM emp WHERE sal > 2000 AND (deptno =20 OR deptno=10);  -- and 优先级高于 or

BETWEEN ... AND ... 查询一个区间范围 内数据,用于数值了类型居多;

例如:查询薪水在 2000~3000之间的员工信息

SELECT * FROM emp WHERE sal >= 2000 AND sal<=3000;

SELECT * FROM emp WHERE sal BETWEEN 2000 AND 3000;  -- 包含了临界值

用法: 列名 BETWEEN 值1 AND 值2   等价于  列名 >= 值1 AND 列名<=值2

注意: 值1<值2,包含了临界值(上下限)

NOT(1个或者多个查询条件)

用法: NOT 取反,功能(是括号中查询条件取反的数据)

例如:

SELECT * FROM emp WHERE NOT(sal BETWEEN 2000 AND 3000);

SELECT * FROM emp WHERE NOT(ename='SCOTT');

6、模糊查询:将跟搜索值类似的数据全部查询出来;

关键字(运算符): LIKE , 不能够单独使用,必须要结合通配符   %  或者 _  一起使用

% 代表的是0个或者任意多个字符

   张% : 张,张三,张三丰,张三丰******,即指以张开头的信息数据全部查询出来
   %张 :代表以张结尾的数据
   %张% : 包含张的信息

_ 代表的是任意一位字符 :仅代表一个字符,占位符

例如:查询名字中包含"司马"的用户信息

SELECT * FROM user_tab WHERE user_name LIKE  '%司%马%';

查询名字中包含"司马",并且手机号倒数第二位是 6 的用户信息

SELECT * FROM user_tab WHERE user_name LIKE  '%司%马%' AND phone LIKE '%6_';

SELECT * FROM user_tab WHERE user_name LIKE  '%司%马%' AND phone LIKE '_________6_';  -- 容易数错

例如:查询名字 ALLEN BLAKE CLARK MLIER 这几个,用模糊查询实现;

SELECT * FROM emp WHERE ename LIKE '%L%';

7、 查询结果排序

关键字: ORDER BY  列名  排序方式(可以自定义,默认升序):

升序: ASC
降序: DESC

==》语法:

SELECT * FROM 表名 [WHERE 查询条件] ORDER BY 列名1,列名2 DESC,....;

SELECT * FROM emp WHERE ename LIKE '%L%' ORDER BY deptno;

例如: 查询部门编号为10,20的员工信息,然后按照部门编号升序排序,同一个部门再按照薪水降序排序。

SELECT * FROM emp WHERE deptno IN(10,20) ORDER BY deptno ASC,sal DESC;

备注:多个列参与排序,排序的先后顺序会直接影响排序的结果。


8.CONCAT() 函数,作用就是将列或者字符串拼接起来,用来拼接列或者字符串

例题:将姓名和薪水两列连接起来显示“xxx的薪水是多少”这样的信息;  -- 一列

SELECT CONCAT('wode','pingjie');   -- select 可以直接使用,当作print()输出来用。

SELECT CONCAT('我的','函数测试') FROM DUAL;  -- dual 虚表,用来存储展示和表结构表数据没有关系的数据

SELECT 456*789 FROM DUAL;

SELECT ename,sal FROM emp;
SELECT CONCAT(ename,'的薪水是',sal) FROM emp;


9.查询comm为空值的职工信息;  

SELECT * FROM emp WHERE comm IS NULL;

NULL 空值,不确定的值,未知的值,运算符只能是 IS,别的运算符都不可以,  非空:  NOT NULL ,运算符也是 IS

特点:空值和任何值做运算,结果还是空值;

例如:查询出职工的总收入信息

SELECT sal+comm FROM emp;  -- 有问题了,很多人没有总收入,解决办法:空值转换函数

-- 空值转换函数 ifnull(参数1,参数2),作用,让空值变成一个确定的值,实际的值

参数1: 是需要转换为确定值的列名, 参数2 是一个明确的值,即当参数1是空值的时候,就用参数2来代替

SELECT ename,sal+IFNULL(comm,0) 总收入 FROM emp;

------------------------------------------------------------------

10、指定查看的记录数: LIMIT  num  ; 返回前 num 条查询的结果

SELECT * FROM emp LIMIT 5; -- 本质是表示从第1行到第5行,实际上跨了0行,即偏移量是0(1-1)

 查看从指定位置(第4行开始,到第8行的数据,共返回5行数据),也使用 LIMIT  n,m :

 n表示: 指定位置向前退一位,偏移一位  
 m表示的是返回的行数

SELECT * FROM emp;

SELECT * FROM emp LIMIT 3,5;

-----DQL 数据查询语言小结-------

SELECT * FROM 表名 WHERE 查询条件 [ORDER BY 列名];

   查询内容:全部、部分、精确到某一个列       查询条件(筛选过滤数据): 列名  运算符  搜索值
   
   运算符:单条件运算符  = ,!=,>,<,>=,<=,<>
   
   多条件运算符: IN   BETWEEN ... AND ...   NOT(查询条件) 取反
   
   条件连接: AND  并且,都满足;  OR 只要满足其中一个即可
   
   模糊查询: LIKE(特殊运算符)  %,_

举报

相关推荐

0 条评论