实验一创建数据库及关系表数据完整性约束精编版
MySQL数据库的数据完整性与约束设置
MySQL数据库的数据完整性与约束设置引言MySQL数据库是一种流行的关系型数据库管理系统,广泛应用于各种业务领域。
数据完整性是数据库的重要特性之一,它保证数据库中的数据能够符合预期的要求,有效地避免了数据的冗余和错误。
本文将探讨MySQL数据库中的数据完整性和约束设置,并介绍如何在数据库设计和操作中充分利用这些功能。
数据完整性的概念和意义数据完整性是指数据库中的数据满足各项约束条件,不出现意外的错误和矛盾。
它保证了数据的准确性和一致性,提高了数据处理的效率和可靠性。
数据完整性主要包括实体完整性、域完整性、参照完整性和用户自定义完整性等方面。
实体完整性是指数据库表中的每个记录都能够唯一地标识一个实体。
在MySQL中,可以通过定义主键来确保实体的唯一性。
主键是一列或多列组成的标识符,它可以用于唯一地标识每条记录,并保证表中不会出现重复的数据。
通过主键的使用,可以避免数据冗余和不一致的问题。
域完整性是指每个数据字段的值必须符合规定的域范围和约束条件。
在MySQL中,可以通过定义列的数据类型、长度和默认值等属性来保证域完整性。
例如,如果一个字段的数据类型为整数类型,那么它的值就只能是整数,而不能是字符串或其他类型的数据。
通过域完整性的设置,可以有效控制数据的类型和范围,避免了无效数据的存储。
参照完整性是指数据库中的外键和参照表之间的关联关系不能被破坏。
在MySQL中,可以通过定义外键来保证参照完整性。
外键是指一个表中的一个字段引用了另一个表中的字段,这样可以建立起两个表之间的关联关系。
通过外键的使用,可以防止无效的外键引用和关联表的数据不一致,确保数据的一致性和有效性。
用户自定义完整性是指根据具体业务需求,定义一些适合自己业务规则的完整性约束。
在MySQL中,可以通过定义触发器、存储过程和视图等对象来实现用户自定义完整性。
触发器可以在数据插入、更新或删除时触发一系列操作,从而对数据进行特定的验证和处理。
建立表和定义完整性约束、数据操作 实验报告模板
经济管理学院财务管理专业协作者______________ 教师评定_____________实验题目建立表和定义完整性约束、数据操作一、实验目的与实验方法本实验课程的目的:本实验课程的实验方法:二、实验要求1.用CREATE DATABSE命令建立数据库2.用CREATE SCHEMA命令创建模式(自己命名模式名称)3.在定义的模式下,参照教材内容,使用SQL语言创建教材P43—P44面的样本数据库及定义完整性约束4.使用Insert命令完成记录的插入操作,要求分别设计若干违反实体完整性、参照完整性和用户自定义完整性的插入操作,并分析原因。
三、实验结果和数据1.用CREATE DATABSE命令建立数据库2.用CREATE SCHEMA命令创建模式(自己命名模式名称)3.在定义的模式下,参照教材内容,使用SQL语言创建教材P43—P44面的样本数据库及定义完整性约束4.使用Insert命令完成记录的插入操作,要求分别设计若干违反实体完整性、参照完整性和用户自定义完整性的插入操作,并分析原因。
违反实体完整性:违反参照完整性:在执行插入操作时,系统会自动计算院系系列值是7,而院系列参照院系表的编号值,此时在院系表中找不到编号为7的院系。
所以插入操作失败。
违反用户自定义完整性:结果是违反了unique约束,因为院系表名称不允许重复,而名称为“经济管理学院”的院系已经存在,所以不成功。
四、问题与讨论在创建的过程中没有注意括号是用英文括号还是中文括号,所以出现了错误。
应该使用英文括号的。
在同一个数据库中是不能同时创建两个相同的对象的。
心得体会:数据库是一门很难学的课程,而且,我在平时比较少关注这方面的东西,所以,我在做这个实验的时候就觉得十分的困难。
很多的时候我都需要别人的帮助。
我是一个比较粗心的人,因此,我在做这个实验的时候没有留意输入的时候要用英文符号,要加空格。
所以,我总是出现错误,让我觉得很烦恼。
数据完整性实验报告
实验名称:数据完整性验证实验实验日期:2023年4月10日实验地点:XX大学计算机实验室实验目的:1. 了解数据完整性的概念和重要性。
2. 掌握数据完整性验证的方法和工具。
3. 提高对数据质量控制和数据管理的认识。
实验原理:数据完整性是指数据的准确、一致和可靠。
在数据管理过程中,数据完整性是保证数据质量的基础。
数据完整性验证是指通过各种方法对数据进行检查,确保数据的准确性和一致性。
实验器材:1. 实验计算机:一台配置较高的计算机,用于运行数据完整性验证工具。
2. 数据库管理系统:如MySQL、Oracle等,用于存储实验数据。
3. 数据完整性验证工具:如SQL Profiler、DataGrip等,用于检测数据完整性问题。
实验步骤:1. 数据准备(1)创建一个数据库,并在数据库中创建一个表,用于存储实验数据。
(2)向表中插入一些数据,包括正常数据和异常数据。
2. 数据完整性验证(1)使用SQL Profiler工具对数据库进行数据完整性验证。
(2)在SQL Profiler中配置监控参数,如监控类型、监控对象等。
(3)启动SQL Profiler,运行数据库操作,如插入、更新、删除等。
(4)观察SQL Profiler的输出结果,检查数据是否发生异常。
3. 结果分析(1)分析SQL Profiler的输出结果,找出数据完整性问题。
(2)根据问题类型,提出解决方案。
实验结果:1. 数据完整性问题(1)在插入异常数据时,发现部分数据未满足数据类型约束。
(2)在更新数据时,发现部分数据未满足唯一性约束。
2. 解决方案(1)针对数据类型约束问题,修改数据类型,确保数据满足约束条件。
(2)针对唯一性约束问题,修改数据,确保数据满足唯一性条件。
实验结论:1. 数据完整性验证对于保证数据质量至关重要。
2. 使用SQL Profiler等工具可以有效检测数据完整性问题。
3. 通过数据完整性验证,可以及时发现并解决数据质量问题,提高数据管理水平。
数据库实验报告 表和数据完整性
Address nchar(30) not null
)ON PRIMARY
(3)设置book表中的book_id为主键,author表中的book_id为外键:
Alter table dbo.author with check
Add constraint fk_book_author foreign key(book_id)
(3)利用update语句为表booksales更新数据:
Update booksales set sellnum = 11
Where book_id = ‘m00011’
3.利用Transact-SQL语句为表booksales中的销售数量列sellnum创建规则“sellnum>=0”,并绑定规则到列sellnum。
References dbo.book(book_id)
(4)创建两个表的关系的步骤如下:
在author表的设计器界面右击book_id列,在弹出的菜单中执行“关系”命令,弹出如图3.1所示的“外键关系”对话框。
2.在test01数据库中利用Transact-SQL语句创建一图书销售表booksales(book_id nchar (6),sellnum int,selldate datetime )。分别利用insert、delete、update语句添加、删除和更新数据。
Price numeric(10,2)null,
Constraint pk_book primary key clustered
(book_id ASC )
)on primary
(2)创建表author的Transact_SQL语句:
数据库和表数据库表的基本操作和表级约束约束条件-实验报告
《数据库系统概论》实验报告题目:实验一 数据库和表数据库/表的基本操作和表级约束约束条件姓名 班级 学号 日期2010.9.29一. 实验内容和步骤结果1.在Student 数据库中,利用图形用户界面,创建一个选修了数据库课程并且是1986年出生的学生的视图,视图中包括学号,性别,成绩这三个信息:2.用两种不同的SQL 语句创建课本128页第11题中要求的视图(视图名:V_SPJ ) 方法一:CREATE VIEW V_SPJ ASSELECT SNO ,PNO ,QTY FROM SPJ WHERE JNO in( SELECT JNO FROM J 表WHERE JNAME ='三建')方法二:CREATE VIEW V_SPJASSELECT SNO,PNO,QTYFROM SPJ,J表WHERE SPJ.JNO=J表.JNO ANDJNAME='三建'3.用SQL语句完成课本128页第11题中对视图V_SPJ的查询(1)SELECT PNO,QTYFROM V_SPJ(2)SELECT PNO,QTY FROM V_SPJWHERE SNO='S1'4.用T-SQL语句操作视图的数据。
(15分,每题5分)(1) 给视图V_SPJ中增加一条数据(基本表中有插入的数据即可)。
INSERTINTO V_SPJVALUES('S0','P0','100')(2)修改视图V_SPJ中的任意一条数据的供应数量。
UPDATE V_SPJSET QTY=10WHERE SNO='S1'ANDPNO='P1'(3)删除视图V_SPJ中的任意一条数据。
DELETEFROM V_SPJWHERE SNO='S1';5.在图形用户界面中创建新登录名以及用户。
(20分,每题10分)(1)对于数据库company创建P148页第 8题中所需要用到的各个用户以及相关的关的登录名。
(完整版)数据库实验报告
数据库实验报告姓名学号目录一.实验标题:2二.实验目的:2三.实验内容:2四.上机软件:3五.实验步骤:3(一)SQL Server 2016简介3(二)创建数据库 4(三)创建数据库表 7(四)添加数据17六.分析与讨论: 19一.实验标题:创建数据库和数据表二.实验目的:1.理解数据库、数据表、约束等相关概念;2.掌握创建数据库的T-SQL命令;3.掌握创建和修改数据表的T-SQL命令;4.掌握创建数据表中约束的T-SQL命令和方法;5.掌握向数据表中添加数据的T-SQL命令和方法三.实验内容:1.打开“我的电脑”或“资源管理器”,在磁盘空间以自己的姓名或学号建立文件夹;2.在SQL Server Management Studio中,使用create database命令建立“学生-选课”数据库,数据库文件存储在步骤1建立的文件夹下,数据库文件名称自由定义;3.在建立的“学生-选课”数据库中建立学生、课程和选课三张表,其结构及约束条件如表所示,要求为属性选择合适的数据长度;4.添加具体数据;四.上机软件:SQL Server 2016五.实验步骤:(一)SQL Server 2016简介1.SQL Server 2016的界面2.启动和退出SQL Server 20161)双击图标,即出现SQL Server2016的初始界2)选择“文件”菜单中的“退出”命令,或单击控制按钮中的“×”即可注意事项:1.在退出SQL Server 2016之前,应先将已经打开的数据库进行保存,2.如果没有执行保存命令,系统会自动出现保存提示框,根据需要选择相应的操作(二)创建数据库方法一:1.点击“新建查询”,出现如下对话框2.在空白区域输入创建数据库“学生选课”的代码命令,点击“执行”3.消息框中出现“命令已成功完成”即表示数据库创建成功,在“对象资源管理器”中,右击“数据库”,打开快捷菜单,选择“刷新”命令,在“数据库”向下会出现新创建的数据库“学生选课”方法二:1.右击数据库,在弹出的快捷菜单中选择“新建”2.在弹出的对话框中输入“学生选课”3. 在“对象资源管理器”中,右击“数据库”,打开快捷菜单,选择“刷新”命令,在“数据库”向下会出现新创建的数据库“学生选课”注意事项:数据库名称在服务器中必须唯一,并且符合标识符的规则(三)创建数据库表1.左键点击“学生选课”数据库,再点击“新建查询”,在出现的空白对话框中输入如图代码后点击“执行”,消息框中出现“命令已成功执行”即成功建立好学生、课程、选课三张表2.建立成功后的表格如图所示注意事项:1.T-SQL中创建数据库表的指令格式为:Create table 表名(字段名1 数据类型{identify | not null | null},字段名2 数据类型{identify | not null | null},……)null表示该字段的值可以为控制,空值意味着没有任何存储数据,这是默认参数,当所定义的字段允许空值时,参数null可以忽略not null表示该字段的值不能为空值identify称为计数器,表示该字段的值是一组递增的证书数据。
数据库实验报告
数据库实验报告实验⼀创建数据库及关系表⼀、实验⽬的1. 掌握SQL Server数据库管理系统的使⽤,能够中该环境中进⾏⽇常数据库操作;2. 掌握在SQL Server中使⽤图形化⼯具创建数据库的⽅法;3.掌握建⽴关系表的语句,掌握定义主码约束及外码约束的语句;4.掌握修改表结构的语句。
⼆、实验要求1.了解SQL Server数据库的组成,会使⽤图形化⼯具创建数据库。
2.编写建⽴表及主、外码约束的T-SQL语句,并执⾏这些语句,在数据库中建⽴符合要求的关系表。
3.编写修改表结构的语句。
三、实验内容和步骤1.创建符合如下条件的数据库:数据库的名字为:Students数据⽂件的逻辑⽂件名为:Students_dat,存放在D:\Test录下(若D:盘中⽆此⼦⽬录,可先建⽴此⽬录,然后再创建数据库。
);⽂件的初始⼤⼩为:5MB;增长⽅式为⾃动增长,每次增加1MB。
⽇志⽂件的逻辑⽂件名字为:Students_log,也存放在D:\Test⽬录下;⽇志⽂件的初始⼤⼩为:2MB;⽇志⽂件的增长⽅式为⾃动增长,每次增加10%。
2.在已建⽴的Students数据库中,写出创建满⾜下述条件的四张表的SQL 语句,并查看执⾏结果。
Teacher表结构Create table student (Sno char(7)primary key,Sname nchar(10)not null,Ssex nchar(2),Sage tinyint,Sdept nvarchar(20),Spec char(10))create table course(Cno char(10),Cname nvarchar(20)not null,Credit int,Semester tinyint,Primary key(Cno))create table sc(Sno char(7)not null,Cno char(10)not null,Grade tinyint,primary key(Sno,Cno),foreign key(Sno )references Student(Sno), foreign key(Cno )references Course(Cno), ) create table teacher(Tno char(8)not null,Tname char(10)not null,Dept nvarchar(20),Salary numeric(6,2),Birthery smalldatetime)执⾏结果:2.写出实现如下操作的SQL语句,并查看执⾏结果:(1)在SC表中添加⼀个新的修课类别列:列名为:XKLB,类型为char(4)。
数据库的完整性实验报告
数据库的完整性实验报告数据库的完整性实验报告引言:数据库的完整性是指数据库中存储的数据必须满足预定的一致性要求,包括实体完整性、域完整性、参照完整性和用户定义的完整性。
本实验旨在通过设计一个简单的数据库,并通过实际操作验证其完整性。
一、实验目的本实验的目的是通过设计和操作数据库,了解数据库的完整性概念,并掌握如何保证数据的完整性。
二、实验环境本实验使用MySQL数据库管理系统,并在Windows操作系统上进行实验。
三、实验步骤1. 创建数据库首先,我们需要创建一个数据库来存储我们的数据。
在MySQL中,可以使用以下命令创建一个新的数据库:```CREATE DATABASE integrity;```2. 创建数据表接下来,我们需要创建一个数据表来存储我们的数据。
假设我们要创建一个学生信息表,包括学生的学号、姓名和年龄。
可以使用以下命令创建该表:```USE integrity;CREATE TABLE students (id INT PRIMARY KEY,name VARCHAR(50),age INT);```3. 插入数据现在,我们可以向刚刚创建的数据表中插入一些数据。
例如,我们可以插入几个学生的信息:```INSERT INTO students (id, name, age) VALUES (1, '张三', 20);INSERT INTO students (id, name, age) VALUES (2, '李四', 22);INSERT INTO students (id, name, age) VALUES (3, '王五', 21);```4. 实体完整性实体完整性是指每个实体都必须具有一个唯一的标识符。
在我们的学生信息表中,学生的学号是唯一的标识符。
为了保证实体完整性,我们可以在创建表时使用PRIMARY KEY约束来定义学号为主键:```CREATE TABLE students (id INT PRIMARY KEY,name VARCHAR(50),age INT);```这样,如果有重复的学号插入到表中,系统会报错并拒绝插入。
数据库原理实验一-数据库和表的创建与管理
一.实验内容、步骤以及结果1.利用图形用户界面创建,备份,删除和还原数据库和数据表(1)创建SPJ数据库,初始大小为 10MB,最大为50MB,数据库自动增长,增长方式是按5%比例增长;日志文件初始为2MB,最大可增长到5MB,按1MB增长。
数据库的逻辑文件名和物理文件名均采用默认值。
(2)在SPJ数据库中创建如图2.1-图2.4的四张表(3)备份数据库SPJ(第一种方法):备份成一个扩展名为bak的文件。
(提示:最好先删除系统默认的备份文件名,然后添加自己指定的备份文件名)(4)备份数据库SPJ(第二种方法):将SPJ数据库定义时使用的文件(扩展名为mdf,ldf的数据文件、日志文件等)复制到其他文件夹进行备份。
(5) 删除已经创建的工程项目表(J表)。
(6) 删除SPJ数据库。
(可以在系统默认的数据存储文件夹下查看此时SPJ数据库对应的mdf,ldf文件是否存在)(7) 利用备份过的bak备份文件还原刚才删除的SPJ数据库.(还原数据库)(8) 利用备份过的mdf,ldf的备份文件还原刚才删除的SPJ数据库。
(附加)(9)将SPJ数据库的文件大小修改为100MB。
(10) 修改S表,增加一个联系电话的字段sPhoneNo,数据类型为字符串类型。
2。
利用SQL语言创建和删除数据库和数据表(1)用SQL语句创建如图2.5—图2.7要求的数据库Student, 初始大小为20MB,最大为100MB,数据库自动增长,增长方式是按10M兆字节增长;日志文件初始为2MB,最大可增长到5MB,按1MB增长。
数据库的逻辑文件名和物理文件名,日志文件名请自定义。
(2) 用SQL语句创建上述的三张表,各个字段的数据类型请自己确定,每张表只要有主键约束即可,不要其他约束.不用输入数据。
(3)用SQL中的backup 语句将数据库Student备份到一个bak文件。
(提示:backup database student to disk)——备份:BACKUP DATABASE ”student”TO DISK ='C:\lzcDB1\mybak1015.bak’(4)用SQL语句删除创建的表。
创建数据库表和完整性资料
在对象资源管理器中, 右击student表,选择 “打开表”,可以操 纵表中数据。
数据录入
Student
学 号 Sno 200215121 200215122 200215123 200515125 姓 名 Sname 李勇 刘晨 王敏 张立 性 别 Ssex 男 女 女 男 年 龄 Sage 20 19 18 19 所在系 Sdept CS CS MA IS
1 6 7
6
注意:Cpno的录入比较特殊
创建表:sc
列名 Sno Cno Grade 数据类型 Char(10) Char(4) float 允许空值
不选 不选 选中 主键
备注
外键 外键
设置主键ቤተ መጻሕፍቲ ባይዱ
选中Sno ,按下Shift键的同时再选中Cno;然 后右击鼠标,选择“设置主键”。
设置外键
数据录入
SC
学号 Sno 200215121 200215121 200215121 200215122 200215122 课程号 Cno 1 2 3 2 3 成绩 Grade 92 85 88 90 80
6、分离、附加数据库
创建表:course
列名 Cno Cname 数据类型 Char(4) Varchar(40) 不选 选中 允许空值 主键 备注
Cpno
Ccredit
Char (4)
Smallint
选中
选中
外键
只能取1,2,3,4
创建方式同student
设置自定义的约束
右击ccredit,选择“check约束”,单击添加,在 打开的窗口里输入表达式。
设置外键
先保存course表,单击 “表设计器”菜单,选择“关系”, 打开下图。
数据库完整性实验报告
数据库完整性实验报告引言数据库完整性是数据库管理系统中的一个重要概念,用于确保数据库中数据的准确性、有效性和一致性。
本实验旨在通过设计和实现一系列完整性约束,来验证数据库完整性的实际应用。
实验目标本实验的目标是设计并实现以下几种完整性约束:1.实体完整性约束2.参照完整性约束3.用户自定义完整性约束实验环境本实验使用了以下工具和环境:•数据库管理系统:MySQL•编程语言:Python•集成开发环境:Jupyter Notebook实验步骤步骤一:数据库设计首先,我们需要设计一个符合实验需求的数据库。
我们选择一个简单的学生管理系统作为示例,包含以下两个实体:1.学生(Student):包含学生的学号、姓名和年龄。
2.课程(Course):包含课程的课程号、课程名和学分。
步骤二:实体完整性约束实体完整性约束用于保证每个实体在数据库中都有唯一的标识。
在本实验中,我们将为学生实体添加一个主键约束,保证每个学生的学号是唯一的。
CREATE TABLE Student (id INT PRIMARY KEY,name VARCHAR(50),age INT);步骤三:参照完整性约束参照完整性约束用于保证关系数据库中的引用一致性。
在本实验中,我们将为课程实体添加一个外键约束,引用学生实体的主键。
CREATE TABLE Course (id INT PRIMARY KEY,name VARCHAR(50),credits INT,student_id INT,FOREIGN KEY (student_id) REFERENCES Student(id));步骤四:用户自定义完整性约束用户自定义完整性约束是根据具体业务需求自定义的约束条件。
在本实验中,我们将为课程实体添加一个自定义约束,保证学分必须大于等于0。
ALTER TABLE CourseADD CONSTRAINT chk_credits CHECK (credits >=0);实验结果通过以上步骤,我们已经成功设计并实现了实体完整性约束、参照完整性约束和用户自定义完整性约束。
数据库完整性实验报告
数据库完整性实验报告第一篇:数据库完整性实验报告实验报告一、实验题目数据库完整性二、实验要求1)建立一个被参照关系test_main,其中id为主键。
.CREATE TABLE test_main(idINT, valueVARCHAR(10), PRIMARY KEY(id));2)建立一个参照关系test_sub,其中id为主键。
CREATE TABLE test_sub(idINT, main_id INT, valueVARCHAR(10), PRIMARY KEY(id));3)使用如下SQL语句插入数据--插入测试主表数据.INSERT INTO test_main(id, value)VALUES(1, 'ONE');INSERT INTO test_main(id, value)VALUES(2, 'TWO');--插入测试子表数据.INSERT INTO test_sub(id, main_id, value)VALUES(1, 1, 'ONEONE');INSERT INTO test_sub(id, main_id, value)VALUES(2, 2, 'TWOTWO');4)使用add constraint语句建立test_ sub表main_id到test_main表id的外键约束 5)删除test_main表中id=1的记录 6)测试完毕后,删除外键约束重新建立外键约束,要求删除主表的记录时候,同时删除子表中相应引用它的记录7)重新尝试第5步中的操作,之后检索test_sub 表,会出现什么结果?测试完毕后,删除外键约束8)重新建立外键约束,要求更新主表的主键时候,同时更新子表外键9)测试更新主表数据,将id=1的记录的id值设为5。
检查test_sub表中的数据是否被同步更新,测试完毕后,删除外键约束10)再次创建外键约束,要求删除主表的时候,同时将子表的main_id 设置为 NULL 11)测试删除主表test_main中id=2的数据,测试检索子表test_sub 测试完毕后,删除外键约束三、实验内容1)CREATE TABLE test_main(idINT, valueVARCHAR(10), PRIMARY KEY(id));2)CREATE TABLE test_sub(idINT, main_id INT, valueVARCHAR(10), PRIMARY KEY(id));3)INSERT INTO test_main(id, value)VALUES(1, 'ONE');INSERT INTO test_main(id, value)VALUES(2, 'TWO');INSERT INTO test_sub(id, main_id, value)VALUES(1, 1, 'ONEONE');INSERT INTO test_sub(id, main_id, value)VALUES(2, 2, 'TWOTWO');4)ALTER TABLE test_subADD CONSTRAINT main_id_cons FOREIGN KEY(main_id)REFERENCES test_main(id);5)delete from test_main where id='1' 无法执行6)alter table test_subdrop constraint main_id_consALTER TABLE test_subADD CONSTRAINT main_id_cons FOREIGN KEY(main_id)REFERENCES test_main(id)on delete cascade;7)delete from test_main where id='1';结果是test_main,和test_sub中的id=1的都被删除了altertable test_subdrop constraintmain_id_cons;8)首先我把上面操作所删除的加上了INSERT INTO test_main(id, value)VALUES(1, 'ONE');INSERT INTO test_sub(id, main_id, value)VALUES(1, 1, 'ONEONE');ALTER TABLE test_subADD CONSTRAINT main_id_cons FOREIGN KEY(main_id)REFERENCES test_main(id)on update cascade;9)update test_main set id='5' where id='1' 结果是main_id也变为了5。
数据库实验第一次实验报告
《数据库系统概论》实验报告姓名:专业班级:学号:实验1:创建表和实施数据完整性1.运行给定的SQL Script,建立数据库GlobalToyz2、了解表的结构。
3利用系统预定义的存储过程sp_helpdb 查看数据库的相关信息,例如所有者、大小、创建日期等CategorycCategoryId cCategory vDescriptionCountrycCountryId cCountryOrderDetailcOrderNo cToyId siQty cGiftWrap cWrapperId vMessage m OrderscOrderNo dOrderDate cCartId cShopperId cShippingModeId m m cOrderProcessed m dExpDelDatePickOfMonthcToyId siMonth iYear iTotalSoldRecipientcOrderNo vFirstNam vLastNam vAddress cCity cState cCountryId cZipCode cPhoneShipmentcOrderNo dShipm cDeliveryStatus dActualDeliveryDateShippingModecModeId cMode iMaxDelDaysShippingRatecCountryID cModeIdm ShoppercShopperId cPassword vFirstNam vLastNam vEm vAddresscCity cState cCountryId cZipCode cPhonecCreditCardNo vCreditCardType dExpiryDateShoppingCartcCartId cToyId siQtyToyBrandcBrandId cBrandNam ToyscToyId vToyNam vToyDescription cCategoryId m cBrandId im siToyQoh siLowerAge siUpperAge siToyWeight vToyIm WrappercWrapperId vDescription m im vWrapperIm4.利用系统预定义的存储过程sp_helpconstraint查看所有表中出现的约束(包括Primary key, Foreign key, check constraint, default, unique)5.对表Toys实施下面数据完整性规则:(1)玩具的现有数量应在0到200之间;(2)玩具适宜的最低年龄缺省为1。
数据库实验6 -数据完整性约束(表约束)
实验六数据完整性约束姓名:学号:专业:网络工程班级:20网络工程同组人:无实验日期:2022.5【实验目的与要求】1.熟练掌握实体完整性的实现。
2.熟练掌握参照完整性的实现。
3.熟练掌握域完整性的实现。
【实验内容与步骤】实验准备:(1)对于SalesDB数据库,若在产品表、销售表和客户表上已有约束,请先删除之;(2)删除掉表中重复的行。
6.1.实体完整性的实现(1) 对产品表,定义主键约束(用企业管理器实现)。
写出相应过程:(1)在对象资源管理器中的数据库节点下找到数据库SalesDB,找到表Product。
右击-修改(2)按住Ctrl键选中Price和Stocks,右键-设置主键-保存测试:试着对产品表插入一条与原表中数据行具有相同主键值的数据。
给出测试结果:(2)客户表(CUSTOMER),定义名为PK_Cstm的主键约束,设定客户号(Cno)为主键。
(用SQL语句实现,写出相应语句)。
给出相应的SQL语句:alter table Customeraddconstraint PK_Cstm primary key(Cno)给出测试结果:(3)对销售表,定义名为PK_Sales的主键约束,设定主键为(Pno,Cno)的组合(用SQL语句实现,写出相应语句)。
给出相应的SQL语句:alter table Salesaddconstraint PK_Sales primary key(Pno,Cno)给出测试结果:(1)利用企业管理器建立产品表(Product)与销售表(Sales)之间的参照关系,当对主表产品表进行更新和删除操作时,从表Sales采用NO ACTION方式,写出其过程。
给出相应的过程:测试:试着删除主表中与从表有关联的一条记录,而后分别查看主表和从表中数据记录,给出测试结果。
(2)利用SQL语句建立销售表(SALES)与客户表(CUSTOMER)之间的参照关系,设定外键约束名为FK_SC,使得当对主表客户表(CUSTOMER)进行更新和删除操作时,从表销售表(SALES)采用CASCADE(级联)方式处理,给出相应的SQL语句和测试结果。
实验一创建数据库及表的创建与管理
实验1创建数据库及表的创建与管理一、实验目的与要求1、掌握使用T-SQL语句创建数据库、数据表和`数据表完整性约束的定义。
2、熟悉表的结构和列所使用的数据类型。
3、理解数据表完整性含义及其定义的方法。
二、实验平台1、操作系统:Windows XP或Windows 20032、数据库管理系统:SQL Server 2005三、实验内容(一)数据库创建与管理创建一个“教务管理系统”数据库,并将下列表创建在该数据库中(二)在“教务管理系统”数据库钟实现表的创建与完整性定义StudentInfo(学生信息表)TeacherInfo(教师信息表)CourseInfo(课程信息表)StudentCourse(学生选课表)Teaching(教学表)RankPayment(职称课酬表)1、使用T-SQL语句创建以上数据表。
同时定义主键约束:StudentInfo表主键Sno;TeacherInfo表主键Tno;CourseInfo表主键Cno;RankPayment表主键Trank。
2、使用T-SQL语句定义以上数据表的其他约束①对StudentInfo表的Sname进行唯一性约束(unique约束),约束名称为S1。
②对CourseInfo表的Cname进行唯一性约束(unique约束)。
③对StudentCourse表定义外键约束:Sno引用StudentInfo表中的Sno,Cno 引用CourseInfo表中的Cno。
④对TeacherInfo表定义外键约束:Trank引用RankPayment表中的Trank。
⑤对Teaching表定义外键约束:Tno引用TeacherInfo表中的Tno,Cno引用CourseInfo表中的Cno。
⑥对StudentCourse表的Score进行CHECK约束:Score必须在0至100之间。
⑦对StudentInfo表中的Ssex和TeacherInfo表中的Tsex进行默认值定义,默认值为“男”注:表中完整性约束查看命令:exec sp_help 表名(三)修改基本表①向基本表StudentInfo中增加“入学时间”属性列,其属性名为Sentrancedate,数据类型为DATETIME型。
实验报告-数据库和表的基本操作和约束条件
S表.SNO=SPJ.SNO)
运行结果:
⑤.SQL源码:
SELECTJNO
FROMSPJ
WHEREPNO=ANY(
SELECTPNO
FROMSPJ
WHERESNO='S1')
GROUPBYJNO
HAVINGCOUNT(DISTINCTPNO)=(SELECTCOUNT(DISTINCTPNO)FROMSPJWHERESNO='S1')
SQL源码:
SELECTJNO
FROMSPJ
WHERESNO='S1'
运行结果:
④.找出工程项目J2所使用的各种零件的名称及其数量:
SQL源码:
SELECTPNO,QTY
FROMSPJ
WHEREJNO='J2'
运行结果:
⑤.找出上海厂商供应的所有零件号码:
SQL源码:
SELECTPNO
FROMSPJ,S表
GROUPBYJNO
HAVINGAVG(QTY)>(SELECTMAX(QTY)
FROMSPJ
WHEREJNO='J1')
运行结果:
6.针对实验一创建的Student数据库进行下面的数据查询:
(1) 求不选修C语言课程的学生学号:
SQL源码:
SELECTDISTINCTsno
FROMSC,C
o=oAND
《数据库系统概论》实验报告
题目:实验一
数据库和表的基本操作和约束条件
姓名
班级
学号
日期
2010-10-10
1.实验内容和步骤结果
SQL数据库创建表与完整性约束-文档资料
四部分:数据定义功能、数据控制功能、数据 查询功能和数据操纵功能。 SQL功能
数据查询 数据定义 数据操纵 数据控制 SELECT CREATE、DROP、ALTER INSERT、UPDATE、DELETE GRANT、REVOKE
命令动词
4.2 SQL的数据类型
• 数值型 • 字ห้องสมุดไป่ตู้串型 • 日期时间型 • 货币型
4.3 基本表的定义、删除及修改
• 4.3.1 基本表的定义与删除 • 4.3.2 修改表结构
4.3.1 基本表的定义与删除
• 1.定义基本表 使用SQL语言中的CREATE TABLE语句实 现,其一般格式为:
CREATE TABLE <表名>( <列名> <数据类型> [列级完整性约束定义] {, <列名> <数据类型> [列级完整性约束定义] … } [, 表级完整性约束定义 ] )
数值型
• 准确型
• 整数 Bigint: 8字节, Int:4字节 Smallint:2字节, Tinyint:1字节 Bit:1位,存储1或0 • 小数 Numeric(p,q)或Decimal(p,q), 其中:p为数字位长度,q:小数位长度。
• 近似型
Float:8字节 Real:4字节
字符串型
日期时间型
• Datetime:8字节,年月日时分秒毫秒 (例:‘2019/08/03 10:30:00.000’ ) • SmallDateTime:4字节,年月日时分 (例: ‘2019/08/03 10:30:00’ ) • 日期、时间的输入格式
货币类型
• Money: 8 个字节,精确到货币单位的 千分之十。 • Smallmoney: 4 个字节,精确到货币单 位的千分之十。 • 限制到小数点后 4 位。 • 可以带有适当的货币符号。例如,100 英 镑可表示为 £100。
数据库实验-数据完整性约束
广州XX学院数据库管理及应用实验报告专业班级计算机181 实验日期2020.4.18 姓名李XX 学号2018132 实验名称数据完整性约束指导教师王琢(报告内容包括实验目的、实验设备及器材、实验内容、实验步骤、实验结果、实验小结等)一、实验目的(1)理解数据完整性约束概念。
(2)掌握SQL Server的数据完整性约束技术。
(3)了解SQL Server的违反数据完整性约束的处理措施。
二、实验设备及器材Windows平台、SQL Server 2012。
三、实验内容4.1在数据库EDUC中创建下列完整性约束。
1)为数据库Course_info创建CHECK约束:当插入或修改一个记录时确保此记录的授课学时在10-80。
2)为教师信息表Teacher_info创建CHECK约束:男教师的出生日期在1960年1月1日后,女教师的出生日期在1965年1月1日后。
3)为教师上课信息表TC_info创建CHECK约束:学生成绩在0-100。
4)为教师上课信息表TC_info创建外键约束:tcid、tno、classno和cno。
4.2在数据库TSGL中创建下列完整性约束。
1)创建CHECK约束:readers表的RederType在0-9。
2)利用SSMS删除readers表的约束。
3)创建主键约束:为readers表的字段ReaderID添加主键。
4)创建多个字段的主键:为borrowinf表的ReaderID、BookID字段定义主键。
四、实验步骤4.11)为数据库Course_info创建CHECK约束:当插入或修改一个记录时确保此记录的授课学时在10-80。
USE EDUCGOALTER TABLE Course_infoWITH NOCHECK ADD CONSTRAINT CK_lecture CHECK(lecture>=10 AND lecture <=80)GO2)为教师信息表Teacher_info创建CHECK约束:男教师的出生日期在1960年1月1日后,女教师的出生日期在1965年1月1日后。
数据库的完整性约束-包含答案
数据库的完整性约束-包含答案实验八:数据库的完整性约束一、实验目的1.掌握主键约束、外键约束及及check约束的用法;2.掌握默认值约束的应用。
二、实验环境已安装SQL Server 2008 企业版的计算机;具有局域网环境,有固定IP;三、实验学时2学时四、实验要求1.熟悉数据库完整性相关概念及约束;2.了解约束、默认值;3.完成实验报告;五、实验准备知识1、创建primary key约束(1)在创建数据表时创建primary key约束CREATE TABLE table_name(column_name data_type [PRIMARY KEY | unique | NOT NULL] [, column_name data_type [PRIMARY KEY | unique | NOT NULL]...[PRIMARY KEY(column [,...n])])(2)在修改表时同时创建primary key约束ALTER TABLE table_nameADD primary key(column [,...n])2、创建Foreign key约束(1)创建表时同时定义Foreign key约束CREATE TABLE table_name(column_name data_type [FOREIGN KEY] REFERNCES ref_table(ref_column)[, column_name data_type [FOREIGN KEY] REFERNCES ref_table(ref_column)...[FOREIGN KEY] (column) REFERNCES ref_table(ref_column) )(2)通过修改表定义Foreign key约束ALTER TABLE table_nameADD [FOREIGN KEY] (column)REFERNCES ref_table(ref_column )3、创建check约束(1)创建数据表时创建check约束CREATE TABLE table_name(column_name data_type [NOT NULL | CHECK (logical_expression)] ...CHECK (logical_expression)])(2)在修改数据表时添加check约束ALTER TABLE table_nameADD CHECK (logical_expression)4、创建default约束(1)创建数据表时创建default约束Create table table_name( column_name datatype [not null | DEFAULT (constraint_expression)] …)(2)修改数据表时添加一个字段的同时创建default约束Alter table table_nameADD column_name datatype [not null |DEFAULT (constraint_expression)] with values(3)对表中指定的列定义默认值约束Alter table table_nameADD [ DEFAULT (constraint_expression)] For column5、完整性约束命名子句CONSTRAINT <完整性约束条件名>[PRIMARY KEY 短语︱FOREIGN KEY 短语︱CHECK 短语]6、删除primary key约束或unique约束ALTER TABLE table_nameDROP CONSTRAINT constraint_name [, ...n]六、实验内容及步骤使用T-SQL语句实现以下操作;1.请用至少2种方法定义stu数据库中student表的主键sno;方法1:CREATE TABLE Student(Sno CHAR(9) PRIMARY KEY,Sname CHAR(20),Ssex CHAR(2),Sage SMALLINT,Sdept CHAR(20))方法2:CREATE TABLE Student(Sno CHAR(9),Sname CHAR(20),Ssex CHAR(2),Sage SMALLINT,Sdept CHAR(20),PRIMARY KEY(Sno))2.将数据库stu的表course的cno字段定义为主键,约束名称为cno_pk;Alter table courseAdd constraint cno_pk primary key (cno)3.为表course中的字段cname添加唯一值约束;Alter table courseAdd constraint cname_pk unique (cname)4.将数据库stu的表sc的sno及cno字段组合定义为主键,约束名称为sc_pk;Alter table scAdd constraint sc_pk primary key (sno,cno)5.对于数据表sc的sno、cno字段定义为外码,使之与表student 的主码sno及表course的主码cno对应,实现如下参照完整性:1)删除student表中记录的同时删除sc表中与该记录sno字段值相同的记录;2)修改student表某记录的sno时,若sc表中与该字段值对应的有若干条记录,则拒绝修改;3)修改course表cno字段值时,该字段在sc表中的对应值也应修改;4)删除course表一条记录时,若该字段在在sc表中存在,则删除该字段对应的记录;Use stuCreate table student(Sno CHAR(9),Sname CHAR(20),Ssex CHAR(2),Sage SMALLINT,Sdept CHAR(20),PRIMARY KEY(Sno))Create table course(cno char(4),cname char(40),cpno char(4),ccedit smallint,foreign key (cpno) references course(cno),primary key (cno))Create table sc(sno char(9),cno char(4),Grade smallint,foreign key (sno) references student(sno)on delete cascade on update no action,foreign key (cno) references course (cno)on delete cascade on update cascade)6.定义check约束,要求学生学号sno必须为9位数字字符,且不能以0开头,第二三位皆为0;Alter table studentAdd CONSTRAINT sno_ckCheck (sno like ‘[1-9]00 [0-9] [0-9] [0-9] [0-9] [0-9] [0-9]’)7.定义stu数据库中student表中学生年龄值在16-25范围内;CREATE TABLE Student(Sno CHAR(9) PRIMARY KEY,Sname CHAR(20),Ssex CHAR(2),Sage SMALLINT Check (sage>=16 and sage<=25),Sdept CHAR(20))8.定义stu数据库中student表中学生性别列中只能输入“男”或“女”;CREATE TABLE Student(Sno CHAR(9) PRIMARY KEY,Sname CHAR(20),Ssex CHAR(2) Check(Ssex in (‘男’,’女’)),Sage SMALLINT,Sdept CHAR(20))9.定义stu数据库student表中学生年龄值默认值为20;CREATE TABLE Student(Sno CHAR(9) PRIMARY KEY,Sname CHAR(20),Ssex CHAR(2),Sage SMALLINT Default 20,Sdept CHAR(20))七、出现问题及解决办法如:某些操作无法执行,如何解决?。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验一创建数据库及关系表数据完整性约束精
编版
MQS system office room 【MQS16H-TTMS2A-MQSS8Q8-MQSH16898】
实验一创建数据库及关系表、数据完整性约束
网工1203熊健羲
一、实验目的
1.???掌握SQLServer数据库管理系统的使用,能够在该环境中进行日常数据库操作;
2.???掌握在SQLServer中使用图形化工具创建数据库的方法;
3.掌握建立关系表的语句,掌握定义主码约束及外码约束的语句;
4.掌握修改表结构的语句。
5.掌握数据完整性约束的功能。
二、实验内容和步骤
1.创建符合如下条件的数据库:
数据库的名字为:Students
数据文件的逻辑文件名为:Students_dat,存放在用户盘某目录下;
文件的初始大小为:5MB;增长方式为自动增长,每次增加1MB。
实验结果:
2.在已建立的Students数据库中,确定出各表中的数据类型,写出创建满足下述条件的四张表的SQL语句,并查看执行结果。
实验结果:
3.写出实现如下操作的SQL语句,并查看执行结果:
(1)在选课表中添加一个新的修课类别列:列名为:选课类别,类型为char(4)。
(2)将课程表中的学分列的类型改为:tinyint(微整型,取值范围在0~255)。
(3)删除学生表的专业列。
(4)为教师表添加主码约束,其主码列为:教师号。
实验结果:
4.在Students数据库中,编写建立满足完整性要求的定义表的SQL语句,执行并观察执行结果。
(1)图书表,结构如下:
书号:统一字符编码定长类型,长度为6,主码,
书名:统一字符编码可变长类型,长度为30,非空,
第一作者:普通编码定长字符类型,长度为10,非空,
出版日期:小日期时间型,小于等于当前系统日期,(用getdate()实现)
印刷数量:小整型,取值范围:1000~5000,默认为4000,
价格:定点小数,小数部分一位,整数部分3位。
实验结果:
(2)书店表,结构如下:
书店编号:统一字符编码定长类型,长度为6,主码,
店名:统一字符编码可变长类型,长度为30,非空,
电话:普通编码定长字符类型,12位长,取值形式:010-8位数字
地址:普通编码可变长字符类型,40位长。
前两个字符必须是:北京。
实验结果:
(3)图书销售表,结构如下:
书号:统一字符编码定长类型,长度为6,非空,
书店编号:统一字符编码定长类型,长度为6,非空,
销售日期:小日期时间型,非空,默认值为系统当前日期,
销售数量:微整型,取值大于0,主码(书号,书店编号,销售日期);
书号为引用“图书表”的外码;书店编号为引用“书店表”的外码。
实验结果:
5.执行下列两条数据插入语句,是否都能执行成功?为什么?
INSERTINTO Book
VALUES('T0001','数据库系统基础','张三','2010-2-1',3000,
实验结果:能执行
INSERTINTO Book
VALUES('T0002','计算机网络','张三','2010-1-1',500,
实验结果:不能执行,原因:印刷数量小于1000
6.执行下列数据插入语句,是否执行成功?为什么?
INSERTINTO Store VALUES('S001','新华书店',,'北京市海淀区')
实验结果:不能执行,原因:电话号码不符合标准
7.执行一条数据插入语句,是否执行成功?为什么?
INSERTINTO Sale(书号,书店编号,销售数量)VALUES('T0001','S001',20)
实验结果:不能执行,原因:store是sale外键,其中store并没有添加进数据。
三、实验源码
CREATEtable Student(
学号CHAR(7)primarykey,
姓名NCHAR(5)notnull,
性别NCHAR(1),
年龄TINYINT,
所在系NVARCHAR(20),
专业NVARCHAR(20)
)
CREATEtable Course(
课程号CHAR(6)primarykey,
课程名NVARCHAR(20)NOTNULL,
学时数TINYINT,
学分TINYINT
)
CREATETABLE SC(
学号CHAR(7)NOTNULL,
课程号CHAR(6)NOTNULL,
成绩TINYINT,
PRIMARYKEY(学号,课程号),
FOREIGNKEY(学号)REFERENCES Student(学号),
FOREIGNKEY(课程号)REFERENCES Course(课程号)
)
CREATEtable Teather(
教师号CHAR(7)notnull,
教师名NCHAR(5)notnull,
所在部门NVARCHAR(20),
工资Smallmoney,
出生日期Smalldatetime
)
select*from Student
select*from Course
select*from SC
select*from Teather
ALTERTABLE SC
ADD选课类别char(4)
ALTERTABLE Course
ALTERCOLUMN学分tinyint
ALTERTABLE Student
DROPCOLUMN专业
ALTERTABLE Teather
ADDconstraint ys primarykey(教师号)
CREATEtable Book(
书号NCHAR(6)primarykey,
书名Nvarchar(30)notnull,
第一作者CHAR(10)notnull,
出版日期smalldatetimecheck(出版日期<getdate()),
印刷数量Smallintcheck(印刷数量<5000and印刷数量>1000)default(4000),
价格decimal(3,1)
)
CREATEtable Store(
书店编号NCHAR(6)primarykey,
店名NVARCHAR(30)NOTNULL,
电话Char(12)check(电话like'010-[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'),地址Varchar(40)check(地址like'北京%')
)
Createtable Sale
(
书号NCHAR(6)notNULL,
书店编号Nchar(6)notNULL,
销售日期Smalldatetimedefault getdate(),
销售数量tinyintcheck(销售数量>0),
primarykey(书号,书店编号,销售日期),
foreignkey(书号)references Book(书号),
foreignkey(书店编号)references Store(书店编号)
)
INSERTINTO Book
VALUES('T0001','数据库系统基础','张三','2010-2-1',3000,
INSERTINTO Book
VALUES('T0002','计算机网络','张三','2010-1-1',500,
INSERTINTO Store VALUES('S001','新华书店',,'北京市海淀区')
INSERTINTO Sale(书号,书店编号,销售数量)VALUES('T0001','S001',20)
四、实验心得
经过这次实验?掌握SQLServer数据库管理系统的基本使用,复习了建立关系表的语句,定义主码约束及外码约束的语句,和修改表结构的语句。
了解了数据完整性约束的功能。
希望下次实验能够学到更多数据库的知识。