ORACLE---Unit01: 資料庫原理 、 SQL(DDL、DML)

來源:互聯網
上載者:User

標籤:引號   name   條件   函數   odi   日期格式   bsp   analyst   efault   

--SQL語句是不區分大小寫,但是為了增加可讀性,可以將關鍵字全部大寫,非關鍵子全部小寫。
SELECT SYSDATE FROM dual;

--SQL語句根據功能有不同分類:
--DDL語句(資料定義語言 (Data Definition Language))
--用於操作資料庫對象。資料庫物件包括:
--表、視圖、索引、序列

--->1.建立表:
CREATE TABLE employee_RR(
 id NUMBER(4),
 name VARCHAR2(20),
 gender CHAR(1),
 birth DATE,
 salary NUMBER(6,2),
 job VARCHAR2(30),
 deptno NUMBER(2)
);

--->2.查看錶的結構:(兩個地方會用到)
DESC employee_RR

--->3.刪除表:
DROP TABLE employee_RR;

---DEFAULT
---設定預設值
---在資料庫中,無論欄位是什麼類型,預設值都是NULL,但是可以在建立表的時候,通過DEFAULT關鍵字為指定的列單獨設定預設值。
---在資料庫中,字串使用單引號表示字面量,這一點與java不一致,需要注意!
---註:不同的資料類型,數字直接就寫數字不需要單引號,而字元的自變數就寫單引號。
--      和Java中不一樣的是,在資料庫中,不論單一字元還是多字元的自變數,都是單引號。
---可以通過DEFAULT子句給列指定預設值(null)
---給gender列賦預設值‘M’,如果沒有指定性別的員工,預設是男性。
---先將employee表刪除,再建立表employee
---註:SQL語句雖然不區分大小寫,但是字串內容是區分大小寫。
CREATE TABLE employee_RR(
       id NUMBER(4),
       name VARCHAR2(20),
       gender CHAR(1) DEFAULT ‘M‘,
       birth DATE,
       salary NUMBER(6,2),
       job VARCHAR2(30),
       deptno NUMBER(2)
); 
DROP TABLE employee_RR;


---NOT NULL約束
---非空約束要求指定欄位在任何情況下值不允許為空白。
---非空(Not Null)是一種約束條件,用於確保欄位值不為空白
---預設情況下,任何列都允許有空值 (注意:gender CHAR(1)NOT NULL DEFAULT ‘M‘,為錯誤,不允許這樣)
---(注意:not null是可以看得到的。)
---當某個欄位被設定了非空約束條件,這個欄位中必須存在有效值
---當執行插入資料的操作時,必須提供這個列的資料
---當執行更新操作時,不能給這個列的值設定為NULL
--->NOT NULL約束
--->NOT NULL約束可以確保指定的欄位不允許NULL.
CREATE TABLE employee_RR(
       id NUMBER(4),
       name VARCHAR2(20)NOT NULL,
       gender CHAR(1) DEFAULT ‘M‘,
       birth DATE,
       salary NUMBER(6,2),
       job VARCHAR2(30),
       deptno NUMBER(2)
);
DESC employee_RR

---二.修改表
---修改表可以修改表的名字和表的結構
---2.1修改表名:
---RENAME old_name TO new_name
---在建表後如果希望修改表名,可以使用RENAME語句實現
---文法如下,將改變表名old_name為new_name:
---RENAME old_name TO new_name;
---修改表名employee為myemp
---RENAME employee TO myemp;

RENAME employee_RR TO myemployee_RR

DESC employee_RR
DESC myemployee_RR

---2.2:修改表結構
---添加新欄位,刪除現有欄位,修改現有欄位
---就是改變表當中的欄位,增刪改。添加新的欄位,或幾個欄位。
---增加列
---給表增加列可以使用ALTER TABLE的ADD子句實現。
---文法:
---ALTER TABLE table_name ADD();
---列只能增加在後面,不能插入到現有的列中
---給表增加一列hiredate,並設定預設值為當前日期
---2.2.1:添加新欄位
---向myemp表中添加欄位hiredate

ALTER TABLE myemployee_RR ADD (hiredate DATE DEFAULT sysdate);
DESC myemployee_RR

---2.2.2:刪除欄位
---將myemp表中的hiredate刪除

ALTER TABLE myemployee_RR DROP (hiredate);
DESC myemployee_RR

