基础数据库知识

本文介绍了SQL的基础查询操作,包括从表中选择数据、指定查询列、使用WHERE子句进行条件过滤、通过AND和OR操作符组合条件、利用IN和BETWEEN...AND...进行范围查询、进行模糊匹配以及运用ORDER BY进行排序。通过实例演示了如何查询用户信息,如查找特定用户或按条件筛选数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

百度搜索、淘宝搜索、12306 查询......

SELECT 语句

例如:用户信息表,表的名字: user_tab

列: 用户编号 user_id
     用户的姓名 user_name
     密码 passwd
     手机号 phone
     邮箱  email
     创建日期 create_date
     
模拟场景:
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、付费专栏及课程。

余额充值