簡單介紹一下索引 約束 角色一些簡單的SQL

2021-06-22 15:34:30 字數 4098 閱讀 7243

維護資料庫的完整性

一般有三種 約束 ,觸發器 ,應用程式(過程,函式),其中約束具有較高的效能

約束包括 not null,unique,primary key, foreign key ,check 共五種   

unique  不能重複,但可以為空

乙個表可以有乙個主鍵,但可以有多個unique

create  table goods

(goodsid char(8)  primary key,

goodname varchar2(30),

unitprice number(10,2) check(unitprice>0),

category varchar2(8),

provider varchar2(30)

)create table customer 

(customerid  char(8) primary key,

name varchar2(50)  not null,

address varchar2(50),

email varchar2(50) unique,

***  char(2)  default '男' check(***  in  ('男','女')),

cardid  char(18)

)create table purchase

(customid  char(8) references customer(customerid),

goodid   char(8)  references  goods(goodsid),

nums number(10) check(nums between 1 and 30)

)alter table goods modify goodname not null;

alter table customer add constraint customer_indentity unique(cardid);

alter table customer add constraint address_check check (address in ('東城','西城'));

alter table customer  drop primary key cascade;

--顯示約束資訊

select * from user_constraints  t where t.table_name ='goods';

select * from  user_cons_columns  t  where t.constraint_name ='sys_c0011152';

--修改表的約束

alter table goods modify goodname not null;

alter table customer add constraint customer_indentity unique(cardid);

alter table customer add constraint address_check check (address in ('東城','西城'));

alter table customer  drop primary key cascade;

--顯示約束資訊

select * from user_constraints  t where t.table_name ='goods';

select * from  user_cons_columns  t  where t.constraint_name ='sys_c0011152';

---行級別約束定義

create  table department 

(departmentid   number(10)  constraint pk_depart primary key ,

name  varchar2(50),

loc varchar2(50)

)---表級別約束定義

create table employee

(empid  number(10),

departid number(10),

ename varchar(50),

constraint employee_pk    primary key (empid),

constraint employee_fk   foreign  key(departid) 

references  department(departmentid)

)-- 單索引

create index emp_name_index on employee(ename);

--復合索引

create    index  emp_name_category  on (name,catagory);

--使用原則

--1.在大表上建立資料

--2.不能再經where 字句和連線條件經常出現的列

--3.索引的層次不能超過四層 

索引的缺點

1.建立索引,系統要占用大約為表1.2倍的硬碟和記憶體坑技安來儲存索引。

2.更新資料的時候,系統必須要有額外的時間來同時對索引進行更新,以維持資料和索引的一致性

實踐證明 ,不恰當的索引不但於事無補,反而會降低系統的效能,因為大量的縮影在進行插入,修改和刪除操作時 比沒有索引時 要花費更多的時間

比如在如下欄位上建立索引應該是不恰當的

1.很少或從不應用的字段

2,,邏輯型的字段如男或女(是或否)等,綜上所述提高查詢效率是以消耗一定的系統資源為代價的,索引不能盲目的建立,這個是考驗dba 是否優秀的

乙個重要標準

索引的分類

唯一性可以分為唯一索引和非唯一索引

select *   from user_indexes  t where t.table_name='employee';

select * from user_ind_columns  t where t.index_name='emp_name_index'

資料庫包括系統許可權和物件許可權

檢視所有許可權(sysdba(

select * from dba_roles;

select * from dba_roles;

create user  ken identified by ken;

grant create session,create table ,create view to ken with admin option;

create user tom identified by  tom;

revoke create view from ken;

grant create session to ken with admin option;

grant  create view to ken;

select * from dba_tab_privs;

物件許可權

授予物件

create user monkey identified by monkey;

grant create session to monkey;

---scott 使用者  

grant select on emp to monkey;

grant select on emp to monkey;

grant update on emp to monkey;

grant delete on emp to monkey;

grant insert on emp to monkey;

grant alter on emp to monkey;

grant execute on dbms_transation to monkey;

---把所有使用者許可權付給 monkey

grant all on emp to monkey;

只能獲得 某一列的值

grant  all on emp(ename,sal) to monkey

系統許可權 --》 a->b->c   a  b **b  ,c  有許可權

物件許可權  --》;a->b-》c  b **b  ,c  沒許可權

grant select on emp to monkey with grant option;

revoke   select on emp from monkey

介紹一下索引

根據資料庫的功能,可以在 資料庫設計器中建立四種索引 普通索引 唯一索引 主鍵索引和 聚集索引。有關資料庫所支援的索引功能的詳細資訊,請參見資料庫文件。普通索引 這是最基本的索引型別,而且它沒有唯一性之類的限制。普通索引可以通過以下幾種方式建立 建立索引,例如create index 索引的名字 o...

簡單介紹一下OGraph

摘要 該引擎的目標在於能夠渲染3d場景,和視覺化複雜網路 並且支援方便的資料介面,遊戲一般的互動體驗。引擎嵌入python為使用者提供api,編寫python 讀取處理資料後提交到渲染介面,即可實時渲染。使用瀏覽器核心向使用者展示ui,管理場景物件樹 物件屬性。使用者也可以自己重新編寫html頁面自...

簡單介紹一下Alienware

alienware是一家專門製造一些不計成本的超發燒級pc的北美電腦公司,當然在即使在北美這樣的公司也並不多見,除了 alienware之外還有voodoopc與另外一家相類似的品牌公司。alienware成立於1996年,公司總部在美國邁阿密,它的產品線包括高階遊戲台式電腦,遊戲膝上型電腦,工作站...