select id, last_name, salar" />

久久99精品久久久久久琪琪,久久人人爽人人爽人人片亞洲,熟妇人妻无码中文字幕,亚洲精品无码久久久久久久

黑馬程序員c語言教程:Oracle概念(推薦)

時間:2019-05-12 21:03:46下載本文作者:會員上傳
簡介:寫寫幫文庫小編為你整理了多篇相關的《黑馬程序員c語言教程:Oracle概念(推薦)》,但愿對你工作學習有幫助,當然你在寫寫幫文庫還可以找到更多《黑馬程序員c語言教程:Oracle概念(推薦)》。

第一篇:黑馬程序員c語言教程:Oracle概念(推薦)

七、在執(zhí)行SQL語句時綁定變量

1.接收和定義變量的SQL*PLUS命令 ACCEPT DEFINE UNDEFINE & 2.綁定變量SQL語句的例子(1)SQL> select id, last_name, salary from s_emp where dept_id = &department_number;Enter value for department_number: 10 old 1: select id, last_name, salary from s_emp where dept_id=&department_number;new 1: select id, last_name, salary from s_emp where dept_id= 10 SQL> SET VERIFY OFF | ON;可以關閉和打開提示確認信息old 1和new 1的顯示.3.綁定變量SQL語句的例子(2)SQL> select id, last_name, salary from s_emp where title = '&job_title';Enter value for job_title: Stock Clerk 11

J2EE @ zxw SQL> select id, last_name, salary from s_emp where hiredate >to_date('&start_hire_date','YYYY-MM-DD');Enter value for start_hire_date : 2001-01-01 把綁定字符串和日期類型變量時,變量外面要加單引號 也可綁定變量來查詢不同的字段名 輸入變量值的時候不要加;等其它符號 4.ACCEPT的語法和例子

SQL> ACCEPT variable [datatype] [FORMAT] [PROMPT text] [HIDE] 說明: variable 指變量名 datatype 指變量類型,如number,char等 format 指變量顯示格

式 prompt text 可自定義彈出提示符的內容text hide 隱藏用戶的輸入符號 使用ACCEPT的例子:

ACCEPT p_dname PROMPT 'Provide the department name: ' ACCEPT p_salary NUMBER PROMPT 'Salary amount: ' ACCEPT pswd CHAR PROMPT 'Password: ' HIDE ACCEPT low_date date format 'YYYY-MM-DD' PROMPT“Enter the low date range('YYYY-MM-DD'):” 4.DEFINE的語法和例子

SQL> DEFINE variable = value 說明: variable 指變量名 value 指變量值

定義好了變良值后, 執(zhí)行綁定變量的SQL語句時不再提示輸入變量

使用DEFINE的例子:

SQL> DEFINE dname = sales SQL> DEFINE dname DEFINE dname = “sales”(CHAR)SQL> select name from dept where lower(name)='&dname';NAME-------------------------sales sales SQL> UNDEFINE dname SQL> DEFINE dname Symbol dname is UNDEFINED 5.SQL*PLUS里傳遞參數(shù)到保存好的*.sql文件里 SQL> @ /路徑名/文件名 參數(shù)名1[,參數(shù)名2, ?.] SQL> start /路徑名/文件名 參數(shù)名1[,參數(shù)名2, ?.] 注意事項: 一次最多只能獲取9個&變量, 變量名稱只能是從&1,&2到&9 變量名后不要加特殊的結束符號

如果在SQL*PLUS里要把&符號保存在ORACLE數(shù)據(jù)庫里,要修改sql*plus環(huán)境變量define SQL> set define off;

八、概述數(shù)據(jù)模型和數(shù)據(jù)庫設計 1.系統(tǒng)開發(fā)的階段: Strategy and Analysis Design Build and Document Transition Production 12

J2EE @ zxw 2.數(shù)據(jù)模型

Model of system in client's mind Entity model of client's model Table model of entity model Tables on disk 3.實體關系模型(ERM)概念

ERM(entity relationship modeling)實體 存有特定信息的目標和事件 例如: 客戶,訂單等 屬性 描述實體的屬性 例如: 姓名,電話號碼等 關系 兩個實體間的關系 例如:訂單和產(chǎn)品等 實體關系模型圖表里的約定

Dashed line(虛線)可選參數(shù) “may be”

Solid line(實線)必選參數(shù) “must be”

Crow's foot(多線)程度參數(shù) “one or more”

Single line(單線)程度參數(shù) “one and only one” 4.實體關系模型例子

每個訂單都必須有一個或幾個客戶

每個客戶可能是一個或幾個訂單的申請者 5.實體關系的類型

1:1 一對一 例如: 的士和司機 M:1 多對一 例如: 乘客和飛機 1:M 一對多 例如: 員工和技能 6.校正實體關系的原則

屬性是單一值的, 不會有重復

屬性必須依存于實體, 要有唯一標記

沒有非唯一屬性依賴于另一個非唯一的屬性 7.定義結構時的注意事項 減少數(shù)據(jù)冗余

減少完整性約束產(chǎn)生的問題 確認省略的實體,關系和屬性 8.完整性約束的要求

Primary key 主關鍵字 唯一非NULL Foreign key 外鍵 依賴于另一個Primary key,可能為NULL Column 字段名 符合定義的類型和長度

Constraint 約束條件 用戶自定義的約束條件,要符合工作流要求 例如: 一個銷售人員的提成不能超過它的基本工資

Candidate key 候選主關鍵字 多個字段名可組成候選主關鍵字, 其組合是唯一和非NULL的

9.把實體關系圖映射到關系數(shù)據(jù)庫對象的方法 把簡單實體映射到數(shù)據(jù)庫里的表

把屬性映射到數(shù)據(jù)庫里的表的字段, 標明類型和注釋 把唯一標記映射到數(shù)據(jù)庫里的唯一關鍵字 把實體間的關系映射到數(shù)據(jù)庫里的外鍵 13

