SQL简单查询语句

***SQL查询:
查询当前用户下所有的表:
SELECT TABLE_NAME FROM USER_TABLES;
查看表结构:
desc 表名;

1.简单查询:只包含SELECT子句和FROM子句的查询叫做简单查询。
语法:SELECT 列名1,列名2... FROM 数据来源;
数据来源:可以是表,视图或者其它SELECT语句。

2.如果查询表中所有的列,列名处用*代替。

3.如果查询多个列,查询结果的显示顺序和查询语句中列的排列顺序相同。

4.伪列:在数据库中每个表都有一个伪列ROWID,ROWID是数据库内部使用的隐藏列,实际不存在于表中,它记录了每行数据在数据库中的物理地址。

5.带有表达式的SELECT语句:可以对数字和日期类型的数据进行算术运算。

6.别名:可以给查询的结果列指定行的名字,使用as关键字
语法:列名 as 别名
其中as可以省略

7.去重查询:在默认情况下,数据库会将所有符合条件的数据查询出来并且放到结果集,这样导致结果集中可能出现大量重复的数据,占用显示的空间,给用户带来不好的体验。因此,使用DISTINCT关键字去除结果集中重复的数据。
例:SELECT DISTINCT JOB FROM EMP;
练习:
1.查询emp表中员工的所有信息
select * from emp;
2.查询员工表中员工的姓名和工资
select ename,sal from emp;
3.查询所有员工的员工姓名和工资增加100之后的年薪。
select ename,(sal+100)*12 from emp;


二、筛选查询: 在查询中使用WHERE子句对查询的数据进行筛选操作。
WHERE子句中会有一个或者多个条件判断,只有满足条件的结果才会放到结果集中。

语法:SELECT 查询列 FROM 数据来源 WHERE 条件表达式;

1.比较筛选,使用大小比较来筛选数据;
A=B:比较A和B是否相等。
①查询工资为3000的员工的姓名和工资
SELECT ENAME,SAL FROM EMP WHERE SAL = 3000;
A!=B或者A<>B:比较A和B是否不相等
②查询工资不是3000的员工的姓名和工资
SELECT ENAME,SAL FROM EMP WHERE SAL != 3000;

还有其他比较:A>B A>=B A<B A<=B

特殊比较:
A 比较符 ANY(值1,值2...):把A和ANY中的所有值 进行比较,只要有一个值比较结果为true,则把该行数据放到结果集中。

③查询工资是3000或者1100或者1250的员工的姓名和工资
SELECT ENAME,SAL FROM EMP WHERE SAL = ANY(1250,1100,3000);

A 比较符 ALL(值1,值2...):把A和ALL中的所有值进行比较,必须所有比较结果都为true,才把该行数据放到结果集中。

④.查询工资不是1250,1100和3000的员工的姓名和工资
SELECT ENAME,SAL FROM EMP WHERE SAL != ALL(1250,1100,3000);
⑤查询职务为CLERK、ANALYST、或者SALESMAN的员工的姓名和职务
select ename,job from emp where job = ANY('CLERK','ANALYST','SALESMAN');

2.范围筛选
使用BETWEEN...AND...进行范围查询。
语法:where 列名 between 最小值 and 最大值;
⑥查询的结果包含最小值和最大值,如果要查询不在范围内的数据,只需要在BETWEEN前加上NOT关键字.
⑦查询工资在1250到3000之间的员工的姓名和工资
SELECT ENAME,SAL FROM EMP WHERE SAL BETWEEN 1250 AND 3000;

3.IN关键字
当查询的结果需要匹配某一组目标值中的某一个时,则使用IN关键字。
语法:where 列 IN(值1,值2...);

⑧查询工资是3000或者1100或者1250的员工的姓名和工资
SELECT ENAME,SAL FROM EMP WHERE SAL IN(1250,1100,3000);

4.IS NULL关键字
语法:where 列 is null;
如果该列的值为空,则把数据放到结果集中。
如果要查询不为空的情况,则用is not null;

5.模糊查询:在where子句中使用LIKE关键字进行模糊查询,用来匹配字符串的内容。
语法:where 列 like '匹配规则';
%:代表任何多个任意字符,包含0个
_:代表一个任意字符

⑨查询员工名字中带有L的员工的姓名和员工编号
SELECT ENAME,EMPNO FROM EMP WHERE ENAME LIKE '%L%';
⑩查询员工名字中第三个字母是L的员工的姓名和员工编号
SELECT ENAME,EMPNO FROM EMP WHERE ENAME LIKE '__L%';
⑩①查询员工名字中以A开头的员工的姓名和员工编号
SELECT ENAME,EMPNO FROM EMP WHERE ENAME LIKE 'A%';

6.逻辑筛选:如果有多个筛选条件,则使用关键字OR或者AND连接。
OR:多个条件只要满足一个就可以
AND:多个条件都要满足才可以

⑩②查询员工姓名以A开头并且工资小于2000的员工的姓名和工资
SELECT ENAME,SAL FROM EMP WHERE ENAME LIKE 'A%' AND SAL<2000;
⑩③查询员工姓名以L结尾或者职务为SALESMAN的员工的姓名和职务
SELECT ENAME,JOB FROM EMP WHERE ENAME LIKE '%L' AND JOB='SALESMAN';


三、排序查询
在查询时,按照用户的需求,使用order by子句对查询的结果进行排序。
语法:select 查询列 from 数据来源 [where子句] 
order by 列名 [asc/desc],列名 [asc/desc]...;
asc:升序排列,默认为升序排列
desc:降序排列

查询所有员工的部门编号(deptno)和员工编号(empno),查询结果先按照部门编号降序排列,再按照员工编号升序排列.
select deptno,empno from emp orderby deptno desc,empno asc;#asc 可以省略,因为默认是升序。
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值