亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

Oracle Class2. SQL查詢和SQL函數(Oracle數據類

系統 1758 0

------------------------2013-5-6------------------------
system/manager@ora1128 as sysdba

Connect system/****@ora1128 AS SYSDBA

start C:\script.sql;

desc scott.emp;

col LOC heading location;? --修改列的標題名稱

show all? --顯示當前環境變量的值

show error --顯示當前在創建函數、存儲過程、觸發器、包等對象的錯誤信息。

show rel --顯示數據庫版本
show sga --顯示SGA的大小
show user --顯示當前的用戶名


ora-01536: 超出表空間system的空間限量?? -->賦予dba角色可以解決問題。
系統權限????????????? 管理選項
create procedure????? ?x
create table??x
create tablespace?x
unlimited tablespace?x

角色??????? 管理選項? 默認值
connect???x? 勾選
resource??x? 勾選

show user;

set sqlprompt Oaichinese;

alter table newlifeyhj.students add(stu_xxx varchar(12));

DBMS_OUTPUT.put_line('=============================');?? 測試窗口,打印輸出。

聚合函數RANK 和 dense_rank 主要的功能是計算一組數值中的排序值。
select * from (select rank() over(partition by title order by fenshu desc) rk,newlifeyhj.a.* from newlifeyhj.a) t
where t.rk<=3;

dense_rank和rank區別:
dense_rank與rank()用法相當,但是有一個區別:dence_rank在并列關系時,相關等級不會跳過,rank則跳過!
比如:存在兩個第一名是,dence_rank函數接下來是第二名,而rank函數接下來是第三名!/

收入排行
select empno, sal, rank() over(order by sal desc) R from emp;
select empno,sal,dense_rank() over(order by sal desc) R from emp;

sql操作符
算術操作符,+ - * /
比較操作符,= != < > <= >= between and, in,like, is null
邏輯操作符,and,or,not
集合操作符,union,union all,intersect,minus
連接操作符,||

操作符優先級
算術操作符? 最高
連接操作符
比較操作符
邏輯操作符

not邏輯操作符
and邏輯操作符
or邏輯操作符??? 最低

sql函數
單行函數,每一行只返回一個值,日期函數,數字函數,字符函數,轉換函數,其他函數。
分組函數,一組行來返回結果,為每個組行返回一個值。
分析函數,一組行來計算聚合值,累計排名,移動平均數,為每組記錄返回多個行。


日期函數包括:
add_months
months_between
last_day
round
next_day
trunc
extract

字符函數
Initcap(char)
lower(char)
upper(char)
ltrim(char)
rtrim(char)
translate(char,from,to)
instr(char,m,n)
substr(char,m,n)
concat(expr1,expr2)
其他的字符函數
chr和ascii
lpad和rpad
trim
length
decode

490.?在ORACLE 中,語句Select decode(7782,7369,'test1',7782,'test2','other') from dual;查詢結
DECOD
-----
test2


數字函數
abs(n)?? 絕對值
ceil(n)? 比該值大的最小值
cos(n)?? 余弦
cosh(n)
floor(n)??? 比該值小的最大值
power(m,n)? m的n次方
mod(m,n)??? 求余數
round(m,n)? n位小數點,四舍五入。
trunc(m,n)? n位小數點,截斷,無四舍五入。
sqrt(n)???? 求開平方
sign(n)???? >0? 1,? =0? 0, <0? -1? 標記值。


轉換函數
to_char
to_date
to_number
轉換空值的函數
nvl
nvl2
nullif

分組函數
avg min max sum count? select count(distinct qty_hand) from itemfile;

group by和having
group by子句
用于將信息劃分為更小的組,每一組行返回針對該組的單個結果
having子句
用于指定group by子句檢索行的條件

分析函數 row_number,rank,dense_rank
row_number 返回連續的排位,不論值是否相等。
rank 具有相等值的行排位相同,序數隨后跳躍。
dense_rank 具有相等值的行排位相同,序號是連續的。

--返回連續的排位,不論值是否相等。
select ename,job,deptno,sal,row_number() over(order by sal desc) as sal_rank from scott.emp;
--按deptno分區排序
select ename,job,deptno,sal,rank() over(partition by deptno order by sal desc) as sal_rank from scott.emp;
--具有相等值的行排位相同,序數隨后跳躍。
select ename,job,deptno,sal,rank() over(order by sal desc) as sal_rank from scott.emp;
--按deptno分區排序
select ename,job,deptno,sal,dense_rank() over(partition by deptno order by sal desc) as sal_rank from scott.emp;
--具有相等值的行排位相同,序號是連續的。
select ename,job,deptno,sal,dense_rank() over(order by sal desc) as sal_rank from scott.emp;


------------------------2013-5-7------------------------
用于存儲和檢索數據庫中數據的語言是SQL

select可以用于:
創建現有表的副本????? create table tbl as select * form tbl2 where 條件 and 1 <> 2? --復制表結構
插入來自其他表的記錄? insert into tbl select * from tbl2;? --復制表數據
使用別名讓列顯示其他名稱 select col 字段1, col2 as 字段2 from tbl; --別名顯示


select initcap('hello') from dual;??? --Hello

select lower('FUN') from dual;? --fun

select upper('sun') from dual;? --SUN

select ltrim('xyzadmin','xyz') from dual;??? --admin

select rtrim('xyzadmin','admin') from dual;? --xyz

select translate('jack','j','b') from dual;? --back

select replace('jack and jue','j','bl') from dual;? --black and blue

select translate('jack and jue','j','k') from dual; --kack and kue? 只能改變一個字符。

select instr('worldwide','d') from dual;? --5

select substr('abcdefg',3,2) from dual;?? --cd

select concat('Hello','world') from dual; --Helloworld

select chr(65) from dual; --A

select lpad('function',15,'=') from dual;?? =======function
select rpad('function',15,'=') from dual;?? function=======

select trim(9 from 9999876789999) from dual;? --87678

select length('frances') from dual;? --7

select to_char(sysdate,'YYYY "年" fmMM "月" fmDD "日" HH24:MI:SS') from dual;? --2013 年 5 月 07 日 10:19:39

--最多為5位數字,以本地貨幣符號作為前綴
select empno,to_char(sal,'C99999') from scott.emp;??? --7369??????? CNY800

select to_date('2005-12-06','yyyy-mm-dd') from dual;? --06-12月-05

select to_number('100') from dual;??????? --100

臨時表
只在用戶會話期間存在的表
數據在用戶事務處理期間持續存在
使用create global temporary table命令
不會自動獲得空間
插入的值僅在此特定會話中可用

desc dual;
?名稱????????????????????????????????????? 是否為空? 類型
?----------------------------------------- -------- ----------------------------
?DUMMY????????????????????????????????????????????? VARCHAR2(1)

Rollup和Cube運算符用于查找表達式的聚集和超級聚集。
統計函數???????????????????????????? 根據分組情況進行統計,最終進行全部匯總。
Rollup結果集包含分組行和小計行
rollup(column_name1,column_name2)

--根據Deptno和JOB進行分組,求相同deptno,相同job員工工資總和。
select deptno,job,sum(sal) from scott.emp group by deptno,job order by deptno;

select dummy from dual group by rollup(dummy);

--以deptno為基準,按job統計各個部門的job總和。
select deptno,job,sum(sal) from scott.emp where deptno is not null group by rollup(deptno,job) order by deptno;
??? DEPTNO JOB???????? SUM(SAL)
---------- --------- ----------
??????? 10 CLERK?????????? 1300
??????? 10 MANAGER???????? 2450
??????? 10 PRESIDENT?????? 5000
??????? 10???????????????? 8750
??????? 20 ANALYST???????? 6000
??????? 20 CLERK?????????? 1900
??????? 20 MANAGER???????? 2975
??????? 20??????????????? 10875
??????? 30 CLERK??????????? 950
??????? 30 MANAGER???????? 2850
??????? 30 SALESMAN??????? 5600

??? DEPTNO JOB???????? SUM(SAL)
---------- --------- ----------
??????? 30???????????????? 9400
????????????????????????? 29025

--以job為基準,按部門統計各個job的總和。
select deptno,job,sum(sal) from scott.emp where deptno is not null group by rollup(job,deptno) order by job;
??? DEPTNO JOB???????? SUM(SAL)
---------- --------- ----------
??????? 20 ANALYST???????? 6000
?????????? ANALYST???????? 6000
??????? 10 CLERK?????????? 1300
??????? 20 CLERK?????????? 1900
??????? 30 CLERK??????????? 950
?????????? CLERK?????????? 4150
??????? 10 MANAGER???????? 2450
??????? 20 MANAGER???????? 2975
??????? 30 MANAGER???????? 2850
?????????? MANAGER???????? 8275
??????? 10 PRESIDENT?????? 5000

??? DEPTNO JOB???????? SUM(SAL)
---------- --------- ----------
?????????? PRESIDENT?????? 5000
??????? 30 SALESMAN??????? 5600
?????????? SALESMAN??????? 5600
????????????????????????? 29025

select deptno,job,sum(sal) from scott.emp where deptno is not null group by rollup(job,deptno) order by deptno;
??? DEPTNO JOB???????? SUM(SAL)
---------- --------- ----------
??????? 10 CLERK?????????? 1300
??????? 10 MANAGER???????? 2450
??????? 10 PRESIDENT?????? 5000
??????? 20 ANALYST???????? 6000
??????? 20 CLERK?????????? 1900
??????? 20 MANAGER???????? 2975
??????? 30 CLERK??????????? 950
??????? 30 SALESMAN??????? 5600
??????? 30 MANAGER???????? 2850
?????????? ANALYST???????? 6000
?????????? PRESIDENT?????? 5000

??? DEPTNO JOB???????? SUM(SAL)
---------- --------- ----------
?????????? SALESMAN??????? 5600
????????????????????????? 29025
?????????? MANAGER???????? 8275
?????????? CLERK?????????? 4150

?

Cube產生交叉表格報表
cube(column_name1,column_name2,column_name3)

select deptno,job,sum(sal) from scott.emp where deptno is not null group by cube(deptno,job) order by deptno;
?? DEPTNO JOB???????? SUM(SAL)
---------- --------- ----------
??????? 10 CLERK?????????? 1300
??????? 10 MANAGER???????? 2450
??????? 10 PRESIDENT?????? 5000
??????? 10???????????????? 8750
??????? 20 ANALYST???????? 6000
??????? 20 CLERK?????????? 1900
??????? 20 MANAGER???????? 2975
??????? 20??????????????? 10875
??????? 30 CLERK??????????? 950
??????? 30 MANAGER???????? 2850
??????? 30 SALESMAN??????? 5600

??? DEPTNO JOB???????? SUM(SAL)
---------- --------- ----------
??????? 30???????????????? 9400
?????????? ANALYST???????? 6000
?????????? CLERK?????????? 4150
?????????? MANAGER???????? 8275
?????????? PRESIDENT?????? 5000
?????????? SALESMAN??????? 5600
????????????????????????? 29025

grouping: 如果列值為空,那么grouping()返回1,否則返回0
select grouping(deptno), deptno,job,sum(sal) from scott.emp where deptno is not null group by cube(deptno,job) order by deptno;


grouping sets提供了指定匯總集合條件的功能。
select deptno,job,sum(sal) from scott.emp where deptno is not null group by grouping sets(deptno,job);
??? DEPTNO JOB???????? SUM(SAL)
---------- --------- ----------
??????? 10???????????????? 8750
??????? 20??????????????? 10875
??????? 30???????????????? 9400
?????????? ANALYST???????? 6000
?????????? CLERK?????????? 4150
?????????? MANAGER???????? 8275
?????????? PRESIDENT?????? 5000
?????????? SALESMAN??????? 5600


#177.?關于Oracle的LONG類型描述正確的是:?? abd
A?LONG數據類型中存儲的是可變長字符串,最大長度限制是2GB
B?LONG類型主要用于不需要作字符串搜索的長串數據,如果要進行字符搜索就要用varchar2類型
C?索引LONG類型列會明顯提升查詢效率
D?一個表中只能包含一個LONG類型的列

根據別名來排序:
select empno 編號,ename,sal from scott.emp order by 編號;
--對檢索結果(第2個,第1個)的排序--
select empno 編號,ename,sal from scott.emp order by 2,1;
--對檢索結果(第3個)的排序--
select empno 編號,ename,sal from scott.emp order by 3 desc;

select instr('Mississippi','i',3,3) from dual;???? -- 11

short類型長度16位。
int,float類型長度32位。
long,double類型長度64位。


472.?關于索引的說法錯誤的是BD
A、刪除索引不會影響表中的數據。
B、索引表中也有rowid 列
C、索引又系統管理和應用。
D、索引總是能夠提高檢索效率

Oracle Class2. SQL查詢和SQL函數(Oracle數據類型,ddl,dml,dcl,事務控制語言tcl,sql操作符,sql函數,select語句,運算符,分析函數,臨時表)


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 九九在线免费观看视频 | 久久99精品热在线观看15 | 亚洲精品国产福利一区二区三区 | 国产九九精品 | 亚洲视频大全 | 国产乱子伦一区二区三区 | 在线观看国产一区 | 欧日韩美香蕉在线观看 | 日本免费不卡视频一区二区三区 | 久久精品国内一区二区三区 | 99爱国产| 久久精品国产74国产 | 国内在线播放 | 亚洲影院中文字幕 | 亚洲精品久久久久久久久久ty | 亚洲成精品动漫久久精久 | 精品一区二区三区18 | 在线视频一二三区 | 欧美伊人久久 | 成人嫩草研究院永久网址 | 亚洲 欧美 日韩 在线 香蕉 | 色综合久久六月婷婷中文字幕 | 最新69成人精品毛片 | 精品国产第一国产综合精品 | 免费综合网 | 国产美女久久久久久久久久久 | 久久一本 | 久久99精品国产麻豆宅宅 | 久久99精品久久久久久三级 | 久热中文| 91中文字幕在线一区 | 激情五月综合综合久久69 | 美国免费三片在线观看 | 亚洲精品中文字幕第一区 | 成人精品亚洲 | 日本α级毛片视频免费观看 | 狠狠色噜噜狠狠狠狠2018 | 国内精品久久久久影院中国 | 在线久| 国内精品久久久久久影院8f | 天天干天天干天天天天天天爽 |