1、 数据库基础及SQL项目四 创建和管理数据库表 项目指导书一、实训目的知识目标:理解数据库表和空值;掌握设计、创建和管理数据库表的方法;熟练掌握显示数据库表结构的方法;了解临时表和表变量的使用方法。技能目标:会设计、创建和管理(修改、重命名、删除)数据表;会显示数据表结构;会使用临时表和表变量。二、项目背景 学生选课数据库成功创建之和,需要在学生选课数据库XK中创建学生表、课程表、学生选课表、系部表、班级表。参照教材137页建立5中表结构。三、实训内容任务4 介绍表的概念1.请说明表、列、行的含义。2.请分析StuCou表中有哪些列,列的名字,每一列的数据类型和长度,该列是否允许为空值(NUL
2、L)。3.请指明StuCou表的主键,外键,唯一健,标识列。4.哪些列提高查询速度任务5 介绍数据类型1.请描述出六种基本数据类型,写出其英文标示符及其大小。2.分析char(n)和nchar(n)的区别,分析char(n) varchar(n)text的区别。3.请说明空值的意义。任务6 创建表1.描述创建表的两种方法。实训任务:(在mydb数据库中完成以下操作)1.使用对象资源管理器创建Department表2.使用T_SQL语句创建Class表3.使用T_SQL语句创建Student表4.使用T_SQL语句创建StuCou表5.使用T_SQL语句创建Course表任务7 管理表1.使用两
3、种方法显示表结构。2.表中新增列是否可以不允许为空,为什么?实训任务:1.使用企业管理器显示Student表结构2.使用T_SQL语句显示StuCou表结构3.使用T_SQL语句在student表中增加生日birthday列 日期时间型 允许为空、备注bz列 定长字符串 长度20 允许为空。4. 使用T_SQL语句删除student表的生日列5. 使用T_SQL语句将student表中bz列长度增加为306.使用T_SQL语句将student表中bz列更名为StuBz7.使用企业管理器将表Department更名为Depart8.使用T_SQL语句将表Depart更名为Department9.
4、使用T_SQL语句删除表Department10.使用企业管理器删除Class表任务8 插入表中的数据1. 使用T_SQL语句把自己同组三名同学的信息添加在Student表中。如:插入数据20140002 20000001 于泽淼 1234 2.创建一个students表,并为其插入三行数据(1)陈华 男 1978-9-8 江西 02037658555 广州东风路 (2)刘晓莉 女 1981-9-7 广东 02037628442 广州环市路 班长(3)肖鹏 男 1982-8-6 广东 02037628556 广州东风路任务9 删除表中数据1.删除Student表中自己添加的所有字段2.删除st
5、udents表中编号为1的记录实训三 创建sale数据库并录入表数据1.按照教材p147sale数据库中的表结构和表数据,完成表结构的建立和表数据的录入。四、 必备知识点任务4 介绍表的概念1.请说明表、列、行的含义。表关系 二维表列属性 字段 变量 表结构 数据类型 空值行元组 记录 常量 表数据2.请分析StuCou表中有哪些列,列的名字,每一列的数据类型和长度,该列是否允许为空值(NULL)。有学号StuNo、课程编号CouNo、志愿号WillOrder、选课状态State、随机数RandomNum五列。学号StuNo 字符型 长度8 ;课程编号CouNo 字符型 长度3;志愿号Will
6、Order整型,限定数值只允许为1、2、3、4、5;选课状态State字符型 长度2 ;随机数RandomNum 字符型 长度为50随机数RandomNum允许为空,其它列不允许为空。3.请指明StuCou表的主键,外键,唯一健,标识列。在数据完整性中详细讲解。4.哪些列提高查询速度主键,和定义为索引的列 任务5 介绍数据类型1请描述出六种基本数据类型,写出其英文标示符及其大小。数值型n 整数类型(用来存储整数)bigint(8b )、int(4b)、smallint(2b )、tinyint(1b)正整数(0255)n 实数类型(小数数据)精确decimal (p, s) 和 numeric
7、 (p, s) :(p:精度 s:小数位数)p:精度 整数位数+小数位数 近似值float(8个字节)real(4个字节)字符型n character类型(非unicode字符标准:汉字占两个字节,字母和数字、下划线等占一个字节)char(n) varchar(n)textchar(10):定长 n=8000 varchar(10):变长n unicode数据类型 (任何字符都占两个字节的存储空间)nchar(n) nvarchar(n) ntextn=4000 unicode字符: 日期和时间型datetime(8b)smalldatetime(4b)二进制数据binary (n) varb
8、inary (n) image 只有数据超过8KB的情况下,才使用image数据类型货币money(8b) smallmoney(4b)特殊类型timestamp(时间戳,8个字节,提供数据库范围内的唯一值)bit(1b)uniqueidentifier2分析char(n)和nchar(n)的区别,分析char(n) varchar(n)text的区别。char(n)表示非unicode字符标准:汉字占两个字节,字母和数字、下划线等占一个字节nchar(n)表示unicode数据类型 (任何字符都占两个字节的存储空间)char(n)表示字符串定长,不论存放多少字符,长度都是n个字节varcha
9、r(n)表示字符串不定长,只存放字符串时间长度,但最长是n个字节text存储工作简介等较长文本时使用。3.请说明空值的意义。空值(null)不等于零、空白或零长度的字符串。null意味着没有输入,null的存在通常表明值未知或未定义。任务6 创建表1.描述创建表的两种方法。方法一:使用企业管理器创建表在”对象资源管理器” 展开数据库右击表”新建表” 设置列名数据类型是否为空单击”保存”按钮输入表名方法二:用create table语句创建Create table students_T(number int not null,Name varchar(10) not null,sex char(
10、2) null,birthday datatime null,hometown varchar(30) null,telephone_no varchar(12) null,address varchar(30) null,others varchar(50) null)Go任务7 管理表1.使用两种方法显示表结构。方法一: 右击表”修改表”方法二: sp_help2.表中新增列是否可以不允许为空,为什么?必须允许新增列为空,否则表中已有数据行的那些新增列值为空,与新增列不允许为空相矛盾,新增列操作失败。任务8 插入表中的数据任务9 删除表中数据实训三 创建sale数据库并录入表数据五、实训步
11、骤任务6 创建表1.使用对象资源管理器创建Department表2.使用T_SQL语句创建Class表3.使用T_SQL语句创建Student表4.使用T_SQL语句创建StuCou表5.使用T_SQL语句创建Course表参考教材P139-P142任务7 管理表1.使用企业管理器显示Student表结构右击Student表”修改表”2.使用T_SQL语句显示StuCou表结构sp_help StuCougo3.使用T_SQL语句在student表中增加生日birthday列 日期时间型 允许为空、备注bz列 定长字符串 长度20 允许为空。增加列Alter table studentAdd
12、birthday datatime null,bz nvarchar(20) nullGo4. 使用T_SQL语句删除student表的生日列删除列Alter table studentDrop column birthdaygo5. 使用T_SQL语句将student表中bz列长度增加为30修改列的定义Alter table studentAdd column bz nvarchar(30) nullgo6.使用T_SQL语句将student表中bz列更名为StuBz修改列名Sp_rename Student.bz,StuBz,Columngo7.使用企业管理器将表Department更名为
13、Depart方法一: 展开数据库xk右击表Department”重命名” 输入”Depart” 回车8.使用T_SQL语句将表Depart更名为Departmentexec sp_rename Depart ,Departmentgo9.使用T_SQL语句删除表DepartmentDrop table DepartmentGo10.使用企业管理器删除Class表展开数据库xk右击表Class”删除” “确定”任务8 插入表中的数据1. 使用T_SQL语句把自己同组三名同学的信息添加在Student表中。如:插入数据20140002 20000001 于泽淼 1234 insert into s
14、tudent values(20140002,20000001,于泽淼,1234)2.创建一个students表,并为其插入三行数据(1)陈华 男 1978-9-8 江西 02037658555 广州东风路 (2)刘晓莉 女 1981-9-7 广东 02037628442 广州环市路 班长(3)肖鹏 男 1982-8-6 广东 02037628556 广州东风路创建表自行设计,步骤略。插入数据:方法一:展开数据库xk右击表student”打开表” 输入数据单击叹号按钮,保存。方法二:在表的查询窗口输入语句:Insert into students values(1,陈华,男,1978-9-8,
15、江西,02037658555,广州东风路,)Insert into students values(2,刘晓莉,女,1981-9-7,广东,02037628442,广州环市路,班长)Insert into students values(3,肖鹏,男,1982-8-6,广东,02037628556,广州东风路,)任务9 删除表中数据1.删除自己添加的所有字段如:删除姓名为于泽淼的字段。方法一: 展开数据库xk右击表student”打开表” 选择要该行的数据右击删除是方法二:删除表students增加的数据,删除StuName为“于泽淼”的记录 在查询窗口中输入语句:Delete Student
16、 where StuName=于泽淼单击执行按钮。2.删除students表中编号为1的记录Delete Student where number=1实训三 创建sale数据库并录入表数据1.创建数据库sale。在SQL Server2008下创建销售数据库名字为sale,该数据库有一个名字为sale.mdf的主数据文件和名字为sale_Log.ldf的事务日志问津。主数据文件容量为4MB,日志文件容量为2MB,数据文件和日志文件的最大容量为10MB,文件增长量为1MB。2.按要求操作数据库显示sale数据库的信息。使用SSMS将sale数据库名修改为sale1。使用T-SQL语言将sale1
17、数据名重新修改为sale。配置sale数据库为只读。3.按照教材p147sale数据库中的表结构和表数据,完成表结构的建立和表数据的录入。本书实训项目都是围绕sale数据展开的,进销存系统通常包括客户资料、产品信息、进货记录、销售记录等。所以针对sale数据库,设计了表4-7表4-10,并将在后续项目逐步完善。在sale数据库下创建一下各表输入数据。表4-7 Customer(客户表)CusNo(客户编号)nvarchar(3)not nullCusName(客户姓名)nvarchar(10)not nullAddress(地址)nvarchar(20)Tel(联系电话)nvarchar(13
18、)001杨婷深圳0755-22221111002陈萍深圳0755-22223333003李东深圳0755-22225555004叶合广州020-22227777005谭欣广州020-22229999表4-8 Product(产品表)ProNo(产品编号)nvarchar(5)not nullProName(产品名)nvarchar(20)not nullPrice(单价)Decimal(8,2)not nullStocoks(库存数量)Decimal(8,0)not null00001电视3000.0080000002空调2000.0050000003床1000.0030000004餐桌150
19、0.0020000005音响5000.0060000006沙发6000.00100表4-9 ProIn(入库表)InputDate(入库日期)DateTimenot nullProNo(产品编号)nvarchar(5)not nullQuantity(入库数量价)Decimal(6,0)not null2006-1-100001102006-1-10000252006-1-20000152006-1-200003102006-1-300001102006-2-100003202006-2-200001102006-2-300004302006-3-30000320表4-10 ProOut(销售
20、表)SaleDate(销售日期)DateTimenot nullCusNo(客户编号)nvarchar(3)not nullProNo(产品编号)nvarchar(5)not nullQuantity(入库数量价)Decimal(6,0)not null2006-1-100100001102006-1-20010000252006-1-30020000152006-2-100200003102006-2-200100001102006-2-300100003202006-3-200300001102006-3-200300004302006-3-30020000320六、拓展练习1.按照自己的设计宠物数据库中的表结构和表数据,完成表结构的建立和表数据的录入。七、考核标准1. 准确完成5道题得1分,共5分2. 上交按要求制作的表格,5分