Oracle建表(create table)
數據類型 | 類型解釋 |
VARCHAR2(length) |
字符串類型:存儲可變的長度的字符串,length:是字符串的最大長度,默認不填的時候是1,最大長度不超過4000。 |
CHAR(length) |
字符串類型:存儲固定長度的字符串,length:字符串的固定長度大小,默認是1,最大長度不超過2000。 |
NUMBER(a,b) |
數值類型:存儲數值類型,可以存整數,也可以存浮點型。a代表數值的最大位數:包含小數位和小數點,b代表小數的位數。 number(6,2),輸入123.12345,實際存入:123.12 。 number(4,2),輸入12312.345,實際春如:提示不能存入,超過存儲的指定的精度。 |
DATA |
時間類型:存儲的是日期和時間,包括年、月、日、時、分、秒。例子: 內置函數sysdate獲取的就是DATA類型 |
TIMESTAMP |
時間類型:存儲的不僅是日期和時間,還包含了時區。例子: 內置函數systimestamp獲取的就是timestamp類型 |
CLOB |
大字段類型:存儲的是大的文本,比如:非結構化的txt文本,字段大於4000長度的字符串。 |
BLOB |
二進制類型:存儲的是二進制對象,比如圖片、視頻、聲音等轉換過來的二進制對象 |
創建stuinfo(學生信息表)
-- Create table
create table STUDENT.stuinfo
(
stuid varchar2(11) not null,--學號:'S'+班號(7位數)+學生序號(3位數)(1)
stuname varchar2(50) not null,--學生姓名
sex char(1) not null,--性別
age number(2) not null,--年齡
classno varchar2(7) not null,--班號:'C'+年級(4位數)+班級序號(2位數)
stuaddress varchar2(100) default '地址未錄入',--地址 (2)
grade char(4) not null,--年級
enroldate date,--入學時間
idnumber varchar2(18) default '身份證未採集' not null--身份證
)
tablespace USERS --(3)
storage
(
initial 64K
minextents 1
maxextents unlimited
);
-- Add comments to the table
comment on table STUDENT.stuinfo --(4)
is '學生信息表';
-- Add comments to the columns
comment on column STUDENT.stuinfo.stuid -- (5)
is '學號';
comment on column STUDENT.stuinfo.stuname
is '學生姓名';
comment on column STUDENT.stuinfo.sex
is '學生性別';
comment on column STUDENT.stuinfo.age
is '學生年齡';
comment on column STUDENT.stuinfo.classno
is '學生班級號';
comment on column STUDENT.stuinfo.stuaddress
is '學生住址';
comment on column STUDENT.stuinfo.grade
is '年級';
comment on column STUDENT.stuinfo.enroldate
is '入學時間';
comment on column STUDENT.stuinfo.idnumber
is '身份證號';
stuinfo(學生信息表)添加約束
-- Create/Recreate primary, unique and foreign key constraints
alter table STUDENT.STUINFO
add constraint pk_stuinfo_stuid primary key (STUID);
--把stuid當做主鍵,主鍵字段的數據必須是唯一性的(學號是唯一的)
-- Create/Recreate check constraints
alter table STUDENT.STUINFO
add constraint ch_stuinfo_age
check (age>0 and age<=50);--給字段年齡age添加約束,學生的年齡只能0-50歲之內的
alter table STUDENT.STUINFO
add constraint ch_stuinfo_sex
check (sex='1' or sex='2');
alter table STUDENT.STUINFO
add constraint ch_stuinfo_GRADE
check (grade>='1900' and grade<='2999');
Oracle查詢(select)
select命令結構:
1 |
|
案例1:查詢學生信息表(stuinfo)中“李四”同學的基本信息:
1 |
|
案例2:查詢“李四”同學的學號、班級、年級和地址:
1 |
|
案例3:查詢班級“C201801”所有同學信息,按年齡進行升序展示:
1 |
|
Oracle插入(insert into)
insert 命令結構:
1 |
|
案例1:向學生信息表(stuinfo)插入一條數據:
1 2 3 4 |
|
結果如下:
Oracle更新(update)
update命令結構:
1 |
|
案例1、更新學生“張三”的年齡和身份證信息:
1 2 3 4 5 |
|
結果如下:
Oracle刪除(delete)
Oracle中對錶數據的刪除是利用delete命令進行的。
delete命令結構:
1 |
|
案例1、刪除學生信息表(stuinfo)中學生“張三”的數據:
1 |
|
結果如下:
Oracle字符串連接符||
Oracle中利用字符串連接符||(即雙豎線)來連接查詢結果。
案例1、字符串連接符||:
1 2 3 4 |
|
結果如下:
Oracle DISTINCT
DISTINCT語法結構:
1 |
|
案例1、查詢學生成績表中課程“數學(2018上學期)”的所有出現的成績,不重複:(案例所需表結構)
1 2 3 4 |
|
結果如下:
IN操作符
在 Where 子句中可以使用 IN 操作符來查詢其列值在指定的列表中的查詢結果。
BETWEEN...AND
在 WHERE 子句中,可以使用 BETWEEN...AND 操作符來查詢列值包含在指定區間內的查詢結果 。
LIKE模糊查詢
1、%:表示零個或者多個任意字符。
2、_:代表一個任意字符。
3、\:指轉義字符,“\%”在字符串中表示一個字符“%”。
查詢學生基本信息表“STUINFO”中姓“張”的,並且姓名長度是兩個字的學生基本信息:
1 |
|
Oracle集合運算
1、INTERSECT(交集),返回兩個查詢共有的記錄。
2、UNION ALL(並集重複),返回各個查詢的所有記錄,包括重複記錄。
3、UNION(並集不重複),返回各個查詢的所有記錄,不包括重複記錄 (重複的記錄只取一條)。
4、MINUS(補集),返回第一個查詢檢索出的記錄減去第二個查詢檢索出的記錄之後剩餘的記錄。
INTERSECT(交集):
UNION ALL(並集重複)
UNION(並集不重複)
MINUS(補集)
外連接
1、left join(左聯接)等價於(left outer join)返回包括左表中的所有記錄和右表中聯結字段相等的記錄。
2、right join(右聯接)等價於(right outer join)返回包括右表中的所有記錄和左表中聯結字段相等的記錄。
3.、full join (全連接)等價於(full outer join)查詢結果等於左外連接和右外連接的和。
Oracle僞列
Oracle表中的每一行在數據文件中都有一個物理地址,使用 ROWID 可以快速的定位表中的某一行。
ROWNUM爲每個查詢結果集的行標識一個行號
Oracle單行子查詢
Oracle多行子查詢
Oracle視圖
oracle視圖可以理解爲數據庫中一張虛擬的表,他是通過一張或者多張基表進行關聯查詢後組成一個虛擬的邏輯表。