oracle (一) 之 sql 基础ddl语句

 1 -------------DDL语句 ------------------
 2 
 3 --创建表
 4 CREATE TABLE test2(
 5  ID NUMBER(12,0),
 6  NAME CHAR(20)
 7 );
 8 
 9 SELECT * FROM test2;
10 --添加字段
11 ALTER TABLE test2 ADD age NUMBER(3,0);
12 --修改字段类型
13 ALTER TABLE test2 MODIFY age VARCHAR2(10);
14 --删除字段并删除与之关联的约束
15 ALTER TABLE test2 DROP COLUMN age  CASCADE CONSTRAINT;
16 --修改和添加
17 ALTER TABLE test2 MODIFY age VARCHAR2(10) ADD gender CHAR(1)NOT NULL ;
18 --删除表 
19 DROP TABLE test2;
20 
21 
22 --约束
23 
24 --使用alter语句添加主键约束
25 ALTER TABLE test3 ADD CONSTRAINT test3_id_pk PRIMARY KEY (ID);
26 --删除约束
27 ALTER TABLE test2 DROP CONSTRAINT test2_id_pk;
28 
29 
30 
31 CREATE TABLE test3 (
32  ID NUMBER(10),
33   age VARCHAR2(20)
34 );
35 
36 
37 
38 --添加外键约束 并设置为级联删除 
39 ALTER TABLE test2 ADD CONSTRAINT test2_3_fk FOREIGN KEY (ID) REFERENCES test3(ID) ON  DELETE CASCADE;
40 
41 --删除时要先删除test3中的记录才会级联删除test2中的记录,否则和普通的删除一样。
42 --添加记录时要保证关联的表中有对应的记录否则添加失败 
43 ALTER TABLE test2 DROP CONSTRAINT test2_3_fk;
44 INSERT INTO test2 VALUES (3,'','3');
45 
46 INSERT INTO test3 VALUES (3,'卧槽');
47 
48 --check约束
49 ALTER TABLE test2 ADD CONSTRAINT check_id CHECK (ID<12);
50 --设置多个约束时,先检查 check ,在检查主外键 
51 INSERT INTO test2 VALUES (1,34,3);
52 
53 --not null 约束
54 ALTER TABLE test3 MODIFY age NOT NULL;
55 --去掉not null 约束 
56 ALTER TABLE test3 MODIFY age  NULL;
57 
58 ------------------DML/DQL语句-----------
59 
60 SELECT * FROM test3;
61 SELECT * FROM test2;
62 
63 CREATE TABLE test4 (
64  ID NUMBER(20,0) PRIMARY KEY NOT NULL,
65  NAME VARCHAR2(100),
66  birth DATE ,
67  phone CHAR(14)
68 );
69 
70 --将其他表的数据插入到当前表中 
71 INSERT INTO test4 (ID,NAME) SELECT ID,NAME FROM test2;
72 
73 --保证前后的数据类型一致,否则插入失败,下面的语句无法正确插入
74 --INSERT INTO test4 (ID,birth) SELECT ID,age FROM test3;
75 
76 --以其他数据表为基础创建表并且获取其中的数据
77 
78 CREATE TABLE test5 AS SELECT * FROM test3;
79 
80 --获取目标表的部分字段和数据创建一张新表
81 CREATE TABLE test6 AS SELECT ID ,NAME FROM test2;
82 
83 SELECT * FROM test5;
84 
85 ---- -truncate 清空表的数据 
86 ----------- 效率比delete 高 
87 DELETE FROM test5;
88 TRUNCATE TABLE test5;
89 
90 
91 ---

 merger into 用法:

  http://www.cnblogs.com/highriver/archive/2011/08/02/2125043.html

posted @ 2014-12-09 14:23  snow__wolf  阅读(235)  评论(0)    收藏  举报