关于FireBird

十一、查找某表的所有字段及相关定义
SELECT A.RDB$FIELD_NAME, B.RDB$FIELD_TYPE, B.RDB$FIELD_LENGTH, B.RDB$FIELD_PRECISION, B.RDB$FIELD_SCALE
FROM RDB$RELATION_FIELDS A,  RDB$FIELDS B
WHERE A.RDB$RELATION_NAME = "tablename"   AND A.RDB$FIELD_SOURCE = B.RDB$FIELD_NAME

ORDER BY A.RDB$FIELD_POSITION


十二、查找某表的主键定义字段

select A.RDB$FIELD_NAME

FROM RDB$INDEX_SEGMENTS A, RDB$RELATION_CONSTRAINTS B

WHERE B.RDB$CONSTRAINT_TYPE = "PRIMARY KEY"   AND B.RDB$RELATION_NAME = "tablename"  AND A.RDB$INDEX_NAME = B.RDB$INDEX_NAME
ORDER BY A.RDB$FIELD_POSITION

十三、查找某表的外键定义 
select r1.RDB$CONSTRAINT_NAME, rind.RDB$FIELD_NAME, r2.RDB$RELATION_NAME
FROM RDB$RELATION_CONSTRAINTS r1, RDB$RELATION_CONSTRAINTS r2, RDB$REF_CONSTRAINTS ref, RDB$INDEX_SEGMENTS rind
where r1.RDB$RELATION_NAME = "tablename"
and r1.RDB$CONSTRAINT_TYPE = "FOREIGN KEY"
and r1.RDB$CONSTRAINT_NAME = ref.RDB$CONSTRAINT_NAME
and ref.RDB$CONST_NAME_UQ = r2.RDB$CONSTRAINT_NAME
and r1.RDB$INDEX_NAME = rind.RDB$INDEX_NAME

十四、添加主键等约束
alter table tablename add constraint PK_tablename primary key(FIELDname)
alter table tablename add constraint uq_FIELD unique(FIELDname) 或 alter table tablename add unique(FIELDname)
添加NOT NULL约束比较特殊
update RDB$RELATION_FIELDS set RDB$NULL_FLAG = 1 where (RDB$FIELD_NAME = 'FIELDNAME') and (RDB$RELATION_NAME = 'TN')
insert into RDB$RELATION_constraints values('NN_FIELD','NOT NULL','WFW','NO','NO','')
insert into RDB$CHECK_constraints values('NN_FIELD','FIELD')

十五、删除主键等约束
先查这个表的主键名
select RDB$CONSTRAINT_NAME from RDB$RELATION_CONSTRAINTS where RDB$CONSTRAINT_TYPE='PRIMARY KEY' and RDB$RELATION_NAME='tablename'
然后
alter table tablename drop constraint 主键名 (主键名一般在隐藏的系统表中,每个约束一个名。)

十六、创建数据库
Create Database 'D:\Mydb.fdb' user 'sysdba' password 'masterkey' [default character set gbk]

十七、查指定字段Not Null约束

SELECT a.rdb$trigger_name,b.rdb$constraint_name,b.rdb$constraint_type

FROM RDB$CHECK_CONSTRAINTS a, rdb$relation_constraints b

where a.rdb$constraint_name=b.rdb$constraint_name and b.rdb$constraint_type='NOT NULL' and b.RDB$RELATION_NAME='表名' and a.rdb$trigger_name='字段名'


十八、查指定表所有unique约束 和 主键约束
SELECT a.RDB$FIELD_NAME,b.rdb$constraint_name,b.rdb$constraint_type FROM RDB$INDEX_SEGMENTS a, rdb$relation_constraints b where a.RDB$INDEX_NAME=b.RDB$INDEX_NAME and b.RDB$RELATION_NAME='tablename'

十九、修改字段类型
ALTER TABLE TABLENAME ALTER FIELDNAME TYPE FLOAT

二十、改字段名

alter table TABLENAME alter oldFIELDname to newFIELDname


《基本数据类型》

INTEGER:长整型,取值范围:-2147483648至2147483647

FLOAT:单精度浮点型

DOUBLE PRECISION:双精度浮点型

DECIMAL:小数型,可指定有效位数最大为18位或小数点后18位

NUMERIC:小数型

SMALLINT:短整型,取值范围:-32768至32767

CHAR:字符型,最多32767个字符

VARCHAR:可变长度字符型,最多32767个字符

TIME:时间型,取值范围:00:00至23:59.9999

TIMESTAMP:日期时间型,取值范围:公元100年1月1日至公元32768年2月29日

DATE:日期型,取值范围:公元100年1月1日至公元32768年2月29日。,注意,建库时需选择DIALECT 3级别才支持DATE型,否则就是TIMESTAMP型。

1. 当数据含小数部分时,请尽量用DECIMAL,因为浮点型有精度问题,除非数值特别大,才用浮点型!

2. DECIMAL(5,2)与NUMERIC(5,2)所分别定义的字段,DECIMAL(5,2)指的是至少有5位数字,还可以更多!而NUMERIC(5,2)指的是,就是5位,不多也不少。



《通用函数》

1. COUNT, AVG, MAX, MIN, SUM

2. EXTRACT(timestamp_part FROM value)

     说明:EXTRACT(YEAR/MONTHE/DAY/WEEKDAY FROM 字段名)
     从日期型字段中分离出年,月,日及一个星期的第几天

3.  CAST(value AS datatype)  转换数据类型

4. LOWER()  返回小写值
5. UPPER()  返回大写值
6. TRIM()  去除字符串两边的空格
7. SUBSTRING(string FROM pos FOR length)   取字符串子串,注意,第一个字符的位置是1

8. BIT_LENGTH *  返回字符串位(bit)数
9. CHAR_LENGTH/CHARACTER_LENGTH *  返回字符串字符数
10. OCTET_LENGTH *  返回字符串字节数

12. IIF (<search_condition>, <value1>, <value2>)

13. NULLIF(V1,V2)   如果V1=V2,返回NULL,否则返回V1


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值