資料庫介紹--初識資料庫

爪哇島的流浪漢發表於2018-07-15

1、認識資料庫
1)資料庫概念
通俗:存放資料的倉庫
定義:資料庫(簡稱:DB DataBase)是一個軟體產品,資料庫用於存放資料、管理資料的儲存倉庫
     是有效組織在一起的資料集合

2)資料庫產品
大型資料庫
Oracle:著名的甲骨文公司的資料庫產品,它是世界上第一個商品化的資料庫管理系統。目前最新的
       版本是Oracle 12c
DB2:IBM公司的關係型資料庫管理系統,DB2有很多的版本,可以執行在從掌上產品到大型機不同終端機器上。
Sybase:美國Sybase公司的關係型資料庫管理系統,較早採用C/S技術的資料庫廠商,是一種典型的unix和Windows
      NT平臺上的客戶機/伺服器環境下的大型資料庫系統
中小型資料庫
Sql Server:微軟的產品,運姓在windows NT伺服器上,支援C/S結構的資料庫管理系統,採用標準的SQl語言
    mysql:一個小型關係型資料庫管理系統,開發者為瑞典的Mysql AB公司的。
mysql特徵 :體積小、速度快、總體擁有成本低
開放原始碼
許多中小型網站為了降低擁有成本而選擇mysql作為網站的資料庫。
小型資料庫  
    access:微軟釋出的關係型資料庫管理系統,把資料庫引擎的圖形使用者介面和軟體開發工具
      結合在一起的資料庫管理軟體。它是微軟的OFFICE的成員之一。
  
3)資料庫學習的意義
//資料儲存的角度
 檔案儲存的弊端:
 a.缺乏對資料的整體管理、不便於資料修改
 b.不利於資料的分析和共享
 c.大量資料長期儲存在檔案當中,不安全

//實際開發應用角度

2、關係型資料庫
  不同的資料庫是按不同的資料結構來組織的
  關係型資料模型是把複雜的資料結構歸結為簡單的二元關係(即二維表格形式)
  在關係型資料庫中,對資料的操作機會全部建立在一個或多個關係表格中,通過對這些關聯的表格
  進行分類、合併、連線和選取等運算倆實現資料庫的管理。
  
  關係型資料庫:描述兩個元素之間的關聯或對應關係的使用關聯或對應把資料組值到二維表格(Table)中。
  
  舉例:學生資訊管理系統
  學生表:學號、姓名、性別。。。
  課程表:課程號、課程名。。。
  成績表:學號、課程號、成績。。。

3.資料表
一個關係型資料庫是由多個資料表組成的,資料表是關係型資料庫的基本儲存結構。

表是資料庫儲存的基本單元,對應於現實世界的一個實體物件,比如說部門表和員工表。
表是一個二維結構的,由行和列組成,橫向的為行(Row),也叫記錄 (Record),用來表示
實體資料,比如說員工的一個相關資訊。縱向為列(Column),也叫欄位(Filed),表示實體
的屬性,比如說員工的薪水

java中實體使用物件來描述,資料表和物件之間存在一種對應的關係。資料表相當於類(class)
資料表的行是某個物件的例項,其中每個列都是物件的屬性(JDBC部分用到,先簡單理解一下)

4.SQL
1)SQL定義
全稱:結構化查詢語言(Structured Query Language)
是在關係型資料庫上執行資料庫操作、檢索以及維護所使用的語言。可以用來查詢資料、操縱資料、定義
資料、控制資料。(所有的資料庫都是使用相同或相似的語言)

2)SQL分類(重要)
資料定義語言:DDL(Data Definition Language)
[主要針對表的結構而言]
負責資料結構的定義與資料庫物件的定義的語言。主要有
create/alter/drop/truncate四種常用的語句
create:表示建立資料庫物件(建立資料表)
alter:表示修改資料庫物件(修改資料庫)
drop:表示刪除資料庫物件(刪除資料庫)
truncate:表示清空表資料(將表資料清空,表結構保留)

資料操縱語言:DML(Data Manipulation Language)
[主要針對表的內容(資料)而言]
實現對資料表的操縱,即表的資料的增加、修改、刪除
insert :表示插入資料
update:表示更新資料
delete:表示刪除資料

資料查詢語言:DQL(Data Query Language)
實現對資料的查詢操作
select:表示查詢操作

資料控制語言:DCL(Data Control Language)
實現許可權的授予和回收操作
grant:表示授予許可權
revoke:表示回收許可權
create user:建立使用者或角色


