MySQL数据库-- DQL 语言:数据查询语言

模拟场景:
1、从 user_tab 表中把所有用户信息找出来(查询)

SELECT * FROM user_tab;

2、查询表中部分列信息:查询用户的用户名和手机号,邮箱;

SELECT user_name,phone,email FROM user_tab;

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

3、查询名字叫做"司马懿"的用户信息

SELECT * FROM user_tab WHERE user_name=‘司马懿’

4、查询名字叫’司马懿’和’张春华’的用户信息;

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

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

5、查询名字 叫司马懿,并且手机号码 13324678899 的用户

SELECT * FROM user_tab WHERE user_name=‘司马懿’ AND phone=13324678899

==》语法
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;

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值