第一篇:黑馬程序員:3分鐘帶你讀懂C語言學(xué)習(xí)路線
黑馬程序員:3分鐘帶你讀懂C/C++學(xué)習(xí)線路圖
隨著互聯(lián)網(wǎng)及互聯(lián)網(wǎng)+深入蓬勃的發(fā)展,經(jīng)過40余年的時間洗禮,C/C++儼然已成為一門貴族語言,出色的性能使之成為高級語言中的性能王者。而在今天,它又扮演著什么樣重要的角色呢?請往下看:
后端服務(wù)器,移動互聯(lián)網(wǎng)后端,經(jīng)典Windows界面開發(fā),移動互聯(lián)網(wǎng)端界面開發(fā),跨平臺界面開發(fā),圖形分析,系統(tǒng)架構(gòu),應(yīng)用設(shè)計,還有現(xiàn)在最為流行的分布架構(gòu)等一些新的技到術(shù)領(lǐng)域。
這么牛的編程語言,你是不是想知道怎樣學(xué)習(xí)和掌握它呢?接下來請看經(jīng)過黑馬程序員小編整理過C/C++工程師必備知識的思維導(dǎo)圖。
初學(xué)者看到這么密集的知識點,是不是有點眼暈?zāi)??的確,C/C++是一門知識面覆蓋很廣的編程語言。想學(xué)好C/C++的你并不需要慌張,內(nèi)容雖多,但依然有法可依。只要有足夠的耐心和毅力,加上正確的學(xué)習(xí)方法,就不怕你學(xué)不好C/C++。
既然如此,C/C++開發(fā)到底需要學(xué)些什么呢,又應(yīng)該怎么學(xué)呢?接下來由黑馬程序員C/C++學(xué)院教你如何從零基礎(chǔ)學(xué)習(xí)C/C++開發(fā),快速進(jìn)入牛人之列,掌握這門編程語言。
一、初級入門階段
在入門之初,首先要做的是通過C/C++語言的學(xué)習(xí)培養(yǎng)編程思維和動手能力,深刻理解面向過程和面向?qū)ο蟮乃枷敕椒ā_@個階段你需要學(xué)習(xí):
① C語言
數(shù)據(jù)類型、變量、內(nèi)存布局、指針基礎(chǔ); 字符串、一維數(shù)組、二維數(shù)組;
一級指針,二級指針,三級指針,N級指針概念,指針數(shù)組和數(shù)組指針;
結(jié)構(gòu)體、文件的使用;
動態(tài)庫的封裝和設(shè)計;
函數(shù)指針回調(diào)函數(shù)。
② C++語言 面向?qū)ο缶幊趟枷耄?/p>
類的封裝,構(gòu)造和析構(gòu)、靜態(tài)成員、對象管理;
類的構(gòu)造(有參構(gòu)造函數(shù)、無參構(gòu)造、拷貝構(gòu)造、默認(rèn)構(gòu)造函數(shù))和析構(gòu); 對象動態(tài)管理、友元函數(shù)、友元類、操作符重載; C++編譯器對象管理模型分析; 類對象的動態(tài)管理(new/delete); 友元函數(shù)和友元類;
運算符重載(一元運算符、二元運算符、運算符重載難點、項目開發(fā)中的運算符重載); 類的繼承、多繼承及其二義性、虛繼承; 多態(tài)(概念、意義、原理剖析、多態(tài)案例);
虛函數(shù)、純虛函數(shù)、抽象類(面向抽象類編程思想案例); 函數(shù)模板、類模板,模板的繼承; C++類型轉(zhuǎn)換;
C++輸入輸出流(標(biāo)準(zhǔn)I/O 文件I/O 字符流I/O);
C++異常處理(異常機制、異常類型、異常變量、異常層次結(jié)構(gòu)、標(biāo)準(zhǔn)異常庫); ③ 常見常用的IDE開發(fā)工具
諸如Windows平臺VC系列:VC++6.0(比較古老);Visual Studio2013, Visual Studio2015;Mac平臺的XCode系列,還有CodeBlock,另附一些高級編輯器Notepad++, EditPlus,UE等一些開發(fā)工具的常用設(shè)置和一些常見快捷鍵的使用。
此階段的學(xué)習(xí)難度系數(shù)不大,掌握這些內(nèi)容之后,可以做些簡單的小項目。當(dāng)然了如果你想用這些技能找工作的話確實是比較困難的。這時你還應(yīng)該在加把勁進(jìn)一步學(xué)習(xí)第二階段。
二、C/C++開發(fā)進(jìn)階
這一階段的目標(biāo)才是達(dá)到C/C++軟件工程師開發(fā)行業(yè)的基本要求,這個階段是我們走向C/C++開發(fā)的進(jìn)階之路,更是一個讓自己找份薪水比較體面的工作的籌碼。
如果在此部分遇到不懂的或者沒有見過的知識點和名詞,可先將本文收藏,供以后細(xì)細(xì)研讀。那么這個階段,我們又應(yīng)該掌握什么呢,繼續(xù)往下看:
①
C++進(jìn)階之STL STL = Standard Template Library,即標(biāo)準(zhǔn)模板庫。這是提高開發(fā)效率的極品工具。通過學(xué)習(xí)此階段,應(yīng)掌握泛型編程技巧,理解容器類在C++語言中的應(yīng)用模式,以及熟練掌握全部STL類的使用方法。
②
C++進(jìn)階之設(shè)計模式
決定一個項目成敗最重要的因素是項目總體的設(shè)計,通過本階段的學(xué)習(xí),可掌握面向?qū)ο缶幊讨兄匾囊画h(huán),是編碼前建模的技巧所在。單例模式;工廠模式;代理模式;迭代模式等,這些都是你要掌握的哦。
③
C++進(jìn)階之?dāng)?shù)據(jù)結(jié)構(gòu)基礎(chǔ)
這是所有編程語言中最應(yīng)該學(xué)習(xí)的部分,程序組成的基礎(chǔ)之一。順序存儲、鏈?zhǔn)酱鎯Α⒀h(huán)鏈表;
雙向鏈表、棧(順序和鏈?zhǔn)?、隊列(順序和鏈?zhǔn)?; 棧的應(yīng)用、樹基本概念及遍歷、二叉樹; 排序算法、并歸算法、選擇、插入、快速、希爾。以上這些內(nèi)容你知道嗎?
④
C++進(jìn)階之UI界面開發(fā)
掌握QT類庫構(gòu)架,圖形界面開發(fā)模型; 掌握QT開發(fā)技巧,消息機制,圖形處理; 掌握QT網(wǎng)絡(luò)編程,UDP,TCP使用方式; 掌握QT文件處理方式,序列化;
掌握QT在windows,linux,ios,android不同平臺下的移植技術(shù)。
⑤
C++進(jìn)階之Unix/Linux網(wǎng)絡(luò)服務(wù)器
掌握Unix/Linux平臺開發(fā)方式; 熟練使用系統(tǒng)調(diào)用;
熟練Unix/Linux內(nèi)存管理,進(jìn)程,線程調(diào)度;
熟悉網(wǎng)絡(luò)服務(wù)器開發(fā)方式,熟練編寫TCP,UCP網(wǎng)絡(luò)服務(wù)程序; 掌握同步/異步IO模型在網(wǎng)絡(luò)編程中的使用方式。
⑥ C++進(jìn)階之?dāng)?shù)據(jù)庫開發(fā)
掌握SQL語言的實用技巧。Oracle,MySQL數(shù)據(jù)庫的使用方式。
如果你能熟練掌握以上列出的技能,具備解決復(fù)雜問題和技術(shù)難點的能力,而且你能獨立開發(fā)一些比較復(fù)雜的功能模塊,那么很榮幸地告訴你,你已經(jīng)達(dá)到中級水平,薪資過萬對你來說簡直是小菜一碟。
三、C++開發(fā)高級
讀到此處的你,相信你有更高的目標(biāo)。即是當(dāng)下炙手可熱的全棧開發(fā)工程師,既曉前端,又通后臺??焖俣ㄎ粏栴},解決問題對他們來說已是小菜一碟,就是人們常說的神秘大牛,只在公司技術(shù)攻關(guān)的時候才會才看到他們的身影。
①此階段軟件開發(fā)工作所需的知識和技能相對較難,高級軟件工程師編碼熟練度和規(guī)范性需要達(dá)到一定要求;
②具備一定的項目能力(包括調(diào)試能力、文檔編寫能力、測試能力等)和綜合技術(shù)素質(zhì)(包括對軟件生命周期的理解、對設(shè)計模式的理解、必備的行業(yè)知識和經(jīng)驗等);.③了解主流的后臺技術(shù)和前后端協(xié)作方式,能從全局角度理解項目的整個生命周期。
如果你能熟練掌握以上三個階段的知識技能,那么你就可以滿足C++開發(fā)行業(yè)的高級需求。
黑馬程序員C/C++學(xué)院:傾力打造永不過時的全棧型C/C++應(yīng)用開發(fā)工程師
C/C++在近40年的發(fā)展歷程中,一直以來都被獵頭作為競相角逐的弄潮兒。黑馬程序員C/C++學(xué)院的課程從市場需求,技術(shù)潮流出發(fā),將企業(yè)需要掌握的技術(shù)做了系統(tǒng)性的整合。同時,在課程的設(shè)計上充分考慮到大部分學(xué)員零基礎(chǔ)的情況,各模塊相互銜接,逐步升級,讓學(xué)員在學(xué)習(xí)過程中能更好地過渡和理解吸收。
如果你也想學(xué)C/C++,如果你也想從零基礎(chǔ)的小白蛻變成優(yōu)秀的開發(fā)人才,歡迎到黑馬程序員C/C++學(xué)院!讓你從此學(xué)習(xí)不再孤單,更能認(rèn)識一些志同道合小伙伴。
十年以來,黑馬程序員堅守“為莘莘學(xué)子改變命運而講課”這份情懷,不忘初心。感謝大家的閱讀!
第二篇:3分鐘帶你讀懂C加加語言學(xué)習(xí)路線
3分鐘帶你讀懂C加加語言學(xué)習(xí)路線
C++語言面向?qū)ο缶幊趟枷?;類的封裝,構(gòu)造和析構(gòu)、靜態(tài)成員、對象管理;類的構(gòu)造(有參構(gòu)造函數(shù)、無參構(gòu)造、拷貝構(gòu)造、默認(rèn)構(gòu)造函數(shù))和析構(gòu);對象動態(tài)管理、友元函數(shù)、友元類、操作符重載;首先還是給大家推薦一個學(xué)習(xí)氛圍很好的裙,我自己的,想要一起學(xué)習(xí)C語言C++的可以加裙四九二八八一四零四,裙內(nèi)有各種資料滿足大家,更新最新行業(yè)行情C++編譯器對象管理模型分析;類對象的動態(tài)管理(new/delete);友元函數(shù)和友元類;運算符重載(一元運算符、二元運算符、運算符重載難點、項目開發(fā)中的運算符重載);類的繼承、多繼承及其二義性、虛繼承;多態(tài)(概念、意義、原理剖析、多態(tài)案例);虛函數(shù)、純虛函數(shù)、抽象類(面向抽象類編程思想案例);函數(shù)模板、類模板,模板的繼承;想要一起學(xué)習(xí)C語言C++的可以加裙四九二八八一四零四,裙內(nèi)有各種資料滿足大家,更新最新行業(yè)行情C++類型轉(zhuǎn)換;C++輸入輸出流(標(biāo)準(zhǔn)I/O文件I/O 字符流I/O);C++異常處理(異常機制、異常類型、異常變量、異常層次結(jié)構(gòu)、標(biāo)準(zhǔn)異常庫);常見常用的IDE開發(fā)工具諸如Windows平臺VC系列:VC++6.0(比較古老);VisualStudio2013, Visual Studio2015;Mac平臺的XCode系列,還有CodeBlock,另附一些高級編輯器Notepad++, EditPlus,UE等一些開發(fā)工具的常用設(shè)置和一些常見快捷鍵的使用。此階段的學(xué)習(xí)難度系數(shù)不大,掌握這些內(nèi)容之后,可以做些簡單的小項目。當(dāng)然了如果你想用這些技能找工作的話確實是比較困難的。想要一起學(xué)習(xí)C語言C++的可以加裙四九二八八一四零四,裙內(nèi)有各種資料滿足大家,更新最新行業(yè)行情喜歡這篇文章記得點一下訂閱,每天為您提供最新行業(yè)資訊,每天上午10點更新。想看關(guān)于什么方面都可評論說
第三篇:黑馬程序員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;只要表的結(jié)構(gòu).10.用子查詢建表的注意事項
可以關(guān)連多個表及用集合函數(shù)生成新表,注意選擇出來的字段必須有合法的字段名稱,且不能重復(fù)。
用子查詢方式建立的表,只有非空NOT NULL的約束條件能繼承過來, 其它的約束條件和默認(rèn)值都沒有繼承過來.根據(jù)需要,可以用alter table add constraint ……再建立其它的約束條件,如primary key等.11.Foreign Key的可選參數(shù)ON DELETE CASCADE 在創(chuàng)建Foreign Key時可以加可選參數(shù): ON DELETE CASCADE它的含義是如果刪除外鍵主表里的內(nèi)容,子表里相關(guān)的內(nèi)容將一起被刪除.如果沒有ON DELETE CASCADE參數(shù),子表里有內(nèi)容,父表里的主關(guān)鍵字記錄不能被刪除掉.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ù)字典里存了以下內(nèi)容: 用戶信息
用戶的權(quán)限信息
所有數(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 用戶的角色權(quán)限 User_sys_privs 用戶的系統(tǒng)權(quán)限 User_tab_privs 用戶的表級權(quán)限 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_ 用戶權(quán)限范圍內(nèi)所有的數(shù)據(jù)庫對象 Dba_ 所有的數(shù)據(jù)庫對象
V$Content$nbsp;統(tǒng)計分析數(shù)據(jù)庫的視圖 賦于oem_monitor權(quán)限非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 條件;可以用&標(biāo)記變量的方法多次輸入記錄
快速插入數(shù)據(jù)的方法, 一般用于大于128M的數(shù)據(jù)轉(zhuǎn)移 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’
如果字段值里包含單引號’ 需要進(jìn)行字符串轉(zhuǎn)換, 我們把它替換成兩個 單引號’ ’
字符串類型的字段值超過定義的長度會出錯, 最好在插入前進(jìn)行長度校驗 ‘’ 標(biāo)記是NULL, user 標(biāo)明當(dāng)前用戶
日期字段的字段值可以用當(dāng)前數(shù)據(jù)庫的系統(tǒng)時間SYSDATE, 精確到秒
用字符串轉(zhuǎn)換成日期型函數(shù)TO_DATE(‘2001-08-01’,’YYYY-MM-DD’)TO_DATE()還有很多種日期格式, 可以參看ORACLE DOC.年-月-日 小時:分鐘:秒 的格式Y(jié)YYY-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沒有賦值或定義時, 將把原來的記錄內(nèi)容清為NULL, 最好在修改前進(jìn)行非空校驗;值N超過定義的長度會出錯, 最好在插入前進(jìn)行長度校驗.新功能,可以修改子查詢后的結(jié)果集
例子: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ù)塊標(biāo)成unused.如果確實要刪除一個大表里的全部記錄, 可以用 TRUNCATE 命令, 它可以釋放占用的數(shù)據(jù)塊表空間
SQL> TRUNCATE TABLE 表名;此操作不可回退.5、SQL語句的分類 數(shù)據(jù)定義語言(DDL):create、alter、drop(創(chuàng)建、修改結(jié)構(gòu)、刪除)(其他:rename)數(shù)據(jù)操縱語言(DML):insert、delete、select、update(增、刪、查、改)(其他:truncate)
數(shù)據(jù)控制語言(DCL):grant、revoke(授權(quán)、回收)、set role 事務(wù)控制: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里事務(wù)控制 Commit 提交事務(wù) Rollback 回退事務(wù)
Savepoint 設(shè)置斷點, 在事務(wù)中標(biāo)記位置, 事務(wù)結(jié)束, 斷點釋放
事務(wù)結(jié)束的情況遇到commit或者rollback遇到DDL和DCL語句發(fā)現(xiàn)錯誤,如死鎖用戶退出
SQL*PLUS系統(tǒng)重啟或崩潰 7.DML操作的注意事項 18
J2EE @ zxw 以上SQL語句對表都加上了行級鎖, 確認(rèn)完成后, 必須加上事物處理結(jié)束的命令COMMIT 才能正式生效, 否則改變不一定寫入數(shù)據(jù)庫里.行級鎖也未能得到釋放.如果想撤回這些操作, 可以用命令 ROLLBACK 復(fù)原.在運行INSERT, DELETE 和 UPDATE 語句前最好估算一下可能操作的記錄范圍, 應(yīng)該把它限定在較小(一萬條記錄)范圍內(nèi),.否則ORACLE處理這個事物用到很大的回退段.程序響應(yīng)慢甚至失去響應(yīng).如果記錄數(shù)上十萬以上這些操作, 可以把這些SQL語句分段分次完成, 其間加上COMMIT 確認(rèn)事物處理.太過頻繁的commit不好
第四篇:黑馬程序員c語言教程:DML語言強化
sql語言的類型
數(shù)據(jù)語言實現(xiàn)數(shù)據(jù)的crud
DML語句(Data Manipulation Language)數(shù)據(jù)庫操作語言
insert update delete select DDL語言 data definition Lanaguage
create table
create view index sequence synonym同義詞
truncate table DCL語言 data control language數(shù)據(jù)語言
commit rollback savetpointe
OCA認(rèn)證 OCP(dba)一起考, 參加oracle的培訓(xùn) 2w Oracle數(shù)據(jù)庫管理員認(rèn)證專員(OCA):Oracle Certified Associate Oracle數(shù)據(jù)庫管理員認(rèn)證專家(OCP): Oracle Certified Professional Oracle數(shù)據(jù)庫管理員認(rèn)證大師(OCM): Oracle Certified Master
語法: INSERT INTO table [(column [, column...])] VALUES(value [, value...]);
--1 向表中插入所有列
insert into emp values(1, 'tom_111', 'enginerr', 7839, sysdate, 5000, 100, 10)--2 向表中插入部分列
insert into emp(empno, ename, job, hiredate)values(2, 'tom_2222', 'enginerr', sysdate)
--3 隱式插入空值: 沒有寫出的列,默認(rèn)為null值--4 顯示插入空值:--5 sql插入語言的地址符 & 取地址符后面相當(dāng)于一個變量
mysql語言: preparedStatement語言 SQL> insert into emp(empno, ename, job, hiredate)values(&empno, &ename, &job, &hiredate);輸入 empno 的值: 3
輸入 ename 的值: 'tom_ccc' 輸入 job 的值: 'job' 輸入 hiredate 的值: '22-2月-81' 原值 1: insert into emp(empno, ename, job, hiredate)values(&empno, &ename, &job, &hiredate)新值 1: insert into emp(empno, ename, job, hiredate)values(3, 'tom_ccc', 'job', '22-2月-81')
&地址符, 可以在任何sql語言中使用.在select 語言中也可以使用地址符
SQL> select ename, job, &tt from emp;輸入 tt 的值: deptno 原值 1: select ename, job, &tt from emp 新值 1: select ename, job, deptno from emp
--7 批量插入數(shù)據(jù)--創(chuàng)建一張表
create table emp10 as
select * from emp where 1=2;--一次性的將emp中所有10號部門的員工插入到emp10中
--在insert語言中使用子查詢 子查詢 不光用在查詢套查詢, 也可用在DML語句套select語句
insert into emp10--列完全一樣,可以不寫
select * from emp where deptno=10;delete from emp10;
有關(guān)update更新語句
UPDATE table SET column = value [, column = value,...] [WHERE condition];--列子
SQL> update emp10 set sal=2300 where empno=7934;
有關(guān)刪除數(shù)據(jù)
DELETE [FROM] table [WHERE condition];
delete和truncate表區(qū)別
delete逐條刪除 truncate先摧毀表再重建delete語言是DML語言 truncate是DDL
DML語言可以閃回 做錯的并且提交了.可通過閃回,撤銷操作
DDL語言不可以閃回 flashback
delete是逐條刪除,會產(chǎn)生碎片, truncate不會產(chǎn)生碎片
行移動功能: 要開啟閃回功能,必須要開啟行移動功能delete不會釋放空間 truncate會delete可以回滾 truncate不可以
oracle delete快 mysql truncate快.實驗: 從文件中導(dǎo)入數(shù)據(jù), 通過命名delete 和 truncate刪除表數(shù)據(jù) 實驗
從文件中導(dǎo)入數(shù)據(jù)
SQL> set timing off;SQL> set feedback off;SQL> drop table testdelete purge;SQL> @c:Sql.sql;SQL> SQL> set timing on;//最后刪除數(shù)據(jù)表的時候,把時間打開,記錄時間
SQL> delete from testdelete;已用時間: 00: 00: 00.03
從文件中導(dǎo)入數(shù)據(jù)
SQL> set timing off;@c:Sql.sql;
set timing off;
select count(*)from testdelete;set timing on;//最后刪除數(shù)據(jù)表的時候,把時間打開,記錄時間
truncate table testdelete;已用時間: 00: 00: 00.39
事務(wù)基本概念
概念
一個或者多個DML語言組成特點
要么都成功,要么都失敗
特性
原子性 一致性 隔離性 持久性
事物的隔離性 多個客戶端同時操作數(shù)據(jù)庫的時, 要隔離他們的操作
否則:臟讀 不可重復(fù)讀 幻讀
設(shè)置不同的擱置級別來解決oracle中的事務(wù)
事務(wù)起始標(biāo)志 DML語言(oracle默認(rèn)事務(wù)似是打開的)2 事務(wù)的結(jié)束標(biāo)志
提交: 顯示提交commit
隱式提交
1)執(zhí)行DDL語言
eg create table語言 還有I個隱式的功能
提交之前的沒有提交的DML語言(insert update)
2)正常退出
回滾: 顯示 rollback
隱式 掉電/宕機/非正常退出==系統(tǒng)出錯了 oracle事務(wù)控制--保存點
create table testsavepoint(tid number, tname varchar2(20));set feedback on
insert into testsavepoint values(1, 'tom1');insert into testsavepoint values(2, 'tom2');savepoint a;//創(chuàng)建一個保存點
insert into testsavepoint values(3, 'tom3a);rollback to savepoint a;
注意: 回退到savepoint a 前面插入的兩條sql語句還沒有提交;仍然還在一個事務(wù)里面;讓事務(wù)結(jié)束的方法 顯示 隱式 SQL> rollback / commit oracle數(shù)據(jù)的隔離級別問題
read only ,數(shù)據(jù)庫幾乎不做串行化操作,增加了read only SQL99
第五篇:黑馬程序員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;可以關(guān)閉和打開提示確認(rèn)信息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 可自定義彈出提示符的內(nèi)容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 變量名后不要加特殊的結(jié)束符號
如果在SQL*PLUS里要把&符號保存在ORACLE數(shù)據(jù)庫里,要修改sql*plus環(huán)境變量define SQL> set define off;
八、概述數(shù)據(jù)模型和數(shù)據(jù)庫設(shè)計 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.實體關(guān)系模型(ERM)概念
ERM(entity relationship modeling)實體 存有特定信息的目標(biāo)和事件 例如: 客戶,訂單等 屬性 描述實體的屬性 例如: 姓名,電話號碼等 關(guān)系 兩個實體間的關(guān)系 例如:訂單和產(chǎn)品等 實體關(guā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.實體關(guān)系模型例子
每個訂單都必須有一個或幾個客戶
每個客戶可能是一個或幾個訂單的申請者 5.實體關(guān)系的類型
1:1 一對一 例如: 的士和司機 M:1 多對一 例如: 乘客和飛機 1:M 一對多 例如: 員工和技能 6.校正實體關(guān)系的原則
屬性是單一值的, 不會有重復(fù)
屬性必須依存于實體, 要有唯一標(biāo)記
沒有非唯一屬性依賴于另一個非唯一的屬性 7.定義結(jié)構(gòu)時的注意事項 減少數(shù)據(jù)冗余
減少完整性約束產(chǎn)生的問題 確認(rèn)省略的實體,關(guān)系和屬性 8.完整性約束的要求
Primary key 主關(guān)鍵字 唯一非NULL Foreign key 外鍵 依賴于另一個Primary key,可能為NULL Column 字段名 符合定義的類型和長度
Constraint 約束條件 用戶自定義的約束條件,要符合工作流要求 例如: 一個銷售人員的提成不能超過它的基本工資
Candidate key 候選主關(guān)鍵字 多個字段名可組成候選主關(guān)鍵字, 其組合是唯一和非NULL的
9.把實體關(guān)系圖映射到關(guān)系數(shù)據(jù)庫對象的方法 把簡單實體映射到數(shù)據(jù)庫里的表
把屬性映射到數(shù)據(jù)庫里的表的字段, 標(biāo)明類型和注釋 把唯一標(biāo)記映射到數(shù)據(jù)庫里的唯一關(guān)鍵字 把實體間的關(guān)系映射到數(shù)據(jù)庫里的外鍵 13
J2EE @ zxw 其它的考慮: 設(shè)計索引,使查詢更快
建立視圖,使信息有不同的呈現(xiàn)面, 減少復(fù)雜的SQL語句 計劃存儲空間的分配 重新定義完整性約束條件
10.實體關(guān)系圖里符號的含義 PK 唯一關(guān)鍵字的字段 FK 外鍵的字段
FK1,FK2 同一個表的兩個不同的外鍵
FK1,FK1 兩個字段共同組成一個外鍵 NN 非null字段 U 唯一字段
U1,U1 兩個字段共同組成一個唯一字段
九、創(chuàng)建表
1.ORACLE常用的字段類型 ORACLE常用的字段類型有
VARCHAR2(size)可變長度的字符串, 必須規(guī)定長度 CHAR(size)固定長度的字符串, 不規(guī)定長度默認(rèn)值為1
NUMBER(p,s)數(shù)字型p是位數(shù)總長度, s是小數(shù)的長度, 可存負(fù)數(shù) 最長38位.不夠位時會四舍五入.DATE 日期和時間類型
LOB 超長字符, 最大可達(dá)4G CLOB 超長文本字符串 BLOB 超長二進(jìn)制字符串
BFILE 超長二進(jìn)制字符串, 保存在數(shù)據(jù)庫外的文件里是只讀的.數(shù)字字段類型位數(shù)及其四舍五入的結(jié)果 原始數(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)建表時給字段加默認(rèn)值 和約束條件 創(chuàng)建表時可以給字段加上默認(rèn)值
例如 : 日期字段 DEFAULT SYSDATE 這樣每次插入和修改時, 不用程序操作這個字段都能得到動作的時間 14
J2EE @ zxw 創(chuàng)建表時可以給字段加上約束條件 例如: 非空 NOT NULL 不允許重復(fù) UNIQUE 關(guān)鍵字 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里的保留字, 一定要用時可用雙引號把字符串括起來. 用和實體或?qū)傩韵嚓P(guān)的英文符號長度有一定的限制 注意事項: 建表時可以用中文的字段名, 但最好還是用英文的字段名
創(chuàng)建表時要把較小的不為空的字段放在前面, 可能為空的字段放在后面 建表時如果有唯一關(guān)鍵字或者唯一的約束條件,建表時自動建了索引 一個表的最多字段個數(shù)也是有限制的,254個.5.約束名的命名規(guī)則和語法
約束名的命名規(guī)則約束名如果在建表的時候沒有指明,系統(tǒng)命名規(guī)則是SYS_Cn(n是數(shù)字)約束名字符串的命名規(guī)則同于表和字段名的命名規(guī)則 6.使用約束時的注意事項
約束里不能用系統(tǒng)函數(shù),如SYSDATE和別的表的字段比較 可以用本表內(nèi)字段的比較
想在事務(wù)處理后, 做約束的檢查
SQL> alter session set constraints deferred.7.由實體關(guān)系圖到創(chuàng)建表的例子 s_dept 前提條件:已有region表且含唯一關(guān)鍵字的字段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.較復(fù)雜的創(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)));