數據庫筆記

數據庫 :
關係型數據庫: 關係 ,數據 ,數據之間約束 組成的數據結構。
數據庫廠商: ORacle MYSQL 等
數據操做語言: DDL :數據定義語言  創建修改刪除 數據庫對象 ,包括 建立語句 create  , 修改語句 alter table  , 刪除語句 Drop
DML :數據操做語言 改變數據庫數據 包括 插入 insert  , 更新updata , 刪除 delete
TCL:事務控制語言 維護數據一致性 包括 提交 commit  回滾rollback  保存點savepoint
DQL:數據查詢語言 Select 語句
DCL:數據控制語言 執行權限的授予 收回操做 刪除用戶等 包括 授予grant  收回revoke 建立用戶Create user  自動提交的數據庫

 1、數據定義語言 :
建立表 : create table 表名(字段信息 )
查詢表結構: desc  表名;
刪除表: Drop table  表名 ;
更名錶: rename  舊錶名  to 新表名    
增長字段: alter table 表名 add (字段信息);
刪除字段: alter table 表名 drop (字段信息);
修改字段: alter table 表名 modify ( 字段信息);   緩存

2、數據操縱語言 : DML 數據內容修改 插入,更新,刪除數據。
插入數據:insert into 表名 (字段) values (字段數據) ;
更新數據:updata 表名 set 字段=字段名 ,字段=字段名 where  條件;
刪除數據:delete from 表名 where 字段 = 字段名 ;
清空表格:Delect from 表名 或者 Truncate table 表名 後者不受事務控制,特別快,區域摸除。數據結構

數據操縱語言須要提交以後纔會進入數據庫,否則只是在緩存中。oracle

3、事物控制語言 : commit  rollback  savepoint
 
4、數據查詢語言 :Select
5、數據控制語言 :Create user ,grant 受權 ,回收權限 revoke  函數

oracle
1、字符操做:
鏈接:concat  || length();
截取:substr( 字符,n,m); instr(字符,子字符)
大寫:upper (字符) ; 小寫 lower(字符);手字符大寫initcap(字符)
Lpad(),rpad();左右補位 ,去空白 Trim(), Ltrim(), RTrim,
2、數值操做:
round () trunc() ceil() floor() sum() avg ()
3、日期操做:
last_day() ,months_between() ,to_char(),to_date(),extract(year from date),greatest(day1,day2.....),
least(day,day....);  add_months();
4、空值操做:
nvl2(x,y,z);若爲空x  則返回 y 不然返回 z
nvl(x,y);若x 爲 空 則 返回y;ui

聚合函數 : 關於統計的函數
分組函數 : 除了分組的和聚合函數之外其餘的不能查詢到對象

查詢順序:
    FROM 子句:執行順序爲從後往前、從右到左。數據量較少的表儘可能放在後面。
    WHERE子句:執行順序爲自下而上、從右到左。將能過濾掉最大數量記錄的條件寫在WHERE 子句的最右。
    GROUP BY:執行順序從左往右分組,最好在GROUP BY前使用WHERE將不須要的記錄在GROUP BY以前過濾掉。
    HAVING 子句:消耗資源。儘可能避免使用,HAVING 會在檢索出全部記錄以後纔對結果集進行過濾,須要排序等操做。
    SELECT子句:少用*號,儘可能取字段名稱。ORACLE 在解析的過程當中, 經過查詢數據字典將*號依次轉換成全部的列名, 消耗時間。
    ORDER BY子句:執行順序爲從左到右排序,消耗資源。排序

關聯查詢 :索引

並集 , 交集  ,差集,接口

 排序 row_number() over(partition by A order by B),Rank()over (partition by A order by B),
