oracle基礎語法

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

select *|列名|表達式 from 表名 where 條件 order by 列名


案例1:查詢學生信息表(stuinfo)中“李四”同學的基本信息:

1

select t.* from STUDENT.STUINFO t where t.stuname = '李四';

 


案例2:查詢“李四”同學的學號、班級、年級和地址:

1

select t.stuid,t.classno,t.stuaddress,t.grade from STUDENT.STUINFO t where t.stuname = '李四';


案例3:查詢班級“C201801”所有同學信息,按年齡進行升序展示:

1

select t.*  from STUDENT.STUINFO t where t.classno = 'C201801' ORDER BY T.AGE ASC

Oracle插入(insert into)

insert 命令結構:

1

insert into 表名(列名1,列名2,列名3.....)values(值1,值2,值3.....);

案例1:向學生信息表(stuinfo)插入一條數據:

1

2

3

4

insert into STUDENT.STUINFO (STUID, STUNAME, SEX, AGE, CLASSNO, STUADDRESS, GRADE, ENROLDATE, IDNUMBER)

values ('SC201801005''龍七''1', 26, 'C201801''福建省廈門市XXX號''2018', to_date('01-09-2018''dd-mm-yyyy'),

 '3503021992XXXXXXXX');

select from student.stuinfo t where t.stuid='SC201801005';

結果如下:

 


Oracle更新(update)

update命令結構:

1

update 表名 set 列名1=值1,列名2=值2,列名3=值3..... where 條件

 


案例1、更新學生“張三”的年齡和身份證信息:

1

2

3

4

5

update student.stuinfo t

   set t.age = '24', t.idnumber = '3503021994XXXXXXXX'

 where t.stuname = '張三';

commit;

select from student.stuinfo t where t.stuname='張三';

結果如下:

Oracle刪除(delete)

Oracle中對錶數據的刪除是利用delete命令進行的。

 


delete命令結構:

1

delete from 表名 where 條件

案例1、刪除學生信息表(stuinfo)中學生“張三”的數據:

1

delete  from stuinfo t where t.stuname='張三';

結果如下:

 

Oracle字符串連接符||

Oracle中利用字符串連接符||(即雙豎線)來連接查詢結果。

 


案例1、字符串連接符||:

1

2

3

4

select '姓名:' || c.stuname || ', 課程:' || b.coursename || ', 成績:' || a.score || '分。' as sxcj

  from score a, course b, stuinfo c

 where a.courseid = b.courseid

   and a.stuid = c.stuid

結果如下:

Oracle DISTINCT

DISTINCT語法結構:

1

SELECT DISTINCT 列1,列2,列3... from 表名;

案例1、查詢學生成績表中課程“數學(2018上學期)”的所有出現的成績,不重複:(案例所需表結構)

1

2

3

4

select distinct b.coursename, t.score

  from score t, course b

 where t.courseid = b.courseid

   and t.courseid = 'R20180101';

結果如下:

                                                                                                                                                                                                                        

IN操作符

在 Where 子句中可以使用 IN 操作符來查詢其列值在指定的列表中的查詢結果。

                                   

BETWEEN...AND

在 WHERE 子句中,可以使用 BETWEEN...AND 操作符來查詢列值包含在指定區間內的查詢結果 。

LIKE模糊查詢

1、%:表示零個或者多個任意字符。

2、_:代表一個任意字符。

3、\:指轉義字符,“\%”在字符串中表示一個字符“%”。

查詢學生基本信息表“STUINFO”中姓“張”的,並且姓名長度是兩個字的學生基本信息:

1

select from STUINFO t where t.stuname like '張_';

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視圖可以理解爲數據庫中一張虛擬的表,他是通過一張或者多張基表進行關聯查詢後組成一個虛擬的邏輯表。

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章