zoukankan      html  css  js  c++  java
  • 【ZT 】firebird数据库使用

    firebird数据库使用

    Firebird特性介绍:firebird是一个全功能的,强大高效的,轻量级,免维护的数据库。它很容易让您从单用户,单数据库升级到企业级的应用。
    一个firebird数据库服务器能够管理多个独立的数据库,每一个数据库同时可支持多个客户端连结。总之:它是一个开源的,强大在,可以自由使用的数据库(即使是商业上的使用)
    关键特性:
    支持原子性,并发性,隔离性等概念。
    MGA:
    支持事务的多个版本功能,
    存储过程:
    使用PSQL(Procedure SQL),你可以创建强大的存储过程来处理服务上的所有数据,你可以使用select Stored Procedure的形式,使用存储过程,以得到一个虚拟的表结构的结果。这样的话,你就可以很容易的在报表中使用它。
    事件:
    存储过程和触发器可以引发事件,这个事件可以被客户端程序监听到
    生成子:
    生成子也称为序列,它可以很容易的实现自动增加的字段。它是一个INT64的长度,因此,它可以用在一个事务中,也可以用在其它很多方面。
    只读数据库:
    我们可以把数据库存放在CD中,形成一个只读数据库。如果我们的应用程序
    也在光盘上,再加上嵌入式的FB数据库服务器,便可以得到一个无与伦比的
    CDLIVE(即只用光盘就可以运行起来)应用。

    全事务控制:
    一个客户端可以存在多个并发的事务。并且每一个事务都可以独立的进行控制,两段提交功能可以保证数据库的一致性。锁优化机制也支持多个事务的保存点。
    在线备份:
    不需要停止数据库即可进行备份,一个备份进程产生一个数据库当前的快照。因此,用户可以在备份期间持续的工作,即实现24x7(每天24小时,每周7天) 的操作。
    触发器:
    每一个表可以有多个并发的行级触发器,可以在插入前,插入后,更新前,更新后,删除前,删除后进行触发。我们可以在触发器中写入PSQL语句,默认值,产生异常,firebird现在支持统一触发器,即可以一个触发器中,一次性管理插入,更新,删除的操作。
    扩展函数:
    我们可以使用C语言,C++,DELPHI写UDF,使用UDF(用户定义函数库)可以很容易的挂入数据库引擎中以扩展我们需要的功能
    字符集:Firebird实现了很多国际标准的字符集,包括Unicode。
    SQL标准兼容:Firebird 实现了全部SQL92所要求的功能,实现了SQL99最常用的的要求。包括但不限于"FULL/LEFT/RIGHT [OUTER] JOIN , UNION, DISTINCT , 子查询 (IN, EXISTS),内部函数 (AVG, SUM, MIN, MAX, COALESCE, CASE, ..), 主键,外键,唯一索引以及所有通用的数据类型。
    Firebird还实现了域,字段级别的约束,视图,异常,规则和权限管理,更多的详细信息,请参考Firebird发布通知和参考手册。

    ◆ isql
    这是一个交互式SQL工具,类似于Oracle的SQL*Plus和Postgresql的psql命令。可以使用它来测试和运行SQL查询。

    使用CREATE DATABASE命令创建一个数据库,代码如下:

    CODE:
    SQL>; CREATE DATABASE 'firstdb.gdb' USER 'sysdba' PASSWORD 'masterkey';

    该命令将在当前目录下创建一个名为firstdb.gdb的文件。该数据库归SYSDBA所有。下面来创建一个基本的销售表并且输入数据,代码如下:

    CODE:
    SQL>; CREATE TABLE sales_catalog (
    CON>; item_id varchar(10) not null primary key,
    CON>; item_name varchar(40) not null,
    CON>; item_desc varchar(50)
    CON>; );
    SQL>; INSERT INTO sales_catalog VALUES('001','Aluminium Wok',
    'Chinese wok used for stir fry dishes');
    SQL >; INSERT INTO sales_catalog VALUES('002',
    'Chopsticks extra-long', '60-cm chopsticks');
    SQL>; INSERT INTO sales_catalog VALUES('003',
    'Claypot', 'Pot for stews');
    SQL>; INSERT INTO sales_catalog VALUES('004',
    'Charcoal Stove', 'For claypot dishes');
    SQL>; SELECT * FROM sales_catalog;
    ITEM_ID ITEM_NAME ITEM_DESC
    =============================================
    001 Aluminium Wok Chinese wok used for stir fry dishes
    002 Chopsticks extra-long 60-cm chopsticks
    003 Claypot Pot for stews
    004 Charcoal Stove For claypot dishes
     
     
    ◆ gsec
    这是一个安全的系统程序,可以使用命令行的方式来创建、修改和删除数据库用户、改变密码等。必须以SYSDBA来运行gsec,以root身份调用并执行以下命令:

    CODE:
    $ gsec -user sysdba -password masterkey
    将会出现一个GSEC>;提示符,可以使用display命令显示目前的用户,如下所示:

    CODE:
    GSEC>; display
    user name uid gid full name
    -----------------------------------
    SYSDBA 0 0
    缺省的密码不安全,建议更改SYSDBA的密码。可使用以下命令来更改密码

    CODE:
    GSEC>; modify SYSDBA -pw newpassword
    命令中的newpassword即新的密码,密码最好使用数字和字母的组合。

    添加用户

    不要使用系统管理员账号SYSDBA创建所有的数据库。有些时候,比如在运行多个属于不同用户和组的数据库时,可能希望每个用户和组都有各自的数据库, 并有权查看。另外一种情形需要创建一个代理用户,可以执行所有数据库操作,但其权限都低于SYSDBA。进行这一操作时,需要使用gsec工具。例如,创 建一个用户名为TestAdmin、密码为testadmin的账户(注意,密码的位数只能是8位),并且赋予其查看、修改和删除数据库 firstdb.gdb的权限。使用以下命令来完成这些功能:

    CODE:
    $ gsec -user SYSDBA -password masterkey
    GSEC>; add TestAdmin -pw testadmin -fname FirstDB -lname Administrator
    Warning - maximum 8 significant bytes of password used

    打开数据库,为数据库创建一个系统管理角色,并为其分配适当的权限,然后运行以下代码:

    CODE:
    $ isql firstdb.gdb -user SYSDBA -password masterkey
    Database: firstdb.gdb, User: SYSDBA
    SQL>; GRANT SELECT, UPDATE, INSERT, DELETE ON sales_catalog TO administrator;
    SQL>; GRANT administrator TO TestAdmin;
    SQL>; quit;

    将TestAdmin加至其中。接下来测试数据库。
    测试数据库

    首先退出gsec和isql,以TestAdmin的身份登录至数据库firstdb.gdb,并运行以下SQL语句:

    CODE:
    SQL>; DELETE FROM sales_catalog;
    SQL>; INSERT INTO sales_catalog VALUES('001', 'Aluminum Wok', 'Chinese wok');
    SQL>; INSERT INTO sales_catalog VALUES('002', 'Microwave Oven', '300W Microwave oven');
    SQL>; INSERT INTO sales_catalog VALUES('003', 'Chopsticks extra-long', '60cm chopsticks');
    SQL>; SELECT * FROM sales_catalog;
    ITEM_ID ITEM_NAME ITEM_DESC
    ===========================================
    001 Aluminum Wok Chinese wok
    002 Microwave Oven 300W Microwave oven
    003 Chopsticks extra-long 60cm chopsticks
  • 相关阅读:
    js正則表達式语法
    购买DigtalOcean VPS 以及 连接Linux
    UVA 246
    牵一发动全身【Nhibernate基本映射】
    jquery.validate+jquery.form提交的三种方式
    [Python] 发送email的几种方式
    递归算法浅谈
    最小二乘法多项式曲线拟合原理与实现
    王立平-Android中对图像进行Base64编码
    [置顶] EasyMock的简单使用
  • 原文地址:https://www.cnblogs.com/liangqihui/p/1513726.html
Copyright © 2011-2022 走看看