查询oracle数据库_sql学习笔记

oracle数据库学习  时间:2021-03-15  阅读:()

资料内容仅供您学习参考如有不当或者侵权请联系改正或者删除。oracle-9isql(structured query language,结构化查询语言)

SQL语言按照功能可分为4大类

*DQL(数据查询语言):查询数据

*DDL(数据定义语言):建立/删除和修改数据对象

*DML(数据操纵语言):完成数据操作的命令,包括查询

*DCL(数据控制语言):控制对数据库的访问,服务器的关闭/启动等在Oracle 9i中为使用SQL语言提供了2个主要工具

*[SQL Plus]

*[SQL Plus Worksheet]select*from scott.emp--"用户名.数据表"的形式select distinct job from scott.emp--distinct保留字指在显示时去除相同的记录,select empno,ename,jobfrom scott.empwherejob='MANAGER'select empno,ename,salfrom scott.empwhere sal<=2500

--等于select*from scott.empwherejob='MANAGER'select*from scott.emp where sal=1100

--不等于select*from scott.empwherejob!='MANAGER'

资料内容仅供您学习参考如有不当或者侵权请联系改正或者删除。select*from scott.emp where sal !=1100select*from scott.empwherejob^='MANAGER'select*from scott.emp where sal^=1100select*from scott.emp wherejob<>'MANAGER'select*from scott.emp where sal<>1100

--小于select*from scott.empwherejob<'MANAGER'select*from scott.emp where sal<

--大于select*from scott.empwherejob>'MANAGER'select*from scott.emp where sal>

--int列表select*from scott.empwhere sal in( ,1000,3000)select*from scott.empwherejob in('MANAGER', 'CLERK')select*from scott.empwhere sal not in( ,1000,3000)select*from scott.empwherejob not in('MANAGER', 'CLERK')

--betweenselect*from scott.empwhere sal not between and 3000select*from scott.empwherejob not between'MANAGER'and'CLERK'--l ikeselect*from scott.emp wherejob l ike'%M%' --代表包含M的字符串select*from scott.emp wherejob l ike'%M' --代表以M字符结尾的字符串

资料内容仅供您学习参考如有不当或者侵权请联系改正或者删除。select*from scott.emp wherejob l ike'M%' --代表以M字符开头的字符串select*from scott.emp wherejob l ike'M_' --代表M开头的长度为2的字符串select empno,ename,jobfrom scott.empwherejob>='CLERK'orsal<=

"notjob='CLERK'"等价于"job<>'CLERK'"

--逻辑比较符and(与) select*from scott.empwherejob='MANAGER'and sal<>or(或) select* from scott.empwherejob!='MANAGER'or sal<>not(菲) select*from scott.emp where not job>='MANAGER'

--排序查询select empno,ename,job,salfrom scott.empwherejob<='CLERK'order byjobasc,sal desc--分组查询select empno,ename,job,salfrom scott.empgroup byjob,empno,ename,sal having sal<=select empno,ename,job,sal from scott.empwhere sal<= group byjob,empno,ename,sal/*where检查每条记录是否符合条件,having是检查分组后的各组是否满足条件.having语句只能配合group by

语句使用,没有group by时不能使用having,但可使用where*/select empno,ename,sal,mgr,sal+mgr from scott.emp --"常见'+' '-' '*' '/'"select empno编号,ename姓名,job工作,sal薪水from scott.emp

--无条件多表查询"笛卡尔"积的方式组合起来

资料内容仅供您学习参考如有不当或者侵权请联系改正或者删除。select emp.empno,emp.ename,emp.deptno,dept.dname,dept. loc from scott.emp,scott.dept--等值多表查询select emp.empno,emp.ename,emp.deptno,dept.dname,dept. locfrom scott.emp,scott.deptwhere scott.emp.deptno=scott.dept.deptno --具有相同的属性(相同的数据类型/宽度和取值范围)

--非等值多表查询select emp.empno,emp.ename,emp.deptno,dept.dname,dept. locfrom scott.emp,scott.deptwhere scott.emp.deptno!=scott.dept.deptno and scott.emp.deptno=10

