目录
1. 数据存储问题
1.1 表的概念
表是数据库的基本单位,所有的数据都是存储在表里的,所有的操作都是对表的操作。
表在数据库中的地位类似于Java中的类。
1.2 表,字段,记录,主键,外键
主键:唯一的标识一个事物的属性称之为主键;
外键:来自其他表的主键;
字段/属性:一个事物的静态特征,如姓名,性别等,(类似于Java中的成员变量)表的每一列信息称为字段;
记录/元组;表的每一行信息称为记录;
如下图,有两个表:员工表和部门表;
为了区分员工表中员工重名的情况,我们添加 “编号” 这一列,表的每一列就是字段,即 “ 100001 100002 100003 100004 ”。并且对于该表来说,这一列也称之为主键,即区分员工的唯一标识的列。张三所在的那一行称之为记录,即 “ 张三 3000 男 29 100001 1 ”;
1.3 主键与外键的关系
外键就是用来连接两个或多个表,表示事物与事物之间的关系;
2. 图形化界面建表
建表的两种方式:手动建表;SQL语言 ;
通过 手动建表的方式建表,容易出错,而且不够稳定 ,况且使用的时候他们也是转化为语法代码;
用 语法代码 写的缺点是需要记忆一些命令;
2.1 创建前的基本认识
右击“表”,选择新建即可,输入 “ 员工 ” 表的列名,数据类型,允许为空一般不勾选。
输入完毕后,“ Ctrl+S” 保存,再输入表名,如此创建成功。
“ dbo 前缀 ”表示他是一个系统的身份,后面会较深入解释。
数据类型:
打开新建的 “ dbo.emp ” 表,打开列,会看到我们刚才创建的东西。
括号中的 nchar(10)代表国际化可存储汉字的字符,长度不超过10.
有的时候可能会出现 nvarchar(max) ,它代表国际化可存储汉字的字符变量,长度不超过 max 。
保存数据
右击 “ dbo.emp ” ——编辑前两百行。每个记录填满后,直接点击“ Enter ”就可以保存数据,填写下一个记录;如果 右击“铅笔形状”——选择执行,在已填的是三个记录中只能保存两个记录。
数据冗余
数据冗余:两个或多个记录重复的情况。
这时,我们无法通过点击某个选项去修改或者删除数据,这就是我们前面提到的通过“图形化界面”手动输入库的缺点,即输入数据重复,无法修改;
(我们尝试修改重复记录的数据,可以输入数据,但无法保存,如下图)
遇到这种情况,我们可以尝试通过命令去修改记录。
右击 “ dbo.emp ” 的库“coco”,选择“数据库查询”,通过主键来找到重复的记录,where来确定要修改的具体数据。
但是,这种操作还是失败的!这是因为两个记录完全是一样的,我们无法告诉计算机我们要修改哪一个冗余记录,修改哪一个冗余记录的哪一个数据,总之,计算机无法辨别我们的命令。
使用命令重置表
遇到数据冗余的情况,我们必须删除表的全部内容!
右击 “ dbo.emp ” 的库“coco”,选择“新建查询”,输入“delete from 表名”,点击 “ 执行 ” 即可重置表;
再次打开,可以发现,表重置成功;
我们反思一下,当出现数据冗余的时候,我们无论是采取“手动”还是“使用sql命令”的方式都无法修改数据,只能重置表,这在现实应用中特别麻烦,一定存在某种方式可以避免这种情况的出现。
2.2 设置主键约束 (primary key)
必须在创建表之后输入数据之前设置主键:右击“dbo.emp ”——设计——右击“emo_id”——设置主键 即可。
这样,当输入两个“emp_id”相同的人或者重复输入的时候,它会告诉我无法保存,这就避免数据冗余的产生。
2.3 设置唯一键约束(unique key)
唯一键的功能类似于 “主键” ,但不能与主键重复;
以 stu表为例,将 stu_name 设置为唯一键:右击该记录——选择“索引/键”——添加,列,列名,确定——是唯一的:是;
(PK_stu是主键,我们点击添加,出现IX_stu*,)
2. 4 设置默认键约束(default key)
选中该记录,直接设置 “默认值绑定” 即可;
以stu表中的stu_score为例;
2.5 设置外键约束 (foreign key)
外键是其来自他表的主键,用于两个表的 “连接” ,即让两个表产生某种关系;
含有外键的表称为外键表;
也可以这么理解,连接就是设置外键;
下面以 tea表 和 stu表为例;我们在 stu表中引入 tea表中的 tea_id:(首先tea_id得是tea表的主键)在stu表中,插入tea_id记录——右击“关系”,选择“表和列规范”——在弹窗中选择“主键表,列名”即可,外键表不可修改。
2.6 check(检查)约束
check约束就是限制列的范围,使其在一个合理的范围;
选中列名,右击,选择 “check约束“——添加,输入表达式 即可;
下面我们以stu_score为例,设置其范围 ”大于等于60小于等于100“ ;
3. 语法代码
接下来通过语法代码来实现一个表;
创建两个表,分别是 moral表,mora表,在 mora表中引用moral中的 id ;
我们通过查看列,键,约束验证一下: