创建表等操作

在Oracle关于时间属性的建表

Example:

create table courses(

cid varchar(20) not null primary key,

cname varchar(20) not null,

ctype integer,

ctime date DEFAULT SYSDATE,

cscore float not null

)

insert into courses values('ss01','java',0,TO_DATE('2009-8-28','yyyy-mm-dd'),94)

insert into courses values('ss02','music',1,TO_DATE('2009-8-27','yyyy-mm-dd'),88)

insert into courses values('ss03','c++',0,TO_DATE('2009-8-29','yyyy-mm-dd'),78)

在PL/SQL建表以后,记得commit,才能在pl/sql上查询到数据。

对于日期类型

将字符串转换成日期:  
  Insert Into table(col_date)Values(to_date(‘2003-01-16’,’yyyy-mm-dd’));   
 将日期转换成字符串:   
  Insert Into table (col_char)Values(to_char(Date,’format’));  

select * from courses where ctime>to_date('2009-8-28','yyyy-mm-dd')

 

创建表 
1. ORACLE常用的字段类型 
ORACLE常用的字段类型有 
VARCHAR2 (size) 可变长度的字符串, 必须规定长度 
CHAR(size) 固定长度的字符串, 不规定长度默认值为1 
NUMBER(p,s) 数字型p是位数总长度, s是小数的长度, 可存负数 
最长38位. 不够位时会四舍五入. 
DATE 日期和时间类型 
LOB 超长字符, 最大可达4G 
CLOB 超长文本字符串 
BLOB 超长二进制字符串 
BFILE 超长二进制字符串, 保存在数据库外的文件里是只读的.

数字字段类型位数及其四舍五入的结果 
原始数值1234567.89 
数字字段类型位数 存储的值 
Number 1234567.89 
Number(8) 12345678 
Number(6) 错 
Number(9,1) 1234567.9 
Number(9,3) 错 
Number(7,2) 错 
Number(5,-2) 1234600 
Number(5,-4) 1230000 
Number(*,1) 1234567.9

2. 创建表时给字段加默认值 和约束条件 
创建表时可以给字段加上默认值 
例如 : 日期字段 DEFAULT SYSDATE 
这样每次插入和修改时, 不用程序操作这个字段都能得到动作的时间

创建表时可以给字段加上约束条件 
例如: 非空 NOT NULL 
不允许重复 UNIQUE 
关键字 PRIMARY KEY 
按条件检查 CHECK (条件) 
外键 REFERENCES 表名(字段名)

3. 创建表的例子 
CREATE TABLE DEPT( 
EPTNO NUMBER(2) CONSTRAINT PK_DEPT PRIMARY KEY, 
DNAME VARCHAR2(14), 
LOC VARCHAR2(13)) ;

CREATE TABLE region( 
ID number(2) NOT NULL PRIMARY KEY, 
postcode number(6) default '0' NOT NULL, 
areaname varchar2(30) default ' ' NOT NULL);

4. 创建表时的命名规则和注意事项 
1)表名和字段名的命名规则:必须以字母开头,可以含符号A-Z,a-z,0-9,_,$,# 
2)大小写不区分 
3)不用SQL里的保留字, 一定要用时可用双引号把字符串括起来. 
4)用和实体或属性相关的英文符号长度有一定的限制

注意事项: 
1)建表时可以用中文的字段名, 但最好还是用英文的字段名 
2)创建表时要把较小的不为空的字段放在前面, 可能为空的字段放在后面 
3)建表时如果有唯一关键字或者唯一的约束条件,建表时自动建了索引 
4)一个表的最多字段个数也是有限制的,254个.

5. 约束名的命名规则和语法 
约束名的命名规则约束名如果在建表的时候没有指明,系统命名规则是SYS_Cn(n是数字) 
约束名字符串的命名规则同于表和字段名的命名规则

6. 使用约束时的注意事项 
约束里不能用系统函数,如SYSDATE和别的表的字段比较 
可以用本表内字段的比较

想在事务处理后, 做约束的检查 
SQL> alter session set constraints deferred.

