数据库复习资料

数据库复习资料
《数据库系统概论》(第五版) 王珊 萨师煊编著

《数据库原理与技术》实验三 SQL语言的DDL
一、实验目的:命令语句方式完成数据库与数据表的设计与实现。
二、实验内容及要求:
1、启动数据库服务软件SQL Server 2008的查询分析器,用如下语句对表进行操作,详细的语法格式参看课本相应章节:
Create Table 建表
Drop Table 删除表
Alter Table 更改表
如下语句对索引进行操作,详细的语法格式参看课本相应章节:
Create Index 建立索引
Drop Index 删除索引

2、具体要求、步骤如下:
使用SQLServer查询分析器以语句方式创建数据库的方法所如下:
(1)在如图所示的界面中,单击工具栏的“新建查询(N)”,启动查询分析器(如图示)。

管理工作室的新建数据库GUI
(2)在如图所示的界面中,利用查询分析器,可以直接使用语句创建数据库、数据表和视图等。其具体方法如下:
◆在查询分析器中,直接输入SQL语句;
◆单击语句语法分析按钮“√”,检查分析SQL语句是否正确;
◆单击执行按钮“!执行(X)”,运行查询分析器中的语句序列。
创建数据库的语句格式:
CREATE DATABASE <数据库名>
[ON
( NAME = <数据表名>,
FILENAME = <盘符\路径\数据库存储名称>)
[LOG ON
( NAME = <日志文件名>,
FILENAME = <盘符\路径\日志文件存储名称>)]]
创建数据库学生选课的语句:
CREATE DATABASE 学生选课
ON
( NAME = ‘学生选课_dat’,
FILENAME = ‘D:\data\学生选课_dat.mdf’)
LOG ON
( NAME = ‘学生选课_Log’,
FILENAME = 'D:\data\学生选课_Log.ldf ')      或者
CREATE DATABASE 学生选课
ON
( NAME = ‘学生选课_dat’,
FILENAME = ‘D:\data\学生选课_dat.mdf’)       或者
CREATE DATABASE 学生选课
在默认存储设备的默认路径上,创建默认的逻辑数据库名称(学生选课.MDF)和逻辑日志名称(学生选课_LOG.LDF)的数据库学生选课。其默认路径如下:
C:\Program Files\Microsoft SQL Server\MSSQL\Data\学生选课.mdf
C:\Program Files\Microsoft SQL Server\MSSQL\Data\学生选课_log.ldf
注意:上述三个格式中,第一种格式,可以按照指定的逻辑数据库名称和逻辑日志名称,在指定存储设备的指定路径上创建数据库;第二种格式,可以按照指定的逻辑数据库名称和默认的逻辑日志名称(数据库名称_LOG.LDF),在指定存储设备的指定路径上创建数据库;第三种格式,可以按照默认的逻辑数据库名称(数据库名称.MDF)和逻辑日志名称(数据库名称_LOG.LDF),在默认存储设备的默认路径(C:\Program Files\Microsoft SQL Server\MSSQL\Data\)上创建数据库。
删除数据库的语句格式:
DROP DATABASE <数据库名>[,<数据库名>,…]
例如:建立数据库MyTestStudent,如果该数据库存在,则先删除,然后建立。
IF OBJECT_ID (‘MyTestStudent’) IS NOT NULL
SELECT OBJECT_NAME(OBJECT_ID(‘MyTestStudent’)) ‘对象名称’,
OBJECT_ID(‘MyTestStudent’) ‘对象ID’
DROP DATABASE MyTestStudent
GO
CREATE DATABASE MyTestStudent
说明:OBJECT_ID()函数用于返回对象的ID,若存在,则返回值为一个整数,否则为空值(NULL)。OBJECT_NAME()函数用于返回对象的名称,若存在,则返回值为一个名称字符串,否则为空串(“”)。输出对象的Id和名称可以使用如下SELECT语句:
SELECT <表达式>[,…,<表达式>]
创建数据表的语句格式:
CREATE TABLE <数据表名>
(<列名> <数据类型>[ <列级完整性约束条件> ]
[,<列名> <数据类型>[ <列级完整性约束条件>] ] …
[,<表级完整性约束条件> ])
说明:
<数据表名>:所要定义的数据表的名称;
<列名>:组成数据表的各个数据项的名称;
<列级完整性约束条件>:数据项的完整性约束条件;
<表级完整性约束条件>:数据表的完整性约束条件;
<数据类型>:数据项的数据类型。常用的数据类型如下表所示。
表1  SQL Server 2008常用数据类型
BIT, SMALLINT, INT, BIGINT 整型
MONEY, SMALLMONEY 货币型
FLOAT,REAL 浮点型
DATETIME, SMALLDATETIME 日期时间型
IMAGE 二进制图像型
CHAR(n) 长度为n的字符型
创建数据库学生选课的相应数据表Student、Course和SC的语句如下:
CREATE TABLE Student(
SNo   CHAR(10) PRIMARY KEY NOT NULL,
SName CHAR(20) NOT NULL,
SSex  CHAR(2),
SAge  INT)             或者
CREATE TABLE Student(
SNo   CHAR(10) PRIMARY KEY NOT NULL,
SName CHAR(20) NOT NULL,
SSex  CHAR(2),
SAge  INT CHECK (SAge>1 and SAge<100))        或者
CREATE TABLE Student(
SNo   CHAR(10) PRIMARY KEY NOT NULL,
SName CHAR(20) NOT NULL,
SSex  CHAR(2),
SAge  INT,
CONSTRAINT SAge1_100 CHECK (SAge>1 and SAge<100))      或者
CREATE TABLE Student(
SNo   CHAR(10) NOT NULL,
SName CHAR(20) CONSTRAINT SName_NotNull NOT NULL,
SSex  CHAR(2),
SAge  INT,
CONSTRAINT SNo_PK PRIMARY KEY(SNo),
CONSTRAINT SName_Unique UNIQUE(sname),
CONSTRAINT SAge1_100 CHECK (sage>1 and sage<100))      或者
CREATE TABLE Course(
CNo   CHAR(10) PRIMARY KEY NOT NULL,
CName CHAR(20) NOT NULL,
CCredit INT)                    或者
CREATE TABLE SC (
SNo CHAR(10) NOT NULL,
CNo CHAR(10) NOT NULL,
Grade FLOAT,
PRIMARY KEY (SNo, CNo),
FOREIGN KEY (SNo) REFERENCES Student(SNo),
FOREIGN KEY (CNo) REFERENCES Course(CNo))
注意:在创建数据表之前,先使用USE语句打开相应的数据库。或者在SQL Server的管理工作室的工具栏的“可用数据库”下拉列表框中,选择相应的数据库。
例如:打开数据库Student的语句为:USE Student
技巧:在创建数据表之前,如果该数据表已经存在,可以先使用OBJECT_ID检测其存在性,若非空,则可以先删除该数据表,然后再建立。具体实现方法如下:
例如:建立一个数据表MyTestStudent,即使该表存在,也可以建立。
– 测试数据表是否存在,如果若存在,则删除
IF OBJECT_ID (‘MyTestStudent’) IS NOT NULL
DROP TABLE MyTestStudent
GO
CREATE TABLE MyTestStudent(
SNo   CHAR(10) PRIMARY KEY NOT NULL,
SName CHAR(20) NOT NULL,
SSex  CHAR(2),
SAge  INT)
向数据表添加新数据项的语句格式:
ALTER TABLE <表名>
ADD <新列名> <数据类型> [ 完整性约束 ]
例如:向Student增加“注册时间”列,其数据类型为日期型。
ALTER TABLE Student ADD SEnrollment DATETIME
例如:向Student的SName增加唯一性约束。
ALTER TABLE Student ADD UNIQUE(SName)   或者
ALTER TABLE Student ADD CONSTRAINT Un_SName UNIQUE(SName)
修改数据表的数据项的语句格式:
ALTER TABLE <表名>
ALTER COLUMN <列名> <数据类型>
例如:修改Student的SAge的类型为SMALLINT。
ALTER TABLE Student ALTER COLUMN Sage SMALLINT
删除数据表的数据项的语句格式:
ALTER TABLE <表名>
DROP COLUMN <列名> | CONSTRAINT <约束名称>
例如:删除Student的数据项Senrollment。
ALTER TABLE Student DROP COLUMN Senrollment
删除数据表的数据项约束的语句格式:
ALTER TABLE <表名>
DROP CONSTRAINT <约束名称>
例如:删除Student的SName的唯一性约束。
ALTER TABLE Student DROP CONSTRAINT Un_SName
删除数据表的语句格式:
DROP TABLE <数据表名称>
例如:删除数据表Student。
DROP TABLE Student
删除数据库的语句格式:
DROP DATABASE <数据库名称>
例如:删除数据库Student。
DROP DATABASE Student
注意:在删除数据库之前,先关闭要删除的数据库。方法是使用USE打开另外一个数据库。
三、实验任务
1.打开数据库SQL Server 2008的查询分析器,用Create Table建表Student,course,sc。数据库的名称为“学生选课”,各个表结构如教材P79页所示。
以下要求用T-SQL来实现:

