当前课程知识点:数据库技术应用 > 学习情境二、创建和管理银行存取款机数据表 > 模块1、表的创建 > 2.1表的创建
大家好
欢迎来到数据库技术应用在线开放课程
前面我们已经将银行自动存取款机
数据库系统设计好了
下面要做的事情
就是数据库表的创建
所以今天我们要完成的任务是BankDB表的创建
前面我们优化后的关系模式
对于银行自动存取款机数据库来说
有三个包括用户银行卡交易信息
那么这三个对应的我们就可以去创建三个表
一个表交用户表userinfo
一个叫银行卡表cardinfo
还有一个叫交易信息表transinfo
本节课的目标就是通过创建三张表
让大家理解数据库表的作用
掌握表的创建方法
那怎么创建表
我们来看一下创建表的语法结构
create table后面跟的是
表的名称 括号 注意是小括号 然后分号结束
在小括号里
每一行是一个字段的声明
列名 数据类型 约束
列名 数据类型 约束
有多少个字段
我们就按照这样的格式进行罗列
那么这里面要说明的第一
if not exist是避免出现表
已经存在这样的现象
所以做了一个验证
第二个列明和表明必须符合
我们标识符命名的规则
第三个数据类型的作用是起到了
分配空间和限制取值范围这样的作用
第四个最后面的约束
它的作用是为了保证数据的准确性和一致性
Mysql的数据类型有哪些
大家可以看一下这个表格所示
对于数据类型来说
有小数的我们就声明成浮点型数据
比如说成绩没有小数的只是整数的
我们就声明称整形
比如说年龄
那除了数值型以外
还有字符串类型
字符串类型分成两种
一个叫定长字符型一个将变长字符型
那如果是固定长度
就声明称成char
可变长度
我们就声明成varchar
比如说身份证号
它的长度是固定的
所以我们声明成char类型
比如说家庭住址
它的长度是不固定的
有长有短
那么我们可以声明成varchar类型
那cahr和varchar在分配空间的时候是有区别的
固定长度的char类型
它是按照你给定的长度
来分配空间大小
而varchar差类型变长字符型
它是根据你括号里给定的长度
作为最大长度来分配空间的
而实际分配空间的时候是按照
你实际上这个类型中字段的真实长度
来进行分配的
除此之外还有日期
日期我们根据用户的需求来设计
是年 还是年月日 还是时间
还是年月日时间都有
根据用户的需求
最后来确定用哪一种数据类型
那数据类型知道了
接下来是完整性约束
在数据库当中
完整性约束有五种
分别是主键约束 替代键约束 空值约束
检查约束和参照完整性约束
首先我们来看一下主键约束
主键我前面我们已经讲过了
它是表当中的一列或者多个列的集合
主要是唯一标识表当中的每一行
它的关键字是primary key
那作为主键来说
有三点需要大家注意
第一每个表只能定义一个主键
第二表当中两个不同的行
在主键上不能具有相同的值
这就是唯一规则
第三一个列名在一个主键的列表当中
只能出现一次
第二个叫替代键约束
替代件事表当中的一列或一组列
它们的值在任何时候都是唯一的
替代键没有被选作主键的候选键
定义替代键的关键字叫unique
那么对于替代键来说
每个表可以创建多个替代键
替代键的值也可以为空
所以当我们碰到类似于这样的情况的时候
我们就可以做成替代键约束
第三个空值约束
空值约束是用来限制字段的取值是否允许为空的
如果可以为空
我们用null来表示
相反不允许为空
我们用not null来表示
比如说我们经常在上网的过程当中出现这样的问题
说名字不能为空
当你不填名字的时候就报错
那实际上它在数据库当中设置了不允许为空这样的空值约束
第四个叫检查约束
检查约束是用户自定义的一种约束
通常是用来限制数据的取值范围或者格式的
它的语法格式是用check来解决的
这个是最贴近用户需求的一种约束的形式
第五个叫参照完整性约束
实际上它说的是外键
什么是外键呢
在一个表当中
它不是主键或者是主键的一部分
而在另外一个表当中
它是主键
我们就把它叫外键
外键起到的作用是建立两个表之间的关联关系
简单来说
就是两个表当中的公共字段
定义外键的格式是用references表名 括号列名
来进行外键的定义的
那么我们来看看任务实施
我们要完成的任务是数据库BankDB表当中的创建
第一张表
就是我们的用户信息表叫userinfo
在useinfo表当中
我们有这么几个字段
包括用户的编号 用户的名字 身份证号 联系电话 地址
那么在这么多的字段当中
有一个是最重要的
来区分每一个用户的
我们说它是用户编号
所以我们把用户编号要做成是主键
那么这些字段都是什么类型的
比如说用户编号
我们定义成整形
方便它来自增
那么用户名定义成变长字符型
每个人的用户名不相同
身份证号大家都是一样的位数
所以定义成定长字符型char类型
联系电话我们定义成varchar类型
考虑到的是有固话有我们的手机
那么地址当然它也是变长的
所以定义成varchar类型
那么把类型确定了 把约束也确定了
我们就可以根据前面我们所说的创建表的语法格式
来创建我们的用户表了
首先 create table后面跟上useinfo用户表的名称
括号里放的是相应的每个字段的声明
第一个customerID
就是我们的用户编号
它是主键primary key
然后接下来用户名字它是不允许为空的
再接下来是我们的身份证号
身份证号做了一个检查约束check
括号里是len PID等18
也就是限制了它的长度
必须是18位
再接下来是联系电话
联系电话我刚才说可以是固话
可以是手机
但是在这个地方大家来看
我就把它固定成check,len telephone等11
也就是说
它的长度必须是十一位
最后一个是我们的地址
把每个字段都声明好之后
我们根据创建表的这个代码
然后编译运行就可以得到我们的第一张表
叫用户表userinfo了
接下来我们来看第二张表叫银行卡表
在银行卡表当中
我们前期分析了包括银行卡号 币种开户时间余额
密码挂失状态以及用户号
那么其中的银行卡号是主键
这个用户号是外键
用来关联银行卡和用户信息表的
那根据我们刚才分析的和我们前面所学的
创建表的语法格式
我们的代码像我们PPT当中所示的这样
那么其中刚才我说了
除了主键以外
这里面还做了非空
还做了check chenck 什么
balance大于等于一
也就是说你的余额要求是大于等于一元的
余额不能低于一块钱
那么这个是我们实际生活当中的应用
所以说check检查约束是离我们生活最近的
第三张表叫交易信息表
交易信息表里有交易编号 交易日期
银行卡交易类型 交易金额和备注
那么同样的道理
我们需要确定它的数据类型
确定它的约束
这里面约束我们做了什么呢
做了非空约束
还做了什么呢
tranaType like 存入 or tranaType like 支取
这个是做了一个检查约束
也就是说我们的交易类型要么是存入
要么是支取
另外在tranasMoney交易金额这些地方
也做了一个check检查约束
叫tranasMoney大于零
也就是说不管你是存钱还是取钱
你的这个交易金额一定是大于零的
一定是正数
这个是需要大家注意的
也是根据具体的业务来确定的
好那三张表我们已经建完了
今天给大家的拓展任务是员工管理系统EmployeeDB当中
我们表的创建
感谢大家的聆听
-模块1、数据库的基础知识
--数据库的基础知识
-模块2、MYSQL介绍与安装
--MYSQL介绍与安装
-模块3、银行存取款机数据库的创建与维护
--银行存取款机数据库的创建与维护
-模块4、银行存取款机数据库的设计
--银行存取款机数据库的设计
-模块1、表的创建
--2.1表的创建
--表的创建
-模块2、表的管理
--2.2表的管理
--表的管理
-模块3、索引
--2.3索引
--索引
-实践小课堂:宠物电商管理平台数据库和表的创建
-模块1、银行存取款机数据插入、修改和删除
--银行存取款机数据插入、修改和删除
-模块2、银行存取款机简单查询
--银行存取款机简单查询和统计查询
-模块3、银行存取款机连接查询
--3.3连接查询
--银行存取款机连接查询
-模块4、银行存取款机子查询
--3.4子查询
--银行存取款机子查询
-模块5、银行存取款机分类汇总与排序
--银行存取款机分类汇总与排序
-模块6、银行存取款机视图
--银行存取款机视图
-模块1、银行存取款机存储过程
--4.1.2事务
--银行存取款机存储过程
-模块2、银行存取款机触发器
--银行存取款机触发器
-模块1、MYSQL用户管理
--MYSQL用户管理
-模块2、MYSQL权限管理
--MYSQL权限管理
-模块3、MYSQL数据库的锁机制
--MYSQL数据库的锁机制
-模块4、MYSQL备份和恢复
--MYSQL备份和恢复