Oracle Demo ->> CREATE TABLE

时间:2023-03-08 18:49:27
Oracle Demo ->> CREATE TABLE

Demo One

CREATE TABLE employees_demo
( employee_id NUMBER(6)
, first_name VARCHAR2(20)
, last_name VARCHAR2(25)
CONSTRAINT emp_last_name_nn_demo NOT NULL
, email VARCHAR2(25)
CONSTRAINT emp_email_nn_demo NOT NULL
, phone_number VARCHAR2(20)
, hire_date DATE DEFAULT SYSDATE
CONSTRAINT emp_hire_date_nn_demo NOT NULL
, job_id VARCHAR2(10)
CONSTRAINT emp_job_nn_demo NOT NULL
, salary NUMBER(8,2)
CONSTRAINT emp_salary_nn_demo NOT NULL
, commission_pct NUMBER(2,2)
, manager_id NUMBER(6)
, department_id NUMBER(4)
, dn VARCHAR2(300)
, CONSTRAINT emp_salary_min_demo
CHECK (salary > 0)
, CONSTRAINT emp_email_uk_demo
UNIQUE (email)
)
TABLESPACE example
STORAGE (INITIAL 6144
NEXT 6144
MINEXTENTS 1
MAXEXTENTS 5 );

这个例子可以看出和SQL Server相比,还是有些不同的,比如

1)是否允许NULL在Oracle下变成了Contraint

2)然后带特定命名的Contraint可以在CREATE TABLE的代码块里面实现

3)SQL SERVER下的GETDATE()在Oracle下变成了SYSDATE

4)SQL SERVER下的FILEGROUP选项在Oracle下变成了TABLESPACE,当然两者还是很大区别的

Demo Two

--parallel
CREATE TABLE dept_80
PARALLEL
AS SELECT * FROM employees
WHERE department_id = 80; --unparallel
CREATE TABLE dept_80
AS SELECT * FROM employees
WHERE department_id = 80;

这个例子可以看出和SQL Server相比,还是有些不同的,比如

1) Oracle支持在CREATE TABLE的时候加入AS字句来同时往表里填充数据,而在SQL Server下这是要分两步来的;

2)这点才是Oracle和SQL SERVER最大的区别,就是并行处理数据。SQL SERVER不支持分布式处理,虽然并行度(DOP)一说在SQL SERVER下也有,但并非分布式。SQL SERVER可以在运行脚本的时候添加OPTION选项指定MDOP(Maximum Degree of Parallism)来运行占用多个逻辑CPU来加快命令的完成;而Oracle下则是Parallel Execution Servers,不是单纯的CPU个数。Oracle分配了多台并行处理服务器来完成整个建表、查询数据、填充数据的过程。