7. 由实体关系图到创建表的例子 s_dept 
前提条件:已有region表且含唯一关键字的字段id 
SQL> CREATE TABLE s_dept 
(id NUMBER(7) 
CONSTRAINT s_dept_id_pk PRIMARY KEY, 
name VARCHAR2(25) 
CONSTRAINT s_dept_name_nn NOT NULL, 
region_id NUMBER(7) 
CONSTRAINT s_dept_region_id_fk REFERENCES region (id), 
CONSTRAINT s_dept_name_region_id_uk UNIQUE(name, region_id));

8. 较复杂的创建表例子 
SQL> CREATE TABLE s_emp 
(id NUMBER(7) 
CONSTRAINT s_emp_id_pk PRIMARY KEY, 
last_name VARCHAR2(25) 
CONSTRAINT s_emp_last_name_nn NOT NULL, 
first_name VARCHAR2(25), 
userid VARCHAR2(8) 
CONSTRAINT s_emp_userid_nn NOT NULL 
CONSTRAINT s_emp_userid_uk UNIQUE, 
start_date DATE DEFAULT SYSDATE, 
comments VARCHAR2(25), 
manager_id NUMBER(7), 
title VARCHAR2(25), 
dept_id NUMBER(7) 
CONSTRAINT s_emp_dept_id_fk REFERENCES s_dept(id), 
salary NUMBER(11,2), 
commission_pct NUMBER(4,2) 
CONSTRAINT s_emp_commission_pct_ck CHECK 
(commission_pct IN(10,12.5,15,17.5,20)));

8. 通过子查询建表 
通过子查询建表的例子 
SQL>CREATE TABLE emp_41 AS SELECT id, last_name, userid, start_date 
FROM s_emp WHERE dept_id = 41;

SQL> CREATE TABLE A as select * from B where 1=2; 
只要表的结构.

10. 用子查询建表的注意事项 
1)可以关连多个表及用集合函数生成新表,注意选择出来的字段必须有合法的字段名称,且不能重复。 
2)用子查询方式建立的表,只有非空NOT NULL的约束条件能继承过来, 其它的约束条件和默认值都没有继承过来. 
3)根据需要,可以用alter table add constraint ……再建立其它的约束条件,如primary key等.

11. Foreign Key的可选参数ON DELETE CASCADE 
在创建Foreign Key时可以加可选参数: 
ON DELETE CASCADE它的含义是如果删除外键主表里的内容,子表里相关的内容将一起被删除. 
如果没有ON DELETE CASCADE参数,子表里有内容,父表里的主关键字记录不能被删除掉.

12. 如果数据库表里有不满足的记录存在,建立约束条件将不会成功.

13. 给表创建和删除同义词的例子 
SQL> CREATE SYNONYM d_sum 
2 FOR dept_sum_vu;

SQL> CREATE PUBLIC SYNONYM s_dept 
2 FOR alice.s_dept;

SQL> DROP SYNONYM s_dept;



1 在命令行下启动oracle的监听器:lsnrctl start;
2 启动oracle实例:oradim -startup -sid myoracle 其中myoracle是实例,在windows中是以服务的形式呈现

3 关闭数据库:shutdown abort|normal|transaction|local|immediate;(同学爱立信面试实习生的一道题)

4 重启数据库:startup即可;

5 在sqlplus中的清屏命令:clear  SCR;

6 可以通过edit filename来打开文本编辑器,进行编写sql语句;

7 start filename 或者@ filename执行多条sql语句;

8 在Oracle中进行复制表 create table yourtablename as (子查询)

  eg. create table emp2 as (select * from emp) 

 如果只想复制表的结构,则create table emp3 as (select * from emp where rownum<1);其中rownum在Oracle中是关键字 
9 在command下启动 sqlplus /nolog->conn scott/tiger@Oracle实例 (as sysdba看你自己分配的权限)->startup即可


 

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,723评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,080评论 2 379
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,604评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,440评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,431评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,499评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,893评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,541评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,751评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,547评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,619评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,320评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,890评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,896评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,137评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,796评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,335评论 2 342

推荐阅读更多精彩内容