创建和管理表--2
六、总计
1、 查询其他用户的表
a) 其他用户的表不属于本用户的空间
b) 如果要查询其他用户下的表,要使其他用户的用户名作为前缀。
i. Select * from userB.employees;
ii. Select * from userA.employees;
2、 Default值或者是伪列都是非法的
a) 执行insert操作时,可以为其指定默认值
b) 值、表达式和sql语句都可以作为默认值
c) 其他的列名
d) 默认值的类型必须和该列的类型一致
CREATE TABLE hire_dates (hire_date DATE DEFAULT SYSDATE);
3、 创建表
a) 语法
CREATE TABLE dept(deptno NUMBER(2),
dname VARCHAR2(14),
loc VARCHAR2(13));
b) 确认
DESCRIBE DEPT
4、 数据类型
5、 使用子查询创建表
a) 使用As subquery 选项,创建表和插入数据结合起来
1. CREATE TABLE table [(column ,clumn …)]
As subquery;
b) 指定的列和子查询中的列要一一对应
c) 通过列名的默认值定义列
例:CREATE TABLE dept80
AS
SELECT employee_id, last_name,
salary*12 ANNSAL,
hire_date
FROM employees
WHERE department_id = 80;
Table created.
6、 ALTER TABLE语句
a) 追加新的列
ALTER TABLE talbe ADD(column datatype [DEFAULT expr] [,column datatype]…);
b) 修改现有的列
ALTER TABLE talbe MODIFY(column datatype [DEFAULT expr] [,column datatype]…);
c) 为新追加新的列定义默认值
ALTER TABLE talbe DROP(column datatype [DEFAULT expr] [,column datatype]…);
d) 删除一个列
ALTER TABLE table_name rename column old_column_name to new_column_name
7、 删除表
a) 数据和结构都被删除
b) 所有正在运行的相关事务被提交
c) 所有相关索引被删除
d) DROP TABLE 语句不能回滚
8、 改变对象的名称
a) 执行RENAME语句改变表,视图,序列,或同义词的名称
RENAME dept TO detail_dept Table renamed
b) 必须是对象的拥有者
9、 清空表
a) TRUNCATE TABLE 语句
i. 删除表中所有的数据
ii. 释放表的存储空间
TRUNCATE TABLE detail_dept;
Table truncated。
b) TRUNCATE语句不能回滚
c) 可以使用DELETE语句删除数据
10、 约束
a) 约束是表一级的限制
b) 如果存在依赖关系,约束可以防止错误的删除数据
c) 约束的类型
i. NOT NULL
ii. UNIQUE
iii. PRIMARY KEY
iv. FOREIGN KEY
1. FOREIGN KEY: 在子表中,定义了一个表级的约束
2. REFERENCES: 指定表和父表中的列
3. ON DELETE CASCADE: 当删除父表时,级联删除子表记录
4. ON DELETE SET NULL: 将子表的相关依赖记录的外键值置为null
4.
v. CHECH
1. 引用CURRVAL, NEXTVAL, LEVEL, 和ROWNUM
2. 调用SYSDATE, UID, USER, 和USERENV 函数
3. 另一个表的查询记录
11、 约束规则
a) 用户可以自定义约束,也可以使用Oracle Server的sys_cn格式命名约束
b) 约束创建的时机:
i. 创建表的时候,同时创建约束
ii. 表结构创建完成后
C) 约束可以定义在列一级,或者是表一级
D)通过数据字典看约束