一、 实验目的:

(1)理解和掌握数据库DDL语言,能熟练地使用SQL DDL语句创建、修改和删除数据库、模式和基本表。
(2)掌握SQL语句常见语法错误的调试方法。

二、 实验内容:

教材3.3数据定义中例3.1至例3.11的要求操作,并截取相应的结果图

1、定义模式
模式定义语句:CREATE SCHEMA <模式名> AUTHORIZATION <用户名>
【例3.1】为用户LJY定义一个学生-课程模式S-T

结果为:
,在架构中可以找到
;但如果写成
的形式,即把双引号去掉,执行命令会出现错误

原因是SCHEMA的命名必须以“字母”,“”“@”,“#”开头,后跟“字母”,“”,“数字”,“$”,而“-”违反了SCHEMA的命名规则,所以系统才会报错,但是可以通过加双引号“”的方式来实现任意定义。

【例3.2】CREATE SCHEMA AUTHORIZATION LJY

该句没有指定<模式名>,所以<模式名>隐含为用户名LJY。但是在架构中却无法找到新的模式:GDM。这是因为SQLServer并没有实现这一功能,但是可以通过直接使用与自己的用户名相同的架构名来创建新模式。

【例3.3】为用户LJY创建一个模式TEST,并且在其中定义一个表TAB1。
用户可以在创建模式的同时在这个模式定义中进一步创建基本表、视图等。需要注意的是,上述语句必须一次执行,若分开执行,创建的表是dbo.TAB1,错误。执行命令成功,在架构中可以找到TEST,在表中可以找到TEST.TAB1此时便不能再用SELECT * FROM TAB1语句查询,会出现错误提示, 用查询语句SELECT *FROM TEST.TAB1可以显示成功创建的表的内容

2、删除模式
删除语句:DROP SCHEMA <模式名><CASADE|RESTRICI>;
CASEDE(级联):表示在删除模式的同时把该模式中的所有数据库对象全部删除。
RESTRICT(限制):表示如果该模式中已经定义了下属的数据库对象(如表、视图等),则拒绝删除语句的执行,只有当该模式中无任何下属的对象时才能执行删除语句。

【例3.4】DROP SCHEMA JG CASCADE

由于SQL Server中并未实现<cascade|restrict>功能,所以当执行
时,会出现
,所以删除模式可直接使用DROP SCHEMA JG即可。需要注意的是,当模式中有下属数据库对象时,是无法将其删除的。例如删除TEST模式(有下属对象—TAB1)。

3、 基本表的定义
基本表定义语句:CREATE TABLE <表名>(<列名><数据类型>[列级完整性约束条件]
[,<列名><数据结构>[列级完整性约束条件]]

[,表级完整性约束条件]);

【例3.5】建立一个“学生”表student。

SQL语言使用CREATE TABLE语句定义基本表,建表的同时通常还可以定义于该表有关的完整性约束条件,新建的表,默认位于dbo下,即dbo.student。使用查询语句后
【例3.6】建立一个“课程”表Course.

创建成功后使用查询语句可显示:
本例说明参照表和被参照表可以是同一个表。
【例3.7】建立学生选课表SC。

例3.5、例3.6和例3.7会建立如下三个表:
通过使用查询语句可显示:

4、 基本表的修改
修改语句:
ALTER TABLE<表名>
[ADD[COLUMN]<新列名><数据类型>[约束条件]]
[ADD<表级完整性约束>]
[DROP [COLUMN]<列名>[CASCADE|RESTRICT]]
[DROP CONSTRAN<完整性约束名>[RESTRICT|CASCADE]]

【例3.8】向Student表中添加“入学时间”,其数据类型为日期型。

执行结果:
ADD子句用于增加新列、新的列级完整性约束条件和新的表级完整性约束条件。不管基本表中原来是否有数据,新增加的列一律为空值。

【例3.9】将年龄的数据类型由字符型(假设原来的字符类型是字符型)改为整数

ALTER COLUMN子句用于修改原有的列定义,包括修改列名和数据类型。

【例3.10】增加课程名必须取唯一值的约束条件

查询后显示:
此时的课程名必须取唯一值。

5.基本表的删除删除语句:DROP TABLE <表名>[RESTRICT|CASCADE]

【例3.11】删除Student表

