第一篇:Oracle數(shù)據(jù)庫觸發(fā)器京橋大學
京橋大學召開“解放思想、改革開放、創(chuàng)新驅(qū)動、科學發(fā)展”大討論活動動員大會 為深入貫徹落實黨的十八大精神、5月15日下午,我院在辦公樓二樓大會議室召開“解放思想、改革開放、創(chuàng)新驅(qū)動、科學發(fā)展”大討論活動動員大會。學院黨委書記魏東海作重要講話,黨委副書記張瑾主持會議,學院領導和全體中層干部參加了會議。
魏書記在講話中指出,開展“解放思想、改革開放、創(chuàng)新驅(qū)動、科學發(fā)展”大討論活動,是全面貫徹黨的十八精神、深入落實黨的十八大精神的重要舉措,也是實現(xiàn)我院進位趕超、跨越發(fā)展的關鍵,全體教職員工要真正學深吃透黨的十八大精神和市委八屆五次全會精神,切實將黨的理論創(chuàng)新成果和市委的決策部署轉(zhuǎn)化成促進學院科學發(fā)展的自覺行動;要深刻查找與學院科學發(fā)展不相適應的思想觀念,進一步開創(chuàng)解放思想的新境界;要扎實深入開展對標行動,在學習先進、調(diào)查研究、對比分析中,查找差距不足,制定趕超計劃;要緊密聯(lián)系學院實際,著力解決影響學院科學發(fā)展的突出問題;要把創(chuàng)新突破貫徹始終,堅持邊學習邊討論邊實踐,把大討論成果轉(zhuǎn)化為解決問題的科學決策、趕超進位的科學路徑、科學發(fā)展的實際行動。
魏書記指出,要緊密圍繞“解放思想、改革開放、創(chuàng)新驅(qū)動、科學發(fā)展”這一主題,緊密聯(lián)系思想和工作實際,從如何在辦學理念上解放思想,在培養(yǎng)現(xiàn)代職業(yè)人的方法和路徑上尋求新突破;如何在人才觀念上解放思想,在引進人才、培養(yǎng)人才、用好人才上尋求新突破;如何在體制創(chuàng)新上解放思想,在建立長效動能機制上尋求新突破;如何在服務區(qū)域經(jīng)濟社會發(fā)展上解放思想,在實現(xiàn)校企的深度合作上尋求新突破;如何在目標管理上解放思想,在推進全面對標,提升學院核心競爭力上尋求新突破;如何在深化改革育人模式上解放思想,在“立德樹人”提高人才培養(yǎng)質(zhì)量上實現(xiàn)新突破;如何在營造發(fā)展環(huán)境上解放思想,在提升學院發(fā)展能力上實現(xiàn)新突破;如何在干部隊伍建設上解放思想,在提升學院凝聚力戰(zhàn)斗力上實現(xiàn)新突破等八個方面開展討論,探索促進學院改革發(fā)展的新思路、新途徑、新舉措,努力實現(xiàn)思想上明顯解放,作風上明顯改善,舉措上明顯創(chuàng)新,工作上明顯突破,為建設人民滿意、市內(nèi)領先、國內(nèi)知名、特色鮮明的民辦院校奠定堅實的基礎。
魏副書記在會議結(jié)束時強調(diào),各黨總支要切實負起責任,認真組織教職員工開展學習討論,及時對本總支大討論活動的開展情況、成果轉(zhuǎn)化情況進行自查。全體教職工要以此次大討論活動為契機,促進教育思想和觀念的更新,推動學院又好又快發(fā)展。
第二篇:網(wǎng)絡數(shù)據(jù)庫講稿(觸發(fā)器)
網(wǎng)絡數(shù)據(jù)庫講稿
3/26/2013
觸發(fā)器
P191
一、觸發(fā)器概述
1.是一種特殊的存儲過程。
2.不能被顯式調(diào)用,只能由一些特定的操作(命令)引發(fā)(激活),這些命令是:INSERT、DELETE、UPDATE、CREATE、ALTER、DROP、GRANT、DENY、REVOKE等。3.每個觸發(fā)器由三部分組成
①觸發(fā)器名稱:命名規(guī)則與變量名、存儲過程名相同; ②激活該觸發(fā)器的操作(命令動詞)。③一個存儲過程。
4.使用觸發(fā)器可強制實現(xiàn)數(shù)據(jù)的一致性和完整性。
二、觸發(fā)器的分類(按引發(fā)命令分類)及其工作原理
1.DML觸發(fā)器(表級)(1)觸發(fā)器必須依附于某一個表(觸發(fā)器必須被包含在某一個表中)。(2)激活該觸發(fā)器的操作:可以是INSERT、DELETE、UPDATE之一。(3)當上述操作發(fā)生在包含觸發(fā)器的表上時,觸發(fā)器中的過程被自動執(zhí)行。(4)支持兩種類型的觸發(fā)器: ①AFTER 可以為同一表的同一操作定義多個該類型的觸發(fā)器,并可定義執(zhí)行順序; ②INSTEAD OF 同一表的同一操作只能定義一個該類型的觸發(fā)器。(5)工作原理
P193 臨時邏輯表INSERTED和DELETED。2.DDL觸發(fā)器(數(shù)據(jù)庫級和服務器級)(1)觸發(fā)器必須依附于某一個數(shù)據(jù)庫(觸發(fā)器必須被包含在某一個數(shù)據(jù)庫中)。
(2)激活該觸發(fā)器的操作:可以是CREATE、ALTER、DROP、GRANT、DENY、REVOKE等之一。
(3)當上述操作發(fā)生在包含觸發(fā)器的數(shù)據(jù)庫上時,觸發(fā)器中的過程被自動執(zhí)行。(4)只有AFTER型觸發(fā)器。
三、創(chuàng)建DML觸發(fā)器
P194 用命令CREATE TRIGGER創(chuàng)建 例: 1.
CREATE TRIGGER 增加學生學分 ON 成績
//只能增加一條記錄
FOR INSERT AS DECLARE @XH CHAR(6),@KCH CHAR(8),@FS DECIMAL(4,1)SELECT @XH=學號,@KCH=課程編號,@FS=分數(shù) FROM INSERTED IF @FS>=60
網(wǎng)絡數(shù)據(jù)庫講稿
3/26/2013
UPDATE 學生 SET 已修學分
=已修學分+(SELECT 學分 FROM 課程 WHERE 課程編號=@KCH)
WHERE 學號=@XH 2.
CREATE TRIGGER 減少學生學分 ON 成績 FOR DELETE AS UPDATE 學生 SET 已修學分=已修學分-(SELECT SUM(學分)FROM 課程 WHERE 課程編號 IN(SELECT DISTINCT 課程編號 FROM DELETED WHERE 學生.學號=DELETED.學號 AND 分數(shù)>=60))WHERE EXISTS(SELECT DISTINCT 課程編號 FROM DELETED WHERE 學生.學號=DELETED.學號 AND 分數(shù)>=60)3.CREATE TRIGGER 修改學生學分 ON 成績 FOR UPDATE AS UPDATE 學生 SET 已修學分=已修學分-(SELECT SUM(學分)FROM 課程 WHERE 課程編號 IN(SELECT DISTINCT 課程編號 FROM DELETED WHERE 學生.學號=DELETED.學號 AND 分數(shù)>=60))WHERE EXISTS(SELECT DISTINCT 課程編號 FROM DELETED WHERE 學生.學號=DELETED.學號 AND 分數(shù)>=60)UPDATE 學生 SET 已修學分=已修學分+(SELECT SUM(學分)FROM 課程WHERE 課程編號 IN(SELECT DISTINCT 課程編號 FROM INSERTED WHERE 學生.學號=INSERTED.學號 AND 分數(shù)>=60))WHERE EXISTS(SELECT DISTINCT 課程編號 FROM INSERTED WHERE 學生.學號=INSERTED.學號 AND 分數(shù)>=60)
4.“修改學生學分”也可改為:
CREATE TRIGGER 修改學生學分 ON 成績 FOR UPDATE AS UPDATE 學生 SET 已修學分=(SELECT SUM(學分)FROM 課程 WHERE 課程編號 IN
網(wǎng)絡數(shù)據(jù)庫講稿
3/26/2013(SELECT 課程編號 FROM 成績
WHERE 學生.學號=成績.學號 AND 分數(shù)>=60))
然后可執(zhí)行下列命令,并檢驗執(zhí)行結(jié)果。
--INSERT INTO 成績 VALUES('200202','L2020308',83)--INSERT INTO 成績 VALUES('200202','L2030501',80)--INSERT INTO 成績 VALUES('200202','L2030506',75)--DELETE FROM 成績 WHERE 學號='200202' AND LEFT(課程編號,1)='L'--UPDATE 成績 SET 分數(shù)=80 WHERE 學號='200202' AND LEFT(課程編號,1)='L'
四、創(chuàng)建DDL觸發(fā)器
P198 例: 1.P199 2.CREATE TRIGGER 禁刪數(shù)據(jù)庫ON ALL SERVER FOR DROP_DATABASE AS PRINT '請不要刪除數(shù)據(jù)庫!' ROLLBACK TRANSACTION
DROP DATABASE 訂貨管理
五、嵌套觸發(fā)器和遞歸觸發(fā)器
P199, P200
六、管理觸發(fā)器
P201 1.查看 2.修改 3.禁用 4.刪除
--根據(jù)成績表計算每個學生的已修學分
update 學生set 已修學分=(select sum(學分)from 課程 where 課程編號in(select 課程編號from 成績where 學生.學號=成績.學號 and 分數(shù)>=60))
--修改插入觸發(fā)器,使得向成績表中插入多條記錄,也能成功執(zhí)行 CREATE TRIGGER 插入學生學分ON 成績 FOR insert
網(wǎng)絡數(shù)據(jù)庫講稿
3/26/2013 AS UPDATE 學生SET 已修學分=已修學分+(SELECT SUM(學分)FROM 課程 WHERE 課程編號IN(SELECT DISTINCT 課程編號FROM inserted WHERE 學生.學號=inserted.學號AND 分數(shù)>=60))WHERE EXISTS(SELECT DISTINCT 課程編號FROM inserted WHERE 學生.學號=inserted.學號AND 分數(shù)>=60)
select * from 成績
select 學號,已修學分from 學生
INSERT INTO 成績VALUES('200202','L2020308',83)INSERT INTO 成績VALUES('200202','L2030501',80)INSERT INTO 成績VALUES('200202','L2030506',75)INSERT INTO 成績VALUES('200201','L2020308',83)INSERT INTO 成績VALUES('200201','L2030501',80)INSERT INTO 成績VALUES('200201','L2030506',75)
select * into 備份成績from 成績 //備份成績表 select 學號,姓名,已修學分from 學生
insert into 成績 select * from 成績
INSERT INTO 成績VALUES('200212','L2030506',75)
第三篇:Oracle數(shù)據(jù)庫實驗報告
中南林業(yè)科技大學
實驗報告
課程名稱:
Oracle數(shù)據(jù)庫 專業(yè)班級: 姓名:
學號:
****年**月**日
實驗一
安裝和使用Oracle數(shù)據(jù)庫
【實驗目的】
1.掌握Oracle軟件安裝過程,選擇安裝組件 2.掌握建立Oracle數(shù)據(jù)庫,配置網(wǎng)絡連接 3.掌握Oracle企業(yè)管理器的基本操作 4.使用SQL*Plus,登錄到實例和數(shù)據(jù)庫 5.掌握命令方式的關閉和啟動實例及數(shù)據(jù)庫 【實驗內(nèi)容】
1.查看已安裝的Oracle組件
2.查看服務,記錄下和數(shù)據(jù)庫有關的服務名,將他們設為手動方式,啟動相關服務。
3.配置監(jiān)聽器,查看是否在服務中有LISTENER,是否能啟動。4.配置本地net服務,提示:設置正確的服務器地址和端口號。5.打開SQL*Plus,用SYS和SYSTEM用戶名和密碼登錄。6.思考題:有幾種打開SQL*Plus的方法?分別是什么? 7.用命令關閉實例和數(shù)據(jù)庫,記錄命令
8.用命令以NOMOUNT的方式啟動實例,再加載數(shù)據(jù)庫,打開數(shù)據(jù)庫。
【實驗結(jié)論】
1.查看已安裝的Oracle組件
2.查看服務,記錄下和數(shù)據(jù)庫有關的服務名,將他們設為手動方式,啟動相關服務。
3.配置監(jiān)聽器,查看是否在服務中有LISTENER,是否能啟動。
4.配置本地net服務,提示:設置正確的服務器地址和端口號。
5.打開SQL*Plus,用SYS和SYSTEM用戶名和密碼登錄。
6.思考題:有幾種打開SQL*Plus的方法?分別是什么?(1)直接打開 sql plus 即窗口方式(2)cmd 命令行方式
(3)WEB 頁面中 iSQL*Plus 方式 7.用命令關閉實例和數(shù)據(jù)庫,記錄命令 SQL>shutdown immediate
8.用命令以NOMOUNT的方式啟動實例,再加載數(shù)據(jù)庫,打開數(shù)據(jù)庫。
sql>startup nomount sql>alter database mount;sql>alter database open;sql>startup
(1).用SQLplus 命令:show parameters參數(shù)名
(2).用select [列名] from 表名
2.初始化文件有幾種?默認的保存位置在哪里?
初始化文件有三種:數(shù)據(jù)文件,日志文件,控制文件; 默認的保存位置E:oracleproduct10.2.0oradataorcl
4.打開OEM,查看三類物理文件信息
三類物理文件:數(shù)據(jù)文件、控制文件、日志文件 數(shù)據(jù)文件:.DBF存儲表、索引及數(shù)據(jù)結(jié)構(gòu)信息
日志文件:.LOG記錄對數(shù)據(jù)庫的所有修改信息,用于恢復
控制文件:.CTL二進制文件,記錄數(shù)據(jù)庫名、文件標識、檢查點
5.分別用select命令查詢V$parameter動態(tài)性能視圖,用show命令查看全局數(shù)據(jù)庫名、實例名、是否啟動自動歸檔、標準數(shù)據(jù)塊大小這四個參數(shù)的值,記錄命令和結(jié)果。用select命令查詢V$parameter動態(tài)性能視圖
用show命令查看全局數(shù)據(jù)庫名、實例名
用show命令查看是否啟動自動歸檔、標準數(shù)據(jù)塊大小
6.如何用命令查看數(shù)據(jù)文件、控制文件的文件名、存儲位置和狀態(tài)信息?
(1).查看數(shù)據(jù)文件的文件名、存儲位置和狀態(tài)信息
(2).查看控制文件的文件名、存儲位置和狀態(tài)信息
0
和服務器型文件都要找到),查看各類默認位置并記錄下來(包括物理文件所在目錄,該數(shù)據(jù)庫相關的各個目錄等),登錄到mydb數(shù)據(jù)庫。
2.用命令方式手工創(chuàng)建數(shù)據(jù)庫testorcl
(1)創(chuàng)建批處理文件,建立必需的各級目錄,參考第一題MYDB數(shù)據(jù)庫的默認目錄。
(4)運行數(shù)據(jù)庫建立腳本,更改相關服務為手動啟動方式
(5)運行數(shù)據(jù)字典等創(chuàng)建腳本
3.在DBCA中刪除MYDB數(shù)據(jù)庫。
Enter valuefor 4:runner Specify log path as parameter 5: Enter valuefor 5: D:oracleproduct10.2.0db_2RDBMSlog
二、完成下面的查詢,記錄查詢命令和結(jié)果。1.查詢HR方案種有哪些表,列出表名 2.設置行寬為160,每頁行數(shù)為40 3.查詢employees表中所有薪水在3000到6000元之間的員工編號、姓、名、受聘日期、工作代號、薪水、經(jīng)理代號、部門號,按部門號升序排列,同一部門按員工編號降序排列
4.查詢每個部門的人數(shù)、平均薪水、最高薪水、最低薪水,按部門編號升序排列
5.查詢first_name的第三個字母是t的員工編號,first_name,電話號碼,部門編號,部門名稱
6.在job_history表中查詢?nèi)温殨r間超過1年的員工編號,任職歷時月份(保留整數(shù)),工作代號,部門代號。
7.查詢每個部門經(jīng)理的員工編號、姓名、薪水、部門號。
【實驗結(jié)論】
一、需要訪問HR示例方案中的表,如果機器上沒有該示例方案,則運行相關包和相應配置裝入HR方案。
1.將hr.rar解壓到D:oracleproduct10.2.0db_2demoschema human_resources目錄下,然后在SQL*PLUS 中執(zhí)行 hr_main.sql
二、完成下面的查詢,記錄查詢命令和結(jié)果。1.查詢HR方案種有哪些表,列出表名
5.查詢first_name的第三個字母是t的員工編號,first_name,電話號碼,部門編號,部門名稱
738
實驗五
PL/SQL編程
【實驗目的】
1.熟悉PL/SQL的數(shù)據(jù)類型和書寫規(guī)則 2.熟悉控制結(jié)構(gòu)和游標的使用 3.編寫和運行函數(shù)、過程和觸發(fā)器 【實驗內(nèi)容】
編寫腳本文件,調(diào)試運行腳本文件,并記錄結(jié)果。
1.在SQL*Plus中編寫一個PL/SQL塊,功能用于打印學生信息 在DECLARE部分完成:
(2)建立學生信息記錄類型stu_record_type,包括學號,姓名,性別,籍貫,學習成績和活動成績。均為可變長字符類型(3)編寫本地子過程:學生信息打印過程PrintStuRecord,把(1)中定義的記錄類型作為參數(shù)(4)定義學生信息記錄變量stu_record 在BEGIN…END部分完成:
(1)為stu_record變量的各個元素賦值如下: 學號:‘2001001’ 姓名:’李新’
性別:‘m’
籍貫:‘黑龍江省哈爾濱市’ 學習成績:‘Excellent’
0
(1)建立學生信息記錄類型stu_record_type,包括學號,姓名,性別,籍貫,學習成績和活動成績。均為可變長字符類型
set serveroutput on declare type stu_record_type is record
(s_no varchar2(8), s_name varchar2(10), s_sex varchar2(2), s_address varchar2(20), s_studyscore varchar2(10), s_activescore varchar2(10));(2)編寫本地子過程:學生信息打印過程PrintStuRecord,把中定義的記錄類型作為參數(shù)
procedure PrintStuRecord as begin dbms_output.put_line('學號:'|| stu_record.s_no);dbms_output.put_line('姓名 :'|| stu_record.s_name);dbms_output.put_line('性別:'|| stu_record.s_sex);dbms_output.put_line('籍貫:'|| stu_record.s_address);dbms_output.put_line('學習成績:'|| stu_record.s_studyscore);dbms_output.put_line('活動成績:'|| stu_record.s_activescore);end PrintStuRecord;(3)定義學生信息記錄變量stu_record stu_record stu_record_type;在BEGIN…END部分完成:
(4)為stu_record變量的各個元素賦值如下: 學號:‘2001001’ 姓名:’李新’
性別:‘m’
籍貫:‘黑龍江省哈爾濱市’
2.建立對bookinfo表的DML觸發(fā)器,一旦bookinfo表發(fā)生了任何變化,立即觸發(fā),對bookinfo表的數(shù)據(jù)進行統(tǒng)計,結(jié)果存儲在數(shù)據(jù)統(tǒng)計表中
(1)如果沒有則建立bookinfo表,選擇建立在scott用戶下,表結(jié)構(gòu)為(bookno varchar2(36)Primary key, bookname varchar2(40)not null, authorname varchar2(10)not null, publishtime date, bookprice float)
create table bookinfo(bookno varchar2(36)Primary key,4
Selectcount(bookno),count(distinct authorname)from bookinfo;end;/
(4)在bookinfo表中插入、刪除和更新信息,再查看major_stats表中數(shù)據(jù)的變化 <1>插入
647
實驗六
模式對象管理與安全管理
【實驗目的】
1.了解模式對象的類型
2.掌握在OEM中操作模式對象的方法
3.掌握命令方式建立表、視圖、索引等常見對象的方法 4.熟悉Oracle中權(quán)限分類和設置,理解系統(tǒng)提供用戶的角色和權(quán)限
5.熟練使用建立用戶、角色,為用戶授權(quán)、授予角色的命令
【實驗內(nèi)容】
1.創(chuàng)建一個TESTUSET用戶,密碼為test,默認表空間為user表空間
2.創(chuàng)建用戶后為其授予登錄數(shù)據(jù)庫和創(chuàng)建數(shù)據(jù)庫對象的權(quán)限 3.用TESTUSER用戶登錄數(shù)據(jù)庫
4.創(chuàng)建學生信息表(學號,姓名,性別,入學成績),定義主鍵和輸入數(shù)據(jù)(至少5條數(shù)據(jù)),提交添加的數(shù)據(jù)。并完成下面的題目:
(1)再繼續(xù)添加2條數(shù)據(jù),設置一個保存點savepoint,再添加1條數(shù)據(jù),執(zhí)行回退到保存點的回退命令。查看此時表中數(shù)據(jù)(2)查詢?nèi)雽W成績大于480的學生信息(3)建立男生信息視圖
(4)在“成績”字段上建立B-樹索引
5.創(chuàng)建一個表簇,名為empl_dep,容納empl表和dep表,有公
第四篇:ORACLE數(shù)據(jù)庫工作總結(jié)
2014-2015學第一學期ORACLE教學工作總結(jié)
班級:13高軟班
數(shù)據(jù)庫技術(shù)是計算機科學技術(shù)中發(fā)展最快的領域之一,也是應用最為廣泛的技術(shù)之一,它已經(jīng)成為計算機信息系統(tǒng)與應用的核心技術(shù)和重要基礎。所以在學習這門課時,注重學生實際操作能力,安排了理論與上機操作相結(jié)合。以下是我的工作總結(jié):
1、課前準備:備好課。認真學習貫徹教學大綱,鉆研教材。了解教材的基本思想、基本概念、結(jié)構(gòu)、重點與難點,掌握知識的邏輯。
了解學生原有的知識技能的質(zhì)量,他們的興趣、需要、方法、習慣,學習新知識可能會有哪些困難,采取相應的措施。
考慮教法,解決如何把已掌握的教材傳授給學生,包括如何組織教學、如何安排每節(jié)課的活動。
2、課堂上的情況。組織好課堂教學,關注全體學生,注意信息反饋,調(diào)動學生的注意力,使其保持相對穩(wěn)定性。同時,激發(fā)學生的情感,使他們產(chǎn)生愉悅的心境,創(chuàng)造良好的課堂氣氛,課堂語言簡潔明了,課堂提問面向全體學生,注意引發(fā)學生學習的興趣,課堂上講練結(jié)合,布置好課外作業(yè),減輕學生的負擔。
3、上機操作情況。讓學生復習操作上節(jié)課的學習內(nèi)容,布置一定的作業(yè),做到每個學生的每個SQL語句,每個操作抖完全掌握??傊?,作為一名教師,教學是我的基本工作,而教與學是一個良性互動的過程,在教中學,在學中教,才能實現(xiàn)自己在業(yè)務上的進步與飛躍。實施素質(zhì)教育對教師的素質(zhì)要求更高,在今后的教育教學中,我將嚴格要求自己,努力工作,發(fā)揚優(yōu)點,開拓進取,為教育事業(yè)奉獻自己的力量。
第五篇:Oracle數(shù)據(jù)庫 知識點總結(jié)
1.constraint約束:
alter table [table_name] add constraint [pk_name] primary key(pkname);//添加主鍵
alter table [table_name] drop constraint [pk_name];//刪除主鍵
alter table [table_name] add constraint [fk_name] foreign key(fkname)references [tablename](fkname);//添加外
鍵
alter table [table_name] drop constraint [fk_name];//刪除外鍵
2.union 關鍵字:
A username, B username
rod
bruce
rose
marina
select username from A
union
select username from B
2、幾個高級查詢運算詞
A: UNION 運算符
UNION 運算符通過組合其他兩個結(jié)果表(例如 TABLE1 和 TABLE2)并消去表中任何重復行而派生出一個結(jié)果表。當
ALL 隨 UNION 一起使用時(即 UNION ALL),不消除重復行。兩種情況下,派生表的每一行不是來自 TABLE1 就是來 自 TABLE2。
B: EXCEPT 運算符
EXCEPT 運算符通過包括所有在 TABLE1 中但不在 TABLE2 中的行并消除所有重復行而派生出一個結(jié)果表。當 ALL 隨
EXCEPT 一起使用時(EXCEPT ALL),不消除重復行。
C: INTERSECT 運算符
INTERSECT 運算符通過只包括 TABLE1 和 TABLE2 中都有的行并消除所有重復行而派生出一個結(jié)果表。當 ALL 隨
INTERSECT 一起使用時(INTERSECT ALL),不消除重復行。
注:使用運算詞的幾個查詢結(jié)果行必須是一致的。
3.復合主鍵一般不設外鍵
4.組函數(shù)也稱為聚合函數(shù)。
例如:我們把學生可以分為男生和女生兩個組,如果想求每組的人數(shù),平均身高,平均年齡等,就需要用到分組函數(shù)了。
在SQL中常用的組函數(shù)有以下幾個:
COUNT():求出全部的記錄數(shù)
MAX():求出一組中的最大值
MIN():求出一組中的最小值
AVG():求出一組中的平均值
SUM():求和
范例:COUNT()函數(shù)
SELECT COUNT(empno)FROM emp;
我們常用COUNT(*),最好能夠用字段代替*
范例:MAX()、MIN()函數(shù),求最大最小值,一般是針對于數(shù)值的字段的,求出所有員工的的最高工資,和最底工資和平均工
資。
SELECT MAX(sal)最高工資,MIN(sal)最底工資,AVG(sal)平均工資 FROM emp;
范例:求出部門10的所有員工工資的總合
SELECT SUM(sal)工資綜合 FROM emp WHERE deptno=10;
如果如下查詢輸出部門編號和其部門所有員工的工資總和,會產(chǎn)生錯誤。
SELECT deptno ,SUM(sal)工資綜合 FROM emp WHERE deptno=10;
錯誤: “不是單組分組函數(shù)”
發(fā)生以上的錯誤信息,是因為這樣的查詢需要進行分組統(tǒng)計。
分組統(tǒng)計有其固定的語法格式:
SELECT {DISTINCT} *| 查詢列 列別名1,查詢列2 列別名2,……
FROM 表名稱1 表別名1,表名稱2 表別名2,……
{WHERE 條件(s)}
{ORDER BY 排序的字段1,排序的字段2 ASC|DESC}
{GROUP BY 分組字段}
所以老師寫的是錯的!
5.//從t_student表中刪除名字重復的記錄的信息
delete from t_student where sid not in(select sid from(select min(sid)sid,sname from t_student group by sname));
// delete from tablename where id not in(select max(id)from tablename group by col1,col2,...)
6.sequence
在oracle中sequence就是序號,每次取的時候它會自動增加。sequence與表沒有關系。
(1)
CREATE SEQUENCE seqTest
INCREMENT BY 1--每次加幾個
START WITH 1--從1開始計數(shù)
NOMAXvalue--不設置最大值
NOCYCLE--一直累加,不循環(huán)
CACHE 10;--設置緩存cache個序列,如果系統(tǒng)down掉了或者其它情況將會導致序列不連續(xù),也可以設置為----NOCACHE(2)
定義好sequence后,你就可以用currVal,nextVal取得值。
CurrVal:返回 sequence的當前值
NextVal:增加sequence的值,然后返回 增加后sequence值
eg:
SELECT Sequence名稱.CurrVal FROM DUAL;
select seqtest.currval from dual(3)
在Sql語句中可以使用sequence的地方:
-不包含子查詢、snapshot、VIEW的 SELECT 語句
-INSERT語句的子查詢中
-INSERT語句的values中
-UPDATE 的 SET中
如在插入語句中
insert into 表名(id,name)values(seqtest.Nextval,'sequence 插入測試');
7.范式:
所謂第一范式(1NF)是指在關系模型中,對域添加的一個規(guī)范要求,所有的域都應該是原子性的,即數(shù)據(jù)庫表的每一
列都是不可分割的原子數(shù)據(jù)項,而不能是集合,數(shù)組,記錄等非原子數(shù)據(jù)項。即實體中的某個屬性有多個值時,必須拆分
為不同的屬性。在符合第一范式(1NF)表中的每個域值只能是實體的一個屬性或一個屬性的一部分。簡而言之,第一范式
就是無重復的域。
第二范式(2NF)是在第一范式(1NF)的基礎上建立起來的,即滿足第二范式(2NF)必須先滿足第一范式(1NF)。
第二范式(2NF)要求數(shù)據(jù)庫表中的每個實例或記錄必須可以被唯一地區(qū)分。選取一個能區(qū)分每個實體的屬性或?qū)傩越M,作
為實體的唯一標識。第二范式(2NF)要求實體的屬性完全依賴于主關鍵字。所謂完全依賴是指不能存在僅依賴主關鍵字一
部分的屬性,如果存在,那么這個屬性和主關鍵字的這一部分應該分離出來形成一個新的實體,新實體與原實體之間是一
對多的關系。為實現(xiàn)區(qū)分通常需要為表加上一個列,以存儲各個實例的唯一標識。簡而言之,第二范式就是在第一范式的基礎上屬性完全依賴于主鍵。例如在員工表中的身份證號碼即可實現(xiàn)每個一員工的區(qū)分,該身份證號碼即為候選鍵,任何
一個候選鍵都可以被選作主鍵。在找不到候選鍵時,可額外增加屬性以實現(xiàn)區(qū)分,如果在員工關系中,沒有對其身份證號
進行存儲,而姓名可能會在數(shù)據(jù)庫運行的某個時間重復,無法區(qū)分出實體時,設計辟如ID等不重復的編號以實現(xiàn)區(qū)分,被
添加的編號或ID選作主鍵。
第三范式(3NF)是第二范式(2NF)的一個子集,即滿足第三范式(3NF)必須滿足第二范式(2NF)。簡而言之,第三范式(3NF)要求一個關系中不包含已在其它關系已包含的非主關鍵字信息。例如,存在一個部門信息表,其中每個部門
有部門編號(dept_id)、部門名稱、部門簡介等信息。那么在員工信息表中列出部門編號后就不能再將部門名稱、部門簡
介等與部門有關的信息再加入員工信息表中。如果不存在部門信息表,則根據(jù)第三范式(3NF)也應該構(gòu)建它,否則就會有
大量的數(shù)據(jù)冗余。簡而言之,第三范式就是屬性不依賴于其它非主屬性,也就是在滿足2NF的基礎上,任何非主屬性不得傳
遞依賴于主屬性。