2.向表中填入教材P79数据。

3.向Student 表增加“入学时间”列(列名为Scome,日期型)
alter table Student1 add Scome datetime ;

4.将年龄的数据类型改为整型。
alter table Student1 alter column SAge int;
5. 为Student中sname添加列级完整性约束,不能为空。为Student中sno添加列级完整性约束,取值唯一,不能为空。
alter table Student1 add constraint sna check( SName is not null ) ;
6. 删除Student中sname列级完整性约束。
alter table Student1 drop constraint sna;
7.为SC建立按学号升序和课程号降序建立唯一索引。
create unique index s on SC1(SNo asc,CNo desc);
8. 建立Student、Course及SC的主码约束

9.建立 Student与SC、Course与SC之间的外码约束
10.实现学生性别只能是“男”或“女”的Check(检查)约束。

11.实现学生年龄只能小于等于30大于17的语义约束

  1. 用Create Index对表student的sname字段建立一个升序索引,索引名Indexs。
    create index Indexs on Student1(SName asc);
    13.用Drop Index删除索引Indexs。
    drop index Indexs on Student1;
  2. 修改表Student中的约束条件,要求学号在900000~999999之间,年龄小于40。

16.限制数据库课程最多60名学生选修。
17.限制每一门课程最多60名学生选修。
18、限制每学期每一门课程最多60名学生选修。

19.为Course表的Cname列增加一个唯一性约束。
20、删除Course表的Cname列唯一性约束。

以上实验完成后,请按照“姓名+学号+实验X.doc”为文件名存盘(被查),并将电子稿发至gdwu000@163.com.

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值