📅  最后修改于: 2020-11-28 13:22:47             🧑  作者: Mango
表是数据库管理器维护的逻辑结构。在表中,每个垂直块称为列(元组),每个水平块称为行(实体)。以列和行的形式存储的数据集合称为表。在表中,每一列都有不同的数据类型。表用于存储持久性数据。
以下语法创建表:
语法:[创建新表]
db2 create table .
(column_name column_type....) in
示例:我们创建一个表以“专业”模式存储“员工”详细信息。该表具有“ id,name,jobrole,joindate,salary”字段,并且该表数据将存储在表空间“ ts1”中。
db2 create table professional.employee(id int, name
varchar(50),jobrole varchar(30),joindate date,
salary double) in ts1
输出:
DB20000I The SQL command completed successfully.
以下语法用于列出表详细信息:
语法:[查看使用模式创建的表的列表]
db2 select tabname, tabschema, tbspace from syscat.tables
示例:[查看当前数据库中的表列表]
db2 select tabname, tabschema, tbspace from syscat.tables
输出:
TABNAME TABSCHEMA TBSPACE
------------ ------------- --------
EMPLOYEE PROFESSIONAL TS1
1 record(s) selected.
以下语法列出了表中的列:
语法:[查看表的列和数据类型]
db2 describe table
示例:[查看表’employee’的列和数据类型]
db2 describe table professional.employee
输出:
Data type Column
Column name schema Data type name Length Scale Nulls
------ ----- --------- ----------------- --------- ----- ------
ID SYSIBM INTEGER 4 0 Yes
NAME SYSIBM VARCHAR 50 0 Yes
JOBROLE SYSIBM VARCHAR 30 0 Yes
JOINDATE SYSIBM DATE 4 0 Yes
SALARY SYSIBM DOUBLE 8 0 Yes
5 record(s) selected.
您可以隐藏表的整个列。如果调用“ select * from”查询,则在结果表中不返回隐藏的列。当您将数据插入表中时,没有列列表的“ INSERT”语句不会期望任何隐式隐藏的列的值。这些类型的列在物化查询表中得到高度引用。这些类型的列不支持创建临时表。
以下语法创建具有隐藏列的表:
语法:[使用隐藏的列创建表]
db2 create table (col1 datatype,col2 datatype
implicitly hidden)
示例:[使用隐藏列“ phone”创建“客户”表]
db2 create table professional.customer(custid integer not
null, fullname varchar(100), phone char(10)
implicitly hidden)
以下语法在表中插入值:
语法:[将值插入表中]
db2 insert into (col1,col2,...)
values(val1,val2,..)
示例:[在“客户”表中插入值]
db2 insert into professional.customer(custid, fullname, phone)
values(100,'ravi','9898989')
db2 insert into professional.customer(custid, fullname, phone)
values(101,'krathi','87996659')
db2 insert into professional.customer(custid, fullname, phone)
values(102,'gopal','768678687')
输出:
DB20000I The SQL command completed successfully.
以下语法从表中检索值:
语法:[从表中检索值]
db2 select * from <tab_name>
示例:[从“客户”表中检索值]
db2 select * from professional.customer
输出:
CUSTID FULLNAME
----------- ------------------------
100 ravi
101 krathi
102 gopal
3 record(s) selected.
以下语法从选定的列中检索值:
语法:[要从表中检索选定的隐藏列值]
db2 select col1,col2,col3 from
示例:[要从表中检索选定的列值]
db2 select custid,fullname,phone from professional.customer
输出:
CUSTID FULLNAME PHONE
------- --------- ------------
100 ravi 9898989
101 krathi 87996659
102 gopal 768678687
3 record(s) selected.
如果要在隐藏的列中查看数据,则需要执行“ DESCRIBE”命令。
语法:
db2 describe table show detail
例:
db2 describe table professional.customer show detail
输出:
Column name Data type schema Data type name Column
column Partitionkey code
Length Scale Nulls
number sequence page Hidden Default
--------------- -------------------- --------------- -------- ----
---- -------- ---------- ------------- -------- ----------- ------
---
CUSTID SYSIBM INTEGER 4 0
No 0 0 0 No
FULLNAME SYSIBM VARCHAR 100 0
Yes 1 0 1208 No
PHONE SYSIBM CHARACTER 10 0
Yes 2 0 1208 Implicitly
3 record(s) selected.
您可以使用此“ alter”命令来修改我们的表结构,如下所示:
语法:
db2 alter table alter column set data type
示例: [将员工表的“ id”列的数据类型从“ int”修改为“ bigint”]
db2 alter table professional.employee alter column id set data type bigint
输出:
DB20000I The SQL command completed successfully.
您可以更改列名称,如下所示:
语法:[将表的旧名称更改为新名称]
db2 alter table rename column to
示例: [将“客户”表中的列名从“全名”修改为“客户名”。]
db2 alter table professional.customer rename column fullname to custname
要删除任何表,需要使用“ DROP”命令,如下所示:
语法:
db2 drop table
示例: [删除客户表表单数据库]
db2 drop table professional.customers
要删除表的整个层次结构(包括触发器和关系),您需要使用“ DROP TABLE HIERARCHY”命令。
语法:
db2 drop table hierarchy
示例: [删除表’customer’的整个层次结构]
db2 drop table hierarchy professional.customers