Oracle資料庫3

來源:互聯網
上載者:User

標籤:

在前兩章,我們學習了SQL語言中基本的一些查詢語句,也就是資料庫查詢語言DQL,今天我們要介紹的資料庫操作語言DML

 

資料庫中,我們除了查詢之外,最主要的就是日常的增、刪、改、查了。

 


資料庫操作語言 DML
插入
刪除
修改

1、--建立一張表

CREATE TABLE BJSXT AS SELECT * FROM EMP;(按照EMP表達的格式建立一張名為BJSXT的表)

之後我們用SELECT * FROM BJSXT;可以查詢到我們建立的表

 

2、插入--必須完全參照表的結構順序
INSERT INTO BJSXT VALUES(‘裴老師‘,‘teacher‘,666,333);
INSERT INTO BJSXT VALUES(‘teacher‘,‘胡老師‘,666,333);

--錯誤的方式
INSERT INTO BJSXT VALUES(‘teacher‘,‘胡老師‘,666,333,10);
INSERT INTO BJSXT VALUES(‘teacher‘,‘胡老師‘,666);

 

--自訂插入順序
INSERT INTO BONUS(ENAME,SAL) VALUES(‘閆老師‘,777);

3--刪除
DELETE FROM BONUS;
DELETE FROM BONUS WHERE SAL>666;
DELETE FROM EMP WHERE ENAME LIKE ‘%A%‘ AND SAL >1500 AND DEPTNO = 10;

 

4--修改
UPDATE BONUS SET SAL = 8888 WHERE ENAME=‘裴老師‘;
UPDATE BONUS SET SAL = 8888,COMM = 888 WHERE ENAME=‘裴老師‘;

 

 

2--資料庫的事務

--事務已經被開啟

一旦對資料庫的表進行操作,即代表事務的開始
DELETE FROM BJSXT WHERE EMPNO = 7788;
DELETE FROM BJSXT WHERE EMPNO = 7781;
DELETE FROM BJSXT WHERE EMPNO = 7782;
INSERT INTO
UPDATE
DELETE FROM BJSXT WHERE EMPNO = 7783;
DELETE FROM BJSXT WHERE EMPNO = 7784;
DELETE FROM BJSXT WHERE EMPNO = 7785;
DELETE FROM BJSXT WHERE EMPNO = 7786;

 

--結束事務
/*
手動結束
COMMIT;
提交本次事務操作
ROLLBACK;
復原本次事務操作
自動結束
當使用者執行DDL語句的時候(建立表,刪除表,修改表結構)
事務自動認可
使用者正常退出
事務自動認可
使用者非正常退出
交易回復
系統崩潰或斷電時
事務自動復原
事務的四大特性
ACID原則
原子性
事務中的操作要麼全部執行,要麼全部復原
一致性
事務的執行前後,資料庫處於一個一致的狀態
隔離性
事務的執行不受其他事務的幹擾
持久性
事務在提交之後,就會進入一個新的狀態,所有的資料不能被改變
事務的隔離等級
讀未提交--給資料加鎖
讀已提交o--解決髒讀
可重複讀--解決虛讀,和幻讀的刪除
可序列化o--解決幻讀的新增

更新丟失
是因為沒有鎖
髒讀
讀取別人未提交的資料
虛讀
第一個事務讀取的資料,另外一個事務可以修改
幻讀
第一個事務中讀取的資料多了第二個事務插入的資料

死結ORA-00060
線程1
DELETE FROM BJSXT WHERE EMPNO = 7499;
線程2
DELETE FROM BJSXT WHERE EMPNO = 7521;
線程1
DELETE FROM BJSXT WHERE EMPNO = 7521;
線程2
DELETE FROM BJSXT WHERE EMPNO = 7499;
*/

/*
範式
第一範式
每一列都是不可分割的原子資料項目
第二範式(2NF)
要求實體的屬性完全依賴於主關鍵字。所謂完全依賴是指不能存在僅依賴主關鍵字一部分的屬性
每一行資料都要有主鍵,主鍵是唯一的,
第三範式
任何非主屬性不依賴於其它非主屬性[在2NF基礎上消除傳遞依賴]
所有的屬性都要完全依賴於主鍵
表與表之間的關係
1:1
隨意持有對方主鍵
擁有相同主鍵
1:N
外鍵由多方進行維護
N:N
建立中間表,在中間表維護

 

 

/*
DDL:資料庫定義語言



*/

SELECT TABLE_NAME FROM USER_TABLES;

設計要求:
建立一張用來儲存學生資訊的表,
表中的欄位包含了學生的學號、姓名、年齡、入學日期、年級、班級、email等資訊,
並且為grade指定了預設值為1,
如果在插入資料時不指定grade得值,就代表是一年級的學生
--如何建立表
CREATE TABLE STUDENT(
SNO VARCHAR2(12),
NAME VARCHAR2(12),
AGE NUMBER(3),
SCHOOLDATE DATE,
GRADE NUMBER(2) DEFAULT 1,
CLAZZ NUMBER(2),
EMAIL VARCHAR2(100)
);

--剛建立的表示一個空表,需要人為的插入資料
INSERT INTO STUDENT VALUES(‘BJSXT2016‘,‘張三丰‘,80,SYSDATE,NULL,10,‘[email protected]‘);
INSERT INTO STUDENT(SNO,NAME) VALUES(‘BJSXT2015‘,‘張無忌‘);

--新增一個列
ALTER TABLE STUDENT ADD BIRTHDAY DATE;
--刪除一個列
ALTER TABLE STUDENT DROP COLUMN AGE;
--修改一個列
ALTER TABLE STUDENT MODIFY SNO VARCHAR2(40);
--修改表名稱
RENAME STUDENT TO STU;
--刪除表
DROP TABLE STU;

 

Oracle資料庫3

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.