分组后分页_SQL(约束、视图、分页、序列、索引、同义词、创建用户,为用户授权、执行计划的使用 数据的导入导出)...
學習主題:SQL
學習目標:
- 掌握約束
- 掌握視圖
修改表名與刪除表
刪除表中的列語句的語法結構是什么?
答:delete 表名from table where ;
刪除表中的列語句的語法結構是什么?
答:delete 表名from table where ;
截斷表的語句是什么?
答:truncate table 表名;
刪除表的語句是什么?
答:drop table 表名;
截斷表與刪除的區別是什么?
答:
截斷:截斷表中的所有的數據,但是保留表結構,在截斷表時不能給定條件(即無where)
刪除:刪除表中所有數據包括表結構,刪除指定的where條件。
定義約束原則
答:
創建一個約束:在創建表的同時,或者在創建表之后都可以定義約束。可以給約束起名 字,但是約束名不能相同,必須是唯一的。如果沒有為約束起名字,Oracle 服務器將用默 認格式 SYS_Cn 產生一個名字,這里 n 是一個唯一的整數,所以約束名是唯一的。
定義非空約束
數據庫中的約束有哪些類型?
答:
非空約束(NOTNULL)
唯一性約束(UNIQUE)
主鍵約束(PRIMARYKEY)
外鍵約束(FOREIGNKEY)
用戶自定義約束(CHECK)
每個約束的含義是什么?
答:
主鍵約束:鍵列必須具有唯一性,且不能為空,一個表只能含有一個主鍵
唯一約束:鍵列具有唯一性,但可以有多個null
非空約束:強制鍵列必須有值,不能為空
外鍵約束:外鍵約束定義在具有父子關系的表中,外鍵約束的子表中的列和對應父表中的列數據類型必須相同。
檢查約束:根據情況為列指定條件,當條件為真時,才能插入數據
定義約束的原則是什么?
答:
創建一個約束:在創建表的同時,或者在創建表之后都可以定義表約束。可以給約束起名字,但是約束名不能相同,必須是唯一的。如果沒有為約束起名字,Oracle服務器將用默認格式SYS_Cn產生一個名字,n是一個唯一的整數,所以約束名是唯一的。
定義唯一性約束
創建dept90表,包含如下列:id number具備唯一性約束、name varchar2(20)。
答:create table dept90 (id number constraint dept90_uk unique,name varchear2(20));
定義主鍵約束
創建dept70表,包含如下列:id number具備主鍵約束。
答:create table dept70(id number constraint dept70_pk primary key);
定義外鍵約束
創建dept40表,包含如下列:id number、d_id number并為d_id列分配鍵列約束參照DEPT60表的id列。
答:create table dept40(id number,d_id number ,constraint dept40_fk foreign key(d_id) references dept60(id) );
定義檢查約束
創建dept30表,包含如下列:id number、salary number(8,2)。為salary分配檢查約束檢查條件為salary>1000。
答:create table dept30(id number,salary number(8,2) constraint dept30_ck check key(salary>1000));
禁用與啟用約束
在Oracle中查看約束的數據字典表叫什么名字?
答:user_constraints
禁用約束語句的語法結構是什么?
答:alter table 表名 disable constraint 約束;
級聯禁用約束語句的語法結構是什么?
答:alter table 表名 disable constraint 約束[cascade];
啟用約束語句的語法結構是什么?
答:alter table 表名 enable constraint 約束;
什么是視圖
什么是視圖?
答:
可以通過創建表的視圖來表現數據的邏輯子集或數據的組合。視圖是基于表或另一個視圖的邏輯表,一個視圖并不包含它自己的數據,它像一個窗口,通過該窗口可以查看或改變表中的數據。視圖基于其上的表稱為基表。
視圖的優越性是什么?
答:
視圖限制數據的訪問,因為視圖能夠選擇性的顯示表中的列。
視圖可以用來構成簡單的查詢以取回復雜查詢的結果。
視圖對特別的用戶和應用程序提供數據獨立性,一個視圖可以從幾個表中取回數據。
視圖分為幾種類型?
答:
簡單視圖、復雜視圖
不同類型的視圖的區別是什么?
答:
簡單視圖:數據僅來自一個表,不包含函數或數據分組,能通過視圖執行DML操作
復雜視圖:數據來自多個表,包含函數或數據分組,不允許通過視圖執行DML操作
創建簡單視圖
創建簡單視圖的語法結構是什么?
答:create view 視圖名 as 創建視圖所查詢的語句(查詢結果看成一個表);
創建復雜視圖
創建一個名為DEPT_NAME的復雜視圖,包含每個部門的部門名稱,部門最低薪水、部門最高薪水以及部門的平均薪水。
答:create view DEPT_NAME as select d.department_name,min(e.salary) min,max(e.salary) max,avg(e.salary) avg from employees e ,departments d where e.department_id = d.department_id group by d.department_name;
視圖中 DML 操作的執行規則
使用DML操作的執行規則是什么?
答;
如果視圖中包含下面的部分就不能修改數據:
組函數
Group by子句
Distinct關鍵字
用表達式定義的列
如何設置視圖拒絕DML操作?
答:在創建視圖的后面加上with read only 表示當前視圖為只讀視圖
刪除視圖
如何刪除視圖?
答:drop view 視圖名;
刪除視圖后數據為什么不會丟失?
答:刪視圖不會丟失數據,因為視圖是基于數據庫中的基本表的。
什么是內建視圖
什么是內建視圖?
答:內建視圖是一個帶有別名的可以在SQL語句中使用的子查詢。
學習主題:SQL
學習目標:
- 掌握分頁
- 掌握序列
- 掌握索引
使用內建視圖實現TOP-N分析
什么是TOP-N分析?
答:TOP-N查詢在需要基于一個條件,從表中顯示最前面的n條記錄或最后面的n條記錄時是有用的。(排序)
從 employees表中顯示掙錢最多的 3 個人的名字及其薪水。
答:select rownum,last_name,salary from(select last_name,salary from employees order by salary desc)where rownum<=3;
顯示 employees表中4 個資格最老的雇員顯示他們的入職時間與名字。
答:select rownum,hire_date,last_name from (select hire_date,last_name from employees order by hire_date) where rownum<=4;
Oracle的分頁查詢
什么是分頁查詢?
答:查詢數據時不要一次性查詢所有數據,每次只查詢一部分數據。這樣分批次地進行處理,可以呈現出很好的用戶體驗,對服務器的消耗資源也不大。
查詢雇員表中數據,每次只返回10條數據。
答:select * from (select rownum rn,e.* from employees e) em where em.rn between 1 and 10;
什么是序列
什么是Oracle的序列?
答:序列是用戶創建的數據庫對象,序列會產生唯一的整數。
創建序列的語法結構是什么?
答:create sequence 序列名;
創建序列
創建一個序列名稱為:dept_seq,增長間隔為10,從120開始,最大值為9999,不緩存。不循環使用。
答:create sequence dept_seq increment by 10 start with 120 maxvalue 9999 nocache nocycle;
通過PL/SQL Developer創建和dept_seq相同的序列,并命名為dept_seq2。
答:
使用序列
Oracle記錄序列的數據字典表叫什么?
答:user_sequences
Oracle的序列中包含多少偽列?每個偽列的特點是什么?
答:
Oracel序列中包含兩個偽列
Nextval:返回下一個可用的序列值,它每次返回一個唯一的被引用值,即使對于不同的用戶也是如此。
Currval:獲得當前的序列值。
在currval獲得一個值以前,nextval對該序列必須發布。
修改刪除序列
修改序列的語法結構是什么?
答:alter sequence 序列名;
修改序列的原則是什么?
答:
必須是被修改序列的所有者,或者有alter權限。
用alter sequence 語句,只有以后的序列數會受影響。
用alter sequence語句,start with選項不能被改變。為了以不同的數重新開始一個序列,該序列必須被刪除和重新創建。
什么是索引
什么是索引?
答:
在關系型數據庫中,索引是一種單獨的、物理的對數據庫表中一列或多列的值進行排序的一種存儲結構,它是某個表中一列或若干列值的集合和相應的指向表中物理標識這些值的數據頁的邏輯指針清單。
索引有哪些類型?
答:索引有唯一性索引和非唯一性索引。
創建索引的方式有幾種?
答:創建索引的方式有兩種,自動創建和手動創建。
唯一性索引被系統自動創建,非唯一性索引需要手動創建。
索引的使用
什么情況下創建索引?
答:
一個列包含一個大范圍的值
一個列包含很多的空值
一個或多個列經常同時在一個where子句中或一個連接條件中被使用
表很大,并且經常的查詢期望取回少于百分之2到4的行。
什么情況下不創建索引?
答:
表很小
不經常在查詢中作為條件被使用的列
大多數查詢期望取回多于表中百分之2到4的行
表經常被更新
被索引的列作為表達式的一部分被引用
創建索引(單行索引,復合索引,函數索引)
Oracle的非唯一性索引包含哪些類型?
答:單行索引、復合索引、函數索引
創建索引的語法結構是什么?
答:create index 索引名 on 表名(列名);
刪除索引的語法結構是什么?
答:drop index 索引名;
學習主題:SQL
學習目標:
- 掌握同義詞
- 掌握創建用戶,為用戶授權
同義詞的使用
什么是Oracle的同義詞?
答:
同義詞可以去除對象名必須帶的方案限制,并提供給你一個可替換表名、視圖名、序列名和存儲過程名或其他對象名。
創建同義詞的語法結構是什么?
答:create synonym 別名 for 表名
刪除同義詞的語法結構是什么?
答:drop synonym 別名;
創建用戶
什么是Oracle的用戶?
答:Oracle用戶是用來連接數據庫和訪問數據庫對象的。
創建用戶的語法結構是什么?
答:create user 用戶名 identified by 密碼;
刪除用戶的語法結構是什么?
答:drop user 用戶名;
刪除用戶同時刪除該用戶下的其他對象的語法結構是什么?
答:drop user 用戶名 cascade;
授予用戶系統權限
數據庫控制語言的作用是什么?
答:為用戶分配權限。
撤銷用戶系統權限
撤銷權限的句法結構是什么?
答:revok 權限 from 用戶;
(授予是 grant to)
通過角色為用戶授權
什么是角色?
答:
角色是命名的可以授予用戶的相關權限的組,該方法使得授予、撤回和維護權限容易的多。一個用戶可以使用幾個角色,并且幾個用戶也可以被指定相同的角色。(權限的集合)
創建角色的語法結構是什么?
答:create role 角色名;
為角色授予權限的語法結構是什么?
答:grant 權限 to 角色名;
為用戶授予角色的語法結構是什么?
答;grant 角色名 to 用戶名;
撤銷用戶角色的語法結構是什么?
答:revoke 角色 from 用戶名;
學習主題:SQL
學習目標:
- 掌握執行計劃的使用
- 掌握數據的導入和導出
什么是執行計劃
什么是執行計劃?
答: 執行計劃是一條查詢語句在Oracle中的執行過程或訪問路徑的描述。
執行計劃中的Cardinality、Bytes、COST、Time字段分別表示什么含義?
答:
Cardinality:基數,Oracle估計的當前操作的返回結果集行數。
Bytes:字節,執行該步驟后返回的字節數。
COST:消耗、CPU消費,Oracle估計的該步驟的執行成本,用于說明SQL執行的代價。
Time:時間,Oracle估計的當前操作所需要的時間。
執行計劃中的執行順序是什么順序?
答:縮進最多的最先執行;(縮進相同時,最上面的最先執行)
執行計劃中的表與索引的訪問方式
數據庫中的TABLE ACCESS FULL表示什么含義?
答:全表掃描
數據庫中的TABLE ACCESS BY INDEX ROWID表示什么含義?
答:通過ROWID的表存取
數據庫中的TABLE ACCESS BY INDEX SCAN表示什么含義?
答:索引掃描
執行計劃的使用
通過執行計劃分析查詢employees表中的所有數據的查詢語句。
答:
通過執行計劃分析查詢employees表中employees_id為100的雇員的查詢語句。
答:
通過執行計劃分析查詢雇員名字為Tarloy的雇員的查詢語句。
答:
通過執行計劃分析查詢雇員名字中含有a的雇員的查詢語句。通過執行計劃分析查詢雇員名字中含有a的雇員的查詢語句。
答:
Oracle的數據導入與導出
數據庫導入導出需要注意什么?
答:
目標數據庫要與源數據庫有著名稱相同的表空間。
目標數據在進行導入時,用戶名盡量相同(這樣保證用戶的權限級別相同)
目標數據庫每次在進行導入前,應做好數據備份,以防數據丟失。
弄清是導入導出到相同版本還是不同版本
目標數據導入前,弄清是數據覆蓋還是僅插入新數據或替換部分數據表
確定目標數據庫磁盤空間是否足夠容納新數據,是否需要擴充表空間
導入導出時注意字符集是否相同,一般Oracle數據庫的字符集只有一個,并且固定,一般不改變
確定操作者的賬號權限。
導出數據格式有幾種?每種的特點是什么?
答:
Dmp格式:.dmp是二進制文件,可跨平臺,還能包含權限,效率好
Sql格式:.sql格式的文件,可用文本編輯器查看,通用性比較好,適合小數據量導入導出。尤其注意的是表中不能有大字段,如果有會報錯。
Pde格式:.pde格式的文件,.pde為PLSQL Developer自有的文件格式,只能用PLSQL Developer工具導入導出,不能用文本編輯器查看。
exp與imp命令講解
導出數據的命令格式是什么?
答:exp 用 戶 名 / 密 碼 @ 連 接 地 址 : 端 口 / 服 務 名 file= 路 徑 / 文 件 名 .dmp
導入數據的命令格式是什么?
答:imp 用 戶 名 / 密 碼 @ 連 接 地 址 : 端 口 / 服 務 名 file= 路 徑 / 文 件 名 .dmp
總結
以上是生活随笔為你收集整理的分组后分页_SQL(约束、视图、分页、序列、索引、同义词、创建用户,为用户授权、执行计划的使用 数据的导入导出)...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 地下城与勇士追星逐月武器怎么变永久性
- 下一篇: mysql 从库_mysql数据库主从配