oracle知識講解和實例_第1頁
oracle知識講解和實例_第2頁
oracle知識講解和實例_第3頁
oracle知識講解和實例_第4頁
oracle知識講解和實例_第5頁
已閱讀5頁,還剩28頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、-1.數(shù)據(jù)庫概念 1)什么是數(shù)據(jù)庫 存儲數(shù)據(jù)的倉庫. 數(shù)據(jù)庫DataBase:指的是按一定組織和結(jié)構(gòu)存儲的數(shù)據(jù)集合. 關(guān)系型數(shù)據(jù)庫:以表結(jié)構(gòu)存儲 NoSQL:非關(guān)系型數(shù)據(jù)庫,以鍵值對形式存儲 數(shù)據(jù)Data:指的是程序中的字符串,數(shù)值,時間,圖片,大文本等內(nèi)容. DBMS(數(shù)據(jù)庫管理系統(tǒng)):對數(shù)據(jù)庫進行存儲和管理的軟件.例如Oracle,MySQL等 2)為什么要使用數(shù)據(jù)庫 程序中的數(shù)據(jù)需要持久化.持久化可以采用文本和數(shù)據(jù)庫系統(tǒng). 使用數(shù)據(jù)庫系統(tǒng)存儲具有以下優(yōu)點: -存儲和查詢操作方便(SQL) -安全性高 -大量數(shù)據(jù)存儲 常用數(shù)據(jù)庫目前處于關(guān)系型數(shù)據(jù)庫階段: Oracle(Oracle) My

2、SQL DB2(IBM) SQLServer(MS) Oracle發(fā)展史 -Larry Ellision在1970年看到IBM一個研究員寫的一篇文章<論大型關(guān)系型數(shù)據(jù)存儲原型> -Larry和Bob Miner,ED oates三人成立了*研究實驗室.1979開發(fā)出一套數(shù)據(jù)庫系統(tǒng).命名Oracle.(SCOTT/TIGER) -1983年為了突出Oracle數(shù)據(jù)庫產(chǎn)品,將公司名改成了Oralce. -第一位使用Oracle客戶是美國中央情報局 -2009年4月20日74億美金收購SUN *3)怎么使用數(shù)據(jù)庫 數(shù)據(jù)庫通常分為客戶端和服務(wù)器端兩部分. 服務(wù)器端負責(zé)創(chuàng)建存儲結(jié)果,存儲數(shù)據(jù)

3、 客戶端提供使用者界面,操作服務(wù)器端的內(nèi)容. Oracle客戶端程序主要有下幾個類型: -SQLPLUS命令行操作模式 -SQL Developer可視化操作模式 -DBA管理工具(DBA操作權(quán)限) 客戶端程序通過發(fā)送SQL指令操作服務(wù)器端,SQL分類如下: -DDL(Data Definition(定義) Language) 數(shù)據(jù)定義語句.用于創(chuàng)建表結(jié)構(gòu) -DML(Data Manipulation(操作) Language) 數(shù)據(jù)操作語句.用于增刪改表中數(shù)據(jù) -DQL(Data Query Language) 數(shù)據(jù)查詢語句.用于查詢表中數(shù)據(jù) -TCL(Transaction Control

4、 Language) 事務(wù)控制語句.用于將多個DML操作封裝 成一個整體. -DCL(Data Control Language) 數(shù)據(jù)控制語句.用于用戶權(quán)限控制. 日后,在Java需要通過JDBC技術(shù)+SQL實現(xiàn)對數(shù)據(jù)庫的操作.*3.SQL初步 數(shù)據(jù)庫以表為單元進行存儲.表結(jié)構(gòu)如下: 表是由行和列構(gòu)成.列被稱為字段;行被稱為記錄. 需要存儲Person對象信息, 如果Person包含id,name,sex,age屬性. 1)DDL語句 可以創(chuàng)建,刪除,修改表結(jié)構(gòu). a.創(chuàng)建表 create table 表名( 列名 類型, 列名 類型, . ) 注意:最后一列類型后面不加",&qu

