******************************************
数据库语言之【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)====4.===数据控制语言 DCL(GRANT,REVOKE)====--提交 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;
--将对象的权限授予用户 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;--删除对象权限