事務控制語言:TCL(Transaction Control Language)
用於對DML操作進行確認
commit:表示提交資料,確認
rollback:表示回滾資料,撤銷(取消)
savepoint:儲存點,用於回滾到指定儲存點

5.基本資料型別
1)數值型別
語法:number(p,s)其中p表示數字的總位數(數字的有效位數),s表示小數位數
     要表示一個整數s為0或者s不寫
 
2)字元型別
char(n):表示定長字元[方便查詢]
最大的放入的n個字元,放入的資料如果不夠那個字元長度則會補空格,無論如何都會佔用n個字

varchar(n):表示邊長字元,Oracle不建議使用

varchar2(n):表示邊長字元[節省空間]
最大的放入n個字元,放入的資料實際佔用多少個字元長度就佔多大空間。Oracle建議使用的型別

nvarchar2:用於儲存Unicode格式的資料,更適合儲存中文資料。
3)日期型別
date:用於定義日期時間的資料型別   timestamp:時間戳型別,更精確
注意:Oracle的預設的日期格式'DD-MON-YY',如:16-5月-18

4)BLOB 和 CLOB 存放4g二進位制和字串型別的資料
6.SQLPlus
SQLPlus是Oracle提供的一個客戶端工具。
1)開啟 SQLPlus

2)登入
普通賬號登入:scott/scott  使用者名稱和密碼
協議介面卡問題:
下發資料->資料庫使用不了
D:\app\Administrator\product\11.2.0\dbhome_1\BIN

報監聽錯誤:
修改檔案中localhost,再重啟服務和監聽
D:\app\Administrator\product\11.2.0\dbhome_1\NETWORK\ADMIN
將listener和tnsnames檔案中localhost改為計算機主機名(計算機右擊選擇"屬性")
再重啟服務和監聽(計算機右擊選擇"管理")

3)sqlplus相關命令
注意:命令後面可加可不加(;)
//設定行的長度,預設值為80
set linesize 200//表示顯示200個字元後在換行
使用時只是當前會話有效

//設定列的寬度
列是字元,如column column_name format a6 //6表示的對應的字元長度
列是數字,如column column_name format 999 //顯示3位數字,使用999作為佔位符 

//檢視錶結構
desc tabel_name

//設定分頁顯示,預設為14
set pagesize 10//每10行進行分頁,包含標題行和空行,當值為0表示不分頁

//檢視當前使用者
show user

//設定顯示SQL語句執行時間
set timing on

//清屏命令
clear scr//screen

常用的SQL語句
所有的SQL語句一定是以分號結尾的
//檢視(查詢)當期系統時間
select sysdate from dual;//dual表示虛表,做測試用
16-5月 -18//選中->鍵盤上enter鍵複製
oracle預設的日期格式:'DD-MON-YY'

//修改當前會話的日期格式'(當前會話有效)2018-5-16'
alter session set nls_date_format='YYYY-mm-dd';

//檢視當前使用者有那些表
select table_name from user_tables;

7.表的結構操作DDL
1)建立表
語法結構:
create table table_name(
column_name datatype,
column_name datatype default value
);
注意:
a.create table關鍵字不能寫錯
b.表名是不能重複(物件已存在)
c.最後一個欄位是沒有逗號的
d.default表示給指定的欄位新增預設值
e.小括號,逗號,分號都是英文狀態下的

//動手建立表:部門表(dept_zcq)
create table dept_zcq(
deptno number(2),
dname varchar2(20),
location varchar2(15) 
);

2)修改表名
在建表後希望修改表的名稱,可以使用rename語句實現
語法:
rename old_table_name to new_table_name;
//修改部門表
rename dept_zcq to dept_zcq1;

3)增加一個欄位(表結構發生改變)
給表增加列可以使用alter table的add語句實現
alter table tabel_name add(column_name datatype);
//給部門增加一個'描述'欄位
alter table dept_zcq add(des varchar2(30));

4)修改一個欄位(表結構發生改變)
建表之後,可以改變表中的列的資料型別、長度、預設值,修改僅對增加的資料有效。
如果把列的長度由大到小修改有可能不成功。
語法:
alter table tabel_name modify(column_name datatype);

//修改部門表中的描述欄位varchar2->char
alter table dept_zcq modify(des char(30));

5)刪除一個欄位(表結構會發生改變)
可以使用alter table的drop刪除欄位
alter table table_name drop(column_name);

//刪除部門表中的描述欄位
alter table dept_zcq drop(des);

刪除表
drop table dept_zcq;//刪除表的資料和表的結構
truncate table dept_zcq;//刪除表的資料,保留表的結構

相關文章