DB2_SQL_常用知识点&实践
一、删除表中的数据(delete或truncate)
1 truncate table T_USER immediate;
说明:Truncate是一个能够快速清空资料表内所有资料的SQL语法。并且能针对具有自动递增值的字段,做计数重置归零重新计算的作用;
TRUNCATE TABLE 比 DELETE 速度快,且使用的系统和事务日志资源少;
DELETE 语句每次删除一行,并在事务日志中为所删除的每行记录一项。TRUNCATE TABLE 通过释放存储表数据所用的数据页来删除数据,并且只在事务日志中记录页的释放。
范例:
1 truncate table T_USER where USERNAME <> ‘admin‘;
说明:"<>"符号是不等于的意思,即"!="
1 DELETE FROM T_USER WHERE ID = <condition>;
二、显示数据库中所有表
1 SELECT * from syscat.tables where tabschema = ‘SCTS‘;
三、db2自动增长列
1 ---默认自增,允许手工修改 2 generated by default as identity; 3 ---不允许指定,只能由数据库自动分配并插入 4 generated always as identity;
说明:第一种方式在插入数据时允许手工指定自增字段的值,只要不重复即可,并且数据库会自动设置下一个值;
第二种方式则不允许指定,只能由数据库自动分配并插入。
范例:
1 ---定义id为int类型主键,并且不为空,自增长(从1开始,每次递增1) 2 id INTEGER NOT NULL generated by default as identity (START WITH 1, INCREMENT BY 1);
四、DB2 单引号(‘)转义
比如:未转义之前,看下面的sql几个value?3.5个?
1 INSERT INTO T_VCARD VALUES(‘11112‘,‘male‘,‘Let‘s Go!‘);
上面这句在DB里面执行肯定是错误的,实际上需要转义才是正确的:单引号转义符为单引号(‘)
1 INSERT INTO T_VCARD VALUES(‘11112‘,‘male‘,‘Let‘‘s Go!‘);
五、连接字符串
两种方式:用运算法、利用函数
1 ---利用运算法 2 select ID || CREATE_TIME FROM T_TOPIC_TEMPER; 3 ---利用拼接函数 4 select CONCAT(ID,CREATE_TIME) FROM T_TOPIC_TEMPER;
说明:一般来说,当要连接多个字符串的时候,使用运算符要简单一点。
六、DB默认值default
1 "CREATE_TIME" TIMESTAMP DEFAULT CURRENT TIMESTAMP NOT NULL, 2 "MANUAL_ORDER" INTEGER default ‘0‘,
七、主键
1 constraint "P_Identifier_1" primary key ("ID");
八、索引
1 CREATE UNIQUE INDEX T_USER_IDX ON T_USER (ID, TOPIC_ID)ALLOW REVERSE SCANS;
九、视图
1 CREATE VIEW 2 IM.T_TOPIC_CLASSIFY_MAPS_TEMPER_VIEW 3 ( 4 TOPIC_ID, 5 CLASSIFY_ID, 6 MANUAL_ORDER, 7 SCORE 8 ) AS 9 SELECT 10 B.TOPIC_ID AS TOPIC_ID, 11 A.CLASSIFY_ID AS CLASSIFY_ID, 12 A.MANUAL_ORDER AS MANUAL_ORDER, 13 B.SCORE AS SCORE 14 FROM 15 IM.T_TOPIC_CLASSIFY_MAPS A, 16 IM.T_TOPIC_TEMPER B, 17 IM.T_TOPIC C 18 WHERE 19 A.TOPIC_ID=B.TOPIC_ID 20 AND C.ID=B.TOPIC_ID 21 AND C.STATE =1;
十、修改字段属性、添加字段等
修改字段长度:
1 --============================================================== 2 -- 修改话题avatar的字段长度: Table: T_TOPIC 3 --============================================================== 4 alter table T_TOPIC ALTER COLUMN AVATAR SET DATA TYPE VARCHAR(256);
添加字段:
1 --============================================================== 2 -- 给T_TOPIC表增加TOPIC_PHOTO_NAME字段: Table: T_TOPIC 3 --============================================================== 4 ALTER TABLE T_TOPIC ADD COLUMN TOPIC_PHOTO_NAME VARCHAR (256);
十一、INSERT 语句
DB2的INSERT语句有三种格式:即一次插入一行,一次插入多行和从SELECT语句中插入。
现在要求插入一行数据,我们这么写:
1 INSERT INTO USER(NAME,AGE) VALUES (‘Jack‘,‘25‘);
现在要求插入三行数据(可以一行一行写,不再举例),推荐一次插入多行的写法:
1 INSERT INTO USER(NAME,AGE) VALUES 2 (‘Jack‘,‘25‘), 3 (‘Tom‘,‘26‘), 4 (‘Jucie‘,‘27‘);
那么一次插入多行的好处是什么呢?有两点好处:
1、性能更好;
2、由于一条语句,所以它们是一个处理单元,要么都插入,要么都不插入。
第三种,我们还可以从SELECT中插入,格式如下:
1 INSERT INTO USER (NAME,AGE) 2 SELECT <COLUMN1>,<COLUMN2> FROM <TABLE_NAME> WHERE ...
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。