當前位置:成語大全網 - 書法字典 - 關於SQL數據庫和JAVA的壹些問題,在線應急等。

關於SQL數據庫和JAVA的壹些問題,在線應急等。

1鍵,即FK正式鍵。

Www.cxrs.net/bbs程序交流中心,這是壹個專門為初學者設置的學習論壇。

第二,SQL

結構化查詢語言

結構化查詢語言是關系數據庫中的壹個對象。

DDL(數據定義語言)用於創建或刪除表以及修改表約束。

創建表,更改表,刪除表,添加或刪除表結構。

DML(數據操作語言)將記錄插入表中並修改它們。

插入、更新、刪除、合並

事務控制語言Transaction由DML語句、commit,回滾;

選擇查詢語句

Dcl授權聲明授權

第三,甲骨文

DBMS數據庫管理系統

由Oracle提供,以及應用服務器。

DBA數據庫管理員

四、相關操作

1,訪問數據庫的sqlplus命令(本地訪問/遠程訪問)和與數據庫建立連接的命令是數據庫操作的環境。

Sqlplus用戶名/密碼

2.show user顯示當前用戶的用戶名。

妳可以直接連接用戶名/密碼來改變妳的身份——這是sqlplus命令。

可以用在sqlplus中!可以在shell和sqlplus之間切換!Shell命令您可以在sqlplus中使用shell命令。

事實上,sqlplus打開了壹個子進程來執行shell命令。

3.Oracle數據庫中的表分為兩類:用戶表(用戶使用的表)和系統表(數據庫系統維護的表,也叫數據字典)。

用戶表上的DDL操作引發系統表上的DML操作!

動詞 (verb的縮寫)基礎語法

1,選擇查詢語句

從用戶表中選擇表名;(查詢系統表)

上面的查詢語句是為了查詢這個用戶擁有的所有表的表名。

投影操作,只查看所選字段的信息。

選擇壹個操作以查看字段中的特定信息。

Join操作,多表查詢,通過表與表之間的連接,找出多個表中的信息。

(1)從用戶表中選擇表名;(查詢系統表)

上面的查詢語句是為了查詢這個用戶擁有的所有表的表名。

(2)最後壹條sql語句將緩存在2)sqlplus的緩沖區中。您可以使用“/”來執行最後壹條sql語句,也可以使用。

編輯命令來編輯最後壹條sql語句。

l命令(list)(sqlplus命令)可以顯示緩沖區中的最後壹個命令。

sqlplus命令可以縮寫。

(3)desc[表名]

這是壹個sqlplus命令。請註意,它不是sql語句。該命令用於查看表格的結構。描述的簡稱

[字段名稱][字段類型],這是使用desc命令後顯示的表格結構。

(4)選擇[表1的字段名],[表2的字段名],...from表名;

Select * from表名;查找表中所有字段的信息。

(5)不相等的關鍵字拆分,sql語句、表名、字段名不區分大小寫。

sql語句應以“;”開頭End,表示sql語句的結束,如果不添加“;”系統不會執行該sql語句和提示。

在Oracle中,字符的顯示是左對齊的,值是右對齊的。

(6)數學表達式可以用在select語句中。

選擇[表達式(必須包括該表的字段名)],[...], ...from表名;

運算優先級先乘後除再加減,同壹級別從左到右運算。括號改變了優先級。

(7)別名

選擇[字段名或表達式] ["別名"],[...] ["..."], ...from表名;

您可以在字段名或表達式後添加壹個空格“別名”,並且可以為列或表達式指定別名。

別名必須用雙引號表示。

(8)字符串拼接使用||符號。

Select目標字段名|| ""|||從表名中選擇目標字段名;

註意:Oracle中的字符串應該用“...”括起來

別名中需要使用空格,或者需要使用“...”當大小寫敏感時。

練習:

自己寫壹個SQL語句,執行的結果是select * from...;

在哪裏...是每個系統表的名稱。

即在每個系統表的表名前加上“select * from”,然後加上“;”

select ' select * from ' | | table _ name | | ';'from user _ tables

2.處理錯誤

(1)!oerr ora[錯誤號],系統可以顯示錯誤的原因以及如何修改。如果命令輸入不正確,可以使用edit或ed來糾正輸入錯誤。

它實際上是編輯緩存文件中的最後壹條sql語句。

也可以使用(更改)c/error字段/correct字段進行替換和修改。

僅在Linux平臺上使用。

!相當於主機,沒有斷開,只是切換執行了shell命令。

