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分配了多台并行处理服务器来完成整个建表、查询数据、填充数据的过程。