RESTRICT:即该表的删除时不能被其他表的约束条件所引用,不能能有视图,不能有触发器,不能有存储过程或函数等,否则将删除失败。
CASCADE:即该表的删除没有限制,再删除该表的同时,其相关联的依赖对象都将被一起删除。但是SQLServer并未实现这一功能,所以在执行语句时会出现错误提示:
【拓展】

执行报错:

SQLServer默认restrict,即如果欲删除的表被其他表正在引用,是无法直接删除的。直接删除时系统会报错,这是因为,Student表被SC表的约束引用,所以无法直接删除。需要先将表SC删除,然后再删除表Student.

CREATE DATABASE LJY  --创建数据库
USE LJY   --打开数据库
--定义模式时要键入用户名,所以要新建一个用户名,安全性-用户-新建用户-不带登录名的SQL用户--例3.1:为用户LJY定义一个学生-课程模式S-T
CREATE SCHEMA "S-T" AUTHORIZATION LJYCREATE SCHEMA S-T AUTHORIZATION LJY--例3.3:为用户LJY创建一个模式TEST,并且在其中定义一个表TAB1
CREATE  SCHEMA TEST AUTHORIZATION LJY
CREATE TABLE TAB1(COL1 SMALLINT,COL2 INT,COL3 CHAR(20),COL4 NUMERIC(10,3),COL5 DECIMAL(5,2));
SELECT * FROM  TAB1--例3.4:DROP SCHEMA JG CASCADE
CREATE SCHEMA JG AUTHORIZATION LJY
DROP SCHEMA JG CASCADE
DROP SCHEMA JG--例3.5:建立一个“学生”表student
CREATE TABLE Student(Sno CHAR(9 )PRIMARY KEY,  /*列级完整性约束条件,Sno是主码*/Sname CHAR(20)UNIQUE,   /*Sname取唯一值*/Ssex CHAR(2),Sage SMALLINT,Sdept CHAR(20));
SELECT *FROM Student--例3.6:建立一个“课程”表Course.
CREATE TABLE Course(Cno CHAR(4 ) PRIMARY KEY,/*列级完整性约束条件,Cno是主码*/Cname CHAR(40) NOT NULL,/*列级完整性约束条件,Cname不能取空值*/Cpno CHAR(4),            /*Cpno的含义是先修课*/Ccredit SMALLINT,FOREIGN KEY(Cpno) REFERENCES Course(Cno) /*表级完整性约束条件,Cpno是外码,被参照表是Course,被参照列是Cno*/);
SELECT *FROM Course--例3.7:建立学生选课表SC
CREATE TABLE SC(Sno CHAR(9),Cno CHAR(4),Grade SMALLINT,PRIMARY KEY(Sno,Cno),/*主码由两个属性构成,必须作为表级完整性进行定义*/FOREIGN KEY(Sno) REFERENCES Student (Sno),/*表级完整性约束条件,Sno是外码,被参照表是Student*/FOREIGN KEY(Cno) REFERENCES Course (Cno)/*表级完整性约束条件,Cno是外码,被参照表是Course*/);
SELECT *FROM SC--例3.8:向Student表中添加“入学时间”,其数据类型为日期型。
ALTER TABLE Student ADD S_entrance DATE;
SELECT *FROM Student--例3.9:将年龄的数据类型由字符型(假设原来的字符类型是字符型)改为整数。
ALTER TABLE Student ALTER COLUMN Sage INT--例3.10:增加课程名必须取唯一值的约束条件
ALTER TABLE Course ADD UNIQUE(Cname)
SELECT *FROM Course--例3.11:删除Student表
DROP TABLE Student CASCADE;DROP TABLE SC;
DROP TABLE Student;