5、ot;逗號. create table person( id NUMBER(11), name VARCHAR2(20), sex VARCHAR2(2), age NUMBER(3) ); b.查看表結(jié)構(gòu) desc 表名; desc person; c.刪除表結(jié)構(gòu) drop table 表名; /立刻刪除,不放入回收站 drop table person purge; /恢復(fù)回收站中的表 flashback table 表名 to before drop; 2)DML語句 負責(zé)添加,刪除,更新記錄. a.添加 insert into 表名 (字段名1,字段名2.) values (值1,值2

6、.); insert into person values (4,'jack','男',30); insert into person (id,name,age,sex) values (1,'scott',40,'男'); /age不指定值,默認為null insert into person (id,name,sex) values (2,'tigger','女'); /為age顯示指定null值 insert into person (id,name,age,sex) values (3,&#

7、39;larry',null,'男'); 提示:執(zhí)行DML操作需要commit才會將數(shù)據(jù) 寫入,更新,刪除表 b.更新 update 表名 set 字段名=值,字段名=值 where 字段名=條件值 /將表中所有記錄的age值更新成20 update person set age=20; /將符合name=larry的記錄,age值更新成20 update person set age=32 where name='larry' /將id=2的記錄age更新成20,sex更新成男 update person set age=20,sex='男&#

8、39; where id=2; c.刪除 delete from 表名 where 字段名=條件值 提示:沒有where子句,是刪除所有記錄. /刪除id=4的記錄 delete from person where id=4; 3)TCL 負責(zé)事務(wù)處理.可以將一個或多個DML語句封裝成一個整體.commit;事務(wù)提交,將先前執(zhí)行的DML操作確認rollback:事務(wù)回滾,將先前執(zhí)行的DML操作撤銷,撤銷到上一次commit位置. 4)DQL 負責(zé)表數(shù)據(jù)的查詢. select *或字段名. from 表名 where 字段名=條件值 提示: *代表所有字段; 不寫where子句是查詢所有記錄.

9、/查詢person表中所有記錄所有字段的值 select * from person; /查詢person表中所有記錄的name和sex值 select name,sex from person; /查詢name=scott的id和age值 select id,age from person where name='scott' /查詢name=scott并且sex=男的所有字段信息 select * from person where name='scott' and sex='男' 提示:多個查詢條件,可以采用and和or關(guān)鍵字連接.and表

10、示并且,條件必須同時滿足;or表示或者,條件滿足其中一個即可. 5)DCL 負責(zé)權(quán)限控制.(由DBA使用) create user.創(chuàng)建用戶 grant 授權(quán) revoke 收回權(quán)限=Oracle->數(shù)據(jù)庫軟件->SQL->Java+SQLNUMBER(11,2)/支持2位小數(shù);9位整數(shù)1.字符串操作 1)字符串類型 char,varchar,varchar2,nvarchar2,long,clob 字符串類型常量值,采用單引號''括起來. a.char和varchar的區(qū)別 char固定長度字符串 varchar變長字符串 b.varchar和varchar

11、2的區(qū)別 varchar是ANSI標(biāo)準(zhǔn)組織制定的一個類型,目前Oracle中,varchar和varchar2含義相同,都代表變長字符串類型.日后,varchar類型含義可能會發(fā)生變化,但varchar2不會改變,因此Oracle推薦使用varchar2類型 *c.char和varchar2存儲問題 存儲單位(字節(jié)),能存儲多少個字符,需要看存儲編碼. select userenv('language') from dual; dual:表示虛表;如果select查詢內(nèi)容不需要表參與,通常在from 寫dual虛表. gbk->a-z,0-9占1個字節(jié)長度 中文字符占2個

