表的创建与管理

实验小结
这里使用的是 SQL SERVER 2016版本
有两种方法建立表格和修改:
- 方法1:使用图形化方法
- 方法2:使用Transact-SQL语句
比如在School数据库中创建如下三张表(student, course, sc):

student
列名 含义 数据类型 约束
Sno 学号 CHAR(8) 主码
Sname 姓名 NCHAR(6) 非空
SID 身份证号 CHAR(19) 取值不重
Ssex 性别 NCHAR(1) 默认值为“男”
Sage 年龄 TINYINT 取值范围为20~28
Sdept 所在系 NVARCHAR(21)

course
列名 含义 数据类型 约束
Cno 课程号 CHAR(7) 主码
Cname 课程名 NVARCHAR(21) 非空
Credit 学分 NUMERIC(3,1) 大于0
Semester 学期 TINYINT

SC
列名 含义 数据类型 约束
Sno 学号 CHAR(8) 主属性列,本表的外码,引用Student的主码
Cno 课程号 CHAR(7) 主属性列,本表的外码,引用Course的主码
Grade 成绩 TINYINT

首先需要创建school数据库
这里先复习一下
三种数据文件:
1)主要数据文件 .MDF:主要数据文件由主文件组中的初始数据文件组成。文件组是经过命名的数据文件集合。包含所有数据库系统表,以及没有赋给自定义文件组的对象和数据。主要数据文件是数据库的起始点,它指向数据库中的其他文件。每一个数据库都有一个主要数据文件和一个主文件组,主要数据文件的扩展名是.mdf 。(注:此处参考百科)

2)次要数据文件 .NDF:一些数据库可能因为太大而需要很多次要数据文件,也可能在多个独立的磁盘驱动器上使用次要数据文件,以把数据分布在多个磁盘上。次要数据文件可以放在主文件组中,也可以放在自定义文件组中。次要数据文件的扩展名是.ndf 。(注: 此处参考百科)

3)事务日志文件 .LDF:日志文件包含恢复数据库所需的所有日志信息。每个数据库必须至少有一个日志文件,但可以不止一个。日志文件的推荐文件扩展名是 .ldf。(更具体内容可以参考百科)

1.好了,接下来用图形化方法创建一个简单的school数据库
SQL Server 文件有两个名称:
logical_file_name (逻辑文件名)
logical_file_name :是在所有 Transact-SQL 语句中引用物理文件时所使用的名称。逻辑文件名必须符合 SQL Server 标识符规则,而且在数据库中的逻辑文件名中必须是唯一的。(就是你在数据库中使用的该物理文件名对应的逻辑文件名表示)
os_file_name (文件名)
os_file_name :是包括目录路径的物理文件名。它必须符合操作系统文件命名规则。(就是包含该文件的文件名和存储路径的字符串)
如下图:
图形化建立数据库
可以看到数据库已经建立成功。(当然也可以使用Transact-SQL语句创建数据库(未完待续))
2.接下来开始创建表格(主要介绍是对约束的操作)

  • 设置主键的话,直接在属性右键就可以了(如果主键包含多个属性,则用shift或ctrl选中要选的属性)如下图
    这里写图片描述

  • 取值不同,也就是要设置该属性列为唯一性
    唯一键设置在索引/键那里

这里写图片描述

  • 默认值直接设置,如下图
    默认值设置

  • 取值范围的设置
    选择CHECK约束
    这里写图片描述
    这里写图片描述
    这里写图片描述

  • 外键约束
    创建外键约束的顺序是先定义主表的主键,然后定义从表的外键。也就是说只有主表的主键才能被从表用来作为外键使用,被约束的从表中的列可以不是主键,主表限制了从表更新和插入的操作。
    这里写图片描述
    好了,约束操作基本介绍到这里。

那么如何查看你用图形化方法创建表的Transact-SQL语句
也就是方法2啦:在某表右键选择”编写表脚本为(s)”–>”CREATE到(c)”–>”新查询编辑器窗口”,就可以看到创建表的代码了。
这里写图片描述

这里写图片描述
(当然你完全可以自己打出来,而且代码会更短些。)

接下来的部分是修改表。(同样可以采用图形化方法和Transact-SQL语句修改表,这里不再赘述图形化修改的方法,因为比较简单)
要修改表,不能勾选阻止保存要求重新创建表的更改(s),否则修改表可能会失败报错。
这里写图片描述
这里写图片描述
下面是些小练习:
(1)为student表添加专业列,列名为spec,类型为char(8)。

ALTER TABLE student 
add spec char(8)

(2)为spec列的数据类型改为nchar(8)。

Alter table student 
Alter column spec nchar(8)

(3)为student表的sdept列添加约束,限制该列取值范围为{计算机系,信息管理系,通信工程系}。

alter table student
add constraint CK_sdept check(sdept='计算机系' or sdept='信息管理系' or sdept='通信工程系')

(4)为SC表的Grade列添加约束,要求此列的取值范围为0~100。

ALTER TABLE SC 
add constraint CK_Grade check(Grade between 0 and 100)

(5)删除student表中新添加的spec列。

 ALTER TABLE student   
 DROP COLUMN spec  

注意SQL SERVER 2016 创建完对象后,对象资源管理器不会自动更新,可以点击刷新按钮,就可以看到你所建立的内容。


版权声明:本文为博主原创文章,代码仅用于交流和学习!转载请注明出处!

你可能感兴趣的:(数据库,建立表,sql-server,修改表)