数据库实验报告1数据库定义实验相关推荐

  1. access计算机实验报告,Access数据库实验报告

    Access数据库实验报告 <数据库及其应用> (课程编号:B0901000) 实验报告 (2013-2014学年第2学期) 实验成绩: 学 号: 姓 名: 专业班级: 课 堂 号: 任课 ...

  2. 计算机基础数据库实验报告,北航计算机软件技术基础实验报告实验报告4-2——数据库应用系统的开发...

    <北航计算机软件技术基础实验报告实验报告4-2--数据库应用系统的开发>由会员分享,可在线阅读,更多相关<北航计算机软件技术基础实验报告实验报告4-2--数据库应用系统的开发(10页 ...

  3. Java实验实现一个circle类,java实验报告-类的定义.doc

    java实验报告-类的定义 南京理工大学泰州科技学院 实验报告书 课程名称: <JAVA面向对象程序设计> 实验题目: 实验三 类的定义 班 级: 09计算机(2) 学 号: 090903 ...

  4. 淮海工学院linux实验报告三,作业三 实验报告

    作业三 实验报告 网络通信 文件传输 实验一 1-1 实验题目 服务器端和客户端各传递1次字符串.考虑到使用TCP协议,所以传递字符串前先以4字节整数型方式传递字符串长度.连接时服务器端和客户端数据传 ...

  5. 计算机组成原理实验报告西华大学,计算机组成原理实验报告算术逻辑运算单元实验...

    <计算机组成原理实验报告算术逻辑运算单元实验>由会员分享,可在线阅读,更多相关<计算机组成原理实验报告算术逻辑运算单元实验(6页珍藏版)>请在人人文库网上搜索. 1.西华大学数 ...

  6. 山东大学linux实验四CSDN,山东大学操作系统实验报告材料4进程同步实验

    <山东大学操作系统实验报告材料4进程同步实验>由会员分享,可在线阅读,更多相关<山东大学操作系统实验报告材料4进程同步实验(15页珍藏版)>请在人人文库网上搜索. 1.实用标准 ...

  7. c语言选择循环实验报告,C语言程序设计实验报告选择与循环结构程序设计.doc

    C语言程序设计实验报告选择与循环结构程序设计.doc 下载提示(请认真阅读)1.请仔细阅读文档,确保文档完整性,对于不预览.不比对内容而直接下载带来的问题本站不予受理. 2.下载的文档,不会出现我们的 ...

  8. 《c语言程序设计》实验报告,C语言程序设计实验实验报告_wenkub

    C语言程序设计实验实验报告_wenkub 2020-08-30 16:30:07 [导读]综合使用基本结构.基本算法.函数.指针.结构体.链表等知识设计程序.需要复习课本以前所学内容,浏览上课讲解的相 ...

  9. 计算机程序设计实验报告4答案,程序设计实验报告4

    篇2:<网络程序设计>教师实验报告 <网络程序设计>教师实验报告 本文关键词:实验,教师,报告,网络程序设计 <网络程序设计>教师实验报告 本文简介:<网络程 ...

  10. 苏州大学linux课程实验报告,苏州大学实验报告-定时溢出中断实验报告

    苏州大学实验报告-定时溢出中断实验报告 本文关键词:实验,报告,溢出,中断,定时 苏州大学实验报告-定时溢出中断实验报告 本文简介:苏州大学实验报告院.系年级专业姓名学号课程名称成绩指导教师同组实验者 ...

最新文章

  1. 关于在linux下清屏的几种技巧
  2. 知识图谱和图分析与可视化
  3. 润乾报表JSF FORM 标签中使用填报表解决方案
  4. boost::multiprecision模块mpfr相关的测试程序
  5. HihoCoder - 1831 - 80 Days(暴力)
  6. python的for语句中i未被定义_python – PyLint:使用可能未定义的循环变量警告
  7. python 短网址_Python实现短网址ShortUrl的Hash运算实例讲解
  8. FPGA常用FIFO简介
  9. STL--deque用法
  10. 程序人生之常见术语与名词解释
  11. linux ssh工具下载,ssh下载_ssh工具下载-太平洋下载中心
  12. 算法动态规划之杂交水果取名问题
  13. 弱电布线工程实战攻略
  14. 【机器学习】22个开源的机器学习库,帮助您选择一个适合您的管道工具。
  15. 概率论02-概率,古典概型
  16. java 判断String是不是Long类型
  17. 阿里业务中台到底是什么样子
  18. http://39.98.219.132 题库标准答案(题库序号:615)之二分查找
  19. 细细品味C#——重构的艺术
  20. 如何赚到20万人民币

热门文章

  1. base64格式的pdf预览
  2. 【博主推荐】html好看的拼图验证码(附源码)
  3. 微正MZFinger指纹识别算法
  4. 生物统计学(biostatistics)学习笔记(三)
  5. Golang学习之路(一):Golang安装和配置
  6. 【愚公系列】2022年02月 Django商城项目 26-搜索引擎功能实现
  7. Flash 加密和破解
  8. Adobe Flash Player不是最新版本,导致视频无法播放?
  9. Python使用matplotlib绘制龟兔赛跑中兔子和乌龟的行走轨迹
  10. 抓包工具charles下载安装(破解版)