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

黑馬程序員C語言教程:C++易犯錯知識點黑馬程序員:一)

時間:2019-05-12 19:01:51下載本文作者:會員上傳
簡介:寫寫幫文庫小編為你整理了多篇相關的《黑馬程序員C語言教程:C++易犯錯知識點黑馬程序員:一)》,但愿對你工作學習有幫助,當然你在寫寫幫文庫還可以找到更多《黑馬程序員C語言教程:C++易犯錯知識點黑馬程序員:一)》。

第一篇:黑馬程序員C語言教程:C++易犯錯知識點黑馬程序員:一)

C++易犯錯知識點(一)

1、賦值構成一個表達式,具有值,其值為賦值符左邊表達式的值。表達式和語句的一個重要區(qū)別是,表達式有值,而語句沒有值。

2、隱式類型轉換總是朝著表達數(shù)據(jù)能力更強的方向,并且轉換總是逐個運算符進行的。如 float f=3.5;int n=6;long k=21;double ss=f*n+k/2;//在計算ss時,首先將f和n轉換成double,算得21,然后計算k/2得10,再將10(long int)轉換成double,最后得31。

27、C++基礎筆記(一)墨涵天地 有符號數(shù)向無符號數(shù)轉換。

3、當又有聲明又有定義時,定義中不允許出現(xiàn)默認參數(shù),如果函數(shù)只有定義,才允許默認參數(shù)出現(xiàn)在定義中。默認值可以是一個全局變量,全局常量,或是一個函數(shù),但是不能是局部變量,因為默認參數(shù)的函數(shù)調用是在編譯時確定的,而局部變量的位置和值在編譯時是無法確定的。如 int a=1;void fun(){ int i;void g(int x=i);//not right int g(int x=a);//right

}

4、define宏定義指令

1)使用其定義常量已被C++中的const定義語句所代替。2)用來定義帶參數(shù)的宏,已被C++的內聯(lián)函數(shù)所代替。3)其一個有效的使用是在條件編譯中。

5、編譯時必須知道數(shù)組的大小。如

int a[]={1,2,3,4,5};//編譯器會自動去數(shù) for(int i=0;i

7、Free和malloc int* a;a=(int*)malloc(sizeof(int));cout<

8、指向常量的指針,指針常量,指向常量的指針常量

指向常量的指針:通過指針不能改變所指向的變量的值,但是指針的值可以變化(即指針可

以指向其它變量的地址)。形式如const int* pi=&a;原來的變量的訪問屬性也不會發(fā)生改變,如原來是普通變量,則其值可以變化,原來是常變量,則其值不能變化。

指針常量:在定義時必須初始化,且一旦賦值,則以后該指針的值將不會再發(fā)生變化(即不能再指向其它地址)。形如char* const pc=“abcd”;注意,pc的值是不能再改變了,但是*pc的值可以變化,如*pc=b;指向常量的指針常量:具有上述兩具指針的特點,須在定義時初始化,且一旦賦值,則以后該指針的值將不會再發(fā)生變化,且通過指針不能改變所指向的變量的值,形如const int* const cpc=“perfect”;注意,這種情況下,*cpc的值也是不能改變的,如*cpc=n是不對的。int main(){ char* const pc=“abcd”;cout<

}

9、sum(int array[],int n)與sum(int* array,int n)是等價的。

10、函數(shù)返回值,可以返回堆地址,也可以返回全局或靜態(tài)變量的地址,但是不能返回局部變量的地址。

11、void指針是空類型指針,它不指任何類型,它僅僅是一個地址,不能進行指針運算,也不能進行間接引用。

NULL與void* 是不同的概念,NULL是一個指針值,任何類型的指針都可賦予該值。而void* 是一種類型(語法上是一個類型,本質上不是,沒有任何一個變量或對象,其類型為void),是一種無任何類型的指針。不允許對void進行引用。

12、由引號(“ ”)標識,但不是用來初始化數(shù)組的字符串,是字符串常量,如cout<<“hello”<

由于字符串常量的地址屬性,兩個同樣字符組成的字符串常量是不相等的,字符串常量的比較是地址的比較。

字符串常量,字符數(shù)組名(常量指針),字符指針均屬于同一種數(shù)據(jù)類型。