高級分組 ,分頁 ,ENCODE函數 。
視圖 : View  
create or replace view view_name  as subquery;
sbquery 的意思是 select  查詢的結果
create or replace view  view_name as select * from emp_d where sal >1000;
實現 查詢語句的複用
視圖自己並不包含數據,只是基表數據的邏輯映射。因此當對視圖執行DML操做時,其實是對基表的DML操做
簡單視圖可以執行DML操做,下列狀況除外:在基表中定義了非空列,但簡單視圖對應的SELECT語句並無包含這個非空列,致使這個非空列對視圖不可見,這時沒法對視圖執行INSERT操做;若是視圖定義中包含了函數、表達式、分組語句、DISTINCT關鍵字或ROWNUM僞列,不容許執行DML操做;DML操做不能違反基表的約束條件。
create  or replace view view_name as select*from emp_d where sal >2000 with check option ;
檢查視圖  經過視圖作得修改須要在視圖可見範圍內
只讀視圖  create or replace view view_a as ... with only read ;
從 User—Object中查詢 全部視圖對象
select object_name from user_objects where  object_type = 'view';
select object_name from user_objects where object_type = 'view';
select object_name fom user_objects where object_type = 'view';
  從User_views中查詢視圖
select text from user_views where view_name= 'view_10';


序列:序列(SEQUENCE)是一種用來生成惟一數字值的數據庫對象。序列的值由Oracle程序按遞增或遞減順序自動生成,一般用來自動產生表的主鍵值,是一種高效率得到惟一鍵值的途徑。
create sequence sequence_name ; 當序列建立之後,必須先執行一次NEXTVAL,以後才能使用CURRVAL。
下一個值nextval  當前數值currval   


索引:提升查詢效率
建立索引:create [unique] index index_name on emp_d (ename,sal,...);
查詢與索引有關數據時候 會自動引用索引 提升查詢效率
更新索引:alter index index_name rebuild;
刪除索引:Drop index  index_name;
爲提高查詢效率,建立和使用索引的原則:
    爲常常出如今WHERE子句中的列建立索引
    爲常常出如今ORDER BY、DISTINCT後面的字段創建索引。若是創建的是複合索引,索引的字段順序要和這些關鍵字後面的字段順序一致
    爲常常做爲表的鏈接條件的列上建立索引
    不要在常常作DML操做的表上創建索引
    不要在小表上創建索引
    限制表上的索引數目,索引並非越多越好
    刪除不多被使用的、不合理的索引

 

約束: 非空 not null ,惟一 UNIQUE ,主健:primary ,檢查 :Check ,外建:foreign key

建立惟一約束

alter table emp_d add constraint emp_ddd unique(name);
alter tale emp_d add constraint emp_ddd unique (name)
alter table emp_d add constraint emp_ddd unique(name);

建立主鍵
alter table emp_d add constraint emp_dd  primary key (eid);
alter table emp_d add constraint emp_ddd primary key (eid);
alter ebale emp_d add constraint emp_d  primary key (eid);
alter table emp_d add constraint emp_dddd primary key (eid);
alter table emp_ddd constaint emp_ddd primary key (eid);


建立外鍵
alter table emp_d add constraint hhhh foreign key(deptno) references dept (deptno);
alter table emp_d add constraint hhhh froeign key () references dept (deptno);

檢查約束 :Check(約束條件)
add table emp_d add constraint hhhh check(sal>1000);

 

Dao 接口    有增刪改查方法
save();
add();
delete();
update();

DaoImpl 實現類 實現 Dao  


工廠 DaoFactory  有生產DaoImpl的實力的方法   
Dao getDao(){  
return new DaoImpl();
}

應用Dao:
Dao dao = DaoFactory.getDao();
dao.save();dao.add(); dao.delete();

多層系統的異常處理原則:

    誰拋出的異常,誰捕捉處理,由於只有異常拋出者,知道怎樣捕捉處理異常;     儘可能在當前層中捕捉處理拋出的異常,儘可能不要拋出到上層接口;     儘可能在每層中封裝每層的異常類,這樣可準肯定位異常拋出的層;     如異常沒法捕捉處理,則向上層接口拋出,直至拋給JVM,儘可能避免;

相關文章
相關標籤/搜索