J2EE @ zxw 其它的考慮: 設計索引,使查詢更快

建立視圖,使信息有不同的呈現(xiàn)面, 減少復雜的SQL語句 計劃存儲空間的分配 重新定義完整性約束條件

10.實體關系圖里符號的含義 PK 唯一關鍵字的字段 FK 外鍵的字段

FK1,FK2 同一個表的兩個不同的外鍵

FK1,FK1 兩個字段共同組成一個外鍵 NN 非null字段 U 唯一字段

U1,U1 兩個字段共同組成一個唯一字段

九、創(chuàng)建表

1.ORACLE常用的字段類型 ORACLE常用的字段類型有

VARCHAR2(size)可變長度的字符串, 必須規(guī)定長度 CHAR(size)固定長度的字符串, 不規(guī)定長度默認值為1

NUMBER(p,s)數(shù)字型p是位數(shù)總長度, s是小數(shù)的長度, 可存負數(shù) 最長38位.不夠位時會四舍五入.DATE 日期和時間類型

LOB 超長字符, 最大可達4G CLOB 超長文本字符串 BLOB 超長二進制字符串

BFILE 超長二進制字符串, 保存在數(shù)據(jù)庫外的文件里是只讀的.數(shù)字字段類型位數(shù)及其四舍五入的結果 原始數(shù)值1234567.89 數(shù)字字段類型位數(shù) 存儲的值 Number 1234567.89 Number 12345678 Number 錯

Number(9,1)1234567.9 Number(9,3)錯 Number(7,2)錯

Number(5,-2)1234600 Number(5,-4)1230000 Number(*,1)1234567.9 2.創(chuàng)建表時給字段加默認值 和約束條件 創(chuàng)建表時可以給字段加上默認值

例如 : 日期字段 DEFAULT SYSDATE 這樣每次插入和修改時, 不用程序操作這個字段都能得到動作的時間 14

J2EE @ zxw 創(chuàng)建表時可以給字段加上約束條件 例如: 非空 NOT NULL 不允許重復 UNIQUE 關鍵字 PRIMARY KEY 按條件檢查 CHECK(條件)外鍵 REFERENCES 表名(字段名)3.創(chuàng)建表的例子

CREATE TABLE DEPT(EPTNO NUMBER(2)CONSTRAINT PK_DEPT PRIMARY KEY, DNAME VARCHAR2(14), LOC VARCHAR2(13));CREATE TABLE region(ID number(2)NOT NULL PRIMARY KEY, postcode number default '0' NOT NULL, areaname varchar2(30)default ' ' NOT NULL);4.創(chuàng)建表時的命名規(guī)則和注意事項

表名和字段名的命名規(guī)則:必須以字母開頭,可以含符號A-Z,a-z,0-9,_,$,# 大小寫不區(qū)分

不用SQL里的保留字, 一定要用時可用雙引號把字符串括起來. 用和實體或屬性相關的英文符號長度有一定的限制 注意事項: 建表時可以用中文的字段名, 但最好還是用英文的字段名

創(chuàng)建表時要把較小的不為空的字段放在前面, 可能為空的字段放在后面 建表時如果有唯一關鍵字或者唯一的約束條件,建表時自動建了索引 一個表的最多字段個數(shù)也是有限制的,254個.5.約束名的命名規(guī)則和語法

約束名的命名規(guī)則約束名如果在建表的時候沒有指明,系統(tǒng)命名規(guī)則是SYS_Cn(n是數(shù)字)約束名字符串的命名規(guī)則同于表和字段名的命名規(guī)則 6.使用約束時的注意事項

約束里不能用系統(tǒng)函數(shù),如SYSDATE和別的表的字段比較 可以用本表內字段的比較

想在事務處理后, 做約束的檢查

SQL> alter session set constraints deferred.7.由實體關系圖到創(chuàng)建表的例子 s_dept 前提條件:已有region表且含唯一關鍵字的字段id SQL> CREATE TABLE s_dept(id NUMBER(7)CONSTRAINT s_dept_id_pk PRIMARY KEY, name VARCHAR2(25)CONSTRAINT s_dept_name_nn NOT NULL, region_id NUMBER(7)CONSTRAINT s_dept_region_id_fk REFERENCES region(id), CONSTRAINT s_dept_name_region_id_uk UNIQUE(name, region_id));8.較復雜的創(chuàng)建表例子 15

J2EE @ zxw SQL> CREATE TABLE s_emp(id NUMBER(7)CONSTRAINT s_emp_id_pk PRIMARY KEY, last_name VARCHAR2(25)CONSTRAINT s_emp_last_name_nn NOT NULL,first_name VARCHAR2(25), userid VARCHAR2 CONSTRAINT s_emp_userid_nn NOT NULL CONSTRAINT s_emp_userid_uk UNIQUE, start_date DATE DEFAULT SYSDATE, comments VARCHAR2(25), manager_id NUMBER(7), title VARCHAR2(25), dept_id NUMBER(7)CONSTRAINT s_emp_dept_id_fk REFERENCES s_dept(id), salary NUMBER(11,2), commission_pct NUMBER(4,2)CONSTRAINT s_emp_commission_pct_ck CHECK(commission_pct IN(10,12.5,15,17.5,20)));

第二篇:黑馬程序員c語言教程:Oracle概念

一、選擇行

1.簡單的SELECT 語句

SELECT 字段名1 [AS] '字段名1 解釋' FROM table;2.處理NULL NVL函數(shù)可把NULL轉換成其它類型的符號

編程技巧: NVL函數(shù)在多條件模糊查詢的時候比較有用 NVL函數(shù)可返回多種數(shù)據(jù)類型: 返回日期 NVL(start_date,'2002-02-01')返回字符串 NVL(title,'no title')返回數(shù)字 NVL(salary,1000)3.使用SQL*PLUS(1)

SQL> desc table;顯示表結構

SQL> select * from tab;查看用戶下所有的表

SQL> set pause on;可以使大量結果集在用戶按“Enter”(回車)后翻頁

SQL> set pagesize 100;設定SQL語句返回結果集一頁的行數(shù)100, 默認值是14 SQL> set linesize 100;設定SQL語句返回結果集一行的寬度100, 默認值是80 4.SQL*PLUS里規(guī)定字段的顯示格式 規(guī)定數(shù)字的顯示格式

SQL>column 字段名 format 99999999999;SQL>column 字段名 format 999,999,999,999;SQL>column 字段名 format a數(shù)字 [word_wrapped];規(guī)定long字符的顯示寬度 SQL>set long 200;規(guī)定字段名的顯示內容

SQL> column 字段名 heading '字段名顯示內容';SQL> set heading off;查詢時不顯示字段名稱 規(guī)定字段的對齊方向

SQL> column 字段名 justify [left | right | center];清除字段的格式

SQL> column 字段名 clear;5.SQL*PLUS里規(guī)定字段的顯示格式例子

SQL> column last_name heading 'Employee|Name' format a15;SQL> column salary justify right format $99,999.99;SQL> column start_date format a10 null 'Not Hired';說明:如果start_date為null, 顯示字符串'Not Hired' 6.判斷題(T/F)(1).SQL command are always held in sql buffer.[T](2).SQL*PLUS command assit with query data.[T] 5

J2EE @ zxw SQL*PLUS命令只控制SELECT結果集的顯示格式及控制文件.只有SQL命令能訪問數(shù)據(jù)庫.二、限制選擇行

1.按指定的規(guī)則排序

SELECT expr FROM table [ORDER BY {column, expr} [ASC | DESC] ];默認的排序是ASC升序(由小到大)還可以ORDER BY 字段名的位置[1]| [2] ASC| DESC;2.用WHERE限制選擇行(1)比較操作符 = ><>= <=!= <> ^= 與NULL比較不能用上面的比較操作符 ANY SOME ALL SQL操作符 BETWEEN ? AND? IN LIKE IS NULL NOT BETWEEN ? AND? NOT IN NOT LIKE IS NOT NULL 邏輯操作符 AND OR NOT 3.用WHERE限制選擇行(2)比較順序(可以用括號改變它們的順序)(1).= <>>= <= in like is null between(2).and(3).Or 4.LIKE操作

% 零到任意多個字符 _ 一個字符

例如: 字段名 like 'M%' 字段名 like '%m%' 字段名 like 'job_' 如果要找含下劃線的字符, 要加反斜線 例如:字段名 like '%X/_Y%' escape '/' 5.日期字段的比較 舉例: 日期字段 between to_date('2001-12-12','YYYY-MM-DD')and to_date('2002-02-01','YYYY-MM-DD')日期字段> to_date('2001-12-12','YYYY-MM-DD')and日期字段<= to_date('2002-02-01','YYYY-MM-DD');6.不能用到索引的比較操作符 IS NULL IS NOT NULL LIKE '%m%'

三、單行函數(shù) 1.數(shù)字函數(shù)

ABS 取絕對值 POWER 乘方 LN 10為底數(shù)取0 SQRT平方根 EXP e的n次乘方 LOG(m,n)m為底數(shù)n取0 數(shù)學運算函數(shù):ACOS ATAN ATAN2 COS COSH SIGN SIN SINH TAN TANH CEIL 大于或等于取整數(shù) FLOOR 小于或等于取整數(shù) MOD 取余數(shù)

ROUND(n,m)按m的位數(shù)取四舍五入值如果round(日期): 中午12以后將是明天的日期.round(sysdate,'Y')是年的第一天

TRUNC(n,m)按m的位數(shù)取小數(shù)點后的數(shù)值如果trunc(日期), 確省的是去掉時間

J2EE @ zxw 2.字符函數(shù)

CHR 按數(shù)據(jù)庫的字符集由數(shù)字返回字符

CONCAT(c1,c2)把兩個字符c1,c2組合成一個字符, 和 || 相同 REPLACE(c,s,r)把字符c里出現(xiàn)s的字符替換成r, 返回新字符

SUBSTR(c,m,n)m大于0,字符c從前面m處開始取n位字符,m等于0和1一樣, m小與0,字符c從后面m處開始取n位字符

TRANSLATE(c,f1,t1)字符c按f1到t1的規(guī)則轉換成新的字符串 INITCAP 字符首字母大寫,其它字符小寫 LOWER 字符全部小寫 UPPER 字符全部大寫

LTRIM(c1,c2)去掉字符c1左邊出現(xiàn)的字符c2 RTRIM(c1,c2)TRIM(c1,c2)去掉字符c1左右兩邊的字符c2 LPAD(c1,n,c2)字符c1按制定的位數(shù)n顯示不足的位數(shù)用c2字符串替換左邊的空位 RPAD(c1,n,c2)3.日期函數(shù)

ADD_MONTHS(d,n)日期值加n月

LAST_DAY 返回當月的最后一天的日期

MONTHS_BETWEEN(d1,d2)兩個日期值間的月份,d1

DUAL是SYS用戶下一個空表,它只有一個字段dummy 4.轉換函數(shù)(1)TO_CHAR(date,'日期顯示格式')TO_CHAR(number)用于顯示或報表的格式對齊 TO_DATE(char,'日期顯示格式')TO_LOB 把long字段轉換成lob字段

TO_NUMBER(char)用于計算或者比較大小 4.轉換函數(shù)(2)to_date里日期顯示格式 YYYY 年 YEAR YYY YY Y Q 季度

MM 月 MONTH MON W 星期(week of month)WW, IW(week of year)(說明:周計是按ISO標準,從1月1日的星期數(shù)到后面七天為一周,不一定是從周一到周日)DD 日 DAY DY HH24 小時 HH12 HH MI 分鐘 SS 秒

如果想固定日期的顯示格式可以在數(shù)據(jù)庫的參數(shù)文件initorasid.ora里新寫一行參數(shù)

NLS_DATE_FORMAT=yyyy-mm-dd hh24:mi:ss可以在UNIX環(huán)境變量或者NT的注冊表里的設置 NLS_DATE_FORMAT=yyyy-mm-dd 7

J2EE @ zxw hh24:mi:ss 4.轉換函數(shù)(3)如果想固定日期的顯示格式可以用alter session命令改變

SQL> alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss';它的作用順序如下: initialization parameter Environment variable ALTER SESSION command 4.轉換函數(shù)(4)to_char(number)里數(shù)字顯示格式 9 數(shù)字位

0 數(shù)字前面補0 to_char(-1200,'00000.00').小數(shù)點的位置 , 標記位置的逗號 用在數(shù)字顯示格式的左邊

L 根據(jù)數(shù)據(jù)庫字符集加貨幣符號 to_char(-1200,'L9999.99')B 把數(shù)字0顯示為空格,用在數(shù)字顯示格式的右邊 MI 右邊的負數(shù)標記 to_char(-1200,'9999.99MI')PR 括起來的負數(shù) to_char(-1200,'9999.99PR')EEEE 用指數(shù)方式表示 to_char(-1200,'9999.99EEEE')5.輸入字符,返回數(shù)字的函數(shù)

instr(c1,c2)字符c2出現(xiàn)在c1的位置, 不出現(xiàn), 返回0, 常用于模糊查詢

length 按數(shù)據(jù)庫的字符集,算出字符c的長度,跟數(shù)據(jù)庫的字符集有關, 一個漢字長度為1 6.有邏輯比較的函數(shù)NVL(EXPR1, EXPR2)函數(shù) 解釋: IF EXPR1=NULL RETURN EXPR2 ELSE RETURN EXPR1 DECODE(AA0V10R10V20R2....)函數(shù) 解釋: IF AA=V1 THEN RETURN R1 IF AA=V2 THEN RETURN R2..? ELSE RETURN NULL 舉例: decode(id,1,'dept sale',2,'dept tech')

第三篇:黑馬程序員c語言教程:Oracle概念

四、從多個表里選取數(shù)據(jù)記錄 1.數(shù)據(jù)表間的連接 簡單的連接語法: SELECT 字段名1, 字段名2, …… FROM 表名1, [表名2, ……] WHERE 表名1.字段名 = 表名2.字段名 [ AND ……];SELECT 字段名1, 字段名2, …… FROM 表名1, [表名2, ……] WHERE 表名1.字段名 = 表名2.字段名(+)[ AND ……];有(+)號的字段位置自動補空值 連接的分類: 等于的連接 = 不等于的連接!= BETWEEN … AND … IN 注意IN和OR不能一起用 8

J2EE @ zxw 外連接 有一個字段名(+), 沒有滿足的條件補空值 自連接 同一個表自己跟自己連接 例如找重復記錄 2.數(shù)據(jù)表間的連接例子

刪除table_name表里字段名email重復的記錄: SQL>delete from table_name t1 where t1.rowid >(select min(rowid)from table_name t2 where t1.email = t2.email group by email having count(email)> 1);找到手機用戶的服務區(qū)域: SQL> select a.handphoneno,nvl(c.name,'null'),a.totalscore from topscore a,chargeoperator cc,chargeoperatorinfo c where substr(a.handphoneno,1,7)=cc.hpnohead(+)and cc.chargetype=c.chargetype(+)order by a.totalscore desc;3.數(shù)據(jù)表間的連接技巧

連接N個表, 需要N-1個連接操作

被連接的表最好建一個單字符的別名, 字段名前加上這個單字符的別名 BETWEEN..AND..比用 >= AND <= 要好 連接操作的字段名上最好要有索引 連接操作的字段最好用整數(shù)數(shù)字類型

有外連接時, 不能用OR或IN的比較操作 4.如何分析和執(zhí)行SQL語句

寫多表連接SQL語句時要知道它的分析執(zhí)行計劃的情況.Sys用戶下運行@/ORACLE_HOME/sqlplus/admin/plustrce.sql 產(chǎn)生plustrace角色

Sys用戶下把此角色賦予一般用戶 SQL> grant plustrace to &username;一般用戶下運行@/ORACLE_HOME/rdbms/admin/utlxplan.sql

產(chǎn)生plan_table SQL> set time on;說明:打開時間顯示

SQL> set autotrace on;說明:打開自動分析統(tǒng)計,并顯示SQL語句的運行結果 SQL> set autotrace traceonly;說明:打開自動分析統(tǒng)計,不顯示SQL語句的運行結果

接下來你就運行測試SQL語句,看到其分析統(tǒng)計結果了。一般來講,我們的SQL語句應該避免大表的全表掃描。SQL> set autotrace off;說明:關閉自動分析統(tǒng)計

五、集合函數(shù)

經(jīng)常和group by一起使用 1.集合函數(shù)列表

AVG(DISTINCT | ALL | N)取平均值

COUNT(DISTINCT | ALL | N | expr | *)統(tǒng)計數(shù)量 MAX(DISTINCT | ALL | N)取最大值 MIN(DISTINCT | ALL | N)取最小值 SUM(DISTINCT | ALL | N)取合計值 9

J2EE @ zxw STDDEV(DISTINCT | ALL | N)取偏差值,如果組里選擇的內容都相同,結果為0 VARIANCE(DISTINCT | ALL | N)取平方偏差值 2.使用集合函數(shù)的語法

SELECT column, group_function FROM table WHERE condition GROUP BY group_by_expression HAVING group_condition ORDER BY column;3.使用count時的注意事項

SELECT COUNT(*)FROM table;SELECT COUNT(常量)FROM table;都是統(tǒng)計表中記錄數(shù)量,如果沒有PK后者要好一些 SELECT COUNT(all 字段名)FROM table;SELECT COUNT(字段名)FROM table;不會統(tǒng)計為NULL的字段的數(shù)量

SUM,AVG時都會忽略為NULL的字段 4.用group by時的限制條件

SELECT字段名不能隨意, 要包含在GROUP BY的字段里 GROUP BY后ORDER BY時不能用位置符號和別名 限制GROUP BY的顯示結果, 用HAVING條件 5.例子

SQL> select title,sum(salary)payroll from s_emp where title like 'VP%' group by title having sum(salary)>5000 order by sum(salary)desc;找出某表里字段重復的記錄數(shù), 并顯示

SQL> select(duplicate field names)from table_name

group by(list out fields)having count(*)>1;6.判斷題(T/F)(1)Group functions include nulls in calculations [F](2)Using the having clause to exclude rows from a group calculation [F] 解釋: Group function 都是忽略NULL值的 如果您要計算NULL值, 用NVL函數(shù)

Where語句在Group By前把結果集排除在外Having語句在Group By后把結果集排除在外

六、子查詢

1.查詢語句可以嵌套

例如: SELECT …… FROM(SELECT …… FROM表名1, [表名2, ……] WHERE 條件)WHERE 條件2;2.何處可用子查詢? 當查詢條件是不確定的條件時

DML(insert, update,delete)語句里也可用子查詢 HAVING里也可用子查詢

3.兩個查詢語句的結果可以做集合操作 例如: 并集UNION(去掉重復記錄)并集UNION ALL(不去掉重復記錄)10

J2EE @ zxw 差集MINUS, 交集INTERSECT 4.子查詢的注意事項

先執(zhí)行括號里面的SQL語句,一層層到外面 內部查詢只執(zhí)行一次

如果里層的結果集返回多個,不能用= ><>= <=等比較符要用IN.5.子查詢的例子(1)SQL> select title,avg(salary)from s_emp group by title Having avg(salary)=(select min(avg(salary))from s_emp group by title);找到最低平均工資的職位名稱和工資 5.子查詢的例子(2)子查詢可以用父查詢里的表名 這條SQL語句是對的: SQL>select cty_name from city where st_code in(select st_code from state where st_name='TENNESSEE' and city.cnt_code=state.cnt_code);說明:父查詢調用子查詢只執(zhí)行一次. 6.取出結果集的80 到100的SQL語句

ORACLE處理每個結果集只有一個ROWNUM字段標明它的邏輯位置, 并且只能 用ROWNUM<100, 不能用ROWNUM>80。

以下是經(jīng)過分析后較好的兩種ORACLE取得結果集80到100間的SQL語句(ID是唯一關鍵字的字段名)語句寫法:

SQL>select * from((select rownum as numrow, c.* from(select [field_name,...] from table_name where 條件1 order by 條件2)c)where numrow > 80 and numrow <= 100)order by 條件3;

第四篇:黑馬程序員c語言教程:Oracle概念(7)

十六、控制用戶訪問 1.權限的類別

系統(tǒng)級權限: 針對整個系統(tǒng)操作的權限 如: 用戶名/密碼, 使用表空間的限額等

對象級權限: 針對某個具體object操作的權限

如: 針對某個表, 視圖, 表的某個字段的select, update, delete權限 23

J2EE @ zxw 2.查看當前數(shù)據(jù)庫的用戶信息

SQL>select username,default_tablespace,temporary_tablespace from dba_users;查看在線用戶信息 SQL>select count “number”,username “current username” from v$session group by username;用戶查看自己的缺省表空間SQL>select username,default_tablespace from user_users;3.創(chuàng)建新用戶

SQL> create user username identified by password default tablespace tablespace_name temporary tablespace temp quota unlimited on tablespace_name quota 1k on system [quota 1k on other_tablespace_name ??];給用戶賦權限

SQL> grant connect, resource to username;查看當前用戶的權限角色

SQL> select * from user_role_privs;查看當前用戶的系統(tǒng)權限和表級權限

SQL> select * from user_sys_privs;SQL> select * from user_tab_privs;4、常用的角色及其權限

CONNECT 8 privs 連上Oracle,做最基本操作 RESOURCE 8 privs 具有程序開發(fā)最的權限 DBA 114 privs 數(shù)據(jù)庫管理員所有權限

EXP_FULL_DATABASE 5 privs 數(shù)據(jù)庫整個備份輸出的權限 IMP_FULL_DATABASE 64 privs 數(shù)據(jù)庫整個備份輸入的權限 查看角色明細的系統(tǒng)權限

SQL> select * from role_sys_privs;

5、改變老用戶 可以改變老用戶的密碼, 缺省表空間, 臨時表空間, 空間限額.SQL> alter user username identified by password default tablespace tablespace_name temporary tablespace temp quota unlimited on tablespace_name quota 1k on system

[quota 1k on other_tablespace_name ??];撤銷用戶的角色或權限

SQL> revoke role_name or priv_name from username;注意事項

撤消用戶的角色dba時, 同時撤消了用戶unlimited tablespace的系統(tǒng)權限, 切記要再次賦予resource角色給此用戶 SQL> grant resource to username;

6、刪除用戶

如果用戶下沒有任何數(shù)據(jù)對象 SQL> drop user username;如果用戶下有數(shù)據(jù)對象

SQL> drop user username cascade;注意事項

如果用戶下有含clob,blob字段的表, 應該先刪除這些表后,才能用cascade選項完全刪除.7、角色的概念和管理 24

