
or 优先级 倒数第一,and 优先级 倒数第二
所以是and优先级比or高
select * from AA where a >1 or b>1 and C>1 就等同于
select * from AA where a >1 or (b>1 and C>1 )
扩展资料
1,SQL AND &OR 运算符
AND &OR 运算符用于基于一个以上的条件对记录进行过滤。
如果第一个条件和第二个条件都成立,则 AND 运算符显示一条记录。
如果第一个条件和第二个条件中只要有一个成立,则 OR 运算符显示一条记录。
2,SQL
结构化查询语言(Structured Query Language)简称SQL(发音:/ˈes kjuː ˈel/ "S-Q-L"),是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统;同时也是数据库脚本文件的扩展名。
结构化查询语言是高级的非过程化编程语言,允许用户在高层数据结构上工作。它不要求用户指定对数据的存放方法,也不需要用户了解具体的数据存放方式,所以具有完全不同底层结构的不同数据库系统, 可以使用相同的结构化查询语言作为数据输入与管理的接口。
结构化查询语言语句可以嵌套,这使它具有极大的灵活性和强大的功能。
1986年10月,美国国家标准协会对SQL进行规范后,以此作为关系式数据库管理系统的标准语言(ANSI X3. 135-1986),1987年得到国际标准组织的支持下成为国际标准。
不过各种通行的数据库系统在其实践过程中都对SQL规范作了某些编改和扩充。所以,实际上不同数据库系统之间的SQL不能完全相互通用。
参考资料
百度百科——SQL
--注释
--select *|字段名1,字段名2... from 表名
--1)
--查询|检索|获取 所有员工的所有信息
--查询的数据: 员工的所有信息
--数据的来源:员工表 emp
--条件:
select * from emp
--2)
--查询所有的员工名字
select ename from emp
--3)
--查询所有的员工编号和员工名称,员工上级的编号
--查询的数据: empno,ename,mgr
--数据的来源:员工表 emp
select empno,ename,mgr from emp
--4)
--查询所有部门部门编号
select deptno from dept
--5)
--查询出所有员工所在的部门的部门编号
select distinct deptno from emp
--对查询数据进行去重(非字段去重) distinct
--6)
--查询出所有存在员工的部门的部门编号,以及员工名称
select deptno,ename from emp
select distinct sal,deptno from emp
--7)
--查询表达式,结果是表达式的值,显示的字段名就是表达式,计算值
select 1+1 from emp
select 'a' from emp
--8)
--给字段取别名 select 字段1 (as) 别名1,字段2 别名2 from 表名 别名 表的别名不能加as
--查询所有员工的名称(别名为:名字),员工编号(编号)
--别名默认变大写,别名中的内容原封不动出现 ""->中的内容原封不动出现
select 123+456 "get sum" from emp
select empno as 员工编号,ename "员工 姓名" from emp
--9)
--字符串 '' 原封不动显示""
select distinct '哈哈' 笑 from emp e
--10)
--字符串拼接 java中使用+ 这里使用||
--查询 ab--cd 表达式
select distinct 'ab-'||'-cd' from emp
--查询所有的员工名字,给他们来一个前缀SXT
select 'sxt-'||ename from emp
--11)
--伪列 : 不存在的列就是伪列 比如:表达式,字符串
--12)
--虚表: 在oracle中不存在的表,也可以说是这个表中没有任何数据,没有任何字段 --oracle中的虚表:dual
--虚表的作用:可以不使用distinct就可以去重的效果,因为里面没有数据,不会出现多行
select * from dual
select distinct 123*456 from emp
select 123*456 from dual
select sysdate from dual
--比如查询当前时间
--13)
--给每一个员工在原来的基础上+100块钱奖金
--null 空
--null与数字运算,结果还为null
--null与字符串运算,结果原串
--nvl(参数1,参数2) 处理null使用 如果参数1为null,最终结果参数2,如果参数1不为null,最终的结果就是参数1
select comm 原奖金,comm||'100' 新奖金 from emp
select comm 原奖金,nvl(comm,0)+100 新奖金 from emp
--一节结尾小练习
--查询所有员工的名字, 工种, 年薪(不带奖金)
select ename,job,sal*12 年薪 from emp
--查询所有员工的名字,工种,年薪(带12月奖金的)
select ename,job,(sal+nvl(comm,0))*12 年薪 from emp
--查询所有员工的名字, 工种, 年薪(带一次奖金的)
select ename,job,sal*12+nvl(comm,0) 年薪 from emp
--select *|表达式|字符串|伪列|字段1 别名1,字段2 as 别名2... from 表名 别名|结果集 where 行过滤条件
--执行流程: from-->where-->select确定结果集
-- 查询20部门的员工信息
--数据: *
--来源: emp
--条件: deptno=20
select * from emp where deptno=20
-- ><>= <= = != <>
-- 查询工资大于1000的员工的姓名 工作岗位 工资 所属部门编号
--数据: ename,job,sal,deptno
--来源: emp
--条件: sal>1000
select ename,job,sal,deptno from emp where sal=1000
-- 查询不在20部门工作的员工信息
select * from emp where deptno != 20
select * from emp where deptno <>20
--where 中不能使用字段的别名
-- 查询员工的年薪大于20000的 员工名称、岗位 年薪
select ename 姓名,job 岗位,(sal+nvl(comm,0))*12 sum from emp where ((sal+nvl(comm,0))*12)>20000
select ename 姓名,job 岗位,(sal+nvl(comm,0))*12 sum from emp
select 岗位, sum
from (select ename 姓名, job 岗位, (sal + nvl(comm, 0)) * 12 sum from emp)
where sum >20000
-- 查询 any(任意一个) some(任意一个) all(所有)
select * from emp where deptno = any(10,20)
select * from emp where deptno = some(10,20)
--大于最小的
select * from emp where sal>any(1500,2000)--薪资>1500的就可以
--大于最大的
select * from emp where sal>all(1500,2000)--薪资>2000的就可以
-- 查询 工种不为’SALESMAN’的员工信息 (注意 内容区分大小写)
select * from emp where not job ='SALESMAN'
--or或 and并且|都 not取反
-- -检索 工资 1600, 3000员工名称 岗位 工资
select ename,job,sal from emp where sal=1600 or sal=3000
select ename,job,sal from emp where not (sal=1600 or sal=3000)
-- 工资在2000到3000之间的员工信息
select * from emp where sal>2000 and sal<3000
--between 小范围值 and 大范围的值 两者之间 <= >=
select * from emp where sal between 1600 and 3000
---查询 岗位 为 CLERK 且部门编号为 20的员工名称 部门编号,工资
select ename ,deptno ,sal from emp where job='CLERK' and deptno=20
-- 查询 岗位 为 CLERK 或部门编号为 20的员工名称 部门编号,工资
select ename ,deptno ,sal,job from emp where job='CLERK' or deptno=20
--查询 岗位 不是 CLERK 员工名称 部门编号,工资
select ename ,deptno ,sal,job from emp where job!='CLERK'
select ename ,deptno ,sal,job from emp where not job='CLERK'
select ename ,deptno ,sal,job from emp where job<>'CLERK'
-- 查询 岗位 不为 CLERK 并且部门编号不为 20的员工名称 部门编号,工资
select ename ,deptno ,sal,job from emp where job!='CLERK' and deptno!=20
select ename ,deptno ,sal,job from emp where not (job='CLERK' or deptno=20)
--存在佣奖金的员工名称
select ename,comm from emp where not comm is null
select ename,comm from emp where comm is not null
--不存在奖金的员工名称
select ename,comm from emp where comm is null
--集合
--Union,并集(去重) 对两个结果集进行并集 *** 作,不包括重复行同时进行默认规则的排序;
--Union All,全集(不去重) 对两个结果集进行并集 *** 作,包括重复行,不进行排序 ;
--Intersect,交集(找出重复) 对两个结果集进行交集 *** 作,不包括重复行,同时进行默认规则的排序;
--Minus,差集( 减去重复 ) 对两个结果集进行差 *** 作,不包括重复行,同时进行默认规则的排序
--查询工资大于1500 或 含有佣金的人员姓名
select ename,sal,comm from emp where sal>1500 or comm is not null
select ename,sal,comm from emp where sal>1500
select ename,sal,comm from emp where comm is not null
--并集
select ename,sal,comm from emp where sal>1500
Union
select ename,sal,comm from emp where comm is not null
select ename,sal,comm from emp where sal>1500
Union all
select ename,sal,comm from emp where comm is not null
--查询显示不存在雇员的所有部门号。
--求出所有的部门号
select deptno from dept
--有员工的部门号
select distinct deptno from emp
select deptno from dept
Minus
select distinct deptno from emp
-- 查询显示存在雇员的所有部门号。
select deptno from dept
Intersect
select distinct deptno from emp
--模糊匹配 like %任意任意字符 _一个任意字符 一起使用
--查询员工姓名中包含字符A的员工信息
select * from emp where ename like '%A%'
--完全匹配
select * from emp where ename like 'SMITH'
--查询员工姓名以'A'结尾的员工信息
select * from emp where ename like 'A%'
--查询员工姓名中第二个字母为A的员工信息
select * from emp where ename like '_A%'
insert into emp(empno,ename,sal) values(1000,'t_%test',8989)
insert into emp(empno,ename,sal) values(1200,'t_tes%t',8000)
--escape('单个字符')指定转义符
--查询员工姓名中包含字符%的员工信息
select * from emp where ename like '%B%%' escape('B')
--当执行插入数据,删除数据,修改的时候,默认开启事务
--可提交 commit
--可回滚 rollback
--多个人中任意一个值就可以
select * from emp where sal=1600 or sal=3000 or sal=1500
select * from emp where sal in(1500,1600,3000)
--select 字段.. from 结果集 where 行过滤条件 order by 排序字段 desc降序|asc升序(默认)..
--执行流程: from-->where-->select-->排序
select empno,ename,sal from emp order by sal desc,empno asc
--按照奖金升序排序,如果存在null值,所有的奖金null值的数据最先显示
select empno,ename,sal,comm from emp where deptno in (10,30) order by comm asc nulls first
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)