12、字節(jié)長度 Unicode->都占2個字節(jié)長度 UTF-8->中文占3個字節(jié)長度*提示:為了保險,可以將存儲字符數(shù)*3開辟空間.GBK編碼:abcde中文字 ->11個字節(jié)長度abcdefghij ->10個字節(jié)長度 d. char和varchar2最大長度 varchar2最大長度4000,使用時必須指定大小. char最大長度2000,使用時可以不指定大小, 默認大小為1. e. nvarchar2類型 用于存儲字符,不區(qū)分英文字符和中文字符. 單位(字符). nvarchar2(5)意思是可以存儲5個字符 (一個中文算一個,一個英文也算一個). 內(nèi)部采用Unicod

13、e編碼統(tǒng)一存儲中文和 非中文字符.create table foo_2(c1 varchar2(5),c2 nvarchar2(5);insert into foo_2 (c1,c2) values('中文','中文字');insert into foo_2 (c1,c2) values('中文','插中文字符a');/成功 f. long,clob 能存儲字符類型,超過varchar2空間采用 下面類型: long最大能存儲2G空間. clob最大能存儲4G空間.*使用建議:知道存儲幾個字符采用char如果存儲字符在某個范圍區(qū)間

14、采用varchar2如果存儲字符超出4000字節(jié)空間,采用clob. -select id,name from personwhere name='scott'SELECT id,name FROM personWHERE name='scott'select ID,NAME from PERSONwhere NAME='scott'- g.字符串函數(shù)(記住5個) -可以對字符串值進行操作.具體如下: concat(s1,s2)或者s1 | s2 select concat(c1,c2) from foo_1; select concat(

15、9;hello','scott') from dual; select concat('hello',c1) from foo_1; create table foo_3( first_name varchar2(10), last_name varchar2(20);insert into foo_3 (first_name,last_name)values ('larry','ellison');insert into foo_3 (first_name,last_name)values ('bob',

16、'miner');select concat(first_name,last_name) from foo_3;select first_name|last_name from foo_3;select first_name|' '|last_name from foo_3; -大小寫轉(zhuǎn)換 upper(s):將s轉(zhuǎn)成大寫 lower(s):將s轉(zhuǎn)成小寫 initcap(s):將s中單詞首字母大寫 select upper(first_name) from foo_3; select initcap(first_name) from foo_3; select i

17、nitcap(first_name)|' '|initcap(last_name) from foo_3; select initcap(first_name|' '|last_name) from foo_3 -過濾空格 trim(s):過濾s中前后(左右)空格 ltrim(s):過濾s中前面(左)空格 rtrim(s):過濾s中后面(右)空格 ' hello ' ' scott ' select trim(' hello ')|trim(' scott ') from dual; 結(jié)果hello

18、scott select ltrim(' hello ')|trim(' scott ') from dual; 結(jié)果hello scott (保留hello后面的,其他去掉) select trim(' hello scott ') from dual; 結(jié)果hello scott (中間空格無法去掉) -補位函數(shù) lpad(s,n,char) : 當(dāng)s不夠n位時,在s左邊補充 char字符. rpad(s,n,char) : 當(dāng)s不夠n位時,在s右邊補充 char字符. 注意:如果s超出n位,采取截取方式保留n位./將first_name值格

19、式化成6位,不夠右邊補空格 select rpad(first_name,6,' ')|last_name from foo_3;結(jié)果如下:larry ellisonbob miner -截取函數(shù) substr(s,begin,size):對s進行截取;begin表示從第幾個字符開始截取;size表示截取多少個字符 substr(s,begin): 如果begin為負數(shù),表示從后向前取begin位字符 如果begin為正數(shù),表示從begin位開始取到最后 'javasejavaee12345' /從第7個字符開始截取,截取6個字符 select substr(&

20、#39;javasejavaee12345',7,6) from dual; 結(jié)果javaee /從第13位開始截取,取5個字符 select substr('javasejavaee12345',13,5) from dual; /從第13位開始截取,取到最后 select substr('javasejavaee12345',13) from dual; 結(jié)果12345 /從第7位開始截取,取到最后 select substr('javasejavaee12345',7) from dual; 結(jié)果javaee12345 /從后向前取

21、5個字符 select substr('javasejavaee12345',-5) from dual; 結(jié)果12345/從第2個字符取,取2個(一個中文算一個長度)select substr('中文字符',2,2) from dual;結(jié)果:文字-字符查找 instr(s,s1,begin,n):在s中查找s1出現(xiàn)的位置. begin表示從哪個字符開始查找;n表示第幾次 匹配. 'abcabcabcabc' /查找第一個匹配'b'的字符位置 select instr('abcabcabcabc','b&

22、#39;) from dual; 結(jié)果2 /從第3個字符開始找'b',返回位置 select instr('abcabcabcabc','b',3) from dual; 結(jié)果5 /從第3個字符開始找'b',返回第2次匹配的位置 select instr('abcabcabcabc','b',3,2) from dual; 結(jié)果8 create table foo_4( name varchar2(20); insert into foo_4 values ('Hello.java'

23、); insert into foo_4 values ('Snake.java'); insert into foo_4 values ('MyThread.java'); 練習(xí):取出類名 select substr(name,1,instr(name,'.')-1) from foo_4; 結(jié)果: Hello Snake MyThread -計算長度length(s):計算s字符個數(shù).(一個中文算一個長度)2.數(shù)值操作 1)數(shù)值類型 number Oracle采用number類型定義整數(shù)和浮點數(shù). number(p,s) : p表示有效位數(shù);

24、s表示小數(shù)位數(shù). create table foo_5( c1 number, c2 number(2), c3 number(5,2), c4 number(3,-2), c5 number(2,3);number:默認有效位38,即可存整數(shù), 又可以存小數(shù).位數(shù)可以動態(tài)分配.insert into foo_5 (c1) values (100);insert into foo_5 (c1) values (100.005);number(2):整數(shù)定義,有效位為2.存儲0-99值.insert into foo_5 (c2) values (10);/允許insert into foo_5

25、 (c2) values (100);/錯誤insert into foo_5 (c2) values (12.83);/采用四舍五入取整13insert into foo_5 (c2) values (12.43);/采用四舍五入取整12number(5,2):浮點數(shù)定義,2位小數(shù);整數(shù)5-2=3個.insert into foo_5 (c3) values (100.1356);/允許100.14insert into foo_5 (c3) values (1000.1346);/錯誤insert into foo_5 (c3) values (999.9956);/錯誤number(3,

26、-2):整數(shù)定義,整數(shù)位3-(-2)=5位. 小數(shù)點左邊2位按四舍五入清0;insert into foo_5 (c4) values (12345);/12300insert into foo_5 (c4) values (12354);/12400insert into foo_5 (c4) values (123.56789);/100insert into foo_5 (c4) values (12.356789);/0number(2,3):小于1的數(shù),小數(shù)位是3位.insert into foo_5 (c5) values (0.02345);/0.023insert into f

27、oo_5 (c5) values (0.02354);/0.024insert into foo_5 (c5) values (0.12345);/錯誤=NUMBER使用規(guī)則=NUMBER(p,s)-NUMBER(p):整數(shù)定義,整數(shù)位是p位-NUMBER(p,s) 如果整數(shù)位超出p-s,會報錯 如果小數(shù)位超出s,會對s之后內(nèi)容四舍五入處理-p>0時 s>0時,會對數(shù)值小數(shù)點右邊保留s位, 后面的進行四舍五入 s=0時,采用四舍五入取整 s<0時,會對數(shù)值小數(shù)點左邊s位四舍五入清0,小數(shù)點右邊可以忽略不計-p<s時 該數(shù)值是一個小于1的數(shù).小數(shù)位是s位. 小數(shù)點右側(cè)s-

28、p位為0.(否則報錯) number(2,3)- 0.0xx number(2,4)- 0.00xx*提示:重點掌握住整數(shù)和浮點是定義. number(11);number(11,2) 2)數(shù)值函數(shù)(記住2個) - round():四舍五入 /round(n)一個參數(shù)是取整 select round(1.234) from dual;/四舍五入取整1 select round(1.678) from dual;/四舍五入取整2 /round(n,s)四舍五入保留s位小數(shù) select round(1.234,2) from dual;/1.23 select round(1.678,2) fr

29、om dual;/1.68 -trunc():截取 /trunc(n)一個參數(shù)取整,將小數(shù)截掉 select trunc(1.678) from dual;/截掉,結(jié)果1 /trunc(n,s)保留s位小數(shù),將多余的截掉 select trunc(1.678,2) from dual;/1.67 -mod():求余數(shù) /取5除以2的余數(shù) select mod(5,2) from dual;/結(jié)果1 select mod(5,3) from dual;/結(jié)果2 -ceil(n):向上取整(取大于或等于n的整數(shù)) /對5/2=2.5結(jié)果向上取整 select ceil(5/2) from dual

30、;/3 /取大于或等于-2.5的整數(shù) select ceil(-2.5) from dual;/-2-floor(n):向下取整(取小于或等于n的整數(shù)) /對5/2=2.5結(jié)果向下取整 select floor(5/2) from dual;/2 /對3.0向下取整 select floor(3.0) from dual;/3 /取小于或等于-2.5的整數(shù) select floor(-2.5) from dual;/-3 =create table foo_6( name varchar2(20), salary number(11,2);insert into foo_6 (name,sal

31、ary) values ('Scott',4000.58);insert into foo_6 (name,salary) values ('tiGGER',3000.25);1)查看名字和工資,工資只看整數(shù)位 select name,trunc(salary) from foo_6; select name,floor(salary) from foo_6;2)查詢名字是scott的信息 select name,salary from foo_6 where lower(name)='scott' select name,salary from

