Мир interbase · borland interbase 6.5 доступен в виде 90-дневной...
TRANSCRIPT
-
,
InterBase
, InterBase/Firebird/Yaffil
- 2003
-
32.973-018 ., .
InterBase. , InterBase/Firebird/Yaffil. 2-, .: -, 2002. 496 .
ISBN 5-93378-074-X , -
InterBase . , InterBase.
, - InterBase.
InterBase FIBPlus, OLE DB IBProvider, InterBase API. - ODBC JDBC InterBase.
InterBase , . InterBase, .
InterBase , InterBase 6.x Yaffil, InterBase.
. ., . . InterBase. ,
InterBase/Firebird/Yaffil
-
. .
071806 2.03.99. " -" 119034, , ., . 21, . 1. .: 333-82-11, [email protected]
28.03.2003. 70100/16. . . . . . . 40. 3000.
Microsoft Windows 95, Microsoft Windows 98, Microsoft Windows Me, Microsoft Windows NT, Microsoft Windows 2000, Microsoft Windows XP, Internet Explorer Microsoft. Delphi, C++ Builder, Kylix, InterBase, IBConsole Borland. , , .
ISBN 5-93378-074-X ., ., 2002-2004 , " -", 2002-2003
-
3-
3 1- InterBase. . Borland InterBase Firebird, Yaffill Firebird 2.0, Firebird, - - - Firebird SQL Development Guide.
3- InterBase. , InterBase Firebird 8 , - InterBase Firebird . ( - ) InterBase Delphi.. InterBase/Firebird , .
3- , InterBase Firebird -. , , -, , .
-
4
2-
4 2002 3000 -. 3 .
( , , - ) InterBase Firebird, , InterBase - . 3 - InterBase, Firebird Yaffil. - , , , , .
2- -, . , , .
, - InterBase Express (IBX), , - InterBase, Firebird Yaffil.
, 3 - Borland InterBase, Firebird Yaffil. , ?
29 2002 InterBase 7. , , , InterBase 7.
, , 7- InterBase. - , , 2000 , . , InterBase 6.0.x, Firebird 1.0 InterBase 6.5 - backup/restore ( ).
. Borland, InterBase 6, InterBase 6.5. , - Firebird 1.0 , 6.0, Borland InterBase 6.0/6.5.
Firebird InterBase, . , Firebird, - 6- InterBase Open Source . , Borland.
, InterBase, Firebird Yaffil.
-
InterBase 5
InterBase 7 -. , InterBase 6.5, - backup/restore. , Firebird 1.0, InterBase 6.0 . , 1- , 5.6. , , Borland Borland InterBase Borland InterBase. , Firebird 1.5, - Firebird Developers. 2 ( 3, Yaffil).
, InterBase 4.x5.x6.x Firebird 1.0 - - , .
Borland InterBase Open Source Firebird . , - .
-
1-
!
, - InterBase. - , - - InterBase, .
. InterBase http://ib.demo.ru ( http://www.ibase.ru), . - Media Kit - Borland InterBase 5, . , , InterBase . , - InterBase , , , .
InterBase , , Microsoft Windows NT, Windows 2000, Windows XP, Windows 98/ME, Linux Unix-. InterBase - -. InterBase, -: TCP/IP, NetBEUI/named pipes, IPX/SPX.
InterBase, , - , - -! , - (transaction log), , InterBase .
InterBase . , , - , -. - .
InterBase ANSI SQL 92, SQL . - , InterBase : -, , , . - InterBase , , - , (event alerters), BLOB-. , , , ,
-
InterBase 7
, , InterBase.
InterBase - SQL- - User Defined Functions, BLOB- BLOB-. , InterBase , - Intranet-, .
, InterBase: , - , .
InterBase, InterBase 6.x, InterBase, - , . . 5.x 4.x. , , InterBase 6.x.
InterBase 6.x -, , - Borland InterBase 6.0. Borland InterBase 6.0 Open Edition, Borland InterBase 6.5, Firebird 1.x Yaffil.
InterBase 6.0 Open Edition, Firebird Yaffil Open Source-, InterBase Public License. Borland InterBase 6.5 90- TRIAL-. - , .
, - , -. InterBase , , - ().
-
8 1.
- . , , -, .
- , InterBase.
, . -, . , Ded!
, : , , , . , .
, , , , -, , , , .
InterBase , . . (Ann W. Harrison) - . (Claudio R. Valderrama) -, .
: - , - .
FIBPlus. - FIBPlus, .
, : , , , .
, - InterBase-.
-
1
InterBase
InterBase, . InterBase - , , - . InterBase , InterBase - - , . - InterBase - , . InterBase , , , - , ICQ WinAmp.
?
InterBase, , (-) . , - . - InterBase 6.0., , InterBase 6 -. InterBase 6.x Firebird ( 1.0 1.5), Borland InterBase (6.5, 7.0, 7.1 b 7/5) Yaffil (1.0).
Firebird InterBase 6.x. (open source). - InterBase Software Corporation.
3- - Firebird 1.5.1 - InterBase.
Borland -, 7.1 Service Pack 2. - . - 90 . InterBase 7.1 Borland.
Firebird InterBase, InterBase 6.x Yaffil, Firebird 2001 . Yaffil Windows, . 2004 Yaffil Firebird , Firebird 2.0, 2005 .
-
10 1.
, InterBase - - backup/restore (. (. 4)). , Firebird InterBase , .
InterBase , - . , Open Source , Bolrland InterBase Firebird . - (, www.interbase-world.com) .
InterBase ( ), , .
InterBase? - www.interbase-world.com, http://www.ibase.ru. InterBase, InterBase - .
InterBase http://sourceforge.net/projects/interbase, Firebird http://sourceforge.net/projects/firebird. , - .
- Delphi Client/Server Enterprise Edition (3.x, 4.x, 5.x 6.x) InterBase, 5.x/6.x. , - , , - InterBase.
InterBase, , - . , Windows ( 95 NT 4.0). , : Linux/Unix, FreeBSD, Solaris, Mac OS X Darwin. Windows Linux, , - .
, : - , .
InterBase Windows
(, ) Borland InterBase 7.x 70 . - 5-10 - , -
-
InterBase 11
Java-based InstallAnywere. InterBase 7.1 .
Firebird 1.5.1 - , .
, , , - IntrerBase/Firebird. - Firebird 1.5.1 (www.firebirdsql.org). - , .
, Firebird, InterBase, . Windows, -, Windows NT/2000/XP, InterBase- Windows, Windows 95/98/Me.
! InterBase - . , . gds32.dll , - Path ( : gds32.dll , ).
, , , Firebird 1.5.1. Next . InterBase Public License. I agree . -, Firebird. -. C:\Program Files\Firebird. - C:\IBServer.
, Next . , . 1.1. ( , Firebird, ). , - . , . , 16 .
, InterBase, - , Server for Windows, Client for Windows Command Line Tools. InterBase InterBase (. 4).
Next . ! InterBase is running on this machine . , -
-
12 1.
InterBase (, Delphi). InterBase, . .
, , -, Finish.
Firebird . , -. Windows 95/98/Me, InterBase , NT 4/2000 (service) - InterBase Manager (Services).
1.1. Firebird
InterBase Linux/Unix
InterBase Linix , Windows, . Linux InterBase ( Firebird) SuperServer Classic. , , "Classic SuperServer", , SuperServer.
Linux rpm ( Linux RedHat) tar.gz ( -). , Linux/Unix. (, www.firebirdsql.org) .
-
InterBase 13
, :
root.
Firebird SuperServer /etc/hosts.equiv localhost 127.0.0.1. , -.
, IP- hosts.equiv DNS.
rpm :
$rpm Uvh InterBase.x.x.x.rpm
InterBase.x.x.x.rpm . tar.gz -
:
$tar xzf InterBase.x.x.x.tar.gz
$cd install
$./install.sh
Linux- InterBase (Firebird ). - SuperServer , Classic (. "Classic SuperServer" (. 4)).
, InterBase 6.x/Firebird 1.0. , Linux , Linux/Unix.
InterBase/Firebird, , . ( , - ).
- /opt/InterBase, /usr/InterBase /usr/include . SYSDBA, - -: rpm - /opt/InterBase/SYSDBA.password, tar.gz .
InterBase/Firebird Linux? c Classic inetd, , InterBase/Firebird ( InterBase 4.x, 5.x 3050, Firebird 3050, ), inetd . , .
InterBase SuperServer /etc/rc.d/init.d/Firebird .
Linux - :
$cd /opt/InterBase/bin
$isql user sysdba password
-
14 1.
>connect /opt/InterBase/examples/employee.gdb;
>select * from sales;
>quit;
:
$cd /opt/InterBase/bin
$isql user sysdba password
>connect :/opt/InterBase/examples/employee.gdb;
>select * from sales;
>quit;
Sales, InterBase/Firebird .
InterBase
InterBase . , . - .
InterBase IBConsole. , , - InterBase - .
, - (. . Borland), InterBase.
IBExpert (www.ibexpert.com), IBManager (www.ibmanager.com), IBWorkbench IBAdmin. (freeware), . . , (shareware), . . . - - " InterBase".
. , , , ! - c InterBase.
- isql , . - , - ?
, :
-
InterBase 15
1) InterBase/Firebird, . 2) gds32.dll . 3) 4) .
, -- InterBase -, InterBase.
-
, . - (, IBExpert: http://www.blazetop.com).
, InterBase.
BlazeTop, "\\". InterBase. . 1.2.
. 1.2. InterBase
. : . , - InterBase. , - . TCP/IP, , - IP- InterBase. . InterBase SYSDBA, . - SYSDBA. masterkey. - . "\\ ". / (. 1.3).
ServerName (, ). DatabaseName . BlazeTop, - - AliasName. - . - : PageSize ( ), CharSet (- ), SQLDialect
-
17
( InterBase 6.x Firebird). , .
. 1.3.
, , SYSDBA. BlazeTop - DDL- , -. , (connection string).
, BlazeTop , . InterBase - Windows ( " InterBase" ), TCP/IP, , , :
:
:
1. , InterBase -, Operation Guide Network configuration.
2. , InterBase- ( -) Windows. - . , InterBase- *nix, -
: /opt/database/firstbase.gdb.
-
18 1.
, firstbase.gdb - C:\Temp, :
localhost:C:\temp\firstbase.gdb
localhost , , C:\Temp , firstbase.gdb . Localhost , (.. , , , - ) . - , , server_nt, - C:\database, , :
server_nt:C:\database\firstbase.gdb
server_nt C:\Database, . , server_nt ( - ) InterBase . . - . - , . , -, ( , ).
, netbios sharename, , , . - ( ) .
, 1.3. - . : 1 3. ?
1 3 - :
3 , , , DATE TIME.
3 , - . Table1 TABLE1 -, Table1 TABLE1 (TABLE1) - .
3 ( 1). , 1 25+5 - 30. 3 .
, . , Borland Database Engine (BDE) 5.2 3- - .
-
19
SQLDialect, , , - , . , , .
:
3, -, InterBase, 3;
1, - InterBase, , BDE.
, 1 3, 2? - 2 , 1 3.
InterBase c . , , InterBase, . - 4096 , . ? , , (, 10 , - 255 ) , InterBase - ! , .
, - , , ?
:
NTFS , 4096 . , NTFS- 4096 ( , -, ).
FAT32 (, FAT16 - ) 8192 16384 ( , 16384 - InterBase).
(CharSet)
. , - . , WIN1251. , -
-
20 1.
NONE, - .
, . -, - , .
- WIN1251 .
. (OWNER). , , .
InterBase SYSDBA. - . SYSDBA , , SYSDBA .
, " ", , . - (USERS) (ROLES) , , . InterBase . " IInterBase: , " (. 4).
SYSDBA. - . SYSDBA masterkey. , , , .
InterBase 'my.gdb' - ':\Database' . - 16384 , WIN1251 , . SQLDialect 3.
InterBase/Firebird , , "-" . . SQL ( ), - , WINDOWS, SQL- isql.exe.
-
21
. : crebas.sql:
SET SQL DIALECT 3;
SET NAMES WIN1251;
CREATE DATABASE 'Localhost:C:\Database\my.gdb'
USER 'SYSDBA' PASSWORD 'masterkey'
PAGE_SIZE 16384
DEFAULT CHARACTER SET WIN1251;
runscr.bat:
C:\IBServer\Bin\isql.exe i C:\temp\crebas.sql
, isql.exe ( SQL, InterBase) crebas.sql.
-
, (. [1, . 4]), , - . InterBase -. , - 1- 3- InterBase.
, InterBase . , - , , ; , "". -, "", . "" (. ". " (. 1)), , . .
, , , - .
InterBase 12 , . 6 :
INTEGER SMALLINT;
FLOAT DOUBLE PRECISION;
NUMERIC DECIMAL;
, / DATE, TIME TIMESTAMP;
CHARACTER ( CHAR) VARYING CHARACTER (VARCHAR);
BLOB.
, .. , BLOB.
InterBase , SQL92, , , "" BLOB.
InterBase - , INTEGER. !
-
23
BLOB , - Binary Large OBject " -". , BLOB InterBase, SQL-.
, . - InterBase .
< datatype> =
{SMALLINT | INTEGER | FLOAT | DOUBLE PRECISION}[ ]
| {DATE | TIME | TIMESTAMP} [ ]
| {DECIMAL | NUMERIC} [( precision [, scale])] [ ]
| {CHAR | CHARACTER | CHARACTER VARYING | VARCHAR} [( int)]
[ ] [CHARACTER SET charname]
| {NCHAR | NATIONAL CHARACTER | NATIONAL CHAR}
[VARYING] [( int)] [ ]
| BLOB [SUB_TYPE { int | subtype_name}] [SEGMENT SIZE int]
[CHARACTER SET charname]
| BLOB [(seglen [, subtype])]
, , , , . 4.1 [1], . - .
SMALLINT INTEGER. , SMALLINT INTEGER 2 , 4 , INTEGER. - , INTEGER.
: , , .. INTEGER , .
( ) FLOAT DOUBLE PRECISION. FLOAT - . - FLOAT , .
(, ), DOUBLE PRECISION.
-
24 1.
, 3- InterBase 64 . .
NUMERIC DECIMAL. , NUMERIC DECIMAL. - 1 18 , .
, : , .
, , , , ! , isql .
:
SQL> CREATE TABLE test (
CON> Num_field NUMERIC(15,2),
CON> Dec_field DECIMAL(15,2));
:
SQL> show tables test;
:
NUM_FIELD NUMERIC(15, 2) Nullable
DEC_FIELD NUMERIC(15, 2) Nullable
, InterBase , NUMERIC!
- . , InterBase 3 , , , .
[1], , - (. 1.1). , 3- :
1.1.
1 3
1 4 SMALLINT NUMERIC
INTEGER DECIMAL
SMALLINT
5 9 INTEGER INTEGER
10 18 DOUBLE PRECISION INT64
, , NUMERIC DECIMAL: ()
-
25
( ) 2 SMALLINT, 4 INTEGER.
, , , DECIMAL NUMERIC !
1- 3- . 1- - , ! 3- - INT64, 64- +/ 2^32. , - 3- , INT64 - .
InterBase 6.x 4. 5.. - , 6- InterBase, , , , InterBase
, InterBase 6.x 3 DATE, TIME TIMESTAMP.
DATE . 1 100 . . 29 32768 .
TIME . 00:00 AM 23:59.9999 PM.
TIMESTAMP DATE TIME.
? - , . - . , InterBase -/ ( FIBPlus), , InterBase.
, ? EXTRACT ( InterBase 6.), . - :
EXTRACT (MONTH FROM DATE_FIELD)
EXTRACT (YEAR FROM DATE_FIELD)
-
26 1.
EXTRACT : YEAR, MONTH, DAY, HOUR, MINUTE, SECOND, WEEKDAY, YEARDAY. - , .
InterBase , CHAR VARCHAR. , CHARACTER CHARACTER VARYING, - Show tables isql - .
, , - , - 1 .
CREATE TABLE testCHARLen(
Field1 CHAR(255),
Field2 CHAR);
Field1 255 -, Field2 1 .
CHAR VARCHAR 32768 , . -, InterBase -. - :
SQL> create table testCHAR ( c1 char(10), c2 varchar(10));
SQL> insert into testCHAR(c1,c2) values('Test','Test');
SQL> SELECT '('||c1||')', '('||c2||')' from testCHAR;
:
(Test ) (Test)
, 'Test', c1, . , CHAR - . , , - ( ).
- VARCHAR.
CHARACTER SET. - , - .
, - ( CREATE TABLE ALTER TABLE) . - WIN1251 ( - InterBase . " InterBase" (. 1)). , - WIN1251:
-
27
CREATE TABLE TestCHARSET(
Field1 VARCHAR(255),
Field2 VARCHAR(255) CHARACTER SET win1251);
Field1 , , . Field2 , - WIN1251.
, (COLLATION ORDER), , . - WIN1251 PXW_CYRL. - COLLATION ORDER " InterBase".
COLLATION ORDER [1, . 13].
! InterBase 6 , 4: NCHAR NCHAR VARYING, , CHAR VARCHAR, ISO8859_1. NCHAR CHAR DEFAULT CHARACTER SET ISO8859_1. NCHAR VARYING, CHAR VARCHAR. , - , ISO8859_1.
BLOB
BLOB . BLOB , , , , -, . .
BLOB , - , - :
CREATE TABLE testBLOB(
myBlobField BLOB);
myBlobField, - . BLOB - , - . -BLOB- (. " InterBase" (. 4)) , BLOB BLOB, BLOB - . .
BLOB , (BLOB filters),
-
28 1.
. BLOB, InterBase. , subtype 0 , subtype 1 , subtype 2 BLR (Binary Language Representation, . "- InterBase") . . BLOB, . , .
, BLOB- - . - BLOB, - .
InterBase , . - - . .
, - . InterBase .
INTEGER, - - :
CREATE TABLE test(
myOneDimArray INTEGER[12],
myTwoDimArray INTEGER[5,4],
myThreeDimArray INTEGER[2,10,8]);
3 : myOneDimArray, 12 , myTwoDimArray, () 54 Integer, myThreeDimArray 2108. , , . . 1, 2 . . - , 0 5, :
myArray INTEGER[0:5]
BLOB, -, "" - : InterBase , - .
? - . 80 % - (detail) -, InterBase. , Delphi C++Builder , , BDE IBX, -
-
29
. InterBase gpre, Delphi/C++Builder. , FIBPlus - InterBase, - " FIBPlus". IBProvider, InterBase Microsoft, - (. " InterBase Microsoft OLE DB" (. 3)).
, , -, , - . , - , InterBase.
-
.
InterBase . , InterBase . , - SQL, , Microsoft Excel. - InterBase , . , . , - .
, , , . - "" . "" , " " " " . , .
[14], InterBase. DDL (DDL Data Definition Language, . ), :
CREATE TABLE table [EXTERNAL [FILE] ""]
( [, | ...]);
table , (- - ) . table [EXTERNAL [FILE] ] , -, , .
, , . , . DDL:
= col { datatype | COMPUTED [BY] (< expr>) | domain}
[DEFAULT { literal | NULL | USER}]
[NOT NULL] [ ]
[COLLATE collation]
, . , , , datatype, - ( ), (. ), domain. " ", , SQL- - .
-
. 31
FIRSTBASE.gdb, - " ", . , - InterBase , " InterBase", isql.exe InterBase.
, TABLE_EXAMPLE 3 :
CREATE TABLE Table_example ( ID INTEGER,
NAME VARCHAR(80),
PRICE_1 DOUBLE PRECISION);
- .
. , - , . , - . , D_ID . , :
CREATE DOMAIN D_ID AS INTEGER; CREATE TABLE able_example (
ID D_ID, NAME VARCHAR(80),
PRICE_1 DOUBLE PRECISION);
ID , D_ID. -, , , , , .
- (COMPUTED BY) , . , , 10 % PRICE_1. - :
CREATE TABLE able_example (
ID INTEGER,
NAME VARCHAR(80),
PRICE_1 DOUBLE PRECISION,
PRICE_10 COMPUTED BY (PRICE_1*0.1));
, , PRICE_1, PRICE_10 . , . PRICE_10, SELECT . - ,
-
32 1.
, -, .
, 3 . , .
[DEFAULT {literal | NULL | USER}] . . 3 -. literal , . , -:
NAME VARCHAR(80) DEFAULT ' '
-, . . NAME, ' '.
DEFAULT NULL . - NULL, , , . :
PRICE_1 DOUBLE PRECISION DEFAULT NULL
DEFAULT USER . - , . . , InterBase ( - . " InterBase: , " (. 4)).
, - . , , . , - , - :
NAME VARCHAR(80) NOT NULL
, (NULL) . NOT NULL DEFAULT, - - .
NOT NULL . , - , ( , - - ). , :
PRICE_1 DOUBLE PRECISION CHECK (PRICE_1>0)
PRICE_1 - . ,
-
. 33
, -:
PRICE_1 DOUBLE PRECISION NOT NULL CHECK (PRICE_1>0)
, NULL .
, . - " ".
, -.
, -. , . - , :
DROP TABLE Table_example;
CREATE TABLE Table_example(ID NUMERIC(15,2);
. - DROP , , , , . . ALTER TABLE, - , , / - .
, , - :
ALTER TABLE Table_example ADD Patronimic VARCHAR(80);
Table_example Patronimic VARCHAR(80). - NAME,
ALTER TABLE Table_example DROP Name;
ALTER TABLE [1]. , .
, , ? , , HUMAN_NAME, NAME. ALTER TABLE ALTER COLUMN, .
, InterBase 6.x . InterBase , -, . 6- InterBase - , :
-
34 1.
ALTER TABLE Table_example
ALTER COLUMN NAME TO HUMAN_NAME;
, , , , - ALTER DOMAIN (. " ").
, InterBase. . InterBase, -, . , , - . - .
, , . . , , - . - . , , - InterBase.
- .
, ? , - . , . -, . ? , 1, 2, 3 , , . .
( PK Primary key). . - , . -, , ID. :
CREATE TABLE Table_example (
ID INTEGER NOT NULL,
NAME VARCHAR(80),
PRICE_1 DOUBLE PRECISION,
CONSTRAINT pkTable PRIMARY KEY (ID));
, , table_example. , -? -, ID NOT NULL. - . NULL, , . -
-
. 35
, , , NOT NULL.
, CONSTRAINT (). "- " . 1, :
CONSTRAINT pkTable PRIMARY KEY (ID)
pkTable , ID , .
(, , CASE-). , / , ? - ALTER TABLE. :
ALTER TABLE TABLE_EXAMPLE ADD CONSTRAINT FF PRIMARY KEY (ID);
Table_example , , . , :
ALTER TABLE Table_example DROP CONSTRAINT pkTable;
pkTable .
. , . , - , InterBase , - . InterBase InterBase, . ( ), .
, . . , ID NAME, - , . ID NAME 1 "", 2 "" , ID.
, . , . ?
-
36 1.
. , , , . , - , - . , - . , - ( , . .)? , , . . , . : ( ) - .
. - , . . , - , .
, . - , , Paradox MS SQL, (auto increment). -. InterBase , . , , : .
? -, . , . . DDL:
CREATE GENERATOR g1;
SET GENERATOR g1 TO 2445;
g1, 2445. - , . , InterBase GEN_ID. - , , - , , - . GEN_ID :
Current_value = GEN_ID (g1, 1)
, - :
-
. 37
SELECT GEN_ID(g1, 1)FROM RDB$ DATABASE
RDB$ Database , g1.
current_value ( InterBase . ), g1 , 1 . - current_value g1 1, . . !
, ! -, :
Current_value = GEN_ID (g1, -23)
g1 23. , , .
, , : " , "" ? ?" , -. "" -, . "" : - , " ". , - ". " (. 1), " InterBase" (. 4).
, - . ? - ?
. , " FIBPlus", "" (. 1). , .
-. , , - GEN_ID(,1) . , .
- , . - , - - // .
-
38 1.
GEN_ID, .
, , . , ! , - , . , , .
, , InterBase, . , InterBase, -, . - .
-
, , - . - , .
? . , , - ( . " InterBase") (. 4). , " " " ". , ( ), , , , .
, , , -.
, - : , , .
?
, , ( ).
, . .
? ( ). - , -. (, - ) , -, , . , - , .
, - . ( - ), . !
(NATURAL). , , -, - .
-
40 1.
, . - , -.
InterBase, , - , . . , - . , , , - "". , , , - , , -, .
: - - , . . , , ( -). - - -. - 64 !
, - , " " " ". - .
, , , - , . :
1. . , - SQL-.
2. ; - ( ". ") -, , - . , , . - (. ).
3. . Foreign key ( " ") - ,
-
41
. - , , - , .
. - , .
, - . , . , , . , ? , - , . , - , - . , , ! .
-. , , / - . , , "", : -. , - . "-" , , , - / ! , , ! , , , !
, . , -. 20 %. , - 20 % , - ! , , , , 20 % - , . . - InterBase.
, . InterBase -
-
42 1.
SQL-, , , , . , . . - , - . ( WHERE, ORDER BY . .), , , . , - , , - . - . , , InterBase Firebird .
, , , , - "" ""; .
, . , , - . 3 , :
1. .
2. (JOIN) .
3. ORDER BY.
, - .
. - DDL, :
CREATE [UNIQUE] [ASC[ENDING] | DESC[ENDING]]
INDEX index ON table (col [, col ...]);
, , :
CREATE INDEX my_index ON Table_example(ID)
my_index Table_example, ID. - , . . , , . . , ID . , , -.
, , - . , - . , , , , , , , . , 3 ,
-
43
, . - , , , - .
, - WHERE OR , - , , - OR.
: , (ASC[ENDING]), (DESC[ENDING]). ? , ! , (ASC), ( ) ! , .
UNIQUE. , . (UNIQUIE KEY). - . -, U . . (Primary key) . - -, , RDB$PRIMARYNNN, NNN . , . , , . . , , , NULL. - NOT NULL. - , , - . , - .
, . - - , , . , . . , - , -. RDB$FOREIGNNN, NNN .
- ? , InterBase
-
44 1.
, , . . , , , , , , - .
, , , , , ! ( ) - .
? " "? , . (, ) - , . , . "" ( ), . ( ) . , . - :
1. ALTER INDEX.
2. DROP INDEX CREATE INDEX.
3. - gbak.
. , , - , . , "" , .
. ALTER INDEX :
ALTER INDEX name {ACTIVE | INACTIVE};
name , ACTIVE INACTIVE , ALTER INDEX. ACTIVE , . INACTIVE () - . - :
ALTER INDEX name INACTIVE; ALTER INDEX name ACTIVE;
-
45
. ALTER INDEX : , -, ; , - - ; - (SYSDBA) .
DROP INDEX CREATE INDEX , . DROP INDEX :
DROP INDEX _;
CREATE INDEX, .
-, ALTER INDEX.
InterBase, gbak. , , , , . . . " " (. 4).
- SET STATISTICS. - 0 1, - () . InterBase . (, ), .
:
SET STATISTICS INDEX name;
name , . -
, , , , ( SYSDBA). - - .
-. ALTER INDEX DROP/CREATE INDEX - , , - , . - , ALTER TABLE CREATE TABLE, .
-
InterBase. , , . .
, , - , . . , , .
, , . - .
, . - , InterBase .
, . - InterBase .
InterBase:
PRIMARY KEY;
UNIQUE KEY;
FOREIGN KEY
ON UPDATE ON DELETE;
CHECK.
, , - , .
. - .
= [CONSTRAINT constraint]
[ ...]
= {UNIQUE | PRIMARY KEY
| CHECK ( )
-
47
| REFERENCES other_table [( other_col [, other_col ])]
[ON DELETE {NO ACTION|CASCADE|SET DEFAULT|SET NULL}]
[ON UPDATE {NO ACTION|CASCADE|SET DEFAULT|SET NULL}]
}
:
= [CONSTRAINT constraint]
[< tconstraint> ...]
= {{PRIMARY KEY | UNIQUE} ( col [, col ])
| FOREIGN KEY ( col [, col ]) REFERENCES other_table [( oth-er_col [, other_col ])] [ON DELETE {NO ACTION|CASCADE|SET DEFAULT|SET NULL}]
[ON UPDATE {NO ACTION|CASCADE|SET DEFAULT|SET NULL}]
| CHECK ( )}
- , - . - .
, : - , - . - .
.
. , .
:
CREATE TABLE test1(
ID_PK INTEGER CONSTRAINT pktest NOT NULL PRIMARY KEY);
pktest ID_PK. .
:
CREATE TABLE test2(
ID_PK INTEGER NOT NULL,
CONSTRAINT pktst PRIMARY KEY (ID_PK));
-
48 1.
. [CONSTRAINT constraint]. -, , , .
, .
, InterBase . , , .
, . , .
. . , . , ( ) , -. (, , -, )?
"" , () . - . - , . .
- . , , . , (. ).
, "" .
- :
= [CONSTRAINT constraint] {PRIMARY KEY |
UNIQUE}
:
CREATE TABLE pkuk(
pk NUMERIC(15,0) NOT NULL PRIMARY KEY, /* */
-
49
uk1 VARCHAR(50) NOT NULL UNIQUE,/* */
uk2 INTEGER NOT NULL UNIQUE /* */);
:
= [CONSTRAINT constraint] {PRIMARY KEY |
UNIQUE} ( col [, col ])
. :
CREATE TABLE pkuk2(
Number1 INTEGER NOT NULL,
Name1 VARCHAR(50) NOT NULL,
Kol INTEGER NOT NULL,
Stoim NUMERIC(15,4) NOT NULL,
CONSTRAINT pkt PRIMARY KEY (Number1, Name1), /* pkt
*/
CONSTRAINT ukt1 UNIQUE (kol, Stoim)); /* ukt1 */
, , - , NOT NULL, - .
- . DDL: ALTER TABLE. - :
ALTER TABLE tablename
ADD [CONSTRAINT constraint] {PRIMARY KEY | UNIQUE} ( col [, col ])
- ALTER TABLE. :
CREATE TABLE pkalter(
ID1 INTEGER NOT NULL,
ID2 INTEGER NOT NULL,
UID VARCHAR(24));
. :
ALTER TABLE pkalter
ADD CONSTRAINT pkal1 PRIMARY KEY (id1, id2);
:
ALTER TABLE pkalter
ADD CONSTRAINT ukal UNIQUE (uid);
, ( ) - SYSDBA ( - SYSDBA . " InterBase: , ") (. 4).
-
50 1.
, InterBase, . , , - !
: , , . "", - (, . .) - ( , . .).
, . - -.
- . , , , -, .
.
- , .
TITLE INVENTORY , .
CREATE TABLE TITLE(
ID_TITLE INTEGER NOT NULL Primary Key,
DateNakl DATE,
NumNakl INTEGER,
NoteNakl VARCHAR(255));
, ID_TITLE. TITLE , , .
, :
CREATE TABLE INVENTORY(
ID_INVENTORY INTEGER NOT NULL PRIMARY KEY,
FK_TITLE INTEGER NOT NULL, ProductName VARCHAR (255),
Kolvo DOUBLE PRECISION,
Positio INTEGER);
, INVENTORY. -, ID_INVENTORY . - FK_TITLE,
-
51
ID_TITLE . ProductName, Kolvo Positio, , .
FK_TITLE. , - , mas_ID_TITLE - :
SELECT *
FROM INVENTORY I1
WHERE I1.FK_TITLE=?mas_ID_TITLE
, INVENTORY , TITLE. , "".
. -, . - , , , , .
, INVENTORY , . , , , , .
. FK_TITLE ID_TITLE TITLE. :
ALTER TABLE INVENTORY
ADD CONSTRAINT fktitle1 FOREIGN KEY(FK_TITLE) REFERENCES TI-
TLE(ID_TITLE)
object is in use ( -). , , - . - object is in use.
INVENTORY , ; fktitle1 ; FK_TITLE , ; TITLE , ( ) ; ID_TITLE TITLE .
( ) :
= [CONSTRAINT constraint] FOREIGN KEY ( col [,
col ]) REFERENCES other_table [( other_col [, other_col ])] [ON DELETE {NO ACTION|CASCADE|SET DEFAULT|SET NULL}]
[ON UPDATE {NO ACTION|CASCADE|SET DEFAULT|SET NULL}]
-
52 1.
, . , - , .
-, (col [, col ]), -; other_table, [( other_col [, other_col ]) .
:
CREATE TABLE Inventory2(
FK_TABLE INTEGER NOT NULL CONSTRAINT fkinv REFERENCES
TITLE(ID_TITLE)
);
, FOREIGN KEY, , FK_TITLE.
:
CREATE TABLE Inventory2(
FK_TABLE INTEGER NOT NULL,
CONSTRAINT fkinv FOREIGN KEY (FK_TABLE) REFERENCES
TITLE(ID_TITLE)
);
NULL
, , - NULL-. . , , . (. . NULL) , : , , .
NULL - , - - "" (. . NULL).
, , - . InterBase - / . - :
-
53
[ON DELETE {NO ACTION|CASCADE|SET DEFAULT|SET NULL}]
[ON UPDATE {NO ACTION|CASCADE|SET DEFAULT|SET NULL}]
.
, , -- - . :
ALTER TABLE INVENTORY
ADD CONSTRAINT fkautodel
FOREIGN KEY (FK_TITLE) REFERENCES TITLE(ID_TITLE)
ON DELETE CASCADE
, - . . 1.2 ( , NO ACTION|CASCADE|SET DEFAULT|SET NULL ON XXX).
1.2
NO ACTION CASCADE SET DEFAULT SET NULL
ON DELETE
- - -
-
- - -
- - NULL
ON UPDATE
- -
- -
- - -
- - NULL
NO ACTION, ( ) , - .
CASCADE: - .
-
54 1.
CHECK
- . - - , , .
:
= [CONSTRAINT constraint] CHECK (
)}
constraint ; , / -. , / , .
:
create table checktst(
ID integer CHECK(ID>0));
, / - ID, / (. " InterBase" (. 1)).
. :
= {
{ | ()}
| [NOT] BETWEEN AND
| [NOT] LIKE [ESCAPE ]
| [NOT] IN ( [ , ...] | )
| IS [NOT] NULL
| {[NOT] {= | < | >} | >= |
-
55
, - CHECK, .
, CHECK , , .
-. , ALTER TABLE :
ALTER TABLE tablename
DROP CONSTRAINT constraintname
constraintname , . - - , , , - InterBase, , InterBase .
, SYSDBA.
-
, SQL, , - .
(VIEW) , . , - , .
. , - . , , . , , , , ( , ), .
-, . "" , - , . (, , ) , ( ).
InterBase. / , ( ) , ! InterBase . " InterBase: -, " (. 4).
DDL
, DDL (Data Definition Language SQL, . ), .
InterBase, - :
CREATE VIEW viewname [(view_column [, view_column])] AS [WITH CHECK OPTION];
viewname , , - , : [(view_column [, view_column])]. - , , . WITH CHECK OPTION " ".
-
57
- , , . . . - , . - - ( , "-", IBAlterView, . " - InterBase"). , DDL:
DROP VIEW viewname;
:
CREATE VIEW MyView AS
SELECT NAME, PRICE_1
FROM Table_example;
Table_example, ". ". NAME PRICE_1, Table_example , . . MyView Table_example.
. - -. , .
-, , -- ( - master-detail). DDL- :
/* Table: WISEMEN */
CREATE TABLE WISEMEN (
ID_WISEMAN INTEGER NOT NULL,
WISEMAN_NAME VARCHAR(80));
/* Primary keys definition */
ALTER TABLE WISEMEN ADD CONSTRAINT PK_WISEMEN PRIMARY KEY
(ID_WISEMAN);
/* Table: WISEBOOK */
CREATE TABLE WISEBOOK (
ID_BOOK INTEGER NOT NULL,
ID_WISEMAN INTEGER,
BOOK VARCHAR(80)); /* Primary keys definition */
ALTER TABLE WISEBOOK ADD CONSTRAINT PK_WISEBOOK PRIMARY KEY
(ID_BOOK);
/* Foreign keys definition */
-
58 1.
ALTER TABLE WISEBOOK ADD CONSTRAINT FK_WISEBOOK FOREIGN KEY
(ID_WISEMAN) REFERENCES WISEMEN (ID_WISEMAN);
, WISEMEN WISEBOOK, master-detail - FOREIGN KEY. , - . - . , , , -:
CREATE VIEW WiseBookCount
(WISEMAN,
HOW_WISEBOOKS) AS
SELECT M.WISEMAN_NAME, COUNT(B.BOOK)
FROM WISEMEN M, WISEBOOK B
WHERE (M.ID_WISEMAN = B.ID_WISEMAN)
GROUP BY M.WISEMAN_NAME
, COUNT(), SUM(), MAX() . ., - , . . , . , , , . , , , , - , . .
, ? , , ORDER BY. : - ORDER BY , ORDER BY, . , , :
SELECT * FROM WiseBookCount ORDER BY HOW_WISEBOOKS
SQL- . ORDER BY -
, , (. " ").
, , . , , "K". :
CREATE VIEW WiseMen2
(WISEMAN) AS SELECT M.WISEMAN_NAME
-
59
FROM WISEMEN M
WHERE M.WISEMAN_NAME LIKE 'K%'
, , - , - .
, . . - . , !
. , ( ), NULL. , -, , , UDF, - , DISTINCT HAVING. , , . . DELETE, INSERT UPDATE, -.
, - .
, , . , , "" (. 1), VIEW.
- .
3 : BEFORE DELETE, BEFORE UPDATE BEFORE INSERT. , , .
- DELETE, INSERT UPDATE. InterBase , , -, . . BEFORE DELETE/INSERT/UPDATE. , InterBase - , ( - ), - ( ), .
, .
WITH CHECK OPTION. , , , "" .
-
60 1.
: , - , , VIEW, .
, - .
, , . . , , .
-
, InterBase -. (. stored procedures) - , - , - . - .
-, , InterBase , - SQL-.
SQL-, - , , , -, .
InterBase? () , -
InterBase -, , InterBase.
, - . , (. . , , ) .
, , , SQL, , INSERT, UPDATE SELECT, (IF, WHILE), - . , - - .
, -, . - , , "" (. 1).
. , . , -
-
62 1.
. - InterBase SQL-, , - isql, . SQL- BLR ( BLR . " InterBase" (. 4)) , isql - , SQL- . - . - , . . , , . , - - .
, - . InterBase, " InterBas", - . - , GUI-, SQL-.
:
CREATE PROCEDURE name
[( param datatype [, param datatype ])]
[RETURNS ( param datatype [, param datatype ])]
AS
;
< procedure_body> = []
< block>
< variable_declaration_list> =
DECLARE VARIABLE var datatype;
[DECLARE VARIABLE var datatype; ]
=
BEGIN
< compound_statement>
[< compound_statement> ]
END
< compound_statement> = { | statement;}
, . , .
, , , :
CREATE PROCEDURE SP_Add(first_arg DOUBLE PRECISION,
second_arg DOUBLE PRECISION)
RETURNS (Result DOUBLE PRECISION)
AS
-
63
BEGIN
Result=first_arg+second_arg; SUSPEND;
END
, : CREATE PROCEDURE ( - ) SP_Add, - first_arg second_arg .
CREATE PROCEDURE , .
InterBase. - , , .
RETURNS, - Result.
, RETURNS - .
RETURNS() AS. AS , .
- () ( , ), (;), , - BEGIN END. , SUSPEND. , , , .
, (;). , SQL SQL, . , , , SQL , - ? . , , - , SQL- isql, , , -, . SQL-, - InterBase, ( ) -
-
64 1.
, , . isql, SQL, :
SET TERM
:
SET TERM ^;
CREATE PROCEDURE some_procedure
..
END
^
SET TERM ;^
. , , - , . SQL- :
SELECT *
FROM Sp_add(181.35, 23.09)
, Result, 181.35 23.09 . . 204.44.
, SQL-, , . - - SUSPEND .
, InterBase ( ) - : - (selectable procedures) (executable procedures). - , - , , , -, , Returns, . . . - - SELECT, EXECUTE PROCEDURE.
- , SELECT- - EXECUTE PROCEDURE. , . , - . - SELECT, - EXECUTE PROCEDURE. , .
, -, . SQL-
-
65
SELECT ID, NAME FROM Table_example. - , (ID NAME) - ( Table_example). SQL. , - . , , , -, , - . , - , ( ID NAME) . - .
, , SQL , ! - , , . -: - SELECT, "" - , . EXECUTE PROCEDURE, "" , ( !) .
-, . , , SELECT ID, NAME FROM Table_Example, . . - ID NAME . :
CREATE PROCEDURE Simple_Select_SP RETURNS (
procID INTEGER,
procNAME VARCHAR(80))
AS
BEGIN
FOR
SELECT ID, NAME FROM table_example
INTO :procID, :procNAME
DO
BEGIN
SUSPEND;
END
END
, Simple_Select_SP. , ID NAME. , , . - FOR SELECT:
FOR
SELECT ID, NAME FROM table_example
INTO :procID, :procNAME
DO BEGIN
/*- procID procName*/ END
-
66 1.
: , Table_example, procID procName, - .
: "? ?" , - . , .
, AS - BEGIN. :
DECLARE VARIABLE ;
, MyInt, AS BEGIN :
DECLARE VARIABLE MyInt INTEGER;
. , SQL- FOR SELECT, - , SELECT, . , !
SQL-. -, :
procName='Some name';
. FOR SELECT - , . - : ID => procID, NAME => procName. DO , - , SUSPEND.
, FOR SELECT DO , SELECT . , DO, - SUSPEND.
, - , , - -. - SUSPEND, .
FOR SELECT... DO, - , WHILE...DO, - . , WHILEDO. 0 99:
-
67
CREATE PROCEDURE QUAD
RETURNS (QUADRAT INTEGER)
AS
DECLARE VARIABLE I INTEGER;
BEGIN
I=1;
WHILE (i
-
68 1.
, - . - :
DECLARE VARIABLE avg_price DOUBLE PRECISION;
. BEGIN.
- . :
SELECT AVG(Price_1)
FROM Table_Example
INTO :avg_price;
AVG, PRICE_1 - PRICE_1 Table_example. avg_price. , avg_price , , .
, - . singleton-. . - , - FOR SELECT...DO, .
, . , .
Table_example:
FOR
SELECT ID, NAME, PRICE_1
FROM Table_Example
INTO :ID, :NAME, :new_price
DO
BEGIN
/* */
END
Table_example - - ID, NAME new_price. , , , , , , : , - - , , ! - SUSPEND, - - new_price.
-
69
, BEGINEND - . , , , . - IF:
IF (new_price > avg_price) THEN /*
*/ BEGIN
/* , , */
new_price = (avg_price + avg_price*(Percent2Increase/100));
UPDATE Table_example
SET PRICE_1 = :new_price
WHERE ID = :ID;
END
ELSE
BEGIN
/* ,
, , -
*/
new_price = (new_price + ((avg_price - new_price)/2));
UPDATE Table_example
SET PRICE_1 = :new_price
WHERE ID = :ID;
END
, IF, - , , /**/.
, UPDATE, - . , , WHERE , , ID : ID=:ID. , ID .
IF...THEN...ELSE ID, NAME new_price , , - . IF SUSPEND, , . - , , , , FOR SELECT...DO .
, SUSPEND, - , EXIT, - . EXIT , , - .
, SELECT - EXIT, . ,
-
70 1.
- , -
SUSPEND;
EXIT;
EXIT singleton- , - EXECUTE PROCEDURE. , SQL, .
, :
CREATE PROCEDURE IncreasePrices ( Percent2Increase DOUBLE PRECISION)
RETURNS (ID INTEGER, NAME VARCHAR(80), new_price DOUBLE PRECISION) AS
DECLARE VARIABLE avg_price DOUBLE PRECISION;
BEGIN
SELECT AVG(Price_1)
FROM Table_Example
INTO :avg_price;
FOR
SELECT ID, NAME, PRICE_1
FROM Table_Example
INTO :ID, :NAME, :new_price
DO
BEGIN
/* */
IF (new_price > avg_price) THEN /*
*/
BEGIN
/* , , -
*/
new_price = (avg_price + avg_price*(Percent2Increase/100));
UPDATE Table_example
SET PRICE_1 = :new_price
WHERE ID = :ID;
END
ELSE
BEGIN
/* ,
, ,
*/
new_price = (new_price + ((avg_price - new_price)/2));
UPDATE Table_example
SET PRICE_1 = :new_price
WHERE ID = :ID;
END
SUSPEND;
END
END
-
71
. - - .
InterBase . , . 1000 , , , - .
, . , , .
, - , .
: :
-
-
-
-
-
- - - -
..
, . " ", . , " -", :
-. :
CREATE TABLE GoodsTree
(ID_GOOD INTEGER NOT NULL,
ID_PARENT_GOOD INTEGER,
GOOD_NAME VARCHAR(80),
constraint pkGood primary key (ID_GOOD));
-
72 1.
GoodsTree, 3 : ID_GOOD - , ID_PARENT_GOOD -- GOOD_NAME -. , - :
ALTER TABLE GoodsTree
ADD CONSTRAINT FK_goodstree
FOREIGN KEY (ID_PARENT_GOOD)
REFERENCES GOODSTREE(ID_GOOD)
, - , - , .
:
ID_GOOD ID_PARENT_GOOD GOOD_NAME
1 0 GOODS
2 1
3 1
4 2
5 2
6 4
7 4
8 4
9 5
10 5
11 10
12 10
, , , "" "" , "-" " - ".
, , - . ; - --. , -, "".
, . :
CREATE PROCEDURE GETFULLNAME (ID_GOOD2SHOW INTEGER)
RETURNS (FULL_GOODS_NAME VARCHAR(1000), ID_CHILD_GOOD INTEGER) AS
-
73
DECLARE VARIABLE CURR_CHILD_NAME VARCHAR(80);
BEGIN /* FOR SELECT -
ID_GOOD=ID_GOOD2SHOW */
FOR SELECT gt1.id_good, gt1.good_name
FROM GoodsTree gt1
WHERE gt1.id_parent_good=:ID_good2show
INTO:ID_CHILD_GOOD, :full_goods_name
DO
BEGIN
/* EXISTS,
TRUE, .
ID_PARENT_GOOD = ID_CHILD_GOOD ,
"" */
IF (NOT EXISTS(
SELECT * FROM GoodsTree
WHERE GoodsTree.id_parent_good=:id_child_good))
THEN
BEGIN /* "" */
SUSPEND;
END
ELSE /* , */
BEGIN /* - */
CURR_CHILD_NAME=full_goods_name;
/* */
FOR
SELECT ID_CHILD_GOOD, full_goods_name
FROM GETFULLNAME (:ID_CHILD_GOOD)
INTO:ID_CHILD_GOOD, :full_goods_name
DO BEGIN /* -
|| */
full_goods_name=CURR_CHILD_NAME||' '||full_goods_name;
SUSPEND; /* */ END END
END
END
ID_GOOD2SHOW=1, :
FULL_GOODS_NAME ID_CHILD_GOOD
6
7
8
9
11
-
74 1.
FULL_GOODS_NAME ID_CHILD_GOOD
12
3
, -"", .
. , , , . - .
, , " InterBase", , .
-
InterBase
InterBase, - .
() InterBase "".
InterBase - , . InterBase , , . - :
CREATE EXCEPTION ;
, :
CREATE EXCEPTION test_except 'Test exception';
DROP EXCEPTION , ALTER EXCEPTION .
, - :
EXCEPTION ;
, . -, .
:
CREATE EXCEPTION zero_divide 'Cannot divide by zero!';
, :
CREATE PROCEDURE SP_DIVIDE (
DELIMOE DOUBLE PRECISION,
DELITEL DOUBLE PRECISION)
RETURNS (
RESULT DOUBLE PRECISION)
AS
BEGIN
if (Delitel
-
76 1.
BEGIN
EXCEPTION zero_divide;
Result=0;
END
ELSE
BEGIN
Result=Delimoe/Delitel;
END
SUSPEND;
END
, Delitel Delimoe, Delitel 0.0000001, . . , ( - - ). Delitel , zero_divide. -? , SP_divide isql, :
SQL> select * from sp_divide(300,0);
RESULT
=======================
Statement failed, SQLCODE = -836
exception 1
-Cannot divide by zero!
- -, :
. 1.4.
, InterBase. InterBase , - , BEGINEND, -, - SUSPEND.
, - , - , SUSPEND, - , SUSPEND.
-
InterBase 77
, , - . , :
WHEN EXCEPTION DO
BEGIN
/* */
END
- - .
, : - ( ) , InterBase - WHEN EXCEPTIONDO BEGIN...END. , ( , BEGINEND ) . ., , . , , -. , BEGIN...END , END .
, SP_DIVIDE. , - SP_divide_all, SP_DIVIDE , . , , .
, :
CREATE PROCEDURE sp_test_except(Delitel DOUBLE PRECISION)
RETURNS (rslt DOUBLE PRECISION, status VARCHAR(50))
AS
BEGIN
Status='Everything is Ok';
SELECT result FROM sp_divide(12,:Delitel) INTO :rslt;
SUSPEND;
WHEN EXCEPTION Zero_divide DO
BEGIN
Status='zero value found!';
rslt=-1;
SUSPEND;
END
END
SP_DIVIDE. Delitel - , SP_DIVIDE rslt , status - 'Everything is Ok'. , - , rslt 1, status 'zero value found!'. , -
-
78 1.
, . .
SQL InterBase
, , InterBase. -, InterBase. -, : - , -, ( ) , , .
, , .
, , , , EXCEPTION GDSCODE, SQLCODE:
WHEN GDSCODE|SQLCODE DO
BEGIN
/* */
END
, GDSCODE SQLCODE, . SQLCODE, SQL, GDSCODE InterBase. - SQL SQLCODE=-802 "Arithmetic exception, numeric overflow, or string truncation" SQLCODE=-817 "Attempted update dur-ing read-only transaction". SQL SQLCODE "SQLCODE codes and messages" [2, . 6].
InterBase isc_bad_dbkey 335544322L "invalid database key". [2, . 6].
, "" - . - , .
, ? ? , . - , SQL, InterBase , WHEN DO ANY:
WHEN ANY DO
BEGIN
/*
*/
END
, - .
-
InterBase 79
, " ", - - . "" SQL- . InterBase . - " array- FIBPlus" (. 2) " InterBase Microsoft OLE DB" (. 3). .
. . , , :
CREATE TABLE table_array(
ID_table INTEGER,
Array1 INTEGER[3,2]);
, .
SELECT Array1[:i, :j] FROM table_array INTO :ElemValue;
:
CREATE PROCEDURE SelectFromArr(ID_row INTEGER,
x INTEGER, y INTEGER, vl integer)
Returns (ElemValue INTEGER)
AS
BEGIN
SELECT array1[:x,:y]
FROM table_array
WHERE id_table=:ID_row
INTO :ElemValue;
SUSPEND;
END
, - x y table_array - ID_table=ID_row. , - -. , - InterBase API, , InterBase FIBPlus Delphi/C++Builder/Kylix IBProvider Microsoft.
- ( ) InterBase. - , , .
-
. "" , , .
? InterBase , -
, (view). "" .
, , , - , , , .
, SQL , - INSERT, DELETE UPDATE. , - - , , . , - , , . - , CHECK (. " "), - ; - - - .
, - , , .
InterBase, INSERT/DELETE/UPDATE. , - ( , -). , NEW OLD. , ( - ).
, "" , , -, , " " .
- "" . - . , - 3 SQL-, , INSERT/DELETE/UPDATE. . - , . . -, "" .
Yaffil 1.0 , - .
-
81
"" "" . - , 6 SQL-.
, . ". - " :
CREATE TABLE Table_example (
ID INTEGER NOT NULL,
NAME VARCHAR(80),
PRICE_1 DOUBLE PRECISION,
CONSTRAINT pkTable PRIMARY KEY (ID));
ID . , , . , ID , . , :
CREATE GENERATOR GEN_TABLE_EXAMPLE_ID;
:
SET GENERATOR GEN_TABLE_EXAMPLE_ID TO 1;
. , , - , , - . , " InterBase", isql, - SET TERM, " ". - .
, :
CREATE TRIGGER Table_example_bi FOR Table_example
ACTIVE BEFORE INSERT POSITION 0
AS
BEGIN
IF (NEW.ID IS NULL) THEN
NEW.ID = GEN_ID(GEN_TABLE_EXAMPLE_ID,1);
END
, (, , ), -. "" .
CREATE TRIGGER, Table_example_bi. -
-
82 1.
FOR, , , Table_example.
- ACTIVE , "". INACTIVE. , - , . BEFORE INSERT , ; - POSITION 0 () . , InterBase 32000 (, BEFORE INSERT AFTER UPDATE), -, . - . , .
AS . AS . - . - IFTHEN , . , TRUE () FALSE (), :
NEW.ID IS NULL
", NEW?" . , - , . , .
, , - , . -"" BEFORE INSERT , (INSERT) . (BEFORE) , . , - , . . , - / - . - NEW. - (- struct record Pascal), , - (INSERT ). , - : New.ID, New.NAME New.PRICE_1.
, . :
IF (NEW.ID IS NULL) THEN
NEW.ID = GEN_ID(GEN_TABLE_EXAMPLE_ID,1);
-
83
IF...THEN ID -- , . - NEW.ID NULL, GEN_ID, - GEN_TABLE_EXAMPLE_ID , NEW.ID. -, " " !
NEW, OLD. NEW, OLD , . , - OLD , :
CREATE TRIGGER Table_example_ad0 FOR Table_example
ACTIVE AFTER DELETE POSITION 0
AS
BEGIN IF (OLD.id>1000) THEN
BEGIN
/*..do something..*/
OLD.ID=10;
END
END
, (AFTER DELETE). , . , OLD.ID=10; - . -, , , - , .
-. , NEW OLD -, . - , . - OLD ? ! -, OLD - BEFORE/AFTER INSERT. NEW BEFORE/AFTER DELETE. BEFORE/AFTER UPDATE, - , NEW (, - , OLD?), BEFORE INSERT/UPDATE.
, ? , 1.3. , -. .
- "" "", -. 6 . ,
-
84 1.
NEW Y, , - . N/A, .
1.3. NEW OLD
NEW OLD
BEFORE INSERT Y Y N/A N/A
AFTER INSERT Y N/A N/A N/A
BEFORE UPDATE Y Y Y N/A
AFTER UPDATE Y N/A Y N/A
BEFORE DELETE N/A N/A Y N/A
AFTER DELETE N/A N/A Y N/A
NEW OLD . (OLD) (NEW) - . , / .
, . . . ACTIVE . , . - , . , DDL:
ALTER TRIGGER INACTIVE;
, Data Definition Language, . -, - . , , InterBase . INACTIVE, :
UPDATE rdb$triggers trg SET trg.rdb$trigger_inactive=1
WHERE trg.rdb$trigger_name='TABLE_EXAMPLE_AD0'
DDL, .
-
85
, , , SQL-. - , . . - - , . " " .
, , - . - , " ", ( , -, "- " - !), , ! , .
, -, ( ) , , . , , , NEW OLD.
, , . , , , , -, SQL- INSERT/UPDATE/DELETE. , , - . , . - , InterBase.
( , ), . , " " . InterBase -? , , , , - . . , - "" ?
, InterBase , -
-
86 1.
. INSERT/UPDATE/DELETE SELECT, EXECUTE PROCEDURE.
. - , . . , . - , - , , - , , - - .
, , InterBase , , , - . , -, . , InterBase - , , InterBase . .
- ( ) WHEN...DO. , WHENDO . - " InterBase" (. 1).
, . - , - , , .
InterBase
InterBase, , (events). , . InterBase, . , - - .
, , " -". - , :
POST_EVENT '_';
, '_' , , , :
-
87
If () then
BEGIN
Event_text ='IT IS TRUE!';
END
ELSE
BEGIN
Event_text ='IT IS FALSE!';
END
FALSE_EVENT :Event_text;
, , - , , " " .
() - InterBase API, , , FIBPlus SuperIBAlerter.
- , InterBase, - InterBase, . , , - .
- .
- . - - , , .
InterBase - .
-
User Defined Functions
, , , SQL InterBase - . , - InterBase . , InterBase - . , , , InterBase - , -, -. InterBase - , . , , .
SQL InterBase , (user defined functions). (Dynamic Link Library) , . , Borland Delphi, Borland C++ Builder, Microsoft Visual C++ . . , DLL , InterBase , - DLL DECLARE EXTERNAL FUNCTION. - , InterBase.
InterBase 6.0 , DLL , PATH. InterBase 6 ( Firebird Yaffil) , DLL UDF, InterBase.
- , , . - Borland Delphi. EMPLOYEE.GDB.
, . , COLLATE . , , , - . , , DLL Delphi.
-
User Defined Functions 89
library TestUDF; uses SysUtils; function malloc(Size: Integer): Pointer; cdecl; external
'msvcrt.dll'; function StrUpperCase(sz: PChar): PChar; cdecl; export; var Tmp: string; begin Tmp := AnsiUpperCase(sz); Result := malloc(length(Tmp) + 1); StrPCopy(Result, Tmp); end; exports StrUpperCase; begin end.
: StrUpperCase. , , - Pchar, . . , #0. : sz , AnsiUpperCase. , -. , malloc Windows. Tmp Result. TestUDF.dll . - InterBase 6.x , \Udf, - . -. DECLARE EXTERNAL FUNCTION, :
DECLARE EXTERNAL FUNCTION name [datatype | CSTRING (int) [, datatype | CSTRING (int) ]] RETURNS {datatype [BY VALUE] | CSTRING (int)} [FREE_IT] ENTRY_POINT 'entryname' MODULE_NAME 'modulename';
name . DLL.
datatype . :
;
( ) ;
.
, CSTRING. . - , , .
FREE_IT InterBase, , .
-
90 1.
, , - .
entryname DLL, - .
modulename DLL, .
, entryname modulename . , , -
:
DECLARE EXTERNAL FUNCTION USTRUPPERCASE
cstring(254)
RETURNS cstring(254) FREE_IT
ENTRY_POINT 'StrUpperCase' MODULE_NAME 'TestUDF.dll'
USTRUPPERCASE SQL-. , , :
SELECT USTRUPPERCASE(DEPARTMENT) FROM DEPARTMENT
DEPARTMENT:
. 1.5. UDF USTRUPPERCASE
, SQL- User Defined Functions. , , - - . , InterBase NULL-. "" SQL .
UDF-, www.InterBase-world.com www.ibase.ru.
-
InterBase
Borland InterBase, Firebird , - , . InterBase , , , "" - .
InterBase
InterBase, , (character set), (. " " - ). , , .
, - , . - DEFAULT CHARACTER SET. , WIN1251. UNICODE_FSS, UNICODE UTF-8. , WIN1251.
-, :
CREATE DATABASE 'C:\Database\rusbase.gdb' USER 'SYSDBA' PASWORD
'masterkey' DEFAULT CHARACTER SET WIN1251;
, - . , - . . , , - 3 :
CREATE TABLE langTable(
NAME_RUS VARCHAR(255) CHARACTER SET WIN1251,
NAME_ENG VARCHAR(255) CHARACTER SET WIN1250,
NAME_UNI VARCHAR(255) CHARACTER SET UNICODE_FSS);
, , , - SQL- . ,
-
92 1.
(. ), - . , - , UNICODE_FSS, .
, SQL- , , InterBase , "Cannot transliterate characters between character sets".
, . , , character set NONE, InterBase, - , , . . , - , .
, CHARACTER SET NONE , , , , . , CHARACTER SET, , , COLLATION ORDERS ( -) - .
, -, . . . , "" - . , , . . COLLATION ORDER.
- , InterBase . -, , . , - .
InterBase, 32767 . -, 1, 2 3 . , CHAR VARCHAR, -
-
InterBase 93
, , - . WIN1251 1 , - . - UNICODE_FSS 3 ; , - . UNICODE_FSS - 32767 div 3 = 10921 . - , InterBase - , . . , !
(CHARACTER SET) - ( 2 3 ) (. . , - ).
InterBase , - InterBase. - . -, , 1- 2- 3- .
, , - . , UNICODE_FSS 2 . , , VARCHAR(255) CHARACTER SET UNICODE_FSS, , 255 * 3 div 2, . . 382.
, (CHARACTER SET) - . - . , - WIN1251 , . . - .
-? ( ) - COLLATION ORDERS. COLLATION ORDER -. . , - WIN1251 : WIN1251, , PWX_CYRL. PXW_CYRL , . . (case insensitive). : ....
? COLLATION ORDERS - , ( ) . (2 3, ). ,
-
94 1.
COLLATION ORDER WIN1251 1 - , PWX_CYRL 3 !
- . , , , - . : , PXW_CYRL 3 , . InterBase . , 254 254 div 3 = 84 -. COLLATION ORDER , . , . COLLATE , , . - , InterBase .
COLLATE , , :
SELECT *
FROM table1 ORDER BY SYMBOLIC_FIELD1 COLLATE PXW_CYRL
UPPER:
SELECT UPPER(field1 COLLATE PXW_CYRL) From table1
: , , .
InterBase
InterBase , , - , , .
: , . , .
, , . FIBPlus IBX , , WIN1251, - lc_type=WIN1251.
-
InterBase 95
, WIN1251, Borland Database Engine LANGDRIVER=PDOX ANSI Cyrr.
JDBC charset=cp1251 ( . " InterBase Java" (. 3)).
gdsintl.dll, %INTERBASE%\Intl. COLATION ORDERS InterBase . , www.InterBase-world.com.
-
.
?
. . - , .
.
, .
. : , . -, , (- ACID Atomicity, Consistency, Isolation, Durability).
. , INSERT/UPDATE/DELETE , , SELECT. - , , .
: " - ". , - . - .
. - , . - -. -, , , . . - "" . - , . "" ( ).
, - / , - - . - , .
, , -, . InterBase, .
:
-
. 97
, .
: " "! , - , -.
, , .
1. ( ). , - , , , - . , - ( !).
2. " " , - - . , - ( ).
3. , , , ( ). , , , , . - ( -) - , ( , ). , , , .
, . ( , ). , , "", . , - .
("") (-) . .
-
98 1.
, -. , , . , . - "" -, , , - , : , , , , , "" - . , "" - - - . "", "".
, - , -, .
:
, - .
"": - .
, , , -. , -, : , , , .
, , -. - , . , -.
. , , -
-. , , -. , , . . , , . . .
-
. 99
-/ -, . . , , , , .
, - , ( ), , ( - ) - ( -). - .
, - .
, - :
, . - , - , . , - , .
, . . InterBase, - InterBase.
InterBase
, InterBase - . - InterBase, Multi Generation Architecture (MGA) - .
InterBase, , InterBase. , " InterBase".
, . -.
InterBase
InterBase , . - , , -
-
100 1.
(transaction log), .
. , , ( ), - , . , .
, - , .
, . , - . , - , (, -, ) , -, . - , , .
, , . - : InterBase () (- ) . , - - , .
, ( 1), 2, . 1 ( 2) , 2 !
, - - .
, ! . - , , , . . " ".
, . , , .
-
. 101
, - InterBase, - InterBase.
.
InterBase transaction ID TID ( restore). , , , . . - , .
(Transaction Inventory Page, TIP). InterBase , , TID# (. . active).
4 : (active), - (Commited), (Rolled back) (limbo). .
, Commit.
, - Rollback.
, - , - .
TID# - , . TID# .
TID# , . . Commited ( commit), . !
, , TID#, , - . , , .
- , . , - , , - TID.
-
102 1.
, , (. . - Rollbacked), (garbage) .
, , ( Committed), - .
" ?" . , - . , TID# .
, , "". - . ""..
, "". , . , , - , " ": , , TID (committed). - .
, - . -, TIP, .
, , , - .
. , , - , , , - , , .
, : , . (oldest interesting transaction)
, . ( , ) " ",
, - .
(oldest active transaction, OAT) -, , .
-
. 103
, "" .
: -, - , , ; -, - , ! -, - .
, , InterBase . www.InterBase-world.com www.ibase.ru - .
, - , - . : - , - ? .
, , - , . - , ( ) , , , .
.
, , , .
, .
InterBase 3 : READ COMMITTED, SNAPSHOT SNAPSHOT TABLE STABILITY. , - . - .
READ COMMITTED. " ", (, ) . READ COMMITTED , - (. . ) . , - , -, .
SNAPSHOT. "-" . , SNAPSHOT, . , ( , -
-
104 1.
) , . SNAPSHOT , .
SNAPSHOT TABLE STABILITY. "-" , , , . -, SNAPSHOT TABLE STABILITY - , . , SNAPSHOT TABLE STABILITY , .
InterBase . InterBase.
, InterBase, FIBPlus, IBProvider, IBX IBObjects (. " InterBase"), . .
, , , -. InterBase API : isc_tpb_read, isc_tpb_write, isc_tpb_ read_committed . .
isc_tpb_ - .
.
, - . 1.4:
1.4.
-
Read
write
Wait . . " "
nowait -
-
. 105
read_committed rec_version
. - rec_version - , -
read_committed no_rec_version
. - no_rec_version , -
concurrency "" (, " " ), , -,
consistency concurrency, . .
, . - . .
, - . (. . ) -, . . . -, , . : , . InterBase ( 6.5) Firebird. , - .
- read write. , :
read write
, . - , , ,
-
106 1.
, , - .
wait nowait. wait.
, , , . , wait/nowait, - , . - , .
1. , , - . , , , . :
wait, - , (commit), Deadlock, (rollback), - (. . commit);
nowait, 'lock conflict on no wait transaction'.
2. : , - . . :
wait, ; , 'Deadlock update conflict with concurrent update', , ; , ;
nowait, 'lock conflict on no wait transaction'.
, . - .
, , , "deadlock", . " ", "-". , , - .
?
-
. 107
, - . T1 T2 A B; , , . , - :
1. T1 A, .
2. T2 B, .
3. T1 B, - . B - B, T1 .
4. T2 A, - .
: - , . - , InterBase . , .
InterBase - , -. , - DEADLOCK_TIMEOUT InterBase ibconfig, .
- , , , "deadlock" . .
, .
, , , , , -.
" ", InterBase 3 . , DIRTY READ " ". - DIRTY READ -. InterBase -, .
-
108 1.
InterBase . Read Committed, read_committed. , , - , . "" - .
1.4, -: read_committed rec_version read_committed no_rec_version. - rec_version. , - - .
no_rec_version . , read_committed no_rec_version , - , , - .
, . , ( , ):
wait, , , - . -, .
nowait, "Deadlock".
, read_committed no_rec_version - , -.
SNAPSHOT concurrency. -, SNAPSHOT "" InterBase, - . "" , , , , . , - , . . , - ( , ), .
concurrency, - , , SNAPSHOT , () SNAPSHOT.
SNAPSHOT (), , / .
SNAPSHOT TABLE STABILITY consistency. SNAPSHOT, -
-
. 109
. - consistency - , - c read_committed concurrency , (. . consistency) .
, () . . - , -. wait nowait , .
- . , - . "" , , , - . . ( ) -, .
, - . (dbGrid Delphi/C++Builder), - - . lookup-, - . , ( ), - / / / .
? SELECT, , -
" " READ COMMITED, "" , / ( , ). :
read
read_committed
rec_version
nowait
- , .
.
-
110 1.
/ - concurrency. - : , - , , , , , ( , - tryexcept trycatch).
:
write
concurrency nowait
(nowait) , / ( ), , - ( "update conflict"). , , , .
, , " " concurrency:
read
concurrency nowait
, , , .
, SELECT .
, , - . , InterBase .
, , . .
, ". -", , . - -. - . . ,
-
. 111
.
, - . - (INSERT/SELECT). - , , .
- . , InterBase - (, - , - InterBase).
, - . , - .
. - , , - Prepared. , Committed, Prepared. Rollback, Prepared .
, -, - . , Prepared , , , -.
, (, ).
- , , . , - . , , . www.InterBase-world.com www.ibase.ru.
http://www.interbase-world.com/
-
InterBase
InterBase . " " , - InterBase .
InterBase
, , InterBase API. InterBase API . , "-" (wrapper) API. - API , - .
, , , - . -, - , .
. InterBase -: BDE (Borland Database Engine, . -), ODBC, OLE DB (ADO), dbExpress .
BDE InterBase . BDE SQL-, InterBase. BDE Borland: Delphi, C++ Builder . BDE, SQL-, , . SQL-. BDE , Paradox, - - . , BDE InterBase, , , . InterBase BDE, Borland Delphi.
ODBC (Open Database Connectivity) - , .
-
InterBase 113
BDE, ODBC InterBase , - Borland. ODBC-, - InterBase 6.x . ODBC- Gemini .
ODBC, Microsoft OLE DB. , , InterBase. , , IBProvider OLE DB- InterBase. Visual C++, Visual Basic, ASP IBProvider , OLE DB, InterBase. IBProvider InterBase MS SQL Server.
dbExpress, - Borland (Delphi, C++Builder Kylix), , SQL-, . , , InterBase. - dbExpress, , .
, - InterBase. - , "" InterBase API. -; InterBase, InterBase (. " InterBase " (. 4)).
, , Devrace FIBPlus, - InterBase, 4.x, InterBase: Firebird Yaffil.
, , . Java, CGI-. , - InterBase.
Perl, Python PHP - InterBase, . 1.6, - InterBase.
-
114 1.
, , - - , Windows Linux .
InterBase
InterBase - , - InterBase/Firebird, - . , 1.6, :
1.6
Free IB Components
(FIBC)
, 1998 . - . , - FIBC, FIBPlus IBX
ftp.ibphoenix.com
/download
FIBPlus -, , - Delphi 36, C++ Builder 36, Kylix. - data-aware-. Free IB Components
www.fibplus.net
IBObjects , - - -
www.ibobjects.com
InterBase Express
(IBX)
InterBase, data-aware- - . - FreeIBComponents - - Borland Delphi/C++ Builder Enterprise Edition
codecentral.borland.com/
codecentral/ccweb.exe/
author?authorid=102
-
InterBase 115
Zeos Database Objects
, InterBase. data-aware- - , - -
www.zeoslib.org
SQLAPI++ ++, - SQL- , InterBase
www.sqlapi.com
Open Source Firebird and InterBase ODBC Driver
ODBC- Inter-Base/Firebird. . - "" ODBC-JDBC
www.ibphoenix.com
/ibp_60_odbc.html
Gemini InterBase ODBC Driver
ODBC-, - InterBase, 4., - InterBase 6.5 Firebird 1.0
www.ibdatabase.com
IBProvider OLE DB- InterBase. - InterBase 6.x/Firebird 1.0
www. Ibprovider.com
SIBProvider OLE DB- InterBase
www.sibprovider.com
IBPerl - - Perl5 - InterBase
www.karwin.com/ibperl
DBD::InterBase DBI- InterBase dbi-InterBase.sourceforge.net
-
116 1.
PHPLib for InterBase
InterBase PHP
www.intelicom.si
ADODB - InterBase PHP4 Data-base Wrapper
InterBase PHP
php.weblogs.com/adodb
Zope Driver for InterBase
InterBase Python
www.zope.org/Members
/mcdonc/RS/InterBaseStorage
InterClient JDBC- - InterBase Java
- Borland InterBase
"" www.InterBase-world.com, www.ibase.ru
-
2
InterBase Borland Delphi/C++
Builder/Kylix
InterBase Express?
Borland Delphi 57 Borland C++ Builder 56 Professional Enterprise InterBase -. InterBase Express IBX. - InterBase, InterBase API, . . , - (middle-ware) .
IBX, GDS32.DLL - .
IBX IPL InterBase Public License, . . - . - Borland, Delphi C++ Builder , Open Source-.
IBX , InterBase. IBX :
;
e InterBase 6.07.0;
event-alerters;
;
Services API;
;
;
Delphi 57, C++ Builder 56 Kylix
IBX FreeIBComponents, 1998 . , Borland, - SQLDialect 3, - , ( - ). Delphi C++ Builder
-
118 2. Devrace FIBPlus
IBX , - http://codecentral.borland.com.
http://codecentral.borland.com/
-
,
IBX
TIBDatabase . : Open, Close.
TIBTransaction . - : StartTransaction, Commit, Rollback, CommitRetaining, Roll-backRetaining.
TIBTable TTable. . TableName. : Open, Close. , - TIBTable, , . - .
TIBQuery TQuery. SQL-. , TIBUpdateSQL, . SQL. : Open, Close, ExecSQL. .
TIBDataSet , - TDataSet . : Prepare, Open, Close, Insert, Ap-pend, Edit, Delete, Refresh.
TIBStoredProc - . - . - . StoredProcName. - ExecProc.
TIBUpdateSQL TUpdateSQL. TIBQuery . : DeleteSQL, InsertSQL, ModifySQL RefreshSQL.
TIBSQL SQL-. TIBQuery TIBDataSet, TIBSQL - .
TIBDatabaseInfo - , . , UserNames , , PageSize - .
-
120 2. Devrace FIBPlus
TIBSQLMonitor -, , IBX.
TIBEvents InterBase. Events. : RegisterEvents, UnregisterEvents.
- Services API
TIBConfigService .
TIBBackupService (backup) .
TIBRestoreService .
TIBValidationService .
TIBStatisticalService .
TIBLogService - - .
TIBSecurityService - .
TIBLicensingService -, - InterBase.
TIBServerProperties -, . .
TIBInstall InterBase installation-.
TIBUnInstall InterBase un-installation -.
-
InterBase eXpress (IBX)
, - IBX. . , , ( , IBX FIBPlus) , IBX . , FIBPlus, -, . , - , FIBPlus.
IBX
Delphi ( C++ Builder), , - . , , IBX, , . . 2.1.
TComponent
TDataSet
TIBCustomDataSet
TIBDa