13、不能建立引用的數(shù)組,因為數(shù)組是某個數(shù)據(jù)類型的集合,數(shù)組名表示起始地址,它不是數(shù)據(jù)類型。如 int a[10];int& a1[10]=a;//not right 引用本身不是一種數(shù)據(jù)類型(int&不是類型,定義時也不產(chǎn)生內存空間),所以沒有引用的引用。也沒有引用的指針。引用是變量或對象的引用,而不是類型的引用,所以有空指針,但是沒有空引用。Int& ri=NULL //沒有意義

可以用引用返回值。在通常情況下,C++會建立一個臨時變量以將函數(shù)返回值帶回。但是如果用引用,則不用建立臨時變量。

C++規(guī)定,臨時變量或對象的生命周期在一個完整的語句表達式結束后便宣告結束。所以如果以返回值初始化一個引用,應當先建立一個變量,將函數(shù)返回值賦于這個變量,作如下處理:

int x=fn1(5.0);//在這一句后臨時變量生命周期將結束 int& b=x;************************* float temp;

float& fn2(float r){ temp=10*r;return temp;} 用如上的方法,則函數(shù)返回值將不再創(chuàng)建臨時變量,而直接與全局變量temp共享內存單元 ******************************* 以引用的初始化,可以是變量,也以是常量,也可以是一定類型的堆空間變量,但是引用不是指針,如下表達是不對的: int& a=new int(2);

//not right

下面是用堆空間變量初始化引用的一個例子: #include #include using namespace std;int main(){ double* pd=new double;if(pd==NULL){printf(“failed”);exit(1);} cout<

//...{

cin>>rd;

cout<

cout<<&rd;

} delete& rd;//或delete pd return 1;}

注意:用double& rd來定義引用,而&rd則是取引用所指向的空間的地址。

14、聲明一個結構并不分配內存,內存分配發(fā)生在定義這個新數(shù)據(jù)類型的變量中。結構不像數(shù)組,結構變量不是指針,&結構變量 取到的是結構中第一個成員變量的地址。結構變量可以相互賦值。結構成員不能作自身的結構變量,但是可以用結構指針作為成員。

15、將類定義和其它成員函數(shù)定義分開,是目前開發(fā)程序的通常做法。我們把類定義(頭文件)看成是類的外部接口,類的成員函數(shù)定義看成是類的內部實現(xiàn)。

類是一個抽象的概念,并不是一個實體,并不含有屬性值,而只有對象才占有一定的空間,含有明確的屬性值。

第二篇:黑馬程序員C語言教程:C++易犯錯知識點黑馬程序員:二)

C++易犯錯知識點(二)

16、要想共享初始化的過程,可以先定義一個共享成員函數(shù),然后每個構造函數(shù)都調用之。

17、C++提供的默認構造函數(shù)是個無參構造函數(shù),它僅負責創(chuàng)建對象,而不做任何初始化工作。只要一個類定義了一個構造函數(shù),C++就不再提供默認的構造函數(shù)。(如果此時還想要無參構造函數(shù),則需要自己定義)

與變量定義類似,在用默認構造函數(shù)創(chuàng)建對象時,如果創(chuàng)建的是全局對象或靜態(tài)對象,則對象的位模式全為0,否則對象值是隨機的。創(chuàng)建對象的唯一途徑是調用構造函數(shù)。

靜態(tài)對象只被構造一次,所有全局對象都在主函數(shù)main()之前被構造。

18、面向對象程序設計主要是兩方面:面向對象應用程序設計,類庫的設計。面向對象程序設計的關鍵是如何抽象和分類。

19、全局變量、靜態(tài)變量、常量存放在全局數(shù)據(jù)區(qū),所有類成員函數(shù)和非類成員函數(shù)代碼存放在代碼區(qū),為運行函數(shù)而分配的局部變量、函數(shù)參數(shù)、返回數(shù)據(jù)、返回地址等存放在棧區(qū),余下的空間都被作為堆區(qū)。

void* malloc(size_t);和void free(void*);在頭文件malloc.h中聲明。而操作符new和delete是C++的一部分,無須包含頭文件,它們都是從堆中分配和釋放內存塊,但是具體操作上兩者有很大的區(qū)別。

操作堆內存時,如果分配了內存,就有責任回收它,否則運行的程序將會造成內存泄露,這與函數(shù)中棧區(qū)分配局部變量有本質的區(qū)別。

從C++來說,不使用malloc()函數(shù)一個原因是,它在分配空間的時候不能調用構造函數(shù)。

類對象的建立是分配空間,構造結構及初始化的三位一體,它們統(tǒng)一由構造函數(shù)來完成。而new和delete在創(chuàng)建對象和刪除對象時,便同時調用構造函數(shù)和析構函數(shù)。

