數據庫語言之【DDL/DML/TCL/DCL篇】

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

數據庫語言之【DDL/DML/TCL/DCL篇】

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

1.===數據定義語言DDL====

--CREATE表的約束
CREATE TABLE TEMP(
   EMPNO NUMBER,
   ENAME VARCHAR2(200),
   DEPTNO NUMBER,
   EDATE DATE DEFAULT SYSDATE,     --默認值
   ADDRESS VARCHAR2(200) NOT NULL, --非空
   SAL NUMBER(8,2) CONSTRAINT EMP_SALARY_MIN CHECK (SAL>0), --檢查
   CONSTRAINT AA FOREIGN KEY(DEPTNO) REFERENCES DEPT(DEPTNO),--外鍵
   CONSTRAINT BB UNIQUE(ENAME),      --唯一
   CONSTRAINT CC PRIMARY KEY(EMPNO));--主鍵

--ALTER
ALTER TABLE TEMP MODIFY (TID NUMBER(5));   --修改列,當表中有值的時候不允許
ALTER TABLE TEMP ADD(TADD VARCHAR2(2000)); --添加列
ALTER TABLE TEMP DROP COLUMN TADD;         --刪除列
ALTER TABLE EMP RENAME TO NEWNAME;         --RENAME表的重命名
RENAME EMP TO NEWENAME
ALTER TABLE EMP RENAME COLUMN ENAME TO AAA; --重命名列名
TRUNCATE TABLE TEMP; --TRUNCATE截斷表,保留結構。不能回滾
--DROP
DROP USER NEWER CASCADE;            --刪除用戶(級聯)
DROP TABLESPACE INCLUDING CONTENTS; --刪除表空間(包含的所有內容)
DROP TABLE TEMP; --刪除表,從數據庫中刪除表及全部數據

需求如下:重建母表dept1,但不要影響字表emp1與dept1建立關係
drop table dept1;
create table dept1 as select * from dept;
ALTER table dept1 add constraints aa primary key(deptno);

drop table emp1;
create table emp1 as select * from emp;
ALTER table emp1 add constraints cc primary key(empno);
ALTER table emp1 add constraints bb foreign key(deptno) REFERENCES DEPT1(DEPTNO);

做法如下:
1.先刪除外鍵關係
ALTER table emp1 drop constraints bb ;

2.刪除母表,重建母表
drop table dept1;
create table dept1 as select * from dept;
ALTER table dept1 add constraints aa primary key(deptno);

3.建立外鍵關係
ALTER table emp1 add constraints bb foreign key(deptno) REFERENCES DEPT1(DEPTNO);

2.===數據操縱語言DML====

SELECT\INSERT\UPDATE\DELETE

CREATE TABLE TEMP AS SELECT * FROM EMP; --利用現有表創建新表
INSERT INTO TEMP(ENAME) SELECT ENAME FROM EMP ;--向表插入現有表的數據
--使用別名 三種方法,真接寫,AS,加""號

3.===事務控制語言TCL(COMMIT,SAVEPOINT,ROLLBACK)====
--提交
COMMIT WORK;
COMMIT;
--保存點(標記)
SAVEPOINT SNAME;
--回滾
ROLLBACK;
ROLLBACK TO SAVEPOINT SNAME;

--事務示例
UPDATE EMP SET ENAME='AAA' WHERE EMPNO=7369;
SAVEPOINT SAVENAME;
DELETE EMP WHERE EMP=7369;
SAVEPOINT SAVENAME1;
ROLLBACK TO SAVEPOINT SAVENAME;
COMMIT;
4.===數據控制語言 DCL(GRANT,REVOKE)====
--將對象的權限授予用戶
GRANT ALL ON EMP TO USERNAME;
GRANT SELECT,UPDATE,DELETE,INSERT ON EMP TO USERNAME;

--將角色的權限授予用戶
GRANT CONNECT TO USERNAME; --連接數據庫
GRANT RESOURCE TO USERNAME; --使用數據表空間
GRANT UNLIMITED TABLESPACE TO USERNAME;--表空間無限增長
GRANT GRANT ANY PRIVILEGE TO USERNAME; --授予可以授權的權限

--刪除用戶權限
REVOKE CONNECT FOR USERNAME; --刪除角色權限
REVOKE SELECT ON EMP FOR USERNAME;--刪除對象權限









發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章