32、 foo_6 where upper(name)='SCOTT'liangjq1.日期操作 *1)日期類型 date:存儲年月日小時分鐘秒 timestamp:存儲年月日小時分鐘秒毫秒時區(qū) 上述類型定義時不需要指定大小. *2)日期關(guān)鍵字 sysdate : 獲取Oracle服務(wù)器系統(tǒng)當(dāng)前時間 systimestamp : 獲取Oracle服務(wù)器系統(tǒng)當(dāng)前時間 create table goo_1( c1 date, c2 timestamp); /查詢Oracle服務(wù)器系統(tǒng)時間 select sysdate from dual; /將Oracle系統(tǒng)時間插入 insert in

33、to goo_1 (c1,c2) values (sysdate,systimestamp); *3)轉(zhuǎn)換函數(shù) 默認情況下,Oracle date格式是'DD-MON-RR',即'日-月-年'.只有輸入此格式字符串Oracle才能轉(zhuǎn)換成date插入數(shù)據(jù)表. insert into goo_1 (c1,c2) values ('08-DEC-08',systimestamp); to_date(s,format):將符合format格式的s字符串 轉(zhuǎn)成date to_char(date,format):將date值按format轉(zhuǎn)換成 字符串 to

34、_timetamp(s,format):將s字符串轉(zhuǎn)成 timestamp類型 format格式元素為yyyy-mm-dd hh:mi:ss /將字符串轉(zhuǎn)成日期插入 insert into goo_1 (c1) values (to_date('2008-08-08','yyyy-mm-dd'); /將date值轉(zhuǎn)成字符串 select to_char(c1,'yyyy-mm-dd') from goo_1; /提取date值的月份信息 select to_char(c1,'mm') from goo_1; /將date值轉(zhuǎn)成年月

35、日小時(24小時制)分鐘秒字符串 select to_char(c1,'yyyy-mm-dd hh24:mi:ss') from goo_1;/插入一個timestamp值insert into goo_1 (c2) values (to_timestamp('2013-12-1 15:10:20', 'yyyy-mm-dd hh24:mi:ss'); 4)其他函數(shù) 2013-12-6->2013-12-31 -last_day(d):返回d日期中月份的最后一天 的日期select last_day(sysdate) from dual;

36、select last_day(to_date('2008-02-05','yyyy-mm-dd') from dual; -add_months(d,n):對d日期值的月份加n. n值可以為負數(shù). /對月份加1,結(jié)果2008-03-05select add_months( to_date('2008-02-05','yyyy-mm-dd'),1) from dual; =案例= create table goo_2( name varchar2(20), birth date); insert into goo_2 values

37、('scott', to_date('1990-08-08','yyyy-mm-dd'); insert into goo_2 values('tiger', to_date('1995-12-05','yyyy-mm-dd'); insert into goo_2 values('larry', to_date('1950-01-08','yyyy-mm-dd'); insert into goo_2 values('bob', to

38、_date('1945-12-08','yyyy-mm-dd'); /獲取當(dāng)前月過生日的員工 select * from goo_2 where to_char(birth,'mm')=to_char(sysdate,'mm'); /獲取下個月過生日的員工./如果加-1表示上個月過生日的員工 select * from goo_2 where to_char(birth,'mm')= to_char(add_months(sysdate,1),'mm'); 提示:對月份進行加減,需要對年進行加減可以

39、add_months(d,12)加1年;add_months(d,-12)減1年.需要對日進行加減,使用date+1或date-1操作.-months_between(d1,d2):計算d1和d2差多少個月 計算d1-d2=月份差 select months_between( to_date('2013-8-20','yyyy-mm-dd'), to_date('2013-5-5','yyyy-mm-dd') ) from dual; /查詢員工名字和年齡 select name, floor(months_between(sys

40、date,birth)/12) from goo_2;-next_day(d,星期幾):從d日期開計算下一個 星期幾的時間日期. select next_day(sysdate,1) from dual;/1周日,2周一,3周二,.7周六 select next_day(sysdate,'tue') from dual; /下周二日期 select next_day(sysdate,'fri') from dual; /下周五日期-least(n1,n2):返回兩個數(shù)值中小的那一個 select least(2,5) from dual;/2 select le

41、ast(sysdate, to_date('2008-8-8','yyyy-mm-dd') from dual;/返回2008-8-8日期-greatest(n1,n2):返回兩個數(shù)值中大的那一個 select greatest(2,5) from dual;/5 select greatest(sysdate, to_date('2008-8-8','yyyy-mm-dd') from dual;/返回sysdate-round(d):對日期的小時分鐘秒部分進行 舍入操作(12小時前的舍棄; 12小時后的日期加1) select

42、 round(to_date('2013-12-6 11:59:59', 'yyyy-mm-dd hh24:mi:ss') from dual;/返回2013-12-6 00:00:00 select round(to_date('2013-12-6 12:00:00', 'yyyy-mm-dd hh24:mi:ss') from dual;/返回2013-12-7 00:00:00-trunc(d):對日期的小時分鐘秒部分截取掉.-extract函數(shù) extract(year from 日期值)/返回日期值的年 extract(

43、month from 日期值)/返回日期值的月 extract(day from 日期值)/返回日期值的日select extract(year from sysdate) from dual;select extract(month from sysdate) from dual;/獲取小時分鐘秒部分,/必須是timestamp類型值才可以用extract(hour from timestamp類型值)/返回小時extract(minute from timestamp類型值)/返回分鐘extract(second from timestamp類型值)/返回秒select extract(h

44、our from systimestamp) from dual;select systimestamp from dual;2.空值操作(null) 各個字段都可以放null,意思是沒有值. create table goo_3( id number(3), name varchar2(20); *1)null的寫入 /插入空值 insert into goo_3 (id,name) values(1,null); /不指定 insert into goo_3 (id) values (2); /更新成空值 insert into goo_3 (id,name) values (3,'

45、;scott'); update goo_3 set name=null where id=3; *2)null條件查詢select * from goo_3 where name=null;/錯誤應(yīng)用select * from goo_3 where name is null;/正確select * from goo_3 where name is not null;/正確 3)空值函數(shù) -nvl(字段,值1):當(dāng)字段值為null時返回值1; 字段值不為null返回字段值; /查詢id和name列值,如果name為null /顯示'無名氏' select id,nvl

46、(name,'無名氏') from goo_3; -nvl2(字段,值1,值2):當(dāng)字段值不為null返回值1; 當(dāng)字段值為null返回值2; /name有值返回'有名字'為null返回'無名氏' select id,nvl2(name,'有名字','無名氏') from goo_3; *4)非空約數(shù) 不允許某列出現(xiàn)null的寫入. create table goo_4( id number(3) not null, name varchar2(20) not null ); insert into goo_4 (

47、id,name) values(1,null);/錯誤 insert into goo_4 (id) values (2);/錯誤-面試題-drop table xxx;/刪除表結(jié)構(gòu)和數(shù)據(jù),釋放空間delete from xxx;/刪除表數(shù)據(jù),結(jié)構(gòu)還在.可以回滾truncate table xxx;/刪除表數(shù)據(jù),結(jié)構(gòu)還在,/效率高,數(shù)據(jù)不能回滾-3.DDL操作 可以創(chuàng)建,刪除和修改表結(jié)構(gòu)信息. 1)添加一列字段 alter table 表名 add 字段名 類型; -案例- create table goo_5( id number(3) not null, name varchar2(20)

48、 not null ); /添加salary工資列number(9,2),不允許為null 2)修改字段類型和大小,是否允許為空 alter table 表名 modify (字段 類型); /將salary大小改成number(11,2),允許為空alter table goo_5 modify (salary number(11,2) null); 提示:如果修改類型;或?qū)⒋鎯臻g大改成小的;修改成非空;可能會產(chǎn)生錯誤,原因是可表中現(xiàn)有數(shù)據(jù)沖突導(dǎo)致改表結(jié)構(gòu)失敗. 3)刪除一列字段 alter table 表名 drop column 字段名; /刪除salary列 alter table

49、goo_5 drop column salary; 4)修改表名字 rename 表名 to 新表名; 提示:表名最大長度30,一個中文占2個的話, 最大用15個中文字符.避免名稱與關(guān)鍵字沖突. 不要以數(shù)字和_開始. create table _a(id number(2);/命名錯誤 *5)字段設(shè)置default默認值 在insert操作時,不為該字段指定值時, 采用默認值寫入.顯式指定值時,指定 什么寫入什么,null也可以寫入. create table goo_6( id number(3), name varchar2(20) not null, salary number(11,2

50、) default 1000, login_time date default sysdate ); /salary和login_time的default值有效 insert into goo_6 (id,name) values (1,'scott'); /顯式指定,salary的default無效,寫入1500 insert into goo_6 (id,name,salary) values (2,'tiger',1500); /顯式指定,salary的default無效,寫入null insert into goo_6 (id,name,salary)

51、values (2,'tiger',null); 6)創(chuàng)建表 create table 表名( 字段名 類型, . 字段名 類型) 上面是創(chuàng)建一個新表及其結(jié)構(gòu).如果需要從現(xiàn)有表復(fù)制一個表出來,可以采用下面語法: create table 表名 as select 語句; /基于goo_6復(fù)制一個新表goo_7 create table goo_7 as select id,name,salary from goo_6; /基于goo_6復(fù)制表結(jié)構(gòu),沒有數(shù)據(jù) create table goo_8 as select id,name,salary from goo_6 where

52、name is null; *7)主鍵約束 a.主鍵特點 -非空,不允許為null -唯一,不允許重復(fù) -企業(yè)中一個表肯定會定義一個主鍵 -主鍵其實就是字段(可以由一到多個字段 承擔(dān)主鍵職責(zé)) -主鍵用于定位要操作的某一條記錄 (利用主鍵值查詢,最多返回一條) -主鍵值一般不參與業(yè)務(wù)操作,不允許更新 /oracle自動分配一個存儲主鍵名稱 create table goo_9( id number(11) primary key, name varchar2(20), idcardno varchar2(18), age number(3) ; 或 指定主鍵存儲名稱goo9_pk create table goo_9( id number(11) , name varchar2(20), idcardno varchar2(18), age number(3), c

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論