--嵌套查询

子查询能够嵌套多层,子查询操作的数据表能够是父查询不操作的数据表,子查询中不能有order by分组语句select emp.empno,emp.ename,emp.job,emp.salfrom scott.empwhere sal>=(select salfrom scott.empwhere ename='WARD')--查询薪水>=WARD薪水的员工select emp.empno,emp.ename,emp.job,emp.salfrom scott.empwhere sal in (select sal from scott.emp where ename='WARD') --查询薪水和WARD相等的员工

带any查询select emp.empno,emp.ename,emp.job,emp.sal

资料内容仅供您学习参考如有不当或者侵权请联系改正或者删除。from scott.empwhere sal>any(select sal from scott.empwhere job='MANAGER')

/*select sal from scott.empwherejob='MANAGER' --查询到3各薪水值2975/2850/2450select emp.empno,emp.ename,emp.job,emp.salfrom scott.empwhere sal>2975 orsal>2850 or sal>2450 --执行any查询条件语句

*/

带some查询select emp.empno,emp.ename,emp.job,emp.salfrom scott.empwhere sal=some(select sal from scott.empwherejob='MANAGER')

/*select sal from scott.empwherejob='MANAGER' --查询到3各薪水值2975/2850/2450select emp.empno,emp.ename,emp.job,emp.salfrom scott.empwhere sal=2975 orsal=2850 orsal=2450 --执行some查询条件语句

*/

带al l查询select emp.empno,emp.ename,emp.job,emp.salfrom scott.empwhere sal>al l(select sal from scott.empwherejob='MANAGER')

资料内容仅供您学习参考如有不当或者侵权请联系改正或者删除。

/*select sal from scott.empwherejob='MANAGER' --查询到3各薪水值2975/2850/2450select emp.empno,emp.ename,emp.job,emp.salfrom scott.empwheresal>2975andsal>2850and sal>2450 --执行al l查询条件语句

*/

带exists查询select emp.empno,emp.ename,emp.job,emp.salfrom scott.emp,scott.deptwhere exists(select *from scott.emp where scott.emp.deptno=scott.dept.deptno)

并操作查询

(select deptno from scott.emp)union(select deptno from scott.dept)

交操作查询

(select deptno from scott.emp) intersect (select deptno from scott.dept)

差操作查询--属于A且不属于B

(select deptno from scott.emp)minus(select deptno from scott.dept)

--用SQL进行函数查询

[cei l]函数:cei l(n),取大于等于数值n的最小整数select mgr,mgt/100,cei l(mgr/100)from scott.emp

[floor]函数:floor(n),取小于等于数值n的最大整数select mgr,mgt/100,floor(mgr/100)from scott.emp

资料内容仅供您学习参考如有不当或者侵权请联系改正或者删除。[mod]函数:mod(m,n),取m整除n后的余数select mgr,mod(mgr,1000),mod(mgr,100),mod(mgr,10)from scott.emp[power]函数:power(m,n),取m的n次方select mgr,power(mgr,2),power(mgr,3)from scott.emp

[round]函数:round(m,n),四舍五入,保留n位select mgr,round(mgr/100,2),round(mgr/1000,2)from scott.emp

[sign]函数:sign(n),n>0,取1; n=0,取0;n<0,取-1select mgr,mgr-7800,sign(mgr-7800)from scott.emp

[a vg]函数:a vg(字段名),求平均值,要求字段为数据值select avg(mgr)平均薪水from scott.emp

[count]函数:count(字段名)或count(*),统计总数select count(*)记录总数from scott.empselect count(distinct job)工作类别总数from scott.emp

[min]函数:min(字段名),计算数值型字段最小数select min(sal)最少薪水from scott.emp

[max]函数:max(字段名),计算数值型字段最大数select max(sal)最高薪水from scott.emp

[sum]函数:sum(字段名),计算数值型字段总和select sum(sal)薪水总和from scott.emp

--记录的录入

资料内容仅供您学习参考如有不当或者侵权请联系改正或者删除。

