表 | 普通表 | 可被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是要在其上创建索引的列名的名称。 非分区索引都有,单例索引,复合索引,唯一索引,全文索引,空间索引
| |
分区索引 | 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 |
DB2数据库,约束,索引,注释标准语法
于 2023-09-05 17:32:32 首次发布