日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

oracle中persons,oracle 简单备注

發(fā)布時(shí)間:2023/12/4 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 oracle中persons,oracle 简单备注 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1. 建立數(shù)據(jù)庫(kù)

備注:

1) oracle 不同于mysql 可以直接create database

2) oracle 創(chuàng)建schema時(shí)對(duì)應(yīng)一個(gè)用戶,即該schema的訪問(wèn)用戶,與用戶一一對(duì)應(yīng);但可以存在多個(gè)訪問(wèn)用戶(帶權(quán)限控制)

1.1 創(chuàng)建數(shù)據(jù)庫(kù)文件

CREATE TABLESPACE XX LOGGING DATAFILE ‘D:\app\XX\oradata\orcl\XX.dbf‘ SIZE 1000M;

create temporary tablespace XX tempfile ‘D:\app\XX\oradata\orcl\XX.dbf‘ size 1000m;

1.2 創(chuàng)建用戶

CREATE USER XX IDENTIFIED BY XX DEFAULT TABLESPACE XX TEMPORARY TABLESPACE XX;

1.3 授權(quán)

grant connect, resource to XX;

grant create session to XX;

2. 數(shù)據(jù)庫(kù)操作(默認(rèn)sccot用戶):

2.1 create

create table persons(

person_id NUMBER PRIMARY KEY,

first_name VARCHAR2(50) NOT NULL,

last_name VARCHAR2(50) NOT NULL,

score NUMBER,

type VARCHAR2(20)

);

備注:

1) ORA-02000: missing ALWAYS keyword : 在11g版本里不用用GENERATED BY DEFAULT AS IDENTITY ,要用PRIMARY KEY

2) oracle 本來(lái)只有number類型,用作number(19,2),即有小數(shù)位;后為了兼容其他數(shù)據(jù)庫(kù),新增int,只能是整形

2.2 insert

insert into persons values(1, ‘fred‘, ‘xu‘, 0, ‘a(chǎn)‘);

insert into persons values(SEQ_PERSON_ID.NEXTVAL, ‘fred3‘, ‘xu3‘, 0, ‘b‘)

備注:

1)oracle下設(shè)置自增沒(méi)有mysql那么簡(jiǎn)單,步驟如下:

1.1) CREATE SEQUENCE SEQ_PERSON_ID start with 100; #創(chuàng)建一個(gè)序列

1.2) INSERT INTO persons VALUES(SEQ_PERSON_ID.NEXTVAL, ‘fred1‘, ‘xu1‘, 0, ‘a(chǎn)‘);

#此時(shí)插入persons表記錄的person_id被設(shè)置成了100

1.3)也可以采用觸發(fā)器的形式

CREATE TRIGGER persons_trigger

BEFORE INSERT ON persons

FOR EACH ROW

WHEN (new.person_id is null)

begin

select SEQ_PERSON_ID.nextval into :new.person_id from sys.dual;

end;

備注:sys.dual 是個(gè)虛擬表,oracle保證里面只有一條記錄

:new— 觸發(fā)器執(zhí)行過(guò)程中觸發(fā)表作操作的當(dāng)前行的新紀(jì)錄

:old— 觸發(fā)器執(zhí)行過(guò)程中觸發(fā)表作操作的當(dāng)前行的舊紀(jì)錄

在有觸發(fā)器之后,插入數(shù)據(jù)時(shí)不需要填寫主鍵 INSERT INTO persons(first_name, last_name, score, person_type) VALUES(‘fred2‘, ‘xu2‘, 0, ‘a(chǎn)‘);

2.3 select

select * from persons where first_name = ‘fred‘ or last_name = ‘xu1‘

select * from persons where first_name like ‘%fred%‘

select * from persons where CONCAT(first_name, last_name) like ‘%1%‘

select * from users where rownum BETWEEN 0 AND 5 #利用rownum關(guān)鍵字分頁(yè)

2.4 group by

select AVG(score), person_type from persons group by person_type

select AVG(score), person_type from persons group by person_type having person_type = ‘b‘

備注:

1)ORA-00979: not a GROUP BY expression group by?后的列要能被處理

2.5 in

select * from persons where person_type in (‘a(chǎn)‘,‘b‘);

2.6 insert all

insert all

into persons(first_name, last_name, score, person_type) values(‘test‘, ‘test‘, 1, ‘c‘)

into persons(first_name, last_name, score, person_type) values(‘test1‘, ‘test1‘, 1, ‘c1‘)

into persons(first_name, last_name, score, person_type) values(‘test2‘, ‘test2‘, 1, ‘c2‘)

SELECT 1 FROM dual;

備注:

SELECT 1 FROM dual; 最后一次select必須有

2.7 視圖

create view person_view as select * from persons where first_name like ‘%f%‘

select * from person_view;

備注:

視圖是需表,只是邏輯定義;除非是一種物化視圖,那個(gè)才是有物理占用

2.8 索引

create index person_index on persons (first_name);

總結(jié)

以上是生活随笔為你收集整理的oracle中persons,oracle 简单备注的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。