Firebird的SQL语法
2014-01-27 08:41
295 查看
一、分页:
SELECT FIRST 10 templateid,code,name FROM template ;
SELECT FIRST 10 SKIP 10 templateid,code,name FROM template ;
SELECT * FROM shop ROWS 1 TO 10; --firebird2.0支持这种写法
二、显示表名和表结构
SHOW TABLES;
SHOW TABLE tablename;
三、使用ISQL连接数据库
firebird%92bin>isql -u sysdba -p masterkey
SQL>CONNECT 'E:companyxmwsoftnewxmwsoftc2dbcts2.fdb';
或
SQL>CONNECT 'E:%92'
CON>USER 'sysdba'
CONT>PASSWORD 'masterkey';
四、更新字段注释
UPDATE RDB$RELATION_FIELDS
SET RDB$DESCRIPTION = '描述信息'
WHERE (RDB$RELATION_NAME = 'SHOP')
AND (RDB$FIELD_NAME = 'CREDIT_BUY')
五、显示字段注释
SELECT RDB$FIELD_NAME,RDB$DESCRIPTION
FROM RDB$RELATION_FIELDS
WHERE (RDB$RELATION_NAME = 'SHOP')
AND (DB$FIELD_NAME = 'CREDIT_BUY')
六、更新表注释
UPDATE RDB$RELATIONS
SET RDB$DESCRIPTION = '描述信息'
WHERE RDB$RELATION_NAME = 'TABLE_NAME';
七、查询所有的表和视图(包括系统表和系统视图)
SELECT RDB$RELATION_NAME
FROM RDB$RELATIONS;
八、查询所有的用户表和用户视图
SELECT RDB$RELATION_NAME
FROM RDB$RELATIONS
WHERE RDB$SYSTEM_FLAG = 0;
九、查询所有的用户表
SELECT RDB$RELATION_NAME
FROM RDB$RELATIONS
WHERE RDB$SYSTEM_FLAG = 0
AND RDB$VIEW_BLR IS NULL;
十、查所有用户表、用户视图所有字段及相关定义
SELECT
a.RDB$RELATION_NAME,
b.RDB$FIELD_NAME,
b.RDB$FIELD_ID,
d.RDB$TYPE_NAME,
c.RDB$FIELD_LENGTH,
c.RDB$FIELD_SCALE
FROM RDB$RELATIONS a
INNER JOIN RDB$RELATION_FIELDS b
ON a.RDB$RELATION_NAME = b.RDB$RELATION_NAME
INNER JOIN RDB$FIELDS c
ON b.RDB$FIELD_SOURCE = c.RDB$FIELD_NAME
INNER JOIN RDB$TYPES d
ON c.RDB$FIELD_TYPE = d.RDB$TYPE
WHERE a.RDB$SYSTEM_FLAG = 0
AND d.RDB$FIELD_NAME = 'RDB$FIELD_TYPE'
ORDER BY a.RDB$RELATION_NAME, b.RDB$FIELD_ID;
十一、查找某表的所有字段及相关定义
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;
SELECT FIRST 10 templateid,code,name FROM template ;
SELECT FIRST 10 SKIP 10 templateid,code,name FROM template ;
SELECT * FROM shop ROWS 1 TO 10; --firebird2.0支持这种写法
二、显示表名和表结构
SHOW TABLES;
SHOW TABLE tablename;
三、使用ISQL连接数据库
firebird%92bin>isql -u sysdba -p masterkey
SQL>CONNECT 'E:companyxmwsoftnewxmwsoftc2dbcts2.fdb';
或
SQL>CONNECT 'E:%92'
CON>USER 'sysdba'
CONT>PASSWORD 'masterkey';
四、更新字段注释
UPDATE RDB$RELATION_FIELDS
SET RDB$DESCRIPTION = '描述信息'
WHERE (RDB$RELATION_NAME = 'SHOP')
AND (RDB$FIELD_NAME = 'CREDIT_BUY')
五、显示字段注释
SELECT RDB$FIELD_NAME,RDB$DESCRIPTION
FROM RDB$RELATION_FIELDS
WHERE (RDB$RELATION_NAME = 'SHOP')
AND (DB$FIELD_NAME = 'CREDIT_BUY')
六、更新表注释
UPDATE RDB$RELATIONS
SET RDB$DESCRIPTION = '描述信息'
WHERE RDB$RELATION_NAME = 'TABLE_NAME';
七、查询所有的表和视图(包括系统表和系统视图)
SELECT RDB$RELATION_NAME
FROM RDB$RELATIONS;
八、查询所有的用户表和用户视图
SELECT RDB$RELATION_NAME
FROM RDB$RELATIONS
WHERE RDB$SYSTEM_FLAG = 0;
九、查询所有的用户表
SELECT RDB$RELATION_NAME
FROM RDB$RELATIONS
WHERE RDB$SYSTEM_FLAG = 0
AND RDB$VIEW_BLR IS NULL;
十、查所有用户表、用户视图所有字段及相关定义
SELECT
a.RDB$RELATION_NAME,
b.RDB$FIELD_NAME,
b.RDB$FIELD_ID,
d.RDB$TYPE_NAME,
c.RDB$FIELD_LENGTH,
c.RDB$FIELD_SCALE
FROM RDB$RELATIONS a
INNER JOIN RDB$RELATION_FIELDS b
ON a.RDB$RELATION_NAME = b.RDB$RELATION_NAME
INNER JOIN RDB$FIELDS c
ON b.RDB$FIELD_SOURCE = c.RDB$FIELD_NAME
INNER JOIN RDB$TYPES d
ON c.RDB$FIELD_TYPE = d.RDB$TYPE
WHERE a.RDB$SYSTEM_FLAG = 0
AND d.RDB$FIELD_NAME = 'RDB$FIELD_TYPE'
ORDER BY a.RDB$RELATION_NAME, b.RDB$FIELD_ID;
十一、查找某表的所有字段及相关定义
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;
--得到数据库的所有者名称 SELECT distinct RDB$OWNER_NAME AS DATABASE_OWNER FROM RDB$RELATIONS WHERE (RDB$SYSTEM_FLAG = 1); --根据表名得到表的主键 SELECT RC.RDB$CONSTRAINT_NAME AS CONSTRAINT_NAME, I.RDB$RELATION_NAME AS TABLE_NAME, S.RDB$FIELD_NAME AS COLUMN_NAME FROM RDB$RELATION_CONSTRAINTS RC LEFT JOIN RDB$INDICES I ON (I.RDB$INDEX_NAME = RC.RDB$INDEX_NAME) LEFT JOIN RDB$INDEX_SEGMENTS S ON (S.RDB$INDEX_NAME = I.RDB$INDEX_NAME) WHERE (RC.RDB$CONSTRAINT_TYPE = 'PRIMARY KEY') AND (I.RDB$RELATION_NAME = 'COUNTRY') ---根据表名得到其相关的依赖. SELECT RDB$DEPENDENT_NAME AS DEPENDENT_NAME, RDB$DEPENDED_ON_NAME AS DEPENDS_ON, RDB$FIELD_NAME AS FIELD_NAME, RDB$DEPENDENT_TYPE DEPENDENT_TYPE, CASE WHEN RDB$DEPENDENT_TYPE = 0 THEN 'TABLE' WHEN RDB$DEPENDENT_TYPE = 1 THEN 'VIEW' WHEN RDB$DEPENDENT_TYPE = 2 THEN 'TRIGGER' WHEN RDB$DEPENDENT_TYPE = 3 THEN 'COMPUTED' WHEN RDB$DEPENDENT_TYPE = 4 THEN 'VALIDATION' WHEN RDB$DEPENDENT_TYPE = 5 THEN 'PROCEDURE' WHEN RDB$DEPENDENT_TYPE = 6 THEN 'expression_r_INDEX' WHEN RDB$DEPENDENT_TYPE = 7 THEN 'EXCEPTION' WHEN RDB$DEPENDENT_TYPE = 8 THEN 'USER' WHEN RDB$DEPENDENT_TYPE = 9 THEN 'FIELD' WHEN RDB$DEPENDENT_TYPE = 10 THEN 'INDEX' WHEN RDB$DEPENDENT_TYPE = 14 THEN 'GENERATOR' ELSE 'UNKNOWN' END AS DEPENDENT_TYPE_STR, RDB$DEPENDED_ON_TYPE AS DEPEND_ON_TYPE, CASE WHEN RDB$DEPENDED_ON_TYPE = 0 THEN 'TABLE' WHEN RDB$DEPENDED_ON_TYPE = 1 THEN 'VIEW' WHEN RDB$DEPENDED_ON_TYPE = 2 THEN 'TRIGGER' WHEN RDB$DEPENDED_ON_TYPE = 3 THEN 'COMPUTED' WHEN RDB$DEPENDED_ON_TYPE = 4 THEN 'VALIDATION' WHEN RDB$DEPENDED_ON_TYPE = 5 THEN 'PROCEDURE' WHEN RDB$DEPENDED_ON_TYPE = 6 THEN 'expression_r_INDEX' WHEN RDB$DEPENDED_ON_TYPE = 7 THEN 'EXCEPTION' WHEN RDB$DEPENDED_ON_TYPE = 8 THEN 'USER' WHEN RDB$DEPENDED_ON_TYPE = 9 THEN 'FIELD' WHEN RDB$DEPENDED_ON_TYPE = 10 THEN 'INDEX' WHEN RDB$DEPENDED_ON_TYPE = 14 THEN 'GENERATOR' ELSE 'UNKNOWN' END AS DEPENDS_ON_TYPE_STR FROM RDB$DEPENDENCIES WHERE RDB$DEPENDED_ON_NAME='JOB' ORDER BY RDB$DEPENDENT_NAME --根据索引名得到表名和与及其索引相关的列 SELECT I.RDB$RELATION_NAME AS TABLENAME, S.RDB$FIELD_NAME AS FIELDNAME FROM RDB$INDICES I LEFT JOIN RDB$INDEX_SEGMENTS S ON (S.RDB$INDEX_NAME = I.RDB$INDEX_NAME) WHERE (I.RDB$INDEX_NAME = 'NAMEX'); --根据表名得到其上所有的索引 SELECT I.RDB$INDEX_NAME AS FKINDEXNAME, I.RDB$RELATION_NAME AS TABLENAME, S.RDB$FIELD_NAME AS FIELDNAME FROM RDB$INDICES I LEFT JOIN RDB$INDEX_SEGMENTS S ON (S.RDB$INDEX_NAME = I.RDB$INDEX_NAME) WHERE I.RDB$RELATION_NAME = 'CUSTOMER' AND (NOT EXISTS(SELECT 1 FROM RDB$RELATION_CONSTRAINTS R WHERE R.RDB$INDEX_NAME = I.RDB$INDEX_NAME)) --得到所有的用户表 SELECT RDB$RELATION_NAME AS TABLE_NAME FROM RDB$RELATIONS WHERE RDB$SYSTEM_FLAG = 0 AND RDB$VIEW_SOURCE IS NULL; --根据表名与字段得到索引 SELECT I.RDB$INDEX_NAME AS FKINDEXNAME, I.RDB$RELATION_NAME AS TABLENAME, S.RDB$FIELD_NAME AS FIELDNAME FROM RDB$INDICES I LEFT JOIN RDB$INDEX_SEGMENTS S ON (S.RDB$INDEX_NAME = I.RDB$INDEX_NAME) WHERE I.RDB$FOREIGN_KEY IS NOT NULL AND I.RDB$RELATION_NAME = 'CUSTOMER' AND S.RDB$FIELD_NAME = 'COUNTRY'; --根据表名得到列信息 SELECT RF.RDB$FIELD_NAME AS FieldName, T.RDB$TYPE_NAME AS DataType, F.RDB$FIELD_LENGTH AS FieldLength, RF.RDB$NULL_FLAG AS AllowNulls, CS.RDB$DEFAULT_COLLATE_NAME AS CharacterSet, RF.RDB$DEFAULT_SOURCE AS Defaultvalue, F.RDB$COMPUTED_SOURCE AS ComputedSource, F.RDB$FIELD_SUB_TYPE AS SubType, F.RDB$FIELD_PRECISION AS FieldPrecision FROM RDB$RELATION_FIELDS RF LEFT JOIN RDB$FIELDS F ON (F.RDB$FIELD_NAME = RF.RDB$FIELD_SOURCE) LEFT JOIN RDB$TYPES T ON (T.RDB$TYPE = F.RDB$FIELD_TYPE) LEFT JOIN RDB$CHARACTER_SETS CS ON (CS.RDB$CHARACTER_SET_ID = F.RDB$CHARACTER_SET_ID) WHERE RF.RDB$RELATION_NAME = 'EMPLOYEE' AND T.RDB$FIELD_NAME = 'RDB$FIELD_TYPE' ORDER 4000 BY RF.RDB$FIELD_POSITION; --检测一个列是否存在,结果为1存在,不为1不存在 SELECT COUNT(RF.RDB$FIELD_NAME) FROM RDB$RELATION_FIELDS RF LEFT JOIN RDB$FIELDS F ON (F.RDB$FIELD_NAME = RF.RDB$FIELD_SOURCE) LEFT JOIN RDB$TYPES T ON (T.RDB$TYPE = F.RDB$FIELD_TYPE) WHERE RF.RDB$RELATION_NAME = 'EMPLOYEE' AND T.RDB$FIELD_NAME = 'RDB$FIELD_TYPE' AND RF.RDB$FIELD_NAME = 'EMP_NO' --检测一个表是否存在 SELECT COUNT(RDB$RELATION_NAME) FROM RDB$RELATIONS WHERE (RDB$RELATION_NAME = 'CUSTOMER') AND RDB$VIEW_SOURCE IS NULL; --得到数据库中所有的视图 SELECT RDB$RELATION_NAME FROM RDB$RELATIONS WHERE RDB$FLAGS = 1 AND RDB$VIEW_SOURCE IS NOT NULL; --得到所有的系统表 SELECT RDB$RELATION_NAME FROM RDB$RELATIONS WHERE (RDB$FLAGS = 0 OR RDB$FLAGS IS NULL) AND RDB$VIEW_SOURCE IS NULL; |
相关文章推荐
- Interbase/Firebird的SQL语法(收藏)
- Interbase/Firebird的SQL语法(收藏)
- Interbase/Firebird的SQL语法(收藏)
- ORACLE 常用的SQL语法和数据对象
- SQL-LINQ-Lambda语法对照
- SQL基本语法
- SQL 语法参考手册
- 数据库中间件 Sharding-JDBC 源码分析 —— SQL 解析(一)之语法解析
- lex和yacc解析SQL语句语法解析(1)
- sql存储过程基础语法
- SQL基本语法 case when 应用
- Firebird常用系统表Sql语句
- -----------动态SQL基本语法------------
- SQL 语法参考手册
- 动态sql语句基本语法
- SQL 语法参考手册
- SQL 语法参考手册
- sql 中 case when 语法
- 超详细的SQL语句语法
- oracle常用sql语句语法