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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Oracle 常用sql场景应用(未完待续......)

發布時間:2023/12/4 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Oracle 常用sql场景应用(未完待续......) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

--1、創建一張學生信息表stuinfo,字段包括學號、姓名、性別、年齡、入學日期

SQL>CREATE TABLE stuinfo (snochar(4),sname varchar2(10),sex int,age int,sdate date);

Table created

?

--2、創建stuinfo表主鍵約束

SQL>ALTER TABLE stuinfo ADD CONSTRAINT pk_stu PRIMARY KEY (SNO);

Table altered

Executed in 0.952 seconds

?

--3、將入學日期增加sysdate默認值,需要注意的是sysdate后必須加not null

SQL>ALTER TABLE stuinfo MODIFY sdate DEFAULT SYSDATE NOT NULL;

Table altered

Executed in 0.546 seconds

?

--4、添加5條模擬數據

SQL> insert into stuinfo values('001','lilei','0','23',default);

SQL> insert into stuinfo values ('002','xiaofang','1','22',to_date('2014-09-01','yyyy-mm-dd'));

SQL> insert into stuinfo values('003','weiwei','1','24',to_date('2008-08-08','yyyy-mm-dd'));

SQL> insert into stuinfo values('004','xiaochao','0','27',to_date('2009-10-08','yyyy-mm-dd'));

SQL> insert into stuinfo values('005','tom','0','28',to_date('2007-03-08','yyyy-mm-dd'));

?

--5、檢索stuinfo

SQL> select * from stuinfo;

?

--6、創建一張成績表,列內容包括學號、課程代碼、成績,其中學號是本表的外鍵

SQL>CREATE TABLE score (gnochar(4),class int,score NUMBER(4,2),CONSTRAINT FK_NO FOREIGN KEY (gno)REFERENCES stuinfo(sno));

Table created

?

--7、測試向score表中插入snostuinfo表中不存在的記錄

SQL>insert into score values('006',1212,96.33);

ORA-02291: 違反完整約束條件 (EPM.FK_NO) - 未找到父項關鍵字

?

--8、對于存在外鍵的表,插入或者更新時都需要與父表關聯,所以必須在外鍵處創建索引

SQL>CREATE INDEX inx_score ON score(gno);

Index created

Executed in 0.062 seconds

?

--9、將stuinfo表重命名為student

SQL>ALTER TABLE stuinfo RENAME TO student;

?

--10、為student表增加檢查——age between 1 and 120

SQL> ALTER TABLE student ADD CONSTRAINTage_check CHECK(age>1 and age<=120);

?

--11、測試向student表插入age126的數據

SQL> INSERT INTO student VALUES('006','dushuai',0,'126',to_date('1989-01-05','yyyy-mm-dd'));

ORA-02290: 違反檢查約束條件 (EPM.AGE_CHECK)

?

--12、將student表中學號為006的學生年齡更新為26

SQL> UPDATE student SET age=26 WHEREsno='006';

1 row updated

Executed in 0.078 seconds

?

--13、測試對student進行刪除,檢查能夠正常刪除

SQL>DROP TABLE student;

ORA-02449: 表中的唯一/主鍵被外鍵引用

說明:如果表中的主鍵或唯一值被其他表外鍵引用,要么先刪除外鍵或者在drop后加cascade constraint 代表進行級聯刪除;

正確SQL>DROP TABLE student CASCADE CONSTRAINT;

?

--14oracle閃回技術,即從回收站恢復被drop的表

SQL> FLASHBACK TABLE student TO BEFORE DROP;

Done

Executed in 0.296 seconds

?

--15、查詢回收站中的內容

SQL>SELECT r.original_name,r.type,r.droptime FROM recyclebin r;

?

--16、為表添加整體注釋

SQL>COMMENT ON TABLE student IS '學生信息表';

?

--17、為student表中的age列添加注釋

SQL>COMMENT ON COLUMN student.age IS '年齡需要大于1歲并小于等于120';

?

--18、創建一張表,只使用student表中的表結構,而不使用數據

SQL>CREATE TABLE student_temp AS SELECT* FROM student WHERE 1=2;

說明:因為1=2條件不成立,所以只將student表的結構復制給了新表;

??????相同道理,如果條件成立為真,則會將表結構和數據都會復制給新表!

??????新表只能繼承舊表的結構和數據,無法繼承主鍵、外鍵、索引等約束;

?

--19、設置表為只讀模式

SQL>ALTER TABLE student_temp1 READ ONLY;

說明:表設置為只讀后,無法進行插入、更新等DML操作,但允許刪除表;

SQL>INSERT INTO student_temp1VALUES('007','wangzi','0','98',TO_DATE(SYSDATE,'YYYY-MM-DD'));

ORA-12081: 不允許對表"EPM"."STUDENT_TEMP1" 進行更新操作

?

SQL> DROP TABLE student_temp1;

Table dropped

Executed in 1.7 seconds

?

--20、將只讀表恢復成讀寫狀態

SQL> ALTER TABLE student_temp1 READ WRITE;

Table altered

Executed in 0.265 seconds

?

--21student_temp1表新增備注列,類型為varchar2200

SQL> ALTER TABLE student_temp1 ADD note varchar2(200);

Table altered

Executed in 1.264 seconds

?

--22、將student_temp1表中的note表設置為不使用(unused

SQL> ALTER TABLE student_temp1 SET UNUSED(note);

Table altered

Executed in 1.794 seconds

說明:使用set unused可以對表中的列進行標注,同時減少drop column的大量redo

注意set unused后的列數據無法恢復(除非通過數據備份),然后在系統開銷較小的時候,對標記set unused的表列進行刪除操作,格式如下:

SQL> ALTER TABLE student_temp1 DROPUNUSED COLUMNS;?

Table altered?

Executed in 2.247 seconds


--23Oracle新建表時應避免使用系統保留關鍵字,如果確實需要使用應當需要使用雙引號進行包圍并且在使用時也需要帶雙引號進行引用

SQL>ALTER TABLE t1 RENAME TO "select";

SQL>SELECT * FROM "select";

說明:創建表時如果表名使用的是小寫,在oracle數據字典中將自動轉化為大寫,用戶使用select訪問的時候表名使用小寫或大寫都是同等效果,但是如果使用雙引號,則大寫的雙引號可以正常訪問,而小寫的就會失敗,因為雙引號具有固定、鎖定的含義;即表名t == T == "T" != "t"

即表名t == T == "T" != "t"

轉載于:https://blog.51cto.com/dushuai/1569765

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的Oracle 常用sql场景应用(未完待续......)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。