DB2数据库,约束,索引,注释标准语法

普通表

可被alter table修改

删除表:drop table <table_name>

range分区表

概念:指定创建表中的(sales_date date)作为分区依据进行分区PARTITION BY RANGE(sales_date)

分区表的分区是和表一起创建的,不能分开执行创建。

PARTITION BY range(age_id)

( PART p1 STARTING(0) ENDING(10),

 PART p2 STARTING(11) ENDING(20),

PART P3 STARTING(21) ENDING AT MAXVALUE )

含义:其中分区表的分区依据为age_id,第一个分区名字为p1,第二个分区名字为p2,最后类推。

约束

数据完整性

主键约束

唯一性的约束,不可空,primary key,作为每一行的唯一标识符

alter table <table_name> ADD PRIMARY KEY (student_id);//隐式创建索引

含义:在表格table_name中添加一个主键约束,student_id一列作为主键,确保每一行都有唯一的主键。

alter tabel <table_name> add constraint <u_store_name> unique nonclustered(column_name)

常用:student_id  int  not null primary key,

student_id被设置为主键

非空约束

(constraint) <NAME> NOT NULL,

含义:指定列不允许为空,保证表中数据完整性

唯一约束

(constraint) <NAME> UNIQUE//隐式创建索引

constraint <un_constraint_name> unique(column_name);

<un_constraint_name>为唯一约束的名字,<column_name>为要约束的列

含义:指定列的值必须唯一,不能重复

检查约束

age INT CHECK (age >= 18 AND age <= 65)

含义:保证列的取值范围和格式规范性,限制在特定区间

外键约束

id INT, <customer_id> INT REFERENCES <customers>(id),

含义:外键为customer_id 引用了id,这意味着customer_id列的值必须是customers表格中id列的值之一,否则将会出现外键约束错误。

命名:constraint <constraint_name> foreign key(column_name) references <table_name>(column_name);

未命名: foreign key(column_name) references <table_name>(column_name);

索引

查询为主

普通索引

CREATE INDEX idx_name ON students (name);

含义:为"students"表格中的"name"字段添加一个普通索引,并命名为"idx_name"。这样可以在查询"students"表格时使用"name"字段作为查询条件,从而加速查询操作的速度。

唯一索引

CREATE UNIQUE INDEX unique_name ON students(student_id);

含义:唯一索引是一种特殊类型的索引,它确保表格中的某个字段只包含唯一值。因此,唯一索引可以用于确保数据的完整性,防止重复数据的插入或更新。其他类型的索引则不一定具有这种唯一性约束。

主键索引

<NAME> <DATATYPE> primary key;

含义:主键索引是通过在列定义中指定PRIMARY KEY关键字来创建的,且主键索引是和表创建时一起创建的。

升序索引

create index <index_name> on <table_name>(<column_name> ASC);

含义:语法中index_name是索引名字,table_name是数据库表的名字,column_name是在其上创建索引的名称,ASC表示升序排序,可定义多个升序索引,名为联合升序索引

降序索引

create index <index_name> on <table_name>(<column_name> DESC);

含义:语法中index_name是索引名字,table_name是数据库表的名字,column_name是在其上创建索引的名称,DESC表示降序排序,可定义多个降序索引,名为联合降序索引

纯索引

create index <index_name> on <table_name>(column_name);

含义:语法中index_name是索引的名称,table_name是创建索引表格的名称,column_name是要在其上创建索引的列名称。

双向索引

create index <index_name> on <table_name>(<column_name> ASC<column_name> DESC);

create index <index_name> on <table_name>(column_name)  allow reverse scans;

含义:index_name是要创建的索引的名称,table_name是要在其上创建索引的表格名称,column_name是要在其上创建索引的列名称。注意,语法中列名称需要分别指定为升序(ASC)和降序(DESC)

非分区索引

create index <index_name> on <table_name>(<column_name>) not partitioned;

含义:index_name是创建的索引名称,table_name是在其上创建索引的表格的名称,column_name是要在其上创建索引的列名的名称。

非分区索引都有,单例索引,复合索引,唯一索引,全文索引,空间索引

  1. 单列索引:该索引类型只包含单个列的值,常用于加速按照单个列进行查询或排序的操作。
  2. 复合索引:该索引类型包含多个列的值,常用于加速按照多个列的组合进行查询或排序的操作。
  3. 唯一索引:该索引类型要求索引列的值必须唯一,常用于加速按照唯一值进行查询或避免重复插入数据的操作。
  4. 全文索引:该索引类型用于加速全文搜索操作,通常用于文本或文档类型的列。
  5. 空间索引:该索引类型用于加速地理空间数据的查询或分析操作,通常用于空间坐标类型的列。

分区索引

create index <index_name> on <table_name> (<column_name>) partition by range(column_name)

( starting <value1> ending <value1>,starting <value1> ending <value1>);

含义:index_name是要创建的索引的名称,table_name是要在其上创建索引的表格名称,column_name是要在其上创建索引的列名称。PARTITION BY子句用于指定分区键,即用于将表格分成多个分区的列。RANGE子句用于指定分区范围,即将分区键的值范围分成多个不同的分区。

指令

查询

SELECT * FROM <students> ORDER BY <name>;

含义:查询students表中按照索引name查询。

注释

表注释

comment on table <table_name> is 'comment';

含义:例子中,table_name是要添加注释的表格名称,comment是要添加的注释文本

列注释

comment on column <table_name>.<column_name> is 'comment';

含义:例子中,table_name是包含目标列的表格名称,column_name是目标列的名称,comment是要添加的注释文本。

指令

查看注释

select <table_name>,<column_name>, remarks from syscat.columns where tabname = '<table_name>'

and colname = '<column_name>';

含义:table_name是包含目标列的表格名称,column_name是目标列的名称。syscat.columns是一个系统表,它包含了数据库中所有列的元数据信息,包括列名称、所属表格、注释等信息。通过查询syscat.columns表格,可以获取指定列的注释信息。

指令

向存在的数据库

表中添加列

alter table table_name add column NEW_COLUMN_NAME datatype;

table_name为你要添加列的数据库表的名字,NEW_COLUMN_NAME 为你要添加列的名字,datatype为你要添加的数据类型。

指令

更新索引信息

runstats on table

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值