J2EE @ zxw 角色是命名多個相關權限的組合.能把它賦于其它的用戶或角色我們能創(chuàng)建角色, 使權限管理更容易一些.8、賦于系統(tǒng)的權限語法和例子 語法: SQL> GRANT sys_priv TO {user|role|PUBLIC} [WITH ADMIN OPTION];例子: SQL> GRANT create session TO sue, rich;SQL> GRANT create table To scott, manager;注意: 如果用WITH ADMIN OPTION通過中間用戶賦于的系統(tǒng)權限中間用戶刪除后, 系統(tǒng)權限仍然存在.9、賦于數(shù)據(jù)對象級的權限語法和例子 語法: SQL> GRANT object_priv [(columns)] ON object TO {user|role|PUBLIC} [WITH GRANT OPTION];例子: SQL> GRANT select ON s_emp TO sue, rich;SQL> GRANT update(name, region_id)ON s_dept TO scott, manager;注意: 如果用WITH GRANT OPTION通過中間用戶賦于的對象權限 中間用戶刪除后,對象權限就不存在了.-------------

----------------------------完--------------------------補充:

rownum表中的行號,自動生成的,只能用<,<=操作符 rowid用來唯一表示數(shù)據(jù)庫表中的一行(1)在oralce上的分頁需要用到偽列,只所以這么做,是因為oralce不支持rownum比較 比如說找出第三行紀錄,那就是 select last_name, salary from(select rownum a, b.* from s_emp b)where a=3 如果找出第10行到第20行的數(shù)據(jù)的話,那就必須用到 select last_name, salary from(select rownum a, b.* from s_emp b)where a > 10 and a < 2;這是sql級別的分頁,優(yōu)點是速度快,缺點是可移植性差;(2)COURSEID COURSENAME SCORE------------------------------1 java 70 2 oracle 90 3 xml 40 4 jsp 30 5 servlet 80 25

J2EE @ zxw SQL> select courseid, coursename ,score ,decode(sign(score-61),-1,'fail','pass')as mark from course_v;COURSEID COURSENAME SCORE MARK----------------------------------1 java 70 pass 2 oracle 90 pass 3 xml 40 fail 4 jsp 30 fail 5 servlet 80 pass

(3)已經(jīng)知道原表

year salary---------------------------------------2000 1000 2001 2000 2002 3000 2003 4000 顯示查詢結果

year salary---------------------------------------2000 1000 2001 3000 2002 6000 2003 10000 即salary為以前年的工資的和; 解答過程如下:

select b.year,sum(a.salary)from test a,test b where a.year<=b.year group by b.year order by year

/*============================== *Author: MartriWang@gmail.com *Date: 09/05/2007 *Description:ORACLE Summary

*============================*/ 匯總:

set autotrace on set autotrace traceonly explain set timing on 或通過SQL*PLUS trace,然后查看user_dump_dest下的跟蹤文件,使用tkprof工具格式化后閱覽。

alter session set events '10046 trace name context forever,level 12';alter session set events '10046 trace name context off';SELECT p.spid,s.username FROM v$session s,v$process p WHERE s.audsid=USERENV('sessionid')AND s.paddr = p.addr;使用方法示例:

DBserver% sqlplus perf/perf

SQL*Plus: Release 9.2.0.6.064bit Production With the Partitioning, OLAP and Oracle Data Mining options JServer Release 9.2.0.6.0-Production SQL> set timing on SQL> set autotrace on SQL> select count(*)from perf_sdcch_nn where start_time =(select max(start_time)from perf_sdcch_nn);COUNT(*)----------638 Elapsed: 00:00:00.80 Execution Plan---------------------------0 SELECT STATEMENT Optimizer=CHOOSE(Cost=1 Card=1 Bytes=8)1 0 SORT(AGGREGATE)2 1 INDEX(RANGE SCAN)OF 'IDX02_PERF_SDCCH_NN'(NON-UNIQUE)(Cost=2 Card=1495 Bytes=11960)3 2 SORT(AGGREGATE)4 3 INDEX(FULL SCAN(MIN/MAX))OF 'IDX02_PERF_SDCCH_NN'(NON-UNIQUE)(Cost=1 Card=3852090 Bytes=30816720)Statistics---------------------------0 recursive calls 0 db block gets 15 consistent gets 0 physical reads 0 redo size 492 bytes sent via SQL*Net to client 656 bytes received via SQL*Net from client 2 SQL*Net roundtrips to/from client 0 sorts(memory)0 sorts(disk)1 rows processed SQL> 從上面的示例我們可以看到,該SQL語句執(zhí)行花了0.8秒,select語句和inline view,都使用了名為'IDX02_PERF_SDCCH_NN'的索引

物理讀為0,redo log size為0,沒有生成REDO日志。

第五篇:黑馬程序員c語言教程:Oracle簡介

9.通過子查詢建表 通過子查詢建表的例子

SQL>CREATE TABLE emp_41 AS SELECT id, last_name, userid, start_date FROM s_emp WHERE dept_id = 41;SQL> CREATE TABLE A as select * from B where 1=2;只要表的結構.10.用子查詢建表的注意事項

可以關連多個表及用集合函數(shù)生成新表,注意選擇出來的字段必須有合法的字段名稱,且不能重復。

用子查詢方式建立的表,只有非空NOT NULL的約束條件能繼承過來, 其它的約束條件和默認值都沒有繼承過來.根據(jù)需要,可以用alter table add constraint ……再建立其它的約束條件,如primary key等.11.Foreign Key的可選參數(shù)ON DELETE CASCADE 在創(chuàng)建Foreign Key時可以加可選參數(shù): ON DELETE CASCADE它的含義是如果刪除外鍵主表里的內容,子表里相關的內容將一起被刪除.如果沒有ON DELETE CASCADE參數(shù),子表里有內容,父表里的主關鍵字記錄不能被刪除掉.12.如果數(shù)據(jù)庫表里有不滿足的記錄存在,建立約束條件將不會成功.13.給表創(chuàng)建和刪除同義詞的例子 SQL> CREATE SYNONYM d_sum 2 FOR dept_sum_vu;SQL> CREATE PUBLIC SYNONYM s_dept 2 FOR alice.s_dept;SQL> DROP SYNONYM s_dept;

十、ORACLE里的數(shù)據(jù)字典

1.什么是數(shù)據(jù)字典?ORACLE的數(shù)據(jù)字典是數(shù)據(jù)庫的重要組成部分之一,它隨著數(shù)據(jù)庫 的產(chǎn)生而產(chǎn)生, 隨著數(shù)據(jù)庫的變化而變化, 體現(xiàn)為sys用戶下所有的一些表和視圖.2.數(shù)據(jù)字典里存了以下內容: 用戶信息

用戶的權限信息

所有數(shù)據(jù)對象信息表的約束條件統(tǒng)計分析數(shù)據(jù)庫的視圖等 不能手工修改數(shù)據(jù)字典里的信息.16

J2EE @ zxw 3.常用的數(shù)據(jù)字典

Dictionary 存放所有數(shù)據(jù)表,視圖,同義詞名稱和解釋 Dict_columns 數(shù)據(jù)字典里字段名稱的和解釋 Dba_users 用戶 Dba_tablespaces 表空間

Dba_data_files 數(shù)據(jù)庫的文件 Dba_free_space 空閑表空間 Dba_rollback_segs 回滾段

User_objects 數(shù)據(jù)對象 User_constraints 約束條件 User_sequences 序列號 User_views 視圖 User_indexes 索引 User_synonyms 同義詞

Session_roles 用戶的角色 User_role_privs 用戶的角色權限 User_sys_privs 用戶的系統(tǒng)權限 User_tab_privs 用戶的表級權限 V$session 實時用戶情況 V$sysstat 實時系統(tǒng)統(tǒng)計 V$sesstat 實時用戶統(tǒng)計 V$sgastat 實時SGA使用 V$locked_object 實時鎖 V$controlfile 控制文件 V$logfile 日志文件 V$parameter 參數(shù)文件 4.數(shù)據(jù)字典的分類 數(shù)據(jù)字典四大類別

User_ 用戶下所有數(shù)據(jù)庫對象

All_ 用戶權限范圍內所有的數(shù)據(jù)庫對象 Dba_ 所有的數(shù)據(jù)庫對象

V$Content$nbsp;統(tǒng)計分析數(shù)據(jù)庫的視圖 賦于oem_monitor權限非DBA用戶也可查詢V$*視圖

5.查詢數(shù)據(jù)字典

SQL> select * from dictionary where instr(comments,'index')>0;SQL> select constraint_name, constraint_type, 2 search_condition, r_constraint_name 3 from user_constraints 4 where table_name = ‘&table_name';十一.控制數(shù)據(jù)、INSERT(往數(shù)據(jù)表里插入記錄的語句)SQL> insert into 表名(字段名1, 字段名2, ……)values(值1, 值2, ……);SQL> insert into 表名(字段名1, 字段名2, ……)select(字段名1, 字段名2, ……)from 另外的表名 where 條件;可以用&標記變量的方法多次輸入記錄

快速插入數(shù)據(jù)的方法, 一般用于大于128M的數(shù)據(jù)轉移 SQL> insert /*+ append */ into 表名

select * from 另外的用戶名.另外的表名 WHERE 條件;SQL> commit;注意事項:

用INSERT /*+ APPEND */ 的方法會對target_tablename產(chǎn)生級別為6的獨占鎖,如果運行此命令時還有對target_tablename的DML操作會排隊在它后面, 對OLTP系統(tǒng)在用的表操作是不合適的。17

J2EE @ zxw 2.插入字符串類型的字段的注意事項: 字符串類型的字段值必須用單引號括起來, 例如: ’GOOD DAY’

如果字段值里包含單引號’ 需要進行字符串轉換, 我們把它替換成兩個 單引號’ ’

字符串類型的字段值超過定義的長度會出錯, 最好在插入前進行長度校驗 ‘’ 標記是NULL, user 標明當前用戶

日期字段的字段值可以用當前數(shù)據(jù)庫的系統(tǒng)時間SYSDATE, 精確到秒

用字符串轉換成日期型函數(shù)TO_DATE(‘2001-08-01’,’YYYY-MM-DD’)TO_DATE()還有很多種日期格式, 可以參看ORACLE DOC.年-月-日 小時:分鐘:秒 的格式YYYY-MM-DD HH24:MI:SS NSERT時最大可操作的字符串長度小于等于4000個單字節(jié), 如果要插入更長的字符串, 請考慮字段用CLOB類型, 方法借用ORACLE里自帶的DBMS_LOB程序包.3、UPDATE(修改數(shù)據(jù)表里記錄的語句)SQL> UPDATE 表名 SET 字段名1=值1, 字段名2=值2, …… WHERE 條件;如果修改的值N沒有賦值或定義時, 將把原來的記錄內容清為NULL, 最好在修改前進行非空校驗;值N超過定義的長度會出錯, 最好在插入前進行長度校驗.新功能,可以修改子查詢后的結果集

例子:SQL> update(select * from s_dept)set id=50 where id=60;

4、DELETE(刪除數(shù)據(jù)表里記錄的語句)SQL> DELETE FROM 表名 WHERE 條件;注意:刪除記錄并不能釋放ORACLE里被占用的數(shù)據(jù)塊表空間.它只把那些 被刪除的數(shù)據(jù)塊標成unused.如果確實要刪除一個大表里的全部記錄, 可以用 TRUNCATE 命令, 它可以釋放占用的數(shù)據(jù)塊表空間

SQL> TRUNCATE TABLE 表名;此操作不可回退.5、SQL語句的分類 數(shù)據(jù)定義語言(DDL):create、alter、drop(創(chuàng)建、修改結構、刪除)(其他:rename)數(shù)據(jù)操縱語言(DML):insert、delete、select、update(增、刪、查、改)(其他:truncate)

數(shù)據(jù)控制語言(DCL):grant、revoke(授權、回收)、set role 事務控制:commit、rollback、savepoint(其他:lock table、set constraint、set transaction)

審計控制:audit、noaudit 系統(tǒng)控制:alter system 會話控制:alter session 其他語句:comment(添加注釋)、explain plan、analyze、validate、call