(2)編輯命令編輯最後壹條sql語句。

3、sqlplus設置

設置回車響應暫停,顯示在分屏中,僅在此進程中有效。

將“暫停關閉”設定為關閉分屏顯示。

設置暫停“...”設置分屏顯示的提示信息。

設置pause on先輸出提示信息,然後返回響應,分屏顯示。

關閉收割臺輸出。

關閉進料端輸出。

將回顯關閉寫回關閉。

假脫機文件名。sql寫入指定的文件。

Spool off關閉寫入。

4.sql腳本

也就是說,壹個寫有sql語句的文件可以在sqlplus中運行。

介紹sql腳本

Sqlplus用戶名/密碼@sql腳本(註意:在編寫@sql腳本之前,必須在輸入用戶名和密碼之後添加空格)。

在腳本的最後壹行寫“exit”,運行腳本後返回shell。

5、

Oracle中的空值將被視為無窮大。事實上,null值根本不會被存儲,而會被視為無窮大。

在Oracle中,控制處理程序NVL(字段名,值)用指定的值替換該字段中的空值,如果不為空,則返回其原始值。

示例:select(salary * 12)*(nvl(commission _ pct,0)/100+1) salary,first _ name from s _ EMP

Distinct關鍵字,刪除重復行(該關鍵字將觸發排序操作)

示例:select distinct dept _ id,title from s _ EMP。

部門標識和職位的聯合不是唯壹的。

註意:在distinct之後,from之前的字段將被復制。

6、列命令- sqlplus命令

列命令的列格式定義

列目標列名,以查看該類是否具有定義的格式。

列目標列名格式a..設置列寬。

列姓氏標題“員工|姓名”格式A15

設置標題

中的“|”是壹個換行符。

列薪金左對齊格式$99,990.00

定義數字顯示格式

註意:如果不滿足顯示格式,數據將顯示為“#”。

列薪金左對齊格式$00,000.00

將有$00,928.00,其中將填充0。

列列名清除(清除列格式定義)

註意:只有sqlplus命令是縮寫,使用sqlplus命令時不能在末尾加符號。

六、選擇操作

1、排序依據

排序子句ASC(默認,升序)DESC(降序)

Order by目標列名(別名)排序順序(不寫排序順序,默認為升序排序)。

示例:select first _ name from s _ emporder by first _ name;

select first _ name from s _ EMP order by first _ name desc;

註意:升序空值在結果的末尾,降序空值在結果的前面。

2.where子句

where子句用在select之後...從...選擇所需的(合格的)記錄。

其中後面是表達式XXX=XXX,XXX介於X和X,XXX於(X,X,X)之間。

就像……通配符查詢

在...之間...和...,表示結果介於之間,介於和之間,是壹個封閉區間,

它相當於...

!=,& lt& gt,=,三個標誌都不等於,

...在(va1,val2,...)來確定結果是否存在於此枚舉中。

就像……字符串通配符查詢,' % '表示多個字符,' _ '表示壹個字符。

註意:escape: like' s \ _%' escape' \ '的用法

...和...意味著同時只滿足兩個條件。

...或者...意味著只能滿足其中壹個條件。

全部...就是所有要求都符合條件。

不...,在上述條件下可能會適得其反。

空值將影響not in,也就是說,它們不等於除空值以外的任何值。

...is null用於確定該值是否為空。

註意:Oracle中的字符串嚴格區分大小寫。

(1)註意數據類型。直接寫數字類型,用“...”字符,並使用“...”對於默認的日期格式,只有別名。

只使用" "來包含。

(2)選擇合適的操作員

七、單行功能

1.字符函數

字符區分大小寫。

小寫(字段名)-參數可以是字段名下的字符串常量。

大寫(字段名)

初始資本initcap(字段名)

字符串串聯concat(字段1,字段2)

截取子字符串substr(字段名、起始位置、字符數)

專門用於功能測試和操作的Dual table只有壹條記錄。

字符串串聯concat(...,...)

查找指定的子字符串substr(...起始位置,取字符數)

可以用“-”表示從右向左取,取的時候可以從左取給朋友。

示例:select substr (first _ name,-2,2)sub from s _ EMP;(拿最後兩個)

select substr(first_name,2,2)sub from s _ EMP;(取前兩個)

2、數值函數

Round round(數據,保留幾位小數)

小數點前可以用負數表示,小數點後第壹位用0表示,即保留壹位,用-1表示壹位(保留十位)。

例:從dual中選擇round (15.36,1);

