Firebird常用SQL语句

Firebird常用SQL
一、分页写法小例:
1
select first 10 templateid,code,name from template ;
2
select first 10 skip 10 templateid,code,name from template ;
3
select * from shop rows 1 to 10; --firebird2.0支持这种写法

二、show
 
1
show tables;
2
show table tablename;

三、
D:\firebird2\bin>isql -u sysdba -p masterkey
connect "E:\company\xmwsoft\newxmwsoft\c2\db\cts2.fdb";
四、--更新字段注释
1
update RDB$RELATION_FIELDS
2
set RDB$DESCRIPTION = '描述信息'
3
where (RDB$RELATION_NAME = 'SHOP') and
4
(RDB$FIELD_NAME = 'CREDIT_BUY')

五、--显示字段注释
1
select RDB$FIELD_NAME,RDB$DESCRIPTION from RDB$RELATION_FIELDS
2
where (RDB$RELATION_NAME = 'SHOP')
3
and
4
(RDB$FIELD_NAME = 'CREDIT_BUY')

六、--更新表注释
1
update RDB$RELATIONS set RDB$DESCRIPTION = '描述信息' where RDB$RELATION_NAME='TABLE_NAME'

七、--查询所有的表和视图(包括系统表和系统视图)
1
SELECT RDB$RELATION_NAME FROM RDB$RELATIONS;

八、--查询所有的用户表和用户视图
1
SELECT RDB$RELATION_NAME FROM RDB$RELATIONS WHERE RDB$SYSTEM_FLAG = 0;

九、--查询所有的用户表
1
SELECT RDB$RELATION_NAME FROM RDB$RELATIONS WHERE RDB$SYSTEM_FLAG = 0 AND RDB$VIEW_BLR IS NULL

十、查所有用户表、用户视图所有字段及相关定义

01
SELECT a.RDB$RELATION_NAME, b.RDB$FIELD_NAME, b.RDB$FIELD_ID, d.RDB$TYPE_NAME,
02
c.RDB$FIELD_LENGTH, c.RDB$FIELD_SCALE
03
FROM RDB$RELATIONS a
04
INNER JOIN RDB$RELATION_FIELDS b
05
ON a.RDB$RELATION_NAME = b.RDB$RELATION_NAME
06
INNER JOIN RDB$FIELDS c
07
ON b.RDB$FIELD_SOURCE = c.RDB$FIELD_NAME
08
INNER JOIN RDB$TYPES d
09
ON c.RDB$FIELD_TYPE = d.RDB$TYPE
10
WHERE a.RDB$SYSTEM_FLAG = 0
11
AND d.RDB$FIELD_NAME = 'RDB$FIELD_TYPE'
12
ORDER BY a.RDB$RELATION_NAME, b.RDB$FIELD_ID

十一、查找某表的所有字段及相关定义

1
SELECT A.RDB$FIELD_NAME, B.RDB$FIELD_TYPE, B.RDB$FIELD_LENGTH, B.RDB$FIELD_PRECISION, B.RDB$FIELD_SCALE
2
FROM RDB$RELATION_FIELDS A, RDB$FIELDS B
3
WHERE A.RDB$RELATION_NAME = 'tablename'
4
AND A.RDB$FIELD_SOURCE = B.RDB$FIELD_NAME
5
ORDER BY A.RDB$FIELD_POSITION

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

1
select A.RDB$FIELD_NAME FROM RDB$INDEX_SEGMENTS A, RDB$RELATION_CONSTRAINTS B
2
WHERE B.RDB$CONSTRAINT_TYPE = 'PRIMARY KEY'
3
AND B.RDB$RELATION_NAME = 'tablename'
4
AND A.RDB$INDEX_NAME = B.RDB$INDEX_NAME
5
ORDER BY A.RDB$FIELD_POSITION

十三、查找某表的外键定义

1
select r1.RDB$CONSTRAINT_NAME, rind.RDB$FIELD_NAME, r2.RDB$RELATION_NAME
2
FROM RDB$RELATION_CONSTRAINTS r1, RDB$RELATION_CONSTRAINTS r2, RDB$REF_CONSTRAINTS ref, RDB$INDEX_SEGMENTS rind
3
where r1.RDB$RELATION_NAME = 'tablename'
4
and r1.RDB$CONSTRAINT_TYPE = 'FOREIGN KEY'
5
and r1.RDB$CONSTRAINT_NAME = ref.RDB$CONSTRAINT_NAME
6
and ref.RDB$CONST_NAME_UQ = r2.RDB$CONSTRAINT_NAME
7
and r1.RDB$INDEX_NAME = rind.RDB$INDEX_NAME

firebird默认的用户名:SYSDBA 密码:masterkey

开源的Firebird的可视化管理工具Marathon
flameRobin也量个开源的可视化管理工具
1、创建表
01
CREATE TABLE table_name
02
(
03
column_name {< datatype> | COMPUTED BY (< expr>) | domain}
04
[DEFAULT { literal | NULL | USER}] [NOT NULL]
05
...
06
CONSTRAINT constraint_name
07
PRIMARY KEY (column_list),
08
UNIQUE (column_list),
09
FOREIGN KEY (column_list) REFERENCES other_table (column_list),
10
CHECK (condition),
11
...
12
);

如:create table t1
(
sno1 char(9) primary key,
sno2 char(9) references student(sno)
)
2、修改表
(1)增加字段
alter table table_name add fieldname datetype [not null ,primary key]
如:alter table student add sex char(2) not null
primary key
default 'm'
CHECK (sex1='f' or sex1='m')

ALTER TABLE STUDENT
ADD AGE INTEGER[1:100]
DEFAULT 56
CHECK (age between 20 and 35)

ALTER TABLE STUDENT
ADD AGE INTEGER[1:100]
DEFAULT 56
CHECK (age>=20 and age<=35)
(2)删除字段
alter table table_name drop fieldname
ALTER TABLE STUDENT DROP AA
(3)增加主键
alter table SCORE
add constraint PK_SCORE_1
primary key (ID, CORUSENAME)
////////////////////////////////////////////////////////////////////////////
查询:
SELECT [TRANSACTION transaction]
[DISTINCT | ALL]
{* | [, …]}
[INTO :var [, :var …]]
FROM [, …]
[WHERE <search_condition>]
[GROUP BY col [COLLATE collation] [, col [COLLATE collation] …]
[HAVING <search_condition>]
[UNION <select_expr> [ALL]]
[PLAN <plan_expr>]
[ORDER BY <order_list>]
[FOR UPDATE [OF col [, col …]]];

在表上增加外键
alter table STUDENT
add constraint FK_STUDENT_1
foreign key (ID)
references SCORE (ID)
///////////////////////////////////////////////////////////////////////
创建域:
CREATE DOMAIN domain [AS]
[DEFAULT {literal | NULL | USER}]
[NOT NULL] [CHECK (<dom_search_condition>)]
[COLLATE collation];
如:
(1)create domain MyScore as SMALLINT
default 0
check(value between 0 and 100)
(2)CREATE DOMAIN DEPTNO AS CHAR(3)
CHECK ((VALUE = '000') OR
(VALUE > '0' AND VALUE <= '999')
OR (VALUE IS NULL))
修改域:
ALTER DOMAIN name {
SET DEFAULT {literal | NULL | USER}
| DROP DEFAULT
| ADD [CONSTRAINT] CHECK (<dom_search_condition>)
| DROP CONSTRAINT | new_col_name

| TYPE datatype};
如:
(1)alter DOMAIN DAGE TYPE INTEGER
(2)alter DOMAIN DAGE TYPE INTEGER
set DEFAULT 40
add constraint CHECK (value between 10 and 90)
(3)alter DOMAIN DAGE TYPE INTEGER
drop CONSTRAINT
(4)CREATE DOMAIN prodtype
AS VARCHAR(12)
DEFAULT 'software' NOT NULL
CHECK (VALUE IN ('software', 'hardware', 'other', 'N/A'));
问题:不知道{USER}是什么意思,怎么用?

连接到数据:
CONNECT 'filespec' [USER 'username'][PASSWORD 'password']
[CACHE int] [ROLE 'rolename']
如:
connect g:\firebird\test.fdb user 'sysdba' password 'masterkey';//一定要加上‘;’以表示sql语句结束。

创建索引:
CREATE [UNIQUE] [ASC[ENDING] | DESC[ENDING]] INDEX index
ON table (col [, col …]);
创建视图:
CREATE VIEW name [(view_col [, view_col …])]
AS

posted @ 2020-07-15 12:20  Suppas  阅读(951)  评论(0)    收藏  举报