版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、數(shù)據(jù)庫(kù)原理及開(kāi)發(fā)應(yīng)用(總結(jié)的知識(shí)儲(chǔ)備)1. 數(shù)據(jù)庫(kù)就是儲(chǔ)存數(shù)據(jù)的倉(cāng)庫(kù),專業(yè)的解釋就是對(duì)數(shù)據(jù)存儲(chǔ)和管理的軟件和數(shù)據(jù)本身統(tǒng)稱為數(shù)據(jù)庫(kù)。2. 大型數(shù)據(jù)庫(kù)有 Oracle,Sql sever屬于中型數(shù)據(jù)庫(kù), 小的太多忽略不計(jì),要知道就上網(wǎng)查。3. 數(shù)據(jù)庫(kù)管理系統(tǒng)的主要功能:數(shù)據(jù)庫(kù)定義功能;數(shù)據(jù)存取功能;數(shù)據(jù)庫(kù)運(yùn)行管理;數(shù)據(jù)庫(kù)的建立和維護(hù)功能。4. 數(shù)據(jù)庫(kù)的三級(jí)模式構(gòu):外模式、模式和內(nèi)模式。(外模式即是用戶模式可以多個(gè),模式只能一個(gè),內(nèi)模式就是儲(chǔ)存模式)。5.DDL: 數(shù)據(jù)庫(kù)模式定義語(yǔ)言 DDL(Data Definition Language)。6.DML:數(shù)據(jù)操作語(yǔ)言( data manipulat
2、ionlanguage )。7. DBMS:數(shù)據(jù)庫(kù)管理系統(tǒng) (Database Management System) 。8. DBS:數(shù)據(jù)庫(kù)系統(tǒng)( Database System )。9.DBA:數(shù)據(jù)庫(kù)管理員( Database Administrator)。從三方面學(xué)習(xí)數(shù)據(jù)庫(kù)1. 數(shù)據(jù)庫(kù)是如何儲(chǔ)存數(shù)據(jù)的? (主鍵,外鍵,唯一鍵)2.數(shù)據(jù)庫(kù)是如何操作數(shù)據(jù)的?(insert update delete)3.數(shù)據(jù)庫(kù)是如何顯示數(shù)據(jù)的?(select重點(diǎn) )精選文檔操作及代碼1. Crate table 語(yǔ)句: create table student(stu_name nvarchar(30) no
3、t null,stu_numb int not null,stu_sex nchar(1) not null);2. 主鍵外鍵: stu_numb int primary key;(可以在 int 和primary 中間加上 constraint約束名稱 )。sch_add nvarchar(30)foreignkey referencesstudent (stu_numb);順帶回憶一下主鍵和外鍵的定義:主鍵:能夠唯一標(biāo)示一個(gè)事物的的字段或者多個(gè)字段的組合,叫主鍵。(含有主鍵的表叫做主鍵表,主鍵一般是整數(shù)不建議用字符串,而且一般用代理主鍵不要用業(yè)務(wù)主鍵,也就是說(shuō)不要用有業(yè)務(wù)的字段作為主鍵,一
4、般就用沒(méi)有含義的編號(hào)當(dāng)做主鍵。)外鍵:如果一個(gè)表中的若干個(gè)字段來(lái)自若干個(gè)表的主鍵或者唯一鍵,就稱這若干個(gè)字段為外鍵。(含有外鍵的表叫做外鍵表, 通常都來(lái)自主鍵, 因?yàn)槲ㄒ绘I可能為null,而且外鍵不一定來(lái)自別的表可能就來(lái)自本表)。自認(rèn)為總結(jié)的超好。2精選文檔哦哦,還有刪除表的時(shí)候先刪外鍵表,不然先刪主鍵會(huì)報(bào)錯(cuò),原因很簡(jiǎn)單,外鍵引用錯(cuò)誤。沒(méi)完,主鍵約束:不允許重復(fù)元素,避免了數(shù)據(jù)的冗余。外鍵約束:從語(yǔ)法上保證所關(guān)聯(lián)的事物一定存在,而且事物和事物之間的關(guān)系是通過(guò)外鍵來(lái)體現(xiàn)的。3. check 語(yǔ)句 : stu_mark int check(stu_mark>=60 and stu_mark&
5、lt;=100) ;check 約束:保證事物屬性的取值在合法的范圍內(nèi)。4.insert語(yǔ)句: insertintostudentvalues( 施寧一,14,男 ); (必須把所有字段全都輸入除非有null的要寫(xiě) null ); 也可以是: insert into (stu_name ,stu_sex) values( 施寧一,男 );5.default語(yǔ)句: stu_sex nchar(1) default (男 );default約束:保證事物的屬性一定會(huì)有一個(gè)值。6.unique 語(yǔ)句: stu_name nvarchar(30) unique;表示其取值唯一不能重復(fù)。3精選文檔7.
6、update 語(yǔ)句:(書(shū)上沒(méi)寫(xiě)這,網(wǎng)上找的好例子) 我們剛剛發(fā)現(xiàn) Indiana Jones 的等級(jí)為 16,工資為 $40,000.00 ,我們可以通過(guò)下面的 SQL語(yǔ)句對(duì)數(shù)據(jù)庫(kù)進(jìn)行更新 (并清除那些煩人的NULL)。UPDATE EMPLOYEESSET GRADE = 16, SALARY = 40000WHERE FIRST_NAME = 'Indiana'AND LAST_NAME = 'Jones'8. delete 語(yǔ)句:(一樣是網(wǎng)上的例子,代碼大寫(xiě)的效果一樣但看著不爽) DELETE語(yǔ)句用來(lái)刪除已知表中的行。如同 UPDATE 語(yǔ)句中一樣,所有滿
7、足 WHERE子句中條件的行都將被刪 除。由于 SQL中沒(méi)有 UNDO語(yǔ)句或是“你確認(rèn)刪除嗎?”之類的警告,在執(zhí)行這條語(yǔ)句時(shí)千萬(wàn)要小心。 如果決定取消Los Angeles辦事處并解雇辦事處的所有職員,這一卑鄙的工作可以由以下這條語(yǔ)句來(lái)實(shí)現(xiàn):DELETE FROM EMPLOYEES4精選文檔WHERE BRANCH_OFFICE = 'Los Angeles'如同 UPDATE語(yǔ)句中一樣,省略 WHERE子句將使得操作施加到表中所有的行。簡(jiǎn)單的操作及代碼總結(jié)完了,后面是重點(diǎn)內(nèi)容和難點(diǎn)部分,主要介紹查詢【 select 】1. 計(jì)算列: ( 下面的例子中 student 是表名
8、,其余的為字段名 )select* from student;( 數(shù)據(jù)庫(kù)里的注釋為-)-*表示所有的意思。此語(yǔ)句將表中的所有數(shù)據(jù)顯示。select stu_name from student;select stu_name ,stu_id from student;select stu_name ,stu_id * 10 as“學(xué)號(hào)的十倍” fromstudent;selectstu_name ,stu_id* 10 as “學(xué)號(hào)的十倍” ,stu_id“學(xué)號(hào)” from student;-as可以省略不寫(xiě),此語(yǔ)句可以經(jīng)過(guò)計(jì)算建立新的一列,并且命名。5精選文檔必須知道的是select 123
9、from student;之類的語(yǔ)句結(jié)果不會(huì)報(bào)錯(cuò),會(huì)顯示student表的行數(shù),每行都是123 這個(gè)數(shù)據(jù)。注:在寫(xiě)字段別名時(shí)可以用單引號(hào)也可以用雙引號(hào),但是為了增強(qiáng)可移植性,一般用雙引號(hào),因?yàn)樵?Oracle 大型數(shù)據(jù)庫(kù)中不允許用單引號(hào)。2. distinct 【不允許重復(fù)的】語(yǔ)句。select distinct stu_name from student;- 將一樣的數(shù)據(jù)都過(guò)濾掉,包括 null ,如果有都只剩下一個(gè)。select distinct stu_name ,stu_id from student;- 將這兩個(gè)字段的組合重復(fù)的過(guò)濾掉了。但是不能寫(xiě)成select stu_id ,di
10、stinct stu_name from student ;用來(lái)過(guò)濾第二個(gè)字段,保留第一個(gè)字段。邏輯上有錯(cuò)誤,不可行。3. between【在某個(gè)范圍內(nèi)的查詢】語(yǔ)句。(后面 emp是表名, salary 是薪水的字段)select * from empwhere salary >=1500 and salary <=5000等價(jià)于select * from emp6精選文檔where salary between 1500 and 5000需要注意的是:select * from emp(; )where salary >=1500 and salary <=5000是
11、不可取的,這兩個(gè)命令是一起的,中間不能打分號(hào)。查找另外一個(gè)范圍的數(shù)據(jù)時(shí)可以用以下語(yǔ)句:select * from empwhere salary not between 1500 and 5000( 另外一種是 :select * from empwhere salary <=1500 or salary >=5000)4. in 【若干個(gè)孤立的值】select * from emp where salary in (1500,3000)等價(jià)于select * from emp where salary =1500 or salary =3000select * from emp
12、where salary not in (1500,3000)等價(jià)于select * from emp where salary <>1500 and salary <>3000也作7精選文檔select* from emp where salary!=1500 and salary!= 3000- 數(shù)據(jù)庫(kù)中不等于有兩種寫(xiě)法:!= 和 <> 推薦使用第二種。-or取反時(shí)記得改為and,呵呵。5. top【最前面的若干個(gè)記錄,專屬于sql server不可移植到其他數(shù)據(jù)庫(kù)】select top 5 * from emp;select top 15 percen
13、t * from emp;- 此語(yǔ)句輸出的是百分之 15 的行數(shù)的所有字段 , 如果經(jīng)計(jì)算百分之 15 是 2.1 ,則輸出的是三行。 而且 * 不能省略, 否則報(bào)錯(cuò)。6. null 【沒(méi)有值 空值】零和 null不一樣, null表示沒(méi)有值,而零表示一個(gè)確定的值。null不能參與這些運(yùn)算:<> !=可以參與如下運(yùn)算:isis not( 下面的例子中emp 表示表名,而comm表示字段名 )select * from emp where comm is null;- 輸出的是獎(jiǎng)金為空的員工的信息。select * from emp where comm is not null;-
14、輸出的是獎(jiǎng)金不為空的員工信息。select * from emp where comm <> null;- 輸出為空 errorselect * from emp where comm != null;- 輸出為空 error8精選文檔select * from emp where comm = null;- 輸出為空 error任何類型的數(shù)據(jù)都允許為nullcreatetablet1 (stu_name nvarchar(30),stu_idint,stu_sexnchar(1);insert into t1 values(null,null,null);- 正確任何數(shù)字與nul
15、l參與數(shù)學(xué)運(yùn)算的結(jié)果都是null(后面例子中empna表示員工名字, empsal 表示月薪, empid 表示員工號(hào)碼, comm與上面一樣表示年終獎(jiǎng)金)selectempid,empna,empsal * 12 + commas ”年薪” from emp;運(yùn)行結(jié)果是最后一個(gè)字段都為null ,證明了上面的說(shuō)法。另外一種正確的寫(xiě)法:select empid,empna,empsal * 12 + isnull(comm.,0) as“年薪” from emp;關(guān)于函數(shù) isnull(comm.,0) 的解釋:如果 comm的值為 null 則返回 0,如果不是 null 則返回原本的 co
16、mm值。7. order by 【以某個(gè)字段排序】order by a,b按 a,b 都按升序排列。9精選文檔order by a,b desca 升序, b,降序order by a desc, ba 降序, b 升序order by a desc,b desca,b都按降序排列。- 解釋:默認(rèn)是按照升序排列的,升序是 asc 可以不寫(xiě)。(ascending,descending )8. 模糊查詢【搜索時(shí)經(jīng)常使用】格式:select 字段的集合 from 表名 where 某個(gè)字段的名字 like 匹配條件 (匹配條件通常含有通配符 % )通配符表示任意零個(gè)或者多個(gè)字符select * fr
17、om emp where ename like%A%- 只要含 A 的 ename 就輸出。select * from emp where ename likeA%-ename 只要首字母為A 就輸出。10精選文檔select * from emp where ename like%A-ename 只要以 A 結(jié)尾就輸出。_【下劃線】表示任意單個(gè)字符select * from emp where ename like_A%-ename 只要第二個(gè)字母為A 就輸出。a-fa 到 f中的任意單個(gè)字符select * from emp where ename like_a-f% -ename 中只要
18、第二個(gè)字母是在a 到 f 中的就輸出。a,f a或 fa-c不是 a 到 c 中的任意一個(gè)字母,看清楚是不是自己瞎了別怪我沒(méi)提醒。select*fromemp where部門(mén) iplike'_發(fā),聯(lián) %'(這個(gè)語(yǔ)句是從sql sever里面復(fù)制的,感覺(jué)顏色還蠻好看的)11精選文檔注意:匹配的條件必須用單引號(hào)括起來(lái),不能傻不拉幾的用雙引號(hào),后面來(lái)解釋一下要搜索帶% _的字段時(shí)的方法。直接把在 sql sever里的復(fù)制看:createtablepeople( name nvarchar( 30 ) notnull,ageint )insertintopeoplevalues( &
19、#39; 張三' , 32);insertintopeoplevalues( 'Tom', 66);insertintopeoplevalues( 'a_b', 22);insertintopeoplevalues( 'c%d', 44);insertintopeoplevalues( 'abc_fe', 56);insertintopeoplevalues( 'Snail',18 );insertintopeoplevalues('施寧一',19 );insertintopeopleval
20、ues( 'c%' , 65);insertintopeoplevalues( 'long''s', 100 );select*frompeopleselect*frompeoplewherename like'%/%'escape'/'- 把含有 %的字段輸出了select* frompeoplewherename like'%/_%'escape'/'- 把含有 _的字段輸出了噢耶12精選文檔9. 聚合函數(shù)【多行記錄返回至一個(gè)值,通常用于統(tǒng)計(jì)】函數(shù)的分類單行函數(shù)- 每行返回一個(gè)值
21、多行函數(shù)- 每行返回一個(gè)值聚合函數(shù)是多行函數(shù)例子:select*frompeopleselectupper ( name)frompeople;- 單行函數(shù) upper ()將每行都返回為大寫(xiě)的字母。13精選文檔selectMIN( age )frompeople;- 多行函數(shù)將多行中最小的值找出來(lái)返回了。聚合函數(shù)的分類:max()min()avg()平均值count()求個(gè)數(shù)count(* )返回表中所有記錄的個(gè)數(shù)selectCOUNT(*)frompeople;- 返回了表 people 中的記錄個(gè)數(shù)。count (字段名 )返回字段中包括重復(fù)的記錄的個(gè)數(shù),但是 null不會(huì)被當(dāng)做有效的記
22、錄算在個(gè)數(shù)之內(nèi)。count (distinct字段名 )- 返回了出去重復(fù)的記錄后的記錄個(gè)數(shù)。注意:判斷下列 sql語(yǔ)句是否正確14精選文檔1. select max(sal),min(sal),count(*) from emp; -Ok2.select max(sal)“最高薪 ”,min(sal)“最低薪”,count(*)“員工人數(shù) ”from emp;-Ok3. select max(sal),lower(ename) from emp ;-error單行函數(shù)和多行函數(shù)不能混用10. group by 【分組 難點(diǎn)】格式:group by字段的集合功能:把表中的記錄按照字段分成不同的
23、組。例子:查詢不同部門(mén)的平均工資并且按照升序排列selectdeptno,AVG( sal )fromemp groupby deptnoorderbydeptno;15精選文檔注意理解:group by a, b, c的用法先按 a 分組,如果 a 相同,再按 b 分組,如果 b 相同,再按 c分組最終統(tǒng)計(jì)的是最小分組的信息一定要明白下列語(yǔ)句為什么是錯(cuò)誤的:select deptno , avg(sal) as“部門(mén)平均工資 ”,enamefrom empgroup by deptnoselect deptno,enamefrom empgroup by deptnoselect deptn
24、o, job, salfrom empgroup by deptno,job記住:使用 groupby 之后 select中只能出現(xiàn)分組后的整體信息,不能出現(xiàn)組內(nèi)的詳細(xì)信息11. having 【對(duì)分組后的信息進(jìn)行過(guò)濾難點(diǎn)】1. having 通常是對(duì)分組之后的記錄進(jìn)一步過(guò)濾,所以 having 時(shí)一般先使用 group up16精選文檔2. 如果沒(méi)有使用 group up 而使用了 having 則意味著把所有的內(nèi)容當(dāng)做一組來(lái)處理3. Having 子句出現(xiàn)的字段必須是分組之后組的整體信息, having 子句不允許出現(xiàn)組內(nèi)的詳細(xì)信息。4. Having 子句中不能使用別名,盡管 selec
25、t 中能使用別名。5. having 和 where 的異同相同點(diǎn):都是過(guò)濾的作用, 都不允許使用別名, 只允許使用最原始的字段名。不同點(diǎn): where 是對(duì)原始數(shù)據(jù)進(jìn)行過(guò)濾,而having是對(duì)分組之后的數(shù)據(jù)進(jìn)行過(guò)濾,where必須在 having前面,否則運(yùn)行出錯(cuò)。(沒(méi)試過(guò))例子:selectdeptno, avg (sal)“平均工資 ”, count(*)”部門(mén)人數(shù) ”, max(sal)“部門(mén)的最高工資 ”fromempwheresal> 2000- where 是對(duì)原始記錄的過(guò)濾group bydeptnohavingavg (sal)>3000- 對(duì)分組之后的記錄的過(guò)濾(where 不能出現(xiàn)聚合函數(shù))17精選文檔12. 連接
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年法律規(guī)定公證離婚協(xié)議樣式版B版
- 2024年租賃合同標(biāo)的及權(quán)利義務(wù)
- 2024年版:專業(yè)消毒服務(wù)合同模板3篇
- 2024年采購(gòu)合作詳細(xì)協(xié)議樣式版B版
- 2024年高鐵車站建設(shè)勞務(wù)分包協(xié)議
- 導(dǎo)游基礎(chǔ)知識(shí)-中國(guó)四大宗教考試試題-(三)
- 2024租賃房屋場(chǎng)地合同
- 工業(yè)機(jī)器人技術(shù)基礎(chǔ)及應(yīng)用配套課件
- 2024版全新研究:節(jié)能減排項(xiàng)目貸款合同
- 信息科災(zāi)害脆弱性分析報(bào)告
- Unit4 What can you do Part B read and write (說(shuō)課稿)-2024-2025學(xué)年人教PEP版英語(yǔ)五年級(jí)上冊(cè)
- 2025年MEMS傳感器行業(yè)深度分析報(bào)告
- 2024年度員工試用期勞動(dòng)合同模板(含保密條款)3篇
- DB23-T 3840-2024非煤礦山隱蔽致災(zāi)因素普查治理工作指南
- 機(jī)關(guān)事業(yè)單位財(cái)務(wù)管理制度(六篇)
- 倉(cāng)庫(kù)倉(cāng)儲(chǔ)安全管理培訓(xùn)課件模板
- 風(fēng)力發(fā)電場(chǎng)運(yùn)行維護(hù)手冊(cè)
- 人教版六年級(jí)上冊(cè)數(shù)學(xué)第八單元數(shù)學(xué)廣角數(shù)與形單元試題含答案
- 叉車租賃合同模板
- 河道旅游開(kāi)發(fā)合同
- 住房公積金稽核審計(jì)工作方案例文(4篇)
評(píng)論
0/150
提交評(píng)論