******************************************
數據庫語言之【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;--刪除對象權限