6、ORACLE里事務控制 Commit 提交事務 Rollback 回退事務

Savepoint 設置斷點, 在事務中標記位置, 事務結束, 斷點釋放

事務結束的情況遇到commit或者rollback遇到DDL和DCL語句發(fā)現(xiàn)錯誤,如死鎖用戶退出

SQL*PLUS系統(tǒng)重啟或崩潰 7.DML操作的注意事項 18

J2EE @ zxw 以上SQL語句對表都加上了行級鎖, 確認完成后, 必須加上事物處理結束的命令COMMIT 才能正式生效, 否則改變不一定寫入數(shù)據(jù)庫里.行級鎖也未能得到釋放.如果想撤回這些操作, 可以用命令 ROLLBACK 復原.在運行INSERT, DELETE 和 UPDATE 語句前最好估算一下可能操作的記錄范圍, 應該把它限定在較小(一萬條記錄)范圍內,.否則ORACLE處理這個事物用到很大的回退段.程序響應慢甚至失去響應.如果記錄數(shù)上十萬以上這些操作, 可以把這些SQL語句分段分次完成, 其間加上COMMIT 確認事物處理.太過頻繁的commit不好

下載黑馬程序員c語言教程:Oracle概念(推薦)word格式文檔
下載黑馬程序員c語言教程:Oracle概念(推薦).doc
將本文檔下載到自己電腦,方便修改和收藏,請勿使用迅雷等下載。
點此處下載文檔

文檔為doc格式


聲明:本文內容由互聯(lián)網(wǎng)用戶自發(fā)貢獻自行上傳,本網(wǎng)站不擁有所有權,未作人工編輯處理,也不承擔相關法律責任。如果您發(fā)現(xiàn)有涉嫌版權的內容,歡迎發(fā)送郵件至:645879355@qq.com 進行舉報,并提供相關證據(jù),工作人員會在5個工作日內聯(lián)系你,一經(jīng)查實,本站將立刻刪除涉嫌侵權內容。

相關范文推薦

    黑馬程序員c語言教程:Oracle指令大全

    ------------------------- --order by的用法 --員工信息按照姓名正序排列 select * from emp order by ename asc; --員工信息按照倒敘排列 select * from emp order by en......

    黑馬程序員c語言教程:Oracle指令大全

    --sql structured query language --DML--Data Manipulation Language--數(shù)據(jù)操作語言 query information (SELECT), add new rows (INSERT), modify existing rows (UPDAT......

    黑馬程序員c語言教程:Oracle指令大全

    --什么時候用外連接呢?比如領導向你要所有學生的列表,順便把所屬的班級也列出來,就需要外連接 --在Where語句中使用子查詢 --- --雇員中最高薪水的人員名稱 --1,先求出最高......

    黑馬程序員c語言教程:Oracle指令大全(6)

    ------------------------------ --為什么in的后面不能order by ?- --求部門經(jīng)理人中平均薪水最低的部門名稱 (思考題) 第一步,求部門經(jīng)理的雇員編號 select distinct mgr fr......

    黑馬程序員c語言教程:Oracle指令大全(5篇)

    --總結一下select語法 select from where group by having order by ------------------------- -- 執(zhí)行順序very important! -- 首先執(zhí)行where語句將原有記錄過濾; -- 第二......

    黑馬程序員c語言教程:Oracle指令大全(5篇可選)

    ------------------------- --不準用組函數(shù)(即MAX),求薪水的最高值(面試題) --第一種解決辦法: --1,先把所有薪水按照倒序排列 --2,再取第一行 select * from (select sal......

    黑馬程序員c語言教程:Oracle 10G安裝指導

    Oracle 10G安裝指導 1、 解壓文件10201_database_win32.zip,并雙擊解壓目錄下的setup.exe,出現(xiàn)安裝界面,如下: 2、 輸入口令和確認口令,如:password,點擊下一步,出現(xiàn)如下進度條, 注:此......

    黑馬程序員c語言教程:ORACLE的啟動和關閉

    一、ORACLE的啟動和關閉 1、在單機環(huán)境下 要想啟動或關閉ORACLE系統(tǒng)必須首先切換到ORACLE用戶,如下 suProduction on Fri Oct 31 13:53:53 2003 Copyright (c) 1982, 2002, O......

主站蜘蛛池模板: 日本高清视频色wwwwww色| 无码国产精品一区二区免费模式| 日韩av无码一区二区三区| 精品国产电影久久九九| 亚洲午夜福利av一区二区无码| 国产精品午夜爆乳美女视频| 国产亚洲aⅴ在线电影| 国产av一区二区三区传媒| a国产一区二区免费入口| 久久老子午夜精品无码| 国产玉足榨精视频在线观看| 国产精品麻豆欧美日韩ww| 午夜亚洲国产理论片二级港台二级| 少妇激情av一区二区| 无码人妻一区二区三区四区av| 久久久久琪琪去精品色一到本| 中文字幕在线免费看线人| 精品国产三级| 日日噜噜夜夜狠狠视频免费| 东京热无码国产精品| 国产乱子伦视频大全| 吃奶摸下的激烈视频| 黄网站色成年片在线观看| 无码高潮又爽又黄a片软件| 亚韩无码av电影在线观看| 女同久久精品国产99国产精品| 人妻熟妇乱又伦精品视频中文字幕| 久久久久久久极品内射| 久久久久四虎精品免费入口| 亚洲精品一区三区三区在线观看| 国产av一区最新精品| 两性色午夜免费视频| 日韩精品一卡二卡二卡四卡乱码| 欧美性色黄大片www喷水| 成人午夜亚洲精品无码网站| 欧美成人精品午夜免费影视| 天天爽狠狠噜天天噜日日噜| 4hu四虎永久免费地址ww416| 久久天天躁狠狠躁夜夜av浪潮| 亚洲综合色在线观看一区| 色拍拍欧美视频在线看|