定義對象數(shù)組,在生成對象時,依次調用構造函數(shù)(如依次生成ps[0],ps[1],ps[2]......),由于分配數(shù)組時,new的格式是類型后面跟[元素個數(shù)](student* ps=new student[10]),不能再跟構造函數(shù)參數(shù),所以從堆上分配對象數(shù)組,只能調用默認的構造函數(shù),不能調用其它任何構造函數(shù),如果該類沒有默認的構造函數(shù),則分配對象數(shù)組失敗。Delete[] ps告訴C++將要該指針指向的是一個數(shù)組,如果在[]中填上了長度信息,C++將忽略。20、拷貝構造函數(shù)

當構造函數(shù)的參數(shù)為自身類的引用時,這個構造函數(shù)稱為拷貝構造函數(shù)??截悩嬙旌瘮?shù)的功能是用一個已有對象初始化一個正在建立的同類對象??截悩嬙旌瘮?shù)定義形式如下: Student(student& s)

27、C++基礎筆記(一)墨涵天地

Person p1;

p2=p1;

27、C++基礎筆記(一)墨涵天地

27、C++基礎筆記(一)墨涵天地

在創(chuàng)建對象p2時,對象p1被復制給了p2,同時資源也作了復制,此時p1和p2指向不同的資源,這稱為深拷貝。

27、C++基礎筆記(一)墨涵天地

如果你的類需要析構函數(shù)來析構資源,則它也需要一個拷貝構造函數(shù)。C++提供的默認函

數(shù)只是對對象進行淺拷貝復制。如果對象的數(shù)據(jù)成員包括指向堆空間的指針,就不能使用這種拷貝方式,要自己定義拷貝構造函數(shù),為創(chuàng)建的對象分配堆空間。

21、靜態(tài)成員

這種屬于類的一部分,但既不適用于普通成員函數(shù),也不適用于全局變量表示的數(shù)據(jù),我們用靜態(tài)成員來表示。

一般情況下,我們在類的內部實現(xiàn)中對靜態(tài)數(shù)據(jù)成員進行定義(在類的內部實現(xiàn)中分配空間和初始化)。

Int student::noOfstudent=0;靜態(tài)數(shù)據(jù)成員一般用于:

標志一個事件的發(fā)生與否,某個特定的指針,變化的對象等。

靜態(tài)成員函數(shù)定義是類的內部實現(xiàn),屬于類的一部分,定義位置同一般成員函數(shù)。與靜態(tài)數(shù)據(jù)成員一樣,靜態(tài)成員函數(shù)與類相聯(lián)系,不與類的對象相聯(lián)系,所以訪問靜態(tài)成員函數(shù)時,不需要對象。如果用對象去引用靜態(tài)成員函數(shù),只是用其類型。

