2019-05-16

sql查询语句

select distinct *|字段|表达式 as 别名 from 表 表别名
 SELECT * FROM 表名; 查询某个表中所有的记录的所有字段信息
 SELECT 列名 FROM 表名;  查询某个表中所有的记录的指定字段信息
 SELECT 列名1,列名2 FROM 表名;  查询某个表中所有的记录的字段1 字段2
 SELECT distinct 列名 FROM 表名; 去除重复记录
 SELECT 表达式 FROM 表名; 查询表达式
 SELECT xxx as 别名 FROM 表名 表别名 使用别名

--别名 select 字段1 as 别名,字段2 as 别名, 字段3 别名.. from 表名 别名;
--别名如果是英文默认大写,如果想要原样使用|中文带空格,在别名的前后""

''代表字符串 ""原样输出 结果字段名和值原样字符串输出

字符串的拼接 ||

--虚表: oracle中不是真是存在的表,其中没有任何数据 dual

where比较

select 数据名 from 表名 where 条件

select ename from emp where SAL >2000

比较符号:

大于

<小于

=大于等于 <=小于等于

= 等于

!= 和 <> 不等于

between A and B 在A 于B之间

tip nvl(字段A,值B)

如果字段A不为null 则为字段A,否则为字段B,

有点像java里的 字段A==null ? 字段A : 值B 三目语句

and or not 与 或 非

select ename from emp where SAL >2000 and DEPTNO =30

tip null 不能用于上述的判断,null的判断用关键字is

select ename from emp where comm is null; select ename from emp where comm is not null;

两条select合并的集合相关操作:

select语句A union select 语句B

对A和B选择出的结果取并集 (A和B中重复的条目只保留一个)

select语句A union All select语句B

对A和B选择出的结果取并集并且保留重复条目(如果数据C不仅满足A,也满足B,则结果里有两条C)

select语句A Intersect select语句B

对A和B选择出的结果取交集

select语句A Minus select语句B

对A和B选择出的结果取差集(A和B中不重复的部分)

like 模糊匹配

%:零个及以上(任意个数的)的字符

_:一个字符

遇到内容中包含 % _ 使用escape('单个字符')指定转义符

select ename where ename like '%A%' --选择出名字中有字符A的数据 select ename where ename like 'A%' --选择出名字中第二个字符为A的数据(占据了第一个字符位) select ename where ename like '%B%%' escape('B'); --选择出名字中有字符%的数据,escape('B')把B%转义成了%

in exists 语句

tip:

where 语句的执行是在select之后的,

select ename from emp where SAL >2000

上面的语句执行是先在emp表中选出所有的ename,再根据每一条数据逐步判断该数据是否判断条件,相当于java里的

for(ename : emp){ if(SAL >2000){ select ename; }else{ 舍弃 ename; } }

select A from 表名 in(B,C,D)

select A from 表明 where exists(select语句B) --当括号里的语句B结果不为null时exists为true,保留值A,为null时数据A舍弃

https://blog.csdn.net/baidu_37107022/article/details/77278381

组函数

1)、 count :统计记录数 count() -->* 或一个列名

tip在SQL Server中Count(*)或者Count(1)或者Count([列])或许是最常用的聚合函数。很多人其实对这三者之间是区分不清的。本文会阐述这三者的作用,关系以及背后的原理。

往常我经常会看到一些所谓的优化建议不使用Count(* )而是使用Count(1),从而可以提升性能,给出的理由是Count( *)会带来全表扫描。而实际上如何写Count并没有区别。

Count(1)和Count(*)实际上的意思是,评估Count()中的表达式是否为NULL,如果为NULL则不计数,而非NULL则会计数。

2)、 max min: 最大值 最小值

3)、 sum:求和

4)、 avg:平均值

group by 语句

select A from 表名 group by B

其中A只能为组函数或者每组中相同的数据(如果每个组内部的数据的name一样,则A可以为name)

group by 语句后面可接 Having 来分类

语句运行顺序

from ---> where ---> group ----> having-----> select ---->order by

你可能感兴趣的:(2019-05-16)