---2.2.3:修改現有欄位
---修改欄位可以修改欄位的類型,長度添加預設值或者約束條件。
---但是修改欄位盡量在表中沒有資料的情況下進行,否則盡量不要修改欄位類型,
---改長度也盡量只增不減,否則可能修改失敗。
--->可以修改欄位的類型,長度,預設值,非空

--修改列 MODIFY
--建表之後,可以改變表中列的資料類型、長度和預設值
--修改僅對以後插入的資料有效
--如果把長度由大改小,有可能不成功
--文法:
--ALTER TABLE table_name MODIFY
--修改表myemp的列job,並增加預設值的設定
--ALTER TABLE myemp
--MODIFY(job VARCHAR2(40) DEFAULT‘CLERK‘);
注意:盡量不要修改表結構,修改也是資料空的表,不然說明前期工作分析不足。
1、欄位類型不要改,因為表裡已經有資料了。如果之前是字串改為date,就會失敗
2、長度盡量大的擴,不要小的縮。
--ALTER TABLE myemployee_RR MODIFY (job NUMBER(10,2)NOT NULL);

ALTER TABLE myemployee_RR MODIFY(job VARCHAR2(40))
DESC myemployee_RR

-----DML語句(資料操作語言)
---DML用於對錶中資料進行增、刪、改操作
---1.INSERT:插入資料
--INSERT INTO myemployee_RR(id,name,job,deptno)VALUES(1,‘ROSE‘,11,10);
INSERT INTO myemployee_RR(id,name,job,deptno)VALUES(1,‘ROSE‘,‘CLERK‘,10);
COMMIT
SELECT * FROM myemployee_RR

--COMMIT--〉已提交  執行按鈕右邊第五個鐵桶鉤也是COMMIT(F11) //再右邊是ROLLBACK復原
--ROLLBACK--〉回退完成。

--INSERT語句中的欄位名可以忽略,但是忽略後就是全列插入。
INSERT INTO myemployee_RR VALUES(2,‘rose‘,‘M‘,SYSDATE,5000,‘CLEAK‘,20)
SELECT * FROM myemployee_RR

---插入日期類型資料
---可以直接給定字串,但是格式必須是:‘DD-MON-RR‘,由於月用得是簡拼,
---不同語言地區這裡會有出入:
---英語地區是以英文字母縮寫形式,如‘01-SEP-03‘
---而中文環境下為:‘01-9月-03‘。所以不建議使用。
---可以使用TO_DATE函數,這是資料庫的一個內建函數,可以將一個字串
---按照指定的日期格式轉換為DATE值。

INSERT INTO myemployee_RR(id,name,job,deptno,birth)VALUES
(3,‘mark‘,‘CLERK‘,20, TO_DATE(‘1990-09-13‘,‘YYYY-MM-DD‘))

SELECT * FROM myemployee_RR

---UPDATE語句
---更新表中的記錄
---文法如下:
---UPDATE table_name
---SET column= value()
---如果沒有where子句,則全表的所有資料都會被更新修改,務必小心

---2.UPDATE,更新資料,將rose的性別改為‘F‘,更新職員rose的薪水為8600
---修改的時候通常要使用WHERE子句來添加過濾條件,這樣僅會將滿足條件的記錄
---進行修改,若不添加過濾條件則是全表更新,這樣的情況實際比較少。
UPDATE myemployee_RR SET gender=‘F‘,salary=8600 WHERE name=‘rose‘
SELECT * FROM myemployee_RR

---3.DELECT,刪除語句
---刪除ROSE
DELETE FROM myemployee_RR WHERE gender=‘M‘
DELETE FROM myemployee_RR WHERE name=‘rose‘
SELECT * FROM myemployee_RR


---DELETE 語句
---在DDL語句中的TRUNCATE語句,同樣有刪除表資料的作用。
---和DELETE語句的區別:
--DELETE可以有條件刪除,TRUNCATE將表資料全部刪除
--DELETE是DML語句,可以回退,TRUNCATE是DDL語句,立即生效,無法回退
--如果是刪除全部表記錄,且資料量較大,DELETE語句效率比TRUNCATE語句低。
--刪除全部記錄
--DELETE FROM myemp;
--或者
--TRUNCATE TABLE myemp

 

**************************************************************************************************************************************************************************

