达梦支持哪些类型的表?
和oracle和相似,在oracle中支持的表类型几乎在dm中都存在,但不同的是,oracle中默认是堆表,而在dm中默认是索引组织表,当然这个可以在初始化实例的时候修改。此外,dm中还支持临时表,分区表,外部表等。
如何去规划表?
命名:字母开头 a-z,0-9,$#_
数据类型:int char varchar date clob blob number等等
存储位置:自已的规划表空间
约束(5大约束)
非空,唯一,主键,检查,外键
注释:comment
遵循3范式
案例1:规划一张学员信息表
表名:STU
列:学号(id char(10)),姓名(sname varchar(20) not null),性别(sex char(1)),年龄(age int),电话(tel varchar(15) not null),
家庭住址(address varchar(50))
表空间:STU
约束:主键列----学号, 非空----姓名,电话
备注:学员信息表
建表命令方式:
create table "TEST"."STU"
(
"ID" CHAR(10) not null ,
"NAME" VARCHAR(20) not null ,
"SEX" CHAR(1),
"AGE" INT,
"TEL" VARCHAR(15) not null ,
"ADDRESS" VARCHAR(50),
primary key("ID")
)
storage(initial 1, next 1, minextents 1, fillfactor 0, on "TBS_TEST");
comment on table "TEST"."STU" is '学员信息表';
comment on column "TEST"."STU"."ID" is '学员编号';
comment on column "TEST"."STU"."NAME" is '姓名';
comment on column "TEST"."STU"."SEX" is '性别';
comment on column "TEST"."STU"."AGE" is '年龄';
comment on column "TEST"."STU"."TEL" is '电话';
comment on column "TEST"."STU"."ADDRESS" is '家庭住址';
查看表结构:
SP_TABLEDEF(模式名,表名) 表名区分大小写。
SQL> SP_tabledef('TEST','STU');
行号 COLUMN_VALUE
---------- -------------------------------------------------------------------------
1 CREATE TABLE "TEST"."STU" ( "ID" CHAR(10) NOT NULL, "NAME" VARCHAR(20) NOT NULL, "SEX" CHAR(1), "AGE" INT, "TEL" VARCHAR(15) NOT NULL, "ADDRESS" VARCHAR(50), CLUSTER PRIMARY KEY("ID")) STORAGE(ON "STU", CLUSTERBTR) ;
已用时间: 26.196(毫秒). 执行号:66.
或者:
SQL> Dbms_metadata.get_ddl(‘TABLE’,’STU’,’TEST’)
如何查看表在哪个空间?
SQL> select table_name,tablespace_name from dba_tables where table_name='STU';
如何查看表有哪些约束?
SQL> select table_name,constraint_name,constraint_type from dba_constraints where table_name='STU';
案例2:创建表的时候指定约束
唯一约束:
主键约束:
检查约束:
外键约束:
SQL> create table test.t9(sid int primary key,pid int);
SQL> create table test.t10(id int primary key, sid int foreign key references t9(sid));
案例3:加备注
SQL> select table_name,column_name,comments from dba_col_comments where table_name='T2';
案例4:如何导入数据到表中
cat a.sql
SQL> start /home/dmdba/a.sql
和oracle中的命令相似,但是不支持oracle中的@语法。
如何维护表?
重命名:
增加、删除列
SQL> alter table test.tt add name varchar(10) default 'aaaa';
启用和禁用约束
(迁移数据的时候,最好把约束禁用,迁移完成再启用)
SQL> alter table test.t9 disable constraint CONS134218782;
SQL> alter table test.t9 enable constraint CONS134218782;