Trunc(數據,保留數字(小數點後的數字))截取數字,然後加0。

例:從dual中選擇trunc (123.456,1);

3、日期功能

日期格式,

完整日期格式的世紀信息,年、月、日、小時和分鐘。

默認日期格式,日-月-YY-月-日

修改當前會話的日期格式將根據指定的格式輸出日期。

alter session set nls _ date _ format = ' yyyy mm DD hh24:mi:ss ';

返回當前日期sysdate

示例:從dual中選擇sysdate

從dual中選擇sysdate+1;獲取明天的日期,加上1,以天為單位。

日期是格式敏感的。

計算兩天之間的月數(date1,date2)。

加減指定的月數add_months(日期,月數),月數可以是負數,負數就是減去對應的月數。

從第二天開始的第壹個星期五(日期,星期五)。

返回月末的最後壹天(日期)。

Trunc(日期,“年或月或日或小時和分鐘”)

示例:select next _ day (sysdate,2)from dual;

示例:select trunc (add _ months (sysdate,1),' month ')from dual;

ROUND(' 95年5月25日','月份')065438+95年6月0日

ROUND(' 95年5月25日','年份')065438+95年1月0日

TRUNC(' 95年5月25日','月份')065438+95年5月0日

TRUNC(' 95年5月25日','年份')065438+95年1月0日

練習:

返回下個月第壹天的日期。

select round(last_day(sysdate),' MONTH ')from dual;

select add_months(trunc(sysdate,' MONTH '),1);

4.不同數據類型之間的轉換函數

將日期轉換為字符tochar(日期,“日期格式”)

日期格式應該有效並區分大小寫' yyyy mm dd hh24:mi:ss ',

“年”(拼寫年份)、“mm”(用數字表示的月份)、“月”(拼寫月份)、“日”(拼寫星期)、“ddspth”(拼寫日期)、“yy mm dd”

示例:select to _ char (sysdate,' yyyymm ddhh 24:mi:ss ')from dual;

將字符轉換為數字to_number(' ... '))

將數字轉換為字符to_char(number,' fmt') fmt是壹種數字格式。

將字符串轉換為日期to_date(' ... '),‘日期格式’)。

