1.DDL
数据定义语句 (Data Definition Language) :
DDL语句包括:create、alter、drop 、truncate
1.1 CREATE
Oracle常用数据类型:
1.1 表级操作
1.1.1 创建表
---创建学生表
CREATE TABLE STUDENT(
STU_ID NUMBER PRIMARY KEY, ---主键约束
STU_NAME VARCHAR(10) NOT NULL, ---非空约束
STU_SEX CHAR(1) DEFAULT 'F', ---默认值
STU_AGE NUMBER(3),
STU_IDCARD VARCHAR2(18) UNIQUE ---唯一键约束
);
---创建课程表
CREATE TABLE COURSE(
C_ID NUMBER PRIMARY KEY,
C_NAME VARCHAR2(20) NOT NULL
);
---创建分数表
CREATE TABLE SCORE(
C_ID NUMBER,
STU_ID NUMBER,
SCORE NUMBER(4,1),
PRIMARY KEY(C_ID,STU_ID), ---主键约束
FOREIGN KEY (C_ID) REFERENCES COURSE(C_ID), ---外键约束
FOREIGN KEY (STU_ID) REFERENCES STUDENT(STU_ID)
);
---根据查询的数据创建表
CREATE TABLE A
AS 子查询;
---复制某个表结构
CREATE TABLE A
AS SELECT * FROM B WHERE 1=2;
---复制某个表的结构和数据
CREATE TABLE A
AS SELECT * FROM B WHERE 1=1;
---复制某个表的部分数据
CREATE TABLE A
AS SELECT 列1,列2.... FROM B WHERE 条件;
1.1.2 修改表结构
---添加一列
ALTER TABLE STUDENT ADD COL1 VARCHAR2(10);
---添加多列
ALTER TABLE STUDENT ADD(COL2 NUMBER,COL3 NUMBER);
---修改某个字段的类型
ALTER TABLE STUDENT MODIFY(COL1 NUMBER);
---修改多个字段的类型
ALTER TABLE STUDENT MODIFY(COL2 VARCHAR2(1),COL3 VARCHAR2(1));
---增加或者修改字段的约束
ALTER TABLE STUDENT MODIFY(COL1 UNIQUE);
---修改列名
ALTER TABLE STUDENT RENAME COLUMN COL1 TO COL4;
---删除某列数据
ALTER TABLE STUDENT DROP COLUMN COL2;
---删除多列数据
ALTER TABLE STUDENT DROP(COL3,COL4);
1.1.3 删除表
---删除整个表数据
DELETE FROM STUDENT;
TRUNCATE TABLE STUDENT;
---删除表
DROP TABLE STUDENT;
1.2 视图操作
---创建视图
CREATE VIEW <视图名> [(<列名>[,<列名>,....])]
AS <子查询>
[WITH CHECK OPTION];
WITH CHECK OPTION:表示对视图进行UPDATE,INSERT和DELETE操作时要保证更新,插入或者删除的行满足视图定义中的谓词条件(即子查询中的条件表达式)。
CREATE VIEW STU_SEX_VIEW
AS SELECT * FROM STUDENT WHERE STU_SEX = 'F'
WITH CHECK OPTION;
因为存在WITH CHECK OPTION,所以更新数据时都会进行STU_SEX = 'F’的判断。
删除视图
DROP VIEW 视图名
1.3 索引操作
创建索引
CREATE [UNIQUE][CLUSTER] INDEX <索引名>
ON <表名>(<列名>[<次序>][,<列名>[次序],.....])
UNIQUE 表明此索引的没一个索引值只对应唯一的数据记录
CLUSTER表明建立的索引是聚簇索引。
修改索引
ALTER INDEX <旧索引名> RENAME TO <新索引名>;
删除索引
DROP INDEX <索引名>
2.DML
和MySQL语法基本相同,参照我之前的MySQLMySQL基础语法
3.TCL
事务控制语句(Transaction Control Language):
TCL语句包括:commit、rollback、savepoint
4. DCL
DCL主要进行权限的管理
4.1 GRANT
GRANT <权限>[,<权限>]...
ON <对象类型><对象名>[,<对象类型><对象名>]....
TO <用户>[,<用户>]....
[WITH GRANT OPTION]
---把student表和course表的全部操作权限授予用户U2和U3
GRANT ALL PRIVILEGES
ON TABLE STUDENT,COURSE
TO U2,U3
---把sc表的查询权限授予给所有用户
GRANT SELECT
ON TABLE SC
TO PUBLIC;
---把查询student表和修改学生学号的权限授给u4
GRANT SELECT,UPDATE(SNO)
ON TABLE STUDENT
TO U4
WITH GRANT OPTION;
4.2 REVOKE
REVOKE <权限>[,<权限>]...
ON <对象类型><对象名>[,<对象类型><对象名>]....
FROM <用户>[,<用户>]...[CASCADE|RESTRICT]
---收回用户U4修改学生学号的权限
REVOKE UPDATE(SNO)
ON TABLE STUDENT
FORM U4;
---收回多有用户会表sc发查询权限
REVOKE SELECT
ON TABLE SC
FROM PUBLIC;
---吧用户U5对sc表的insert权限收回
REVOKE INSERT
ON TABLE SC
FROM U5 CASCADE