來源:guwuyue 發(fā)布時間:2018-11-03 16:40:07 閱讀量:1165
1.數(shù)據(jù)庫簡介
1.1)DB和DBMS
數(shù)據(jù)庫Database簡稱DB,是按照數(shù)據(jù)結(jié)構(gòu)來組織、存儲和管理數(shù)據(jù)的倉庫
數(shù)據(jù)庫管理系統(tǒng)Database Management System簡稱DBMS:管理數(shù)據(jù)庫的軟件
1
2
1.2)關(guān)系數(shù)據(jù)庫簡介
關(guān)系:描述兩個元素間的關(guān)聯(lián)或?qū)?yīng)關(guān)系
使用關(guān)系模型把數(shù)據(jù)組織到二維數(shù)據(jù)表中
產(chǎn)品化:Oracle DB2 Sybase SQLServer MySQL
1
2
3
1.3)表的概念
一個關(guān)系數(shù)據(jù)庫是由多個數(shù)據(jù)表組成,數(shù)據(jù)表是關(guān)系數(shù)據(jù)庫的基本存儲結(jié)構(gòu),表是二維的,行為記錄,列為字段
1
2.主流關(guān)系型數(shù)據(jù)庫
Oracle是甲骨文公司的數(shù)據(jù)庫產(chǎn)品,是世界上第一個商品化的關(guān)系型數(shù)據(jù)庫管理系統(tǒng),采用標準SQL結(jié)構(gòu)化查詢語言
DB2是IBM公司的關(guān)系型數(shù)據(jù)庫管理系統(tǒng)
Sybase是美國Sybase公司的關(guān)系型數(shù)據(jù)庫系統(tǒng)
SQL Server是微軟的產(chǎn)品
1
2
3
4
3.SQL概述
3.1)結(jié)構(gòu)化查詢語言
SQL(Structured Query Language):結(jié)構(gòu)化查詢語言
SQL是在關(guān)系數(shù)據(jù)庫上執(zhí)行數(shù)據(jù)操作、檢索及維護所使用的標準語言,可以用來查詢數(shù)據(jù),操作數(shù)據(jù),定義數(shù)據(jù),控制數(shù)據(jù)
所有數(shù)據(jù)庫都使用相同或者相似的語言
SQL可分為:
-數(shù)據(jù)定義語言(DDL):Data Definition Language
-數(shù)據(jù)操作語言(DML):Data Manipulation Language
-事務(wù)控制語言(TCL):Transaction Control Language
-數(shù)據(jù)查詢語言(DQL):Data Query Language
-數(shù)據(jù)控制語言(DCL):Data Control Language
1
2
3
4
5
6
7
8
9
3.2)DDL、DML、TCL、DQL、DCL
3.2.1)數(shù)據(jù)定義語言(DDL)
用于建議、修改、刪除數(shù)據(jù)庫對象,包括:
-CREATE:創(chuàng)建表或其他對象的結(jié)構(gòu)
-ALTER:修改表或其他對象的結(jié)構(gòu)
-DROP:刪除表或其他對象的結(jié)構(gòu)
-TRUNCATE:刪除表數(shù)據(jù),保留表結(jié)構(gòu)
1".創(chuàng)建表 CREATE語句
CREATE TABLE table_name(
column_name datatype DEFAULT exp,....);
2".DESC語句-查詢表的結(jié)構(gòu)
DESC table_name;
3".DEFAULT語句--給列指定默認值
4".NOT NULL--非空約束,用于確保字段值不為空
5".修改表名RENAME
在建表后若希望修改表名,使用RENAME語句
RENAME old_table_name TO new_table_name;
6".增加列--ALTER TABLE的ADD子句實現(xiàn)
ALTER TABLE table_name
ADD(column_name datatype,...);
列只能增加在最后,不能插入到現(xiàn)有的列中
7".刪除列--ALTER TABLE的DROP子句刪除不需要的列
ALTER TABLE table_name DROP(column_name);
8".修改列--ALTER TABLE的MODIFY子句
建表后,可改變表中列的數(shù)據(jù)類型、長度和默認值,修改僅對以后插入的數(shù)據(jù)有效,將長度由大改小,有可能u成功
ALTER TABLE table_name
MODIFY(column_name datatype,...);
補充Oracle數(shù)據(jù)類型:
NUMBER(P,S)數(shù)字類型,p數(shù)字的總位數(shù),s小數(shù)點后面的位數(shù)
CHAR(N)固定長度字符類型,n占用的字節(jié)數(shù),最大長度2000字節(jié)
VARCHAR(N) VARCHAR2(N)變長字符類型,n最多占用字節(jié)數(shù),最大長度4000字節(jié)
DATE日期時間的數(shù)據(jù),長度7個字節(jié),默認格式DD-MON-RR
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
3.2.2)數(shù)據(jù)操作語言(DML)
用于該表數(shù)據(jù)表中的數(shù)據(jù),和事務(wù)相關(guān),執(zhí)行完后需要經(jīng)過事務(wù)控制語句提交后才真正的將改變應(yīng)用到數(shù)據(jù)庫中,包括:
-INSERT:將數(shù)據(jù)插入到數(shù)據(jù)表中
-UPDATE:更新數(shù)據(jù)表中已存在的數(shù)據(jù)
-DELETE:刪除數(shù)據(jù)表中的數(shù)據(jù)
1".INSERT語句--給數(shù)據(jù)表增加記錄
INSERT INTO table_name
(column_name,column_name,...)
VALUES(value,value,...);
若插入的列有日期字段,需考慮日期格式,默認格式:DD-MON-RR
可自定義日期格式,用TO_DATE函數(shù)轉(zhuǎn)換為日期類型的數(shù)據(jù)
TO_DATE('2016-08-14','YYYY-MM-DD')
2".UPDATE語句--更新表中的記錄
UPDATE table_name
SET column_name = value,...
[WHERE condition];
3".DELETE語句--刪除表中的記錄
DELETE FROM table_name [WHERE condition];
若沒有where子句,則全表的數(shù)據(jù)都會被刪除
4".TRUNCATE語句--刪除表中數(shù)據(jù)
TRUNCATE TABLE table_name;
與delete區(qū)別:
1':delete可以有條件刪除,truncate將表數(shù)據(jù)全部刪除
2':delete是DML語句,可以回退,truncate是DDL語句,立即生效,無法回退
3':如果刪除全部表記錄且數(shù)據(jù)量較大,delete語句效率低于truncate語句
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
3.2.3)事務(wù)控制語言(TCL)
用于維護數(shù)據(jù)一致性的語句,包括:
-COMMIT:提交,確認已經(jīng)進行的數(shù)據(jù)改變
-ROLLBACK:回滾,取消已經(jīng)進行的數(shù)據(jù)改變
-SAVEPOINT:保存點,使當(dāng)前的事務(wù)可以回退到指定的保存點,便于取消部分改變。
1
2
3
4
3.2.4)數(shù)據(jù)查詢語言(DQL)
用來查詢所需要的數(shù)據(jù)
-SELECT語句
1
2
3.2.5)數(shù)據(jù)控制語言(DCL)
用于執(zhí)行權(quán)限的授予和收回操作,包括:
-GRANT:授予,用于給用戶或角色授予權(quán)限
-REVOKE:用于收回用戶或角色已有的權(quán)限
-CREATE USER:創(chuàng)建用戶
1
2
3
4
4.字符串操作
4.1)字符串類型
4.1.1)CHAR和VARCHAR2類型
字符串?dāng)?shù)據(jù)類型,用來在表中存放字符串信息
CHAR:存放定長字符,不滿補空格
VARCHAR2:存邊長字符,存多少占用多少
按字符的自然順序排序
4.1.2)LONG和CLOB類型
LONG:存變長字符串,最多達2GB的字符串?dāng)?shù)據(jù)
CLON:存定長或變長字符串,最多達4GB的字符串?dāng)?shù)據(jù)
1
2
3
4
5
6
7
8
4.2)字符串函數(shù)
4.2.1)CONCAT和"||"
CONCAT(a1,a2)將a1和a2兩個字符串連接起來
等價操作:連接操作符:"||"
若a1和a2任何一個為NULL,相當(dāng)于連接了一個空格
CONCAT(a,b) a||b
4.2.2)LENGHT(char)字符串的長度
4.2.3)UPPER,LOWER和INITCAP大小寫轉(zhuǎn)換函數(shù)轉(zhuǎn)換字符大小寫
UPPER(char):將字符轉(zhuǎn)為大寫形式
LOWER(char):將字符轉(zhuǎn)為小寫形式
INITCAP(char):將字符串中每個單詞的首字符大寫,其他小寫,單詞之間用空格
4.2.4)TRIM,LTRIM,RTRIM:截去子串
TRIM(a FROM b):將a從b前后中截去
LTRIM(a,b):將a從b的左側(cè)截去
RTRIM(a,b):將a從b的右側(cè)截去
4.2.5)LPAD,RPAD:補位函數(shù)
LPAD(a,n,b):左補位,在a的左端用b補足n位
RPAD(a,n,b):右補位,在a的右端用b補足n位
4.2.6)SUBSTR(char,m,n)獲取字符串的子串
返回char中從m位開始取n個字符
m=0,從首字符開始
m為負數(shù),從尾部開始
若沒有n,或n的長度超過char的長度,則取到字符串末尾為止
4.2.7)INSTR(a,b,n,m)返回字符串a(chǎn)中b的位置
從n的位置開始檢索,沒有指定n則從第1個字符開始檢索
m用于指定子串的第m次出現(xiàn)次數(shù),若不指定取值1
若在a中沒有找到b,返回0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
5.數(shù)字操作
5.1)數(shù)字類型
NUMBER(P,S)
NUMBERIC(P,S)==>NUMBER(P,S)
DECIMAL(P,S)或DEC(P,S)==>NUMBER(P,S)
INTENGER或INT==>NUMBER(38)
SMALLINT==>NUMBER(38)
FLOAT(b)==>NUMBER
DOUBLE PRECISION==>NUMBER
REAL==>NUMBER
1
2
3
4
5
6
7
8
5.2)數(shù)值函數(shù)
5.2.1)ROUND(n,m):用于四舍五入
m必為整數(shù),m缺省,默認值為0
m取正數(shù),則四舍五入到小數(shù)點后第m位
m取0值,則四舍五入到整數(shù)位
m取負數(shù),則四舍五入到小數(shù)點前第m位
5.2.2)TRUNC(n,m):用于截取
5.2.3)MOD(n,m):返回n除以m后的余數(shù),m為0直接返回n
5.2.4)CEIL和FLOOR:最小整數(shù),最大整數(shù)
CEIL(n):天花板,求大于等于n的最小整數(shù)值
FLOOR(n)地板,求小于等于n的最大整數(shù)值
1
2
3
4
5
6
7
8
9
10
6.日期操作
6.1)日期類型
DATE:7個字節(jié),世紀、年、月、日、時、分、秒
TIMESTAMP:7或11個字節(jié),世紀、年、月、日、時、分、秒、納秒
1
2
6.2)日期關(guān)鍵字
SYSDATE:當(dāng)前系統(tǒng)時間,精確到秒,DD-MON-RR
SYSTIMESTAMP:當(dāng)前系統(tǒng)日期和時間,精確到毫秒
1
2
6.3)日期轉(zhuǎn)換函數(shù)
TO_DATE(char,'YYYY-MM-DD HH24:MI:SS')
將字符串按照指定格式轉(zhuǎn)換為日期類型
TO_DATE(char,'YYYY-MM-DD HH12:MI:SS')
TO_CHAR(date,'YYYY"年"MM"月"DD"日"')
將日期按照指定格式轉(zhuǎn)換為字符串類型
TO_CHAR(char,'YYYY-MM-DD HH12:MI:SS')
1
2
3
4
5
6
7
6.4)日期常用函數(shù)
6.4.1)LAST_DAY(date)返回所在月的最后一天
6.4.2)ADD_MONTHS(date,i)返回date加上i個月后的日期值
若i為小數(shù),將截去整數(shù)后在參與運算
若i為負數(shù),則減去i個月后的日期值
6.4.3)MONTHS_BETWEEN(date1,date2)
date1-date2日期值之間間隔了多少個月
6.4.4)NEXT_DAY(date,i)返回date日期數(shù)據(jù)的下一個周幾
1-7:周日-周六
eg:select next_day(sysdate,4)
as "next_wedn" from dual;
6.4.5)LEAST,GREATEST
LEAST(a,b,c...)參數(shù)中的最小值
GREATEST(a,b,c,...)參數(shù)中的最大值
6.4.6)EXTRACT(date FROM datetime):從參數(shù)datetime中提取參數(shù)date指定的數(shù)據(jù),比如提取年,月,日
1
2
3
4
5
6
7
8
9
10
11
12
13
14
7.空值NULL操作
7.1)NULL的操作
插入空值,insert into table_name values(1,null)
更新成空值,update emp
set gender=null where id = 100;
更新空值,列沒有非空約束的情況下才可操作
NULL條件查詢 IS NULL ,IS NOT NULL
1
2
3
4
5
7.2)空值函數(shù)
NVL(a,b)將NULL轉(zhuǎn)變?yōu)榉荖ULL值
若a為NULL,則取b
NVL2(a,b,c)將NULL轉(zhuǎn)變?yōu)榉荖ULL值
判斷a是否為NULL,若不是NULL取b,若是NULL,取c
---------------------
作者:guwuyue
來源:CSDN
原文:https://blog.csdn.net/guwuyue/article/details/52205863
版權(quán)聲明:本文為博主原創(chuàng)文章,轉(zhuǎn)載請附上博文鏈接!