CREATE TABLE emp_RR(
   empno NUMBER(4,0),
   ename VARCHAR2(10),
   job VARCHAR2(9),
   mgr NUMBER(9),
   hiredate DATE,
   sal NUMBER(7,2),
   comm NUMBER(7,2),
   deptno NUMBER(2,0)
);

DESC emp_RR

CREATE TABLE dept_RR(
   deptno NUMBER(2,0),
   dname VARCHAR2(14 BYTE),
   loc VARCHAR2(13 BYTE)
);

DESC dept_RR
DROP TABLE dept_RR;


INSERT INTO emp_RR(EMPNO,ENAME,JOB,MGR,HIREDATE,SAL,COMM,DEPTNO)
VALUES(7369,‘SMITH‘,‘CLERK‘,7902,to_date(‘1980-12-17‘,‘YYYY-MM-DD‘),800,NULL,20);
INSERT INTO emp_RR VALUES(7499,‘ALLEN‘,‘SALESMAN‘,7698,TO_DATE(‘1981-2-22‘,‘YYYY-MM-DD‘),1600,300,30);
INSERT INTO emp_RR VALUES(7521,‘WARD‘,‘SALESMAN‘,7698,TO_DATE(‘1981-2-22‘,‘YYYY-MM-DD‘),1250,500,30);
INSERT INTO emp_RR VALUES(7566,‘JONES‘,‘MANAGER‘,7839,TO_DATE(‘1981-4-2‘,‘YYYY-MM-DD‘),2975,NULL,20);
INSERT INTO emp_RR VALUES(7654,‘MARTIN‘,‘SALESMAN‘,7698,TO_DATE(‘1981-9-28‘,‘YYYY-MM-DD‘),1250,1400,30);
INSERT INTO emp_RR VALUES(7698,‘BLAK‘,‘MANAGER‘,7839,TO_DATE(‘1981-5-1‘,‘YYYY-MM-DD‘),2850,NULL,30);
INSERT INTO emp_RR VALUES(7782,‘CLARK‘,‘MANAGER‘,7839,TO_DATE(‘1981-6-9‘,‘YYYY-MM-DD‘),2450,NULL,10);
INSERT INTO emp_RR VALUES(7788,‘SCOTT‘,‘ANALYST‘,7566,TO_DATE(‘1987-4-19‘,‘YYYY-MM-DD‘),3000,NULL,50);
INSERT INTO emp_RR VALUES(7839,‘KING‘,‘PRESIDENT‘,NULL,TO_DATE(‘1981-11-17‘,‘YYYY-MM-DD‘),5000,NULL,10);
INSERT INTO emp_RR VALUES(7844,‘TURNER‘,‘SALESMAN‘,7698,TO_DATE(‘1981-9-8‘,‘YYYY-MM-DD‘),1500,0,30);
INSERT INTO emp_RR VALUES(7876,‘ADAMS‘,‘CLERK‘,7788,TO_DATE(‘1987-5-23‘,‘YYYY-MM-DD‘),1100,NULL,20);
INSERT INTO emp_RR VALUES(7900,‘JAMES‘,‘CLERK‘,7698,TO_DATE(‘1981-12-3‘,‘YYYY-MM-DD‘),950,NULL,30);
INSERT INTO emp_RR VALUES(7902,‘FORD‘,‘ANALYST‘,7566,TO_DATE(‘1981-12-3‘,‘YYYY-MM-DD‘),3000,NULL,20);
INSERT INTO emp_RR VALUES(7934,‘MILLER‘,‘CLERK‘,7782,TO_DATE(‘1982-1-23‘,‘YYYY-MM-DD‘),1300,NULL,10);

SELECT * FROM emp_RR;

INSERT INTO dept_RR(DEPTNO,DNAME,LOC) VALUES(10,‘ACCOUNTING‘,‘NEW YORK‘);
INSERT INTO dept_RR VALUES(20,‘RESEARCH‘,‘DALLAS‘);
INSERT INTO dept_RR VALUES(30,‘SALES‘,‘CHICAGO‘);
INSERT INTO dept_RR VALUES(40,‘OPERATIONS‘,‘BOSTON‘);

SELECT * FROM dept_RR;

**************************************************************************************************************************************************************************

 

ORACLE---Unit01: 資料庫原理 、 SQL(DDL、DML)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.