#include using namespace std;class Student { public: static int number(){ return noOfStudents;

} protected: char name[40];static int noOfStudents;};int Student::noOfStudents=1;int main(){ Student s;cout<

********************************* class Sc { public: void nsfn(int a);//類同聲明成Sc::nsfn(Sc* this,int a)

static void sfn(int a);//無this指針 //...};void f(Sc& s){ s.nsfn(10);//C++編譯成Sc::nsfn(&s,10)s.sfn(10);//C++編譯成Sc::sfn(10)}

靜態(tài)的static一詞與靜態(tài)存儲類的static是兩個概念,一個論及類,一個論及內存空間的位置及作用域,所限定以要區(qū)分靜態(tài)對象和靜態(tài)成員。

第三篇:黑馬程序員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語言教程: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認證 OCP(dba)一起考, 參加oracle的培訓 2w Oracle數(shù)據(jù)庫管理員認證專員(OCA):Oracle Certified Associate Oracle數(shù)據(jù)庫管理員認證專家(OCP): Oracle Certified Professional Oracle數(shù)據(jù)庫管理員認證大師(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 隱式插入空值: 沒有寫出的列,默認為null值--4 顯示插入空值:--5 sql插入語言的地址符 & 取地址符后面相當于一個變量

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;

有關update更新語句

UPDATE table SET column = value [, column = value,...] [WHERE condition];--列子

SQL> update emp10 set sal=2300 where empno=7934;

有關刪除數(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快.實驗: 從文件中導入數(shù)據(jù), 通過命名delete 和 truncate刪除表數(shù)據(jù) 實驗

從文件中導入數(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

從文件中導入數(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

事務基本概念

概念

一個或者多個DML語言組成特點

要么都成功,要么都失敗

特性

原子性 一致性 隔離性 持久性

事物的隔離性 多個客戶端同時操作數(shù)據(jù)庫的時, 要隔離他們的操作

否則:臟讀 不可重復讀 幻讀

設置不同的擱置級別來解決oracle中的事務

事務起始標志 DML語言(oracle默認事務似是打開的)2 事務的結束標志

提交: 顯示提交commit

隱式提交

1)執(zhí)行DDL語言

eg create table語言 還有I個隱式的功能

提交之前的沒有提交的DML語言(insert update)

2)正常退出

回滾: 顯示 rollback

隱式 掉電/宕機/非正常退出==系統(tǒng)出錯了 oracle事務控制--保存點

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語句還沒有提交;仍然還在一個事務里面;讓事務結束的方法 顯示 隱式 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;可以關閉和打開提示確認信息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語言教程:C++易犯錯知識點黑馬程序員:一)word格式文檔
下載黑馬程序員C語言教程:C++易犯錯知識點黑馬程序員:一).doc
將本文檔下載到自己電腦,方便修改和收藏,請勿使用迅雷等下載。
點此處下載文檔

文檔為doc格式


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

相關范文推薦

    黑馬程序員c語言教程:多表查詢

    1 笛卡爾積 部門表 笛卡爾積產(chǎn)生結果: 行數(shù) 兩個表相乘列數(shù): 行數(shù)相加 原因 條件等值連接select **** from tab1, tab2 where tab1.a = tab2.a 1 select count(e.ename)......

    黑馬程序員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概念

    一、選擇行 1. 簡單的SELECT 語句 SELECT 字段名1 [AS] '字段名1 解釋' FROM table; 2. 處理NULL NVL函數(shù)可把NULL轉換成其它類型的符號 編程技巧: NVL函數(shù)在多條件模糊查詢......

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

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

    黑馬程序員c語言教程:SQL函數(shù)

    日期 Oracle 中的日期型數(shù)據(jù)實際含有兩個值: 日期和時間。 默認的日期格式是 DD-MON-RR. 函數(shù)SYSDATE 返回: 日期 時間 在日期上加上或減去一個數(shù)字結果仍為日期。 兩個日......

    黑馬程序員c語言教程:空值知識點梳理大全

    1 空值知識點梳理 1 含有空值的表達式 都是空 2 null!=null 不能這個語法--- null和空值在一起 3 null的第三點:如果集合中含有空值,不能使用not in 操作符; 但可使用in操作......

    黑馬程序員C語言教程:文本三劍客之一(優(yōu)秀范文五篇)

    文本三劍客之一:awk簡介 以下內容在linux可以使用info awk命令獲取 簡介 awk的功能主要在報表處理方面,有強大的功能。awk命令對文件每次讀入一行,默認按照空格分隔來進行處理......

主站蜘蛛池模板: 亚洲成在人线av| 精品国产福利一区二区| 五月天天天综合精品无码| 亚洲精品久久久久久久久av无码| 狠狠躁夜夜躁人人爽天天不卡| 国内精品久久久久影院优| 国产精品美女www爽爽爽视频| 一区二区视频日韩免费| 亚洲精品乱码久久久久久v| 国产三级久久精品三级| 97视频在线观看播放| 国产成人综合久久亚洲精品| 国产国产久热这里只有精品| 2020国产成人精品影视| 天天躁夜夜躁狠狠是什么心态| 中文字幕无码日韩中文字幕| 国产国拍亚洲精品mv在线观看| 中国国产免费毛卡片| 国产精品久人妻精品老妇| 亚洲制服有码在线丝袜| 国产午夜无码精品免费看| 亚洲国产精品无码专区影院| 久久国内精品一区二区三区| 人妻夜夜爽天天爽欧美色院| 污污内射久久一区二区欧美日韩| 国内精品伊人久久久久影院麻豆| 无码日韩人妻精品久久蜜桃| 狠狠躁日日躁夜夜躁2022麻豆| 久久伊99综合婷婷久久伊| 14萝自慰专用网站| 免费播放一区二区三区| 亚洲国产综合人成综合网站| 亚洲色偷精品一区二区三区| 九色porny丨自拍视频| 久久精品国产亚洲大片| 成人影院yy111111在线观看| 太粗太深了太紧太爽了动态图男男| 久久综合伊人77777| 最近日本免费观看高清视频| 国产精品va在线观看无码| 午夜精品久久久久久久无码|