前言:mysql
1.1數據庫的概念linux
數據庫是按照數據結構組織,存儲和管理數據的倉庫。算法
數據庫,簡單來講是自己可視爲電子化的文件櫃-存儲電子文件的處所,用戶能夠對文件中的數據進行新增、截取、更新、刪除等操做。sql
它將數據以必定方式存儲在一塊兒、可以爲多個用戶共享、儘量小的冗餘度的特色、是與應用程序彼此獨立的數據集合。數據庫
1.2數據模型是數據庫中數據的存儲方式,是數據庫系統的基礎windows
數據模型經歷了:緩存
1.2.1層次模型:層次模型是數據庫系統最先使用的一種模型,他的數據結構是一顆"有向樹"網絡
1.2.2網狀模型:網狀模型以網狀結構表示實體與實體之間的聯繫。網中的每個節點表明一個記錄類型,聯繫用連接指針來實現。網狀模型能夠表示多個從屬關係的聯繫,也能夠表示數據間的交叉關係,即數據間的橫向關係和縱向關係,它是層次模型的擴展。網狀模型能夠方便地表示各個類型的聯繫,可是結構複雜,實現的算法難以規範化session
1.2.3關係型:在關係型模型中基本數據結構就是二維表,不用像層次或者網狀那樣的連接指針。記錄之間的聯繫是經過不一樣關係中同名屬性來實現的 數據結構
關係型數據庫優點:
數據結構單一
關係規範化,並創建在嚴格的理論基礎上
概念簡單,操做方便
組成
a.單一的數據結構-----關係
b.關係操做集合
c.關係的數據完整性,準確性和一致性
1.3關係型數據庫:
關係型數據庫簡單的能夠理解爲二位數據庫,表的格式就如Excel,有行有列。所謂關係型數據庫,是指採用了關係模型來組織的數據庫。關係模型是1970年由IBM的研究院E.F.Codd博士首先提出,在以後的幾十年中,關係型的概念獲得了充分的發展並逐漸成爲數據庫結構的主流模型。簡單的說,關係型指的就是二維表格模型,而一個關係型數據庫就是由二維表及其之間的聯繫組成的一個數據組織。
1.4常見關係型數據庫及其基本概念:
1.4.1常見關係型數據庫:
mysql sqlServer oracle db2 sybase
1.4.2基本概念
a.關係:一個關係對應着一個二維表,二維表就是關係名,每張表由行和列組成
b.元組:在二維表中的一行,成爲一個元組。能夠用過使用結構化查詢語句(Structured Query Language)來操做元組語句
c.屬性:元組中的一個屬性值(份量)
d.碼:若是在一個關係中存在這樣的一個屬性,他的值就能用來惟一標識一行,則稱這姓屬性爲關係的鍵或者碼
e.主鍵(主碼):從若干個候選碼中選出來的一個用來惟一標識一行數據的屬性
f.外鍵:用來邏輯的關聯多張表的數據信息
2.Oracle的認知(一個認知)
oracle是一家公司的名字(甲骨文公司),世界上屈指可數的,是國際上很是大的巨型IT公司,是全球最大的企業級軟件公司,總部位於美國加利福尼亞州的紅木灘。1989年正式進入中國市場。2013年,甲骨文已超越IBM,成爲繼Microsoft後成爲全球第二大軟件公司,最有名的產品是DB,database,RDBMS,關係型數據庫系統。世界第一大數據庫提供商,上海研發中心,五角場,離復旦大學近。主營oracle數據庫軟件,全世界第二大ERP提供商,大型企業級內部管理系統,包括人力資源管理等等。Oracle是Oracle公司第一個也是最成功的一個產品,發展經歷過一個漫長的過程,到1997年6月,Oracle第八版發佈。Oracle支持面向對象的開發以及新的多媒體應用,這個版本也成爲支持Internet、網絡計算等奠定定了基礎。同時這一版本開始具備同時處理大量用戶和海量數據的特性。1998年9月,oracle公司正式發佈oracle 8i。"i"表明Internet,這一版本中添加了大量爲支持Internet而設計的特性,這一版本爲數據庫用戶提供了全方位的Java支持,Oracle 8i成爲第一個徹底整個了本地Java運行時環境的數據庫。而後有9i,10g,"g"表明」grid「,網格。這一版本最大的特性就是加入了網格計算功能。而後是11g,如今發展到12c,c表明cloud,也就是如今炒的很是火的雲概念。
3.三個名詞:
sql:結構化查詢語句,操做oracle數據庫的語言
sqlplus:oracle軟件自帶的能夠輸入sql,且將sql執行結果顯示的終端
pl/sql:程序化的sql語句,在sql語句的基礎之上加入了必定的邏輯操做,如if for,使之成爲一個sql塊,完成必定的功能
4.四種對象
table:表格,由行和列組成,列又稱爲字段,每一行內容爲表格的一天完整數據。
view:視圖,一張表或者多張表的部分或者完整的映射,比如表格照鏡子,鏡子裏面的虛像就是view
出去常見的table和view兩種對象外,oracle還支持以下四種對象
sequence:序列
index:索引,提升數據的訪問效率
synonym:同義,方便對象的操做
program unit:程序單元,pl/sql操做的對象
5.五種分類
sql的五大分類
Data retrieval:數據查詢
select
DML:數據操做語言(行級操做語言) 操做的是表格中一條一條的數據
insert update delete
DDL:數據定義語言(表級操做語言) 操做的內容爲表格(對象)
create alter drop truncate rename
transaction control(事務控制):commit rollback savepoint
DCL:數據控制語言
grant revoke
delete與truncate區別:
delete:刪除表中的一條或者多條記錄,並不返回表格的初始化狀態
truncate:清空表格,並返回表格的初始化狀態
6.oracle的使用
啓動:
6.1 win+R------->cmd-------->sqlplus "as sysdba" //以sysdba身份登錄(此時能夠建立用戶,分配權限等)
win+R------->cmd-------->sqlplus username/password //以指定用戶名/密碼身份登錄
直接找到安裝目錄,打開sqlplus終端
6.2 建立用戶:
create user 用戶名 identified by 密碼
6.3 權限授予:
grant resource,connect to user;
resource:
create trigger
create sequence
create type
create procedure
create cluster
create operator
create indextype
create table
connect:
create session
6.4 切換用戶:
conn username/password
6.5 由於數據文件的默認語言環境爲英語,當前windows系統是中文,中英文時間顯示不一致,導入會失敗,須要先修改語言環境
alter session set nls_date_language=english;
alter session set nls_language=english;
導入表給
@ e:\oracle\summit2.sql
start e:/oracle/summit2.sql
6.6 查看錶結構
desc table_name;
Model 1 Select Rows
1.select :
語法:
select [distinct] {*,column [alias],...} from table
注:[]括起來的內容表明無關緊要,* 表明全部列 ,distinct關鍵字只能跟在select關鍵字以後,select 子句後邊指定要查詢的列,from 子句後邊跟要查詢的表.
(英文名是first_name+last_name):My name is first_name.last_name;
2.select語句能夠對指定的列的全部值進行算術運算。
語法:
select col_name 運算符 數字
from tb_name;
注意:select語句永遠不對原始數據進行修改。
3.給查詢的列區別名
語法:
select old_column [as] new_column_name
from tb_name;
4.使用||可使得多列的值或者列和特殊的字符串合併到一個列進行顯示
語法:
select col_name||'spe_char'||col_name
from tb_name
'spe_char':若是一個列的值要跟特殊的字符串鏈接顯示,使用該語法。
5.對null值得替換運算
語法:
select nvl(col_name,change_value)
from tb_name;
nvl2(col_name,不爲空顯示的值,爲空顯示的值);
6.使用distinct關鍵詞,能夠將顯示中重複的記錄只顯示一條
語法:
select distinct col_name,col_name...
from tb_name; 注意1:distinct關鍵詞只能放在select關鍵詞後面
如:select id,distinct title
from s_emp;
該語句語法錯!!!!!
注意2:若是distinct關鍵詞後面若是出現多列,表示多列聯合去重,即多列的值都相同的時候纔會認爲是重複的記錄。
test表:
id id2
1 2
1 3
2 4
3 4
3 4
select distinct id,id2
from test;
顯示結果爲:
id id2
1 2
1 3
2 4
3 4
7.sqlplus命令
a:在當前操做的命令行追加內容
a test
c: 在當前操做的命令行修改內容
c/old_char/new_char
clear buffer:清空當前緩存的命令
del:刪除當前操做行
del line_num指定刪除第幾行
i:當前操做命令行的下一行插入內容
l:查看緩存命令
l line_num:查看指定的命令行
n text:替換第n行的整行內容
!:後面接終端命令 ------linux環境下
!clear:清屏 ///
$:後接終端命令
$cls ---------> windows環境下
/:執行緩存sql命令
save file_name:將緩存命令保存到file_name中 (append replace)
get file_name:將文件中的內容提取到sqlplus
start 和 @ file_name:執行文件中的sql命令
edit file_name:使用終端設置好的vi編輯器編輯文件(對於windows使用的是notepad)
spool file_name 將接下來的sql語句以及sql的運行結果保存到文件中(append)
sql1
result1
sql2
result2
...
spool off 關閉spool功能
exit:退出
8.select id,last_name,first_name, salary, dept_id
from s_emp;
結果很差看,經過column使咱們的顯示界面好看。
colu last_name format a15;
colu first_name format a15;
Column 有沒有改變數據表裏數據啊,沒有,它只是改變顯示。它是否是SQL命令呢? 不是,它是sqlplus命令。除了剛纔這個做用以外,咱們下面來看看它還有什麼做用。
COLUMN last_name HEADING 'Employee|Name' FORMAT A15
. 給last_name取別名爲Employee|Name , 豎槓表明換行。
. A15表示十五個字節長,一短橫槓就是一個字節長
COLUMN salary JUSTIFY LEFT FORMAT $99,990.00
. salary JUSTIFY LEFT : 僅僅改變列名顯示爲左齊
. FORMAT $99,990.00: 控制顯示格式爲前面加 $ 符, 「,」爲分隔符, 0或9表明數字(通配符),0表示替換對齊數值,位數不足會補足,能夠混合使用.
COLUMN start_date FORMAT A8 NULL 'Not hired'
. 若是start_date值爲空的話,顯示爲’Not hired’;
. Format後不能直接跟null, 要先a8或a10;
. NULL 'Not hired'和nvl有點不一樣, nvl要求類型匹配
column 顯示全部對列格式的設置狀況
column last_name 顯示對last_name列顯示設置的狀況
column last_name clear 刪除對last_name列格式設置的狀況
Clear column 清除全部column的格式設置
Column某列的格式設置,這裏的列並不特定於某個表.
ex:
1234 column 99.99 -- > ###### //出錯的時候不能顯示,只是顯示####
column columName 顯示對列的限制
model 2 Sorting & Limiting Selected Rows
一、Order by 子句的使用
1) Order by子句在整個
select語句中的位置:
始終位於最後
2) order by後能夠跟什麼:
列名,列的別名,表達式,
列出如今select關鍵字後的
順序(列號);
3) order by後能夠跟多列,
表示先按第一列排序,
如第一列有相同值再按
第二列進行排序,如前二列
均有相同值,則按第三列進行排序...
4) ASC表升序,能夠省略.
DESC表降序。
5)空值永遠是最大的。
升序排序的時候,空值放在最後
降序排序的時候,空值放在最前面的
二、Where子句的使用 語法: select col_name,... from tb_name where col_name 比較操做表達式 邏輯操做符 col_name 比較操做表達式 1) 做用:對SQL語句返回的數據集進行篩選; 2) 位置:緊跟在from子句後 3) 內容:由一至多個限定條件組成,限定條件由表達式, 比較符, 字面值組成。 4) 全部字符串和日期要用單引號括起來,數值不須要單引號。 日期在Oracle裏有特定的格式,’DD-MON-YY’(具體看日期的顯示格式), 不然做爲一個字符串。 5) 幾種常見的操做符: 1》邏輯比較操做符 = > < >= <= != 2》sql比較操做符 between and:在什麼範圍以內 in(list):在一個列表中 like:模糊查詢,即值不是精確的值的時候使用 通配符,便可以代替任何內容的符號 %:通配0到多個字符 _: 當且僅當通配一個字符 轉義字符: 默認爲\,能夠指定 指定的時候用escape 符號指明便可,轉義字符只能轉義後面的一個字符 between 1 and 4: 包括起止值。限定內容爲1到4。 in (1,2,4): 限定內容爲1,2,4。 3》邏輯操做符 當條件有多個的時候使用 and:且邏輯 or:或邏輯 注意:and邏輯比or邏輯要高 not:非邏輯