來(lái)源:guwuyue 發(fā)布時(shí)間:2018-11-03 16:40:07 閱讀量:1354
1.數(shù)據(jù)庫(kù)簡(jiǎn)介
1.1)DB和DBMS
數(shù)據(jù)庫(kù)Database簡(jiǎn)稱(chēng)DB,是按照數(shù)據(jù)結(jié)構(gòu)來(lái)組織、存儲(chǔ)和管理數(shù)據(jù)的倉(cāng)庫(kù)
數(shù)據(jù)庫(kù)管理系統(tǒng)Database Management System簡(jiǎn)稱(chēng)DBMS:管理數(shù)據(jù)庫(kù)的軟件
1
2
1.2)關(guān)系數(shù)據(jù)庫(kù)簡(jiǎn)介
關(guān)系:描述兩個(gè)元素間的關(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)表的概念
一個(gè)關(guān)系數(shù)據(jù)庫(kù)是由多個(gè)數(shù)據(jù)表組成,數(shù)據(jù)表是關(guān)系數(shù)據(jù)庫(kù)的基本存儲(chǔ)結(jié)構(gòu),表是二維的,行為記錄,列為字段
1
2.主流關(guān)系型數(shù)據(jù)庫(kù)
Oracle是甲骨文公司的數(shù)據(jù)庫(kù)產(chǎn)品,是世界上第一個(gè)商品化的關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng),采用標(biāo)準(zhǔn)SQL結(jié)構(gòu)化查詢(xún)語(yǔ)言
DB2是IBM公司的關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng)
Sybase是美國(guó)Sybase公司的關(guān)系型數(shù)據(jù)庫(kù)系統(tǒng)
SQL Server是微軟的產(chǎn)品
1
2
3
4
3.SQL概述
3.1)結(jié)構(gòu)化查詢(xún)語(yǔ)言
SQL(Structured Query Language):結(jié)構(gòu)化查詢(xún)語(yǔ)言
SQL是在關(guān)系數(shù)據(jù)庫(kù)上執(zhí)行數(shù)據(jù)操作、檢索及維護(hù)所使用的標(biāo)準(zhǔn)語(yǔ)言,可以用來(lái)查詢(xún)數(shù)據(jù),操作數(shù)據(jù),定義數(shù)據(jù),控制數(shù)據(jù)
所有數(shù)據(jù)庫(kù)都使用相同或者相似的語(yǔ)言
SQL可分為:
-數(shù)據(jù)定義語(yǔ)言(DDL):Data Definition Language
-數(shù)據(jù)操作語(yǔ)言(DML):Data Manipulation Language
-事務(wù)控制語(yǔ)言(TCL):Transaction Control Language
-數(shù)據(jù)查詢(xún)語(yǔ)言(DQL):Data Query Language
-數(shù)據(jù)控制語(yǔ)言(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ù)定義語(yǔ)言(DDL)
用于建議、修改、刪除數(shù)據(jù)庫(kù)對(duì)象,包括:
-CREATE:創(chuàng)建表或其他對(duì)象的結(jié)構(gòu)
-ALTER:修改表或其他對(duì)象的結(jié)構(gòu)
-DROP:刪除表或其他對(duì)象的結(jié)構(gòu)
-TRUNCATE:刪除表數(shù)據(jù),保留表結(jié)構(gòu)
1".創(chuàng)建表 CREATE語(yǔ)句
CREATE TABLE table_name(
column_name datatype DEFAULT exp,....);
2".DESC語(yǔ)句-查詢(xún)表的結(jié)構(gòu)
DESC table_name;
3".DEFAULT語(yǔ)句--給列指定默認(rèn)值
4".NOT NULL--非空約束,用于確保字段值不為空
5".修改表名RENAME
在建表后若希望修改表名,使用RENAME語(yǔ)句
RENAME old_table_name TO new_table_name;
6".增加列--ALTER TABLE的ADD子句實(shí)現(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ù)類(lèi)型、長(zhǎng)度和默認(rèn)值,修改僅對(duì)以后插入的數(shù)據(jù)有效,將長(zhǎng)度由大改小,有可能u成功
ALTER TABLE table_name
MODIFY(column_name datatype,...);
補(bǔ)充Oracle數(shù)據(jù)類(lèi)型:
NUMBER(P,S)數(shù)字類(lèi)型,p數(shù)字的總位數(shù),s小數(shù)點(diǎn)后面的位數(shù)
CHAR(N)固定長(zhǎng)度字符類(lèi)型,n占用的字節(jié)數(shù),最大長(zhǎng)度2000字節(jié)
VARCHAR(N) VARCHAR2(N)變長(zhǎng)字符類(lèi)型,n最多占用字節(jié)數(shù),最大長(zhǎng)度4000字節(jié)
DATE日期時(shí)間的數(shù)據(jù),長(zhǎng)度7個(gè)字節(jié),默認(rèn)格式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ù)操作語(yǔ)言(DML)
用于該表數(shù)據(jù)表中的數(shù)據(jù),和事務(wù)相關(guān),執(zhí)行完后需要經(jīng)過(guò)事務(wù)控制語(yǔ)句提交后才真正的將改變應(yīng)用到數(shù)據(jù)庫(kù)中,包括:
-INSERT:將數(shù)據(jù)插入到數(shù)據(jù)表中
-UPDATE:更新數(shù)據(jù)表中已存在的數(shù)據(jù)
-DELETE:刪除數(shù)據(jù)表中的數(shù)據(jù)
1".INSERT語(yǔ)句--給數(shù)據(jù)表增加記錄
INSERT INTO table_name
(column_name,column_name,...)
VALUES(value,value,...);
若插入的列有日期字段,需考慮日期格式,默認(rèn)格式:DD-MON-RR
可自定義日期格式,用TO_DATE函數(shù)轉(zhuǎn)換為日期類(lèi)型的數(shù)據(jù)
TO_DATE('2016-08-14','YYYY-MM-DD')
2".UPDATE語(yǔ)句--更新表中的記錄
UPDATE table_name
SET column_name = value,...
[WHERE condition];
3".DELETE語(yǔ)句--刪除表中的記錄
DELETE FROM table_name [WHERE condition];
若沒(méi)有where子句,則全表的數(shù)據(jù)都會(huì)被刪除
4".TRUNCATE語(yǔ)句--刪除表中數(shù)據(jù)
TRUNCATE TABLE table_name;
與delete區(qū)別:
1':delete可以有條件刪除,truncate將表數(shù)據(jù)全部刪除
2':delete是DML語(yǔ)句,可以回退,truncate是DDL語(yǔ)句,立即生效,無(wú)法回退
3':如果刪除全部表記錄且數(shù)據(jù)量較大,delete語(yǔ)句效率低于truncate語(yǔ)句
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ù)控制語(yǔ)言(TCL)
用于維護(hù)數(shù)據(jù)一致性的語(yǔ)句,包括:
-COMMIT:提交,確認(rèn)已經(jīng)進(jìn)行的數(shù)據(jù)改變
-ROLLBACK:回滾,取消已經(jīng)進(jìn)行的數(shù)據(jù)改變
-SAVEPOINT:保存點(diǎn),使當(dāng)前的事務(wù)可以回退到指定的保存點(diǎn),便于取消部分改變。
1
2
3
4
3.2.4)數(shù)據(jù)查詢(xún)語(yǔ)言(DQL)
用來(lái)查詢(xún)所需要的數(shù)據(jù)
-SELECT語(yǔ)句
1
2
3.2.5)數(shù)據(jù)控制語(yǔ)言(DCL)
用于執(zhí)行權(quán)限的授予和收回操作,包括:
-GRANT:授予,用于給用戶(hù)或角色授予權(quán)限
-REVOKE:用于收回用戶(hù)或角色已有的權(quán)限
-CREATE USER:創(chuàng)建用戶(hù)
1
2
3
4
4.字符串操作
4.1)字符串類(lèi)型
4.1.1)CHAR和VARCHAR2類(lèi)型
字符串?dāng)?shù)據(jù)類(lèi)型,用來(lái)在表中存放字符串信息
CHAR:存放定長(zhǎng)字符,不滿(mǎn)補(bǔ)空格
VARCHAR2:存邊長(zhǎng)字符,存多少占用多少
按字符的自然順序排序
4.1.2)LONG和CLOB類(lèi)型
LONG:存變長(zhǎng)字符串,最多達(dá)2GB的字符串?dāng)?shù)據(jù)
CLON:存定長(zhǎng)或變長(zhǎng)字符串,最多達(dá)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兩個(gè)字符串連接起來(lái)
等價(jià)操作:連接操作符:"||"
若a1和a2任何一個(gè)為NULL,相當(dāng)于連接了一個(gè)空格
CONCAT(a,b) a||b
4.2.2)LENGHT(char)字符串的長(zhǎng)度
4.2.3)UPPER,LOWER和INITCAP大小寫(xiě)轉(zhuǎn)換函數(shù)轉(zhuǎn)換字符大小寫(xiě)
UPPER(char):將字符轉(zhuǎn)為大寫(xiě)形式
LOWER(char):將字符轉(zhuǎn)為小寫(xiě)形式
INITCAP(char):將字符串中每個(gè)單詞的首字符大寫(xiě),其他小寫(xiě),單詞之間用空格
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:補(bǔ)位函數(shù)
LPAD(a,n,b):左補(bǔ)位,在a的左端用b補(bǔ)足n位
RPAD(a,n,b):右補(bǔ)位,在a的右端用b補(bǔ)足n位
4.2.6)SUBSTR(char,m,n)獲取字符串的子串
返回char中從m位開(kāi)始取n個(gè)字符
m=0,從首字符開(kāi)始
m為負(fù)數(shù),從尾部開(kāi)始
若沒(méi)有n,或n的長(zhǎng)度超過(guò)char的長(zhǎng)度,則取到字符串末尾為止
4.2.7)INSTR(a,b,n,m)返回字符串a(chǎn)中b的位置
從n的位置開(kāi)始檢索,沒(méi)有指定n則從第1個(gè)字符開(kāi)始檢索
m用于指定子串的第m次出現(xiàn)次數(shù),若不指定取值1
若在a中沒(méi)有找到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ù)字類(lèi)型
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缺省,默認(rèn)值為0
m取正數(shù),則四舍五入到小數(shù)點(diǎn)后第m位
m取0值,則四舍五入到整數(shù)位
m取負(fù)數(shù),則四舍五入到小數(shù)點(diǎn)前第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)日期類(lèi)型
DATE:7個(gè)字節(jié),世紀(jì)、年、月、日、時(shí)、分、秒
TIMESTAMP:7或11個(gè)字節(jié),世紀(jì)、年、月、日、時(shí)、分、秒、納秒
1
2
6.2)日期關(guān)鍵字
SYSDATE:當(dāng)前系統(tǒng)時(shí)間,精確到秒,DD-MON-RR
SYSTIMESTAMP:當(dāng)前系統(tǒng)日期和時(shí)間,精確到毫秒
1
2
6.3)日期轉(zhuǎn)換函數(shù)
TO_DATE(char,'YYYY-MM-DD HH24:MI:SS')
將字符串按照指定格式轉(zhuǎn)換為日期類(lèi)型
TO_DATE(char,'YYYY-MM-DD HH12:MI:SS')
TO_CHAR(date,'YYYY"年"MM"月"DD"日"')
將日期按照指定格式轉(zhuǎn)換為字符串類(lèi)型
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個(gè)月后的日期值
若i為小數(shù),將截去整數(shù)后在參與運(yùn)算
若i為負(fù)數(shù),則減去i個(gè)月后的日期值
6.4.3)MONTHS_BETWEEN(date1,date2)
date1-date2日期值之間間隔了多少個(gè)月
6.4.4)NEXT_DAY(date,i)返回date日期數(shù)據(jù)的下一個(gè)周幾
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;
更新空值,列沒(méi)有非空約束的情況下才可操作
NULL條件查詢(xún) 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
來(lái)源:CSDN
原文:https://blog.csdn.net/guwuyue/article/details/52205863
版權(quán)聲明:本文為博主原創(chuàng)文章,轉(zhuǎn)載請(qǐng)附上博文鏈接!
在線(xiàn)
客服
服務(wù)時(shí)間:周一至周日 08:30-18:00
選擇下列產(chǎn)品馬上在線(xiàn)溝通:
客服
熱線(xiàn)
7*24小時(shí)客服服務(wù)熱線(xiàn)
關(guān)注
微信
關(guān)注官方微信