示例:select to _ char(to _ date(' 20061103 ',' yyyymm DD ',' DD-month-YY ')from dual;

1,等值聯接

選擇[表格別名1。字段名1],[表別名2。字段名2],...

來自表1表別名1表2表別名2。

其中表別名1。字段名3=表別名2。字段名4;

表格連接時,表格之間存在同名字段時,可以添加表格名稱或表格別名進行區分,使用時使用。

表名。字段名或表別名。字段名(列名)。當表的字段名是唯壹的時,沒有必要添加表名或表的別名。

註意:當表有別名時,不能再使用表名和字段名。

示例:選擇a .名字,a .姓氏,b .姓名

從倉庫a,倉庫b

其中a . dept _ id = b . id;

2.非等聯接

選擇[表格別名1。字段名1],[表別名2。字段名2],...

來自表1表別名1表2表別名2。

其中表別名1。字段名稱3...表別名2。字段名4。

...可以做比較運算符,也可以做除' = '以外的其他運算符。

示例:選擇e.ename、d.grade、e.sal

來自emp e,salgrade d

其中e.sal在d.losal和d.hisal之間;

3.自連接

使用別名將表中的數據分成兩部分,然後使用條件篩選。

選擇[表格別名1。字段名1],[表別名2。字段名2],...

從表1表別名1表別名1表別名2。

其中表別名1。字段名3=表別名2。字段名4;

示例:select a .名字名稱,b .名字名稱。

從s_emp a,s_emp b

其中a . manager _ id = b . id;

上面提到的表連接都稱為內部連接,並且嚴格匹配兩個表的記錄。

4.外接

壹個表中的所有記錄都將用於匹配另壹個表中的記錄,空值也將被匹配。該表中的所有記錄都將顯示出來,數據庫將模擬記錄來匹配那些不匹配的記錄。

示例:select a . first _ name name name me,a.id,b.first _ namecname,b.id

從s_emp a,s_emp b

其中a . manager _ id = b . id(+);

也就是說,表A中的數據用於匹配表B中的數據,如果表B中有null,則系統模擬記錄與之匹配。

註意:應顯示該方的所有記錄,條件(+)應跟隨要選擇的對方。

外部連接的應用:

列出哪些部門沒有員工。

選擇e.deptno,d.deptno

來自員工e部d

其中e.deptno(+)=d.deptno

並且e.deptno為空;

第三,群體功能

團體團體

Group by分組子句,根據指定的分組規則進行分組。這個group by子句可以跟在select語句或having後面。

group by子句還將啟動排序操作,該操作將按分組字段進行排序。

選擇[組函數或分組的字段名],...從表名分組依據[字段名1],[字段名2],...;

示例:select avg(salary)from s _ EMP group by dept _ id;

註意:組函數可以處理壹組數據並返回值。

組函數忽略空值。

avg的參數(..)、平均值、總和(..)和sum只能是number類型。

下面提到的函數可以使用任何類型作為參數。

計數(..),用來統計記錄的數量,可以使用duplicate命令。計數(...)默認情況下使用all。

最大(..),最小(..)求最大值和最小值,

Count(*),統計表中的記錄數。

示例:select max (b.name),avg (a.salary),max (c.name)。

從s_emp a,s_dept b,s_region c

其中a .部門標識=b .標識,b .區域標識=c .標識

按b.dept_id分組;

註意:只要編寫了group by子句,

* * * select之後,只能在group by之後使用字段或分組函數。***

where子句只能過濾記錄和放置單行函數。

having子句可以過濾組函數或組信息的結果,它寫在group by子句之後。

示例:

選擇最高(b.name),平均(a.salary),最高(c.name)

從s_emp a,s_dept b,s_region c

其中a .部門標識=b .標識,b .區域標識=c .標識

按b.id分組

有sum(a.salary)>4000;

Column還可以用別名定義列的格式。

列“別名”格式定義

註意:應先過濾掉不必要的記錄,然後進行分組,以提高效率。

第四,子查詢

子查詢是可以嵌入到任何sql語句中的select語句。

當子查詢嵌套在select語句中時,首先執行子查詢。通常,子查詢會放在運算符的右側。

註意:使用子查詢時,註意該運算符是單行的(即只能是單值的)還是多行的(range,multi-valued,in)。

同時使用子查詢返回的結果必須符合運算符的用法。

示例:

選擇名字,職位

從s_emp

其中title=any(從s_emp中選擇標題

其中姓氏= '史密斯')

和upper(姓氏)!=‘史密斯’;

選擇名字,職位

從s_emp

其中標題在(從s_emp中選擇標題

其中姓氏= '史密斯')

和upper(姓氏)!=‘史密斯’;

動詞 (verb的縮寫)將業務需求轉化為操作表

壹:需求分析

第二:畫壹個E-R圖

三:轉換為表關系

四:割接(新舊系統的交接)

五:

E-R圖屬性:

*是必需的非空屬性。

o可選屬性(可能有也可能沒有值)

# *表示該屬性是唯壹的且不為空。

實體關系:

mastbean maybean

數量關系:多對壹關系

壹對多關系

壹對壹的關系

多對多關系

第壹範式,所有的屬性都必須是單值的,也就是屬性只代表單壹的意義。(記錄可以重復,沒有任何限制)

第二種範式要求惟壹的非空屬性(記錄不能重復,但數據可能是冗余的)。

在第三種範式中,非主屬性只能依賴於主屬性,而不能依賴於其他非主屬性。(解決數據冗余問題)

不及物動詞限制

約束是為表中的字段定義的。

主鍵(PK)保證實體的完整性和記錄的唯壹性。

主鍵約束唯壹非空,每個表只能有壹個主鍵,兩個字段組合起來作為主鍵,只有兩個字段放在壹起唯壹標識記錄,稱為聯合主鍵。

外鍵(FK)保證了引用的完整性,

外鍵約束,外鍵的值被另壹個表中的主鍵或唯壹值約束,不能取其他值,只能引用主鍵的值。被引用的表稱為父表(父表),引用的表稱為子表(子表)。如果要創建子表,必須先創建父表,然後創建子表,記錄插入、先創建父表、再創建子表和刪除也是如此。刪除表時,先刪除子表,再刪除父表。

唯壹鍵,該值是唯壹的。

索引(Index)是數據庫、視圖(圖表)的獨特類別

典型的壹對多班級對應多個學生。

學生表班級表

______________________________ _________________________

| id |姓名|地址|班級id | | id |班級desc |班級編號|

|(PK)| _ _ _ _ _ _ | _ _ _ _ _ _ |(FK)_ _ |(PK)| _ _ _ _ _ _ _ | _ _ _ _ _ _ |

| | | | | | | | |

壹對壹的

學生表申分證表

____________________ _________________________________

| id |姓名|地址| | s _ id | shenfen _ desc | shenfen _ num |

|(PK)| _ _ _ _ _ _ | _ _ _ _ _ _ |(PK,FK)| _ _ _ _ _ _ _ _ _ _ _ _ | _ _ _ _ _ _ |

| | | | | | | |

多對多

學生桌鐘健桌柯城桌

____________________ _________________________________ __________________

| id |姓名|地址| | s _ id | Shen fen _ desc | Shen fen _ num | | kid | ke cheng name |

|(PK)| _ _ _ _ _ _ | _ _ _ _ _ _ |(FK,FK)| _ _ _ _ _ _ _ _ _ _ _ _ | _ _ _ _ _ _ |(PK)| _ _ _ _ _ _ _ _ _ _ _ _ |

||||||||聯合主鍵||||||

引用對方表的主鍵作為自己的主鍵,所以這個表的主鍵既是主鍵又是外部主鍵。

表構建和其他相關操作

DDL語句

創建表格:

創建表表名(字段名稱1類型(數據長度)(默認...)約束,字段名2類型(數據長度)約束);

Oracle數據庫中的數據類型

Varchar (length),可變長度字符串,char (length)固定長度

號碼(...,...),而number代表浮點數或整數。

Long large object,帶有clog字符的大型對象,相當於在表中只存儲壹個文本文件,相當於只定位值。

博客二進制大對象也是以指針的形式存儲的。

主鍵約束:

主鍵約束的定義:

第壹種定義形式:

創建表測試(c數主鍵);列級約束

第二種定義形式:

創建表測試(c號,主鍵(c));表級約束

創建表測試(c1數字約束pkc1主鍵);該約束有壹個名稱:pkc1。

創建表測試(c號,c2號,主鍵(c,c 1));聯合主鍵可以通過表級約束來實現。

Foregin key (fk)外鍵約束:

(先定義父表,再定義子表)

carete表父(c1數字主鍵);

創建表子項(c號主鍵,c2號引用父項(c 1));

或表級約束定義:

創建表子項(c數主鍵,c2數,外鍵(c2)引用父項(c 1));

如果兩個字段都唯壹且不為空,則可以定義為UK+NOT NULL。

(PK或英國)壹對多(FK)

(PK+英國)壹對壹(FK)或(PK)壹對壹(PK)

多對多關系壹般通過壹個中間表分解成兩個壹對多表。

建立表格

創建表[模式]表

模式:壹個用戶對應壹個模式,不同用戶下的表不能互相查看。

select count(*)from s _ dept;& lt= = = & gtselect count(*)from SD 0611 . s _ dept;

壹個表中只能存儲壹種LONG類型。

CLOB存儲大型文本對象。

BLOB存儲大型二進制對象。

創建表測試(c1數字主鍵);設置主鍵

創建表測試(c1數字約束測試_c1主鍵);定義約束名,默認約束名為SYS_ Defining約束後列稱為列級約束。

創建表測試(c1號主鍵(c 1));在所有列都定義好之後再定義約束,稱為表級約束(可以定義聯合主鍵)。

cretae表測試(c1號,c2號,主鍵(c1,C2));定義聯合主鍵

創建表子(c1數字主鍵);首先定義父表。

創建子表(c1數字主鍵,c2數字引用父表(c 1));然後定義子表引用父表並定義外鍵。

創建子表(c1數字主鍵,c2數字引用父表(c1)刪除級聯);級聯刪除是級聯刪除。

創建子表(c1數字主鍵,c2數字引用父表(c1)刪除集合null);On delete set null在刪除後將外鍵留空。

創建子表(c1數字主鍵,c2數字,外鍵(c2)引用父表(c 1));

第二,制約因素

1,非空約束(非空)

這是壹個列級約束。

建表時,在數據類型後加not null,即插入時不允許插入空值。

示例:創建表student (id號主鍵,name varchar2 (32) not null,address varchar 2(32));

2.唯壹唯壹約束

忽略空值的唯壹約束要求插入記錄中的值為1。

示例:創建表student(id號,name varchar2 (32),address varchar2 (32),主鍵(id),unique(address));

如果創建英國,系統會自動創建唯壹的索引。

3、pk、英國

Oralce支持級聯刪除,不支持級聯更新。

4.檢查約束

檢查約束。您可以根據指定的條件檢查記錄的插入。check中不能使用尾列、函數等字段。

例:創建表sal (a1數,check(a 1 > 1000));