禁止转载!
oracle用户操作一(登录,创建用户、表空间、创建新表):传送门
普通的增、删、改、查咱们就不介绍了哈~,还有一些情况下能用的暂时想不到,后续三里面想到了继续记录,附上了自己创建的几个表格留理解用,真的烦oracle里面大小写。
本文如有出错欢迎指正。
假设现在有一张test表,有设备名(DEVNAME),产品型号(PRODUCTTYPE),报警编码(ALARMCODE)
查询DEVNAME字段中名字不重复的,但是这种方法只能显示选择的信息,distinct devname,那么就只能看到devname
SELECT DISTINCT DEVNAME FROM "Test"
查询设备名、产品名不同的:意思就是这两个字段合起来,数据不同的。
下面语句两者一样
SELECT DISTINCT DEVNAME,PRODUCTTYPE FROM "Test"
select DEVNAME,PRODUCTTYPE from "Test" group by DEVNAME,PRODUCTTYPE
但是group by可以设置所返回的数据,比如只显示设备名和产品名不同的设备名
select DEVNAME from "Test" group by DEVNAME,PRODUCTTYPE
查询Test表中所有记录的条数
select COUNT(*) from "Test"
查询Test表中,DEVNAME和PRODUCTTYPE不同时,所有报警的总数
select COUNT(*),DEVNAME,PRODUCTTYPE from "Test" group by DEVNAME,PRODUCTTYPE
显示,DevName为test1,加工产品型号为200x200时,报了2次警
查询名字为test1的设备在记录中出现占比,Total为查询结果的字段名, C1、C2是查询结果存放在这两张表中。
SELECT C1.TOTAL/C2.TOTAL TOTAL FROM (SELECT COUNT(*) TOTAL FROM "Test"
WHERE DEVNAME = 'test1') C1,(SELECT COUNT(*) TOTAL FROM "Test" ) C2
查询test1的ALARMCODE相加值
SELECT SUM(ALARMCODE) FROM "Test" WHERE DEVNAME = 'test1'
假如现在有两张表,test_sql的Name字段和test_wumeng的k1字段非常相似
表一:test_seq
SELECT * FROM "test_seq", "test_wumeng" ;
结果:可以看出来结果为满足对应关系复制了很多次(这是因为左连接和右链接的问题)
合并两张表查询一般是有关联关系的,上面两张表中的test_sql的Name字段和test_wumeng的k1字段非常相似,那么就有关联性。
现在查询test_seq字段Name和test_wumeng字段k1相同的数据。
语句:t1是test_seq的别名,t2 是test_wumeng的别名(不用别名也可)
SELECT t1.*,t2.* FROM "test_seq" t1, "test_wumeng" t2 WHERE t1.NAME = t2."k1";
但是实际上test_seq的Name中是有test_wumeng的k1字段没有的值,如果想给它也显示出来
SELECT t1.*,t2.* FROM "test_seq" t1, "test_wumeng" t2 WHERE t1.NAME = t2."k1"(+);
结果:
Oracle中的(+) 是外连接,如果在等号的左边就是左连接 和如果在等号的右边就是右连接(也有人说在右边是左连接,在左边是右链接)
和left join ,right join 比较相似
用test_seq里面的Name找到test_wumeng字段k1里相同的数据,并将test_wumeng的k2字段累加
SELECT SUM(t2."k2") FROM "test_seq" t1, "test_wumeng" t2 WHERE t1.NAME = t2."k1";