oracle中persons,oracle 简单备注
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)題。
- 上一篇: 数据库oracle 别名不能更新,数据库
- 下一篇: 基于c语言单片机秒表课程设计,基于c语言