數據庫
Create Datebade命令
1、打開配置和移植工具-database Coffigyration Assistant
2、選擇創建數據庫--依照工具提示操作
數據庫存儲結構
物理的存儲結構:顯示的存儲單元
數據文件:表,索引數據
日志文件:記錄對數據庫修改的信息
控制文件:記錄物理結構的二進制文件
邏輯的存儲結構:數據概念上的組織
是數據庫存儲數據的邏輯單元
SYSTEM 數據庫內部表和數據字典
SYSAUX 常用樣例用戶對象
撤銷表空間 用於存儲撤銷信息的空間
USER 用戶表空間
Temp 臨時數據的表空間
劃分,一般采取一個用戶一個表空間,或者一個項目一個表空間
表空間與數據文件的關系
一個數據庫包括多個邏輯存儲單元即是表空間,每個表空間包含多個多個數據文件
SQL語言
PL/SQL 過程化查詢語言
T-SQL
分類
數據定義語言(DDL) 定義和管理數據庫中的各種對象
CREATE創建對象 ALTER修改對象 DEOP刪除對象
數據操作語言(DML) 操作數據庫對象所包含的得數據
INSERT UPDATE DELETE
數據庫控制語言(DCL)
SQL
創建表空間
create teablespace shop_dev_daata(空間名)
datafile 'shop_dev_data.DBF','shop.DBF'(儲存文件名,分割)
size 100M(大小) autoextend on(是on否off自動擴展);
創建用戶
create user<用戶名> identiffied by <密碼>
default tablespace <表空間名>
temporary tablespace <臨時表空間名>
quota <空間大小> on <空間名稱>
用戶授權
方式,直接授權和通過角色授權*推薦
權限: 系統權限 使用系統功能
create session 連接到數據庫
create table 創建表
create view 創建視圖
create sequence 創建序列
對象權限 對對象操作的權限
角色 權限的集合
預定角色 CONNECT 有連接到數據庫的權限
RESOURCE 有創建表、觸發器、過程等的權限
DBA 所有系統權限
授權
GRANT 權限 TO 角色;
字段類型
文本類型
char 定長字符數據,最大2000字節。補空格
varchar 變長字符數據,最大4000字節
long 大字符數據(被clob代替)
數值類型
number 整形或浮點型
binary_iterger PL/SQL中,慢於inrefer
binary_double 雙精度64位浮點數
number子類型 float,real,double
日期類型
date 7個字節固定長度,分別存儲世紀,年。。。秒
timetamp 儲存年月日小時分,包含時區
SYSDATE函數用於返回當前時間
大對象數據類型
clob 大量文本
blob二進制對象,比如圖片
表操作
創建表
CREATE TABLE student(
表名 字段名 (長度),
表名 字段名 (長度),
表名 字段名 (長度)...
)
數據完整性
完整性約束
實體完整性約束 保證每行數據表示一個實體
實現 主鍵約束,唯一約束
主鍵
alter table 表名 add constraint 約束名
primary key (字段名)
唯一約束
alter table 表名 add constraint 約束名
unique key (字段名)
域完整性約束 驗證輸入有效性
實現 限制數據類型,檢查約束,輸入格式,默認值,非空約束等
檢查約束
alter table 表名 add constraint 約束名
check (age > 0)
引用完整性約束
實現 外鍵
外鍵
alter table 子表名 add constraint 約束名
foreign key (字表外鍵) peferences 主表 (主表主鍵)
自定義完整性約束
存儲過程,觸發器
數據操作
插入
單行 insert into 表名 [字段列表] values [值列表]
多行 insert into 表名 (select字句)
[注] '' 表示單引號
修改
單行 update 表名 set 字段 = 屬性,字段 = 屬性... where 條件
查詢
select 字段名/* from 表名 where 條件
模糊查詢 like 'str' 符合str的 其中_一個字段,%多個字符
between and a 到b之間 between 100 and 400,
in ('a','b') 在a,b之中
別名
表名列名後加別名 table as a
排序
order by 字段名 [ASC|DESC]升序/降序
去重
distinct 去重
刪除
delete from 表名 where 條件
[假刪除]用一個字段標志刪除還不是即刪除
函數
字符函數
concat函數 concat(a , b); 返回 ab
類似 a || b
nvl函數 concat(a , b); a為null時返回b,反之返回a
數字函數
teunc teunc(col , n ) col為截取的數值,n為位數,整數表示小數點前,0表示小數點,負數表示小數點後
round teunc(col , n ) col為四捨五入的數值,n為位數,整數表示小數點前,0表示小數點,負數表示小數點後
日期函數
sysdate 返回系統時間
extract 獲取部分日期 extract(year from sysdate) 返回年
轉換函數
to_char() 轉換為字符串 對日期to_char(date) to_char(date , '時間格式')
to_date() 轉化為date to_date(char) to_date(char , '時間格式')
聚合函數
分組 group by 字段名
函數 sum(字段名) 對當前字段求和,有分組時求各組求和
count(字段名) 求字段總行數,有分組時求各組求行數
max(字段名) 求字段最大值,有分組時求各組求最大值
高級SQL
子查詢
對於單一返回值的子查詢
操作符 =,>,>=,<,<=,!=
對於多行返回的走查詢
操作符 in,not in,any, all, exists
條件的值寫作查詢的結果
偽列
ROWNUM,對符合條件的記錄的序列號
關於rownum使用的經驗
在select執行時,先執行where,後執行order by
所以在使用時,先對where的結果集排序,把結果當做虛擬表再用rownum做條件處理
rownum不能帶表名使用
rownum的固化
即把rownum取別名,同時,把含有固化的rownum的返回集做虛擬表子查詢
表連接的分類
內連接 僅包含那些滿足連接條件的記錄行
等值連接 使用=運算符比較連接的值
非等值連接 使用初等號外的列植連接查詢
(>,<,!=,like,in,between)
外連接
左外連接 只限制右表的行,不限制左表。即左邊記錄即使不滿足連接條件也顯示,以null填充
右外連接 只限制左表的行,不限制右表。即右邊記錄即使不滿足連接條件也顯示,以null填充
全外連接 兩個表均不限制
自連接
連表查詢
內連接 等值連接
select 表名.字段名 from [包含的表(表名,表名)] where [連接條件(表名.字段名 = 表名.字段名)] and 表名.字段名=value
非等值連接
select 表名.字段名 from [包含的表(表名,表名)] where [連接條件(表名.字段名 = 表名.字段名)] and 表名.字段名>value
外連接 左外查詢/右外
select 表名.字段名 from 左表 LEFT OUTER JOIN 右表 where [連接條件(表名.字段名 = 表名.字段名)] and 查詢條件
select 表名.字段名 from [包含的表(表名,表名)] where [連接條件(表名.字段名 = 表名.字段名(+))] and 查詢條件
右外查詢/右外
select 表名.字段名 from 左表 RIGHT OUTER JOIN 右表 where [連接條件(表名.字段名 = 表名.字段名)] and 查詢條件
select 表名.字段名 from [包含的表(表名,表名)] where [連接條件(表名.字段名(+) = 表名.字段名)] and 查詢條件
集合查詢
交集 INTERSECT
並集 UNION\UNION ALL
補集 MINUS