******************************************
数据库语言之【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;--删除对象权限