1.单行记录的录入insert into数据表 valuesinsert into scott.emp(empno,ename,hiredate)values(8000, 'JONE', '25-11月- ');

2.多行记录的录入insert into数据表

(select from数据表where条件)insert into scott.emp(empno,ename,hiredate)

(selectempno+100,ename,hiredatefrom scott.empwhere empon>=6999);

--表间数据复制createtable语句的功能就是创立新的数据表createtable scott.testas

(select distinct empno,ename,hiredatefrom scott.empwhereempno>=7000

);

--删除数据

使用[delete]命令能够删除数据,数据将存储在系统回滚段中,需要的时候能够回滚恢复;使用[truncate]命令能够删除整表数据但保留结构,数据不可恢复.

资料内容仅供您学习参考如有不当或者侵权请联系改正或者删除。deletefrom数据表where条件deletefrom scott.testwhere empno>=7500 and empno<=8000;truncate table scott.test;

--更新数据

[update]:update数据表set字段名1=新的赋值,字段名2=新的赋值where条件update scott.empset empno=8888,ename='TOM',hiredate='03-9月- 'whereempno=7566;update scott.empset sal=

(select sal+300 from scott.empwhereempno=7599

)whereempno=7599

hosthatch:14个数据中心15美元/年

hosthatch在做美国独立日促销,可能你会说这操作是不是晚了一个月?对,为了准备资源等,他们拖延到现在才有空,这次是针对自己全球14个数据中心的VPS。提前示警:各个数据中心的网络没有一个是针对中国直连的,都会绕道而且ping值比较高,想买的考虑清楚再说!官方网站:https://hosthatch.com所有VPS都基于KVM虚拟,支持PayPal在内的多种付款方式!芝加哥(大硬盘)VPS5...

lcloud零云:沪港IPLC,70元/月/200Mbps端口/共享IPv4/KVM;成都/德阳/雅安独立服务器低至400元/月起

lcloud怎么样?lcloud零云,UOVZ新开的子站,现在沪港iplc KVM VPS有端午节优惠,年付双倍流量,200Mbps带宽,性价比高。100Mbps带宽,500GB月流量,10个,512MB内存,优惠后月付70元,年付700元。另有国内独立服务器租用,泉州、佛山、成都、德阳、雅安独立服务器低至400元/月起!点击进入:lcloud官方网站地址lcloud零云优惠码:优惠码:bMVbR...

.asia域名是否适合做个人网站及.asia域名注册和续费成本

今天看到群里的老秦同学在布局自己的网站项目,这个同学还是比较奇怪的,他就喜欢用这些奇怪的域名。比如前几天看到有用.in域名,个人网站他用的.me域名不奇怪,这个还是常见的。今天看到他在做的一个范文网站的域名,居然用的是 .asia 后缀。问到其理由,是有不错好记的前缀。这里简单的搜索到.ASIA域名的新注册价格是有促销的,大约35元首年左右,续费大约是80元左右,这个成本算的话,比COM域名还贵。...

oracle数据库学习为你推荐
云爆发云玩家啥意思?是不是骂人的h连锁酒店世界知名的连锁酒店有哪些?摩根币JPM摩根币是什么?怎么赚钱是骗人的吗?sherylsandberg这个文章什么意思 给个翻译好吗 谢谢了18comic.fun18岁以后男孩最喜欢的网站22zizi.comwww 地址 didi22怎么打不开了,还有好看的吗>com冯媛甑冯媛甄 康熙来了钟神发跪求钟神发名言出处,A站大神看过来同一服务器网站一个服务器放多个网站怎么设置?www.kk4kk.com猪猪影院www.mlzz.com 最新电影收费吗?
VPS之家 bluehost php主机 42u机柜尺寸 evssl证书 ssh帐号 一点优惠网 华为网络硬盘 中国智能物流骨干网 蜗牛魔方 e蜗 gspeed metalink 如何安装服务器系统 西安服务器托管 韩国代理ip 数据库空间 华为云建站 申请免费空间 购买空间 更多