菜鸟菜菜的问关于InterBase的SQL语句问题: (100分送上)

zousoft 2003-08-20 10:46:48
大家好, 我是名InterBase的初学者, 在自学中遇到一些问题, 希望大家能帮我解决.

Q1:
如何判断我的InterBase是单机版还是网络版? 我在Help里只看到InterBase6.5没看到具体是什么版. 在哪里或有什么功能可以区分出我的InterBase是什么版本?
---------------------------------
Q2:
CREATE TABLE STOCK (
MODEL SMALLINT NOT NULL,
MODELNAME CHAR(10) NOT NULL,
CONSTRAINT MOD_UNIQUE UNIQUE (MODEL, MODELNAME));

CREATE TABLE STOCK (
MODEL SMALLINT NOT NULL UNIQUE,
MODELNAME CHAR(10) NOT NULL UNIQUE);
有什么区别? Help里说前者UNIQUE是基于表的, 后者是基于列的. 我不太明白, 使用中有什么影响呢?
---------------------------------
Q3:
CREATE TABLE BOOKADVANCE (
BOOKNO CHAR(6),
TITLE CHAR(50) COLLATE ISO8859_1,
EUROPUB CHAR(50) CHARACTER SET ISO8859_1 COLLATE FR_FR);
是什么意思呀? ISO8859_1, FR_FR是干什么的?
---------------------------------
Q4:
CREATE TABLE DEPARTMENT
(
DEPT_NO DEPTNO NOT NULL,
MNGR_NO EMPNO,
HIRE_DATE TIMESTAMP DEFAULT 'NOW' NOT NULL,
FULL_NAME COMPUTED BY (last_name || ', ' || first_name),
PRIMARY KEY (DEPT_NO)
);
ALTER TABLE DEPARTMENT ADD FOREIGN KEY (MNGR_NO) REFERENCES EMPLOYEE (EMP_NO);
为什么外键总要最后再添上, 在建表时直接写上不好吗?
TIMESTAMP是什么意思与DATE和TIME有什么区别?
COMPUTED BY (last_name || ', ' || first_name)中的表达式是什么意思? 尤其是||
---------------------------------
Q5:
CREATE TABLE JOB
(
JOB_CODE JOBCODE NOT NULL,
JOB_GRADE JOBGRADE NOT NULL,
JOB_COUNTRY COUNTRYNAME NOT NULL,
JOB_REQUIREMENT BLOB SUB_TYPE TEXT SEGMENT SIZE 400,
LANGUAGE_REQ VARCHAR(15)[1:5] ,
PRIMARY KEY (JOB_CODE, JOB_GRADE, JOB_COUNTRY)
);
其中LANGUAGE_REQ的定义是什么意思? 是个下标从1到5的数组吗? 为什么我用select * from job看不到这个字段?
BLOB SUB_TYPE TEXT SEGMENT SIZE 400这句中BLOB的SUB_TYPE除了有TEXT类型外, 还有什么类型?
---------------------------------
Q6:
The following isql statements deactivate and reactivate an index to rebuild it:
ALTER INDEX BUDGETX INACTIVE;
ALTER INDEX BUDGETX ACTIVE;
索引的rebuild有什么用? 而且是不是不能对UNIQUE, PRIMARY KEY, 或FOREIGN KEY操作?
---------------------------------
Q6:
存储过程和触发器中的EXIT和SUSPEND有什么区别? 两者分别在什么时候用?
---------------------------------
Q7:
SHADOW有什么用? CREATE SHADOW()怎么用?
---------------------------------
Q8:
SET TERM !! ;
CREATE TRIGGER POST_NEW_ORDER FOR SALES
AFTER INSERT AS
BEGIN
POST_EVENT 'new_order';
END !!
SET TERM ; !!
存储过程和触发器中的POST_EVENT 'new_order'有什么用? 怎么使用?
---------------------------------
Q9:
CURSOR有什么用? 与视图有什么区别? 怎么用?
---------------------------------
Q10:
建立视图的WITH CHECK OPTION有什么用?
CREATE VIEW HALF_MILE_CITIES AS
SELECT CITY, STATE, ALTITUDE
FROM CITIES
WHERE ALTITUDE > 2500
WITH CHECK OPTION;
为什么这句不行:
INSERT INTO HALF_MILE_CITIES (CITY, STATE, ALTITUDE)
VALUES ('Chicago', 'Illinois', 250);

而这句允许:
INSERT INTO HALF_MILE_CITIES (CITY, STATE, ALTITUDE)
VALUES ('Truckee', 'California', 2736);
----------------------------------

回答时请在前面注明所答问题编号, 谢谢!
...全文
118 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
sduzjw 2003-08-22
  • 打赏
  • 举报
回复
UNIQUE约束可以基于字段,也可以是表一级的,如果是一个字段则是基于列的,否则是基于表的,就跟主键一个样,
外键可以在建表时一起添加,alter table是原先的表中没有,后来想加时才修改表,加的时候起一个名字,以后将来可以DROP掉此外键,根据名字,
hp0773 2003-08-22
  • 打赏
  • 举报
回复
帮你顶一下
zousoft 2003-08-22
  • 打赏
  • 举报
回复
没有人会InterBase吗?
mashuo 2003-08-22
  • 打赏
  • 举报
回复
Q2中CONSTRAINT MOD_UNIQUE UNIQUE (MODEL, MODELNAME)约束的是表中的所有字段,所以是基于表的, 而后者是基于列的。
Q4中TIMESTAMP是带日期的时间,也可以说是DATE和TIME的结合吧
Q6中EXIT和SUSPEND在执行式时都是跳到最后一个END语句上。而在选择式时SUSPEND将挂起存储过程的执行,直到下一个FETCH为止,并且输出参数传出,EXIT挑到最后一个END语句。
Q8中POST_EVENT是先前声明的一个事件,他的内容是字符串'new_order'。
Q9中CURSOR是游标,主要是用来FETCH一个一个取数据的。
Q10中WHERE ALTITUDE > 2500 WITH CHECK OPTION说明ALTITUDE字段要大于2500才有效。
我也仅知道这些希望对你有帮助,
http://expert.csdn.net/Expert/topic/2027/2027622.xml?temp=.0187189去下载看看吧

2,497

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