
《数据库应用技术》课程的综合应用题一般考查关系表的创建,数据的简单查询、多表查询、数据更改语句等。其中使用SQL语言创建表是我们复习的重点,往年真题及解析如下:
【往年真题】
写出创建如下三张表的SQL语句。
(1)“项目”表结构:
项目号:普通编码定长字符类型,长度为10,主键。
项目名:统一编码可变长字符类型,长度为10,非空。
类别:统一编码定长字符类型,长度为2,取值范围为:{田径,游泳,体操}。
(2)“运动员”表结构;
运动员号:普通编码定长字符类型,长度为18,主键。
运动员名:统一编码可变长字符类型,长度为10,非空。
性别:统一编码定长字符类型,长度为1。
出生日期:日期型。
(3)“比赛”表结构:
项目号:普通编码定长字符类型,长度为10,引用“项目”表的外键。
运动员号:普通编码定长字符类型,长度为18,引用“运动员”表的外键。
比赛日期:日期型,默认值为系统当前日期。
比赛名次:整型。
主键:(项目号,运动员号,比赛日期)。
【参考答案】
(1)CREATE TABLE 项目(
项目号 CHAR(10) PRIMARY KEY,
项目名 NVARCHAR(10) NOT NULL,
类别 NCHAR(2) CHECK(类别 IN(‘田径’,‘游泳’,‘体操’))
)
(2)CREATE TABLE 运动员(
运动号 CHAR(18) PRIMARY KEY,
运动员名 NVARCHAR(10) NOT NULL,
性别 NCHAR(1),
出生日期 DATE
)
(3)CREATE TABLE 比赛(
项目号 CHAR(10) ,
运动员号 CHAR(18),
比赛日期 DATE DEFAULT GETDATE( ),
比赛名次 INT,
PRIMARY KEY(项目号,运动员号,比赛日期),
FOREIGN KEY(项目号) REFERENCES 项目(项目号),
FOREIGN KEY(运动员号) REFERENCES 运动员(运动员号)
)
【题目解析】
本题考查关系表的创建,解题的关键是掌握创建表的语句格式。定义关系表使用SQL语言数据定义功能中的CREATE TABLE语句实现,其一般格式为:
CREATE TABLE <表名>(
<列名> <数据类型> [列级完整性约束定义]
{, <列名> <数据类型> [列级完整性约束定义]…n}
[, 表级完整性约束定义]
[, ...n ] )
上述语句用到的<>、[ ]、{ }是文法描述的常用符号,不是SQL语句的部分, < >中为必须指定的内容,[ ]中为可选的内容。花括号({ })与省略号(…)一起,表示其中的内容可以出现0次或多次。
<表名>是所要定义的表的名字。
<列名>是表中所包含的属性列的名字。
<数据类型>指明列的数据类型。常用的数据类型有(N代表字符串的长度):
整型:INT; 日期型:DATE;
普通编码定长字符类型:CHAR(N);
普通编码可变字符类型:VARCHAR(N);
统一编码定长字符类型:NCHAR(N);
统一编码可变字符类型:NVARCHAR(N)。
可定义的完整性约束包括:
NOT NULL:限制列取值非空。
DEFAULT:指定列的默认值。
CHECK:定义列的取值范围,定义CHECK约束的语法格式为:
CHECK(逻辑表达式)
PRIMARY KEY:定义主键约束,其语法格式为:
PRIMARY KEY[(<列名>[,…n])]
如果是在列级完整性约束处定义单列的主键,则可省略方括号部分。
FOREIGN KEY:定义外键约束,其语法格式为:
[FOREIGN KEY(<列名>)] REFERENCES <被参照表名> (<被参照列名>)
如果是在列级完整性约束处定义单列的外键,则可省略方括号部分。
我们在理解创建表的一般格式的基础上,再结合题干,即可写出创建表的SQL语句。




