2.1 安装MySQL
首先进入MySQL官网下载并选择版本5.7,勾选第二个MSI Installer进入安装界面并选择Custom自定义安装类型,从而可以选择最小化安装,点击Next进入下一步
点击Next之后会进入选择产品界面,我们选择第一个5.7版本再点击next,在打开的等待安装界面中,点击“Execute”按钮,等待安装的完成:
安装完毕即可进入配置阶段
2.2 配置MySQL
默认勾选TCP/IP复选框,启用TCP/IP网络,并使用默认端口3306,勾选“Open Windows Firewall Port for network access”复选框,即防火墙允许拥护通过该端口访问数据库。
点击添加用户
点击next进入Windows Service配置界面
一直点击next,进入配置界面点击,“Execute”按钮进行安装配置
配置完成后显示如下界面
按钮“finish”即完成配置,输入root密码即连接到服务器
再点击配置后点击Finish
即安装完成
此时mysql就安装完毕,我们进入mysql的安装目录C:\Program Files\MySQL\MySQL Server 5.7
其中有四个较为重要的文件夹他们的作用分别介绍如下
(1)bin:用于存放可执行文件
(2)include:用于存放头文件
(3)lib:用于存放库文件
(4)share:用于存放字符集、语言等文件
另外如果程序安装在c盘,在隐藏文件夹ProgramData下,C:\ProgramData\MySQL\MySQL Server 5.7可以找到MySQL正在使用的配置文件my.ini,通过修改my.ini文件,拥护可以实现手动配置数据库服务器MySQL,常用的参数如下:
(1)default-character-set=utf8:客户端默认的字符集为UTF-8
(2)character-set-server=utf8:服务器端默认字符集为UTF-8
(3)port:客户端和服务器端默认字符集
(4)default-storage-engine=INNODB:MySQL默认的存储引擎
随后需要将bin路经(C:\Program Files\MySQL\MySQL Server 5.7)写入环境变量中:通过WIN+R键入sysdm.cpl,并在高级里面打开环境变量,系统变量中找到path添加我们的路经。
(5)在文件最后一行添加skip-grant-tables
2.3 命令行连接MySQL
上文介绍了安装和配置mysql,为操作数据库提供了软件环境,下面介绍如何启动mysql服务和如何连接mysql数据库。
1 检查服务是否启动
所谓的mysql服务是指一系列关于mysql软件的后台进城,只有起送了mysql服务,才能连接mysql数据库进行操作,启动步骤如下:
(1)打开计算机管理窗口(WIN+X后按G可以打开计算机管理窗口)
(2)选择计算机管理(本地)->服务和应用程序->服务节点,右侧窗口将显示所有服务,其中包含我们的MySQL服务,
(3)通过查看mysql服务可以发现该服务已经处于启动状态,可以将其启动类型改为手动或自动。如果修改了mysql软件的配置文件,必须重新启动mysql,这样修改的内容才能生效,可以通过WIN+X 打开终端管理员输入 net start mysql57指令停止MySQl服务,输入net stop mysql57指令停止服务。
2命令行方式连接mysql
进入dos窗口之后,通过mysql命令可登录mysql服务器,具体命令如下
mysql -h 服务器主机地址 -u 用户名 -p 密码
如果是在本机操作,可以省略-h参数,-p后面可以不写密码,例如使用root账号登录mysql服务器的命令如下:mysql -h localhost -u root -p 后输入初始设置的密码即可登录
当窗口出现如图所示的说明信息,命令行提示符变为mysql>时,表明已经登陆了mysql服务器了,可以对数据库进行操作,在这里也可以使用mysql自带的MySQL 5.7 Command Line Client登录MySQL数据库,无需输入明林,直接输入密码即可
登录完之后可以使用以下指令查看当前MySQL版本信息以及连接用户名:
SELECT VERSION();SELECT USER()
3 MySQL中的数据库可分为系统数据库和用户数据库两大类。
(1)系统数据库
安装完MySQL服务器后,mysql会附带4个系统数据库,具体如下。
1 infornation_schema:主要存储系统中一些数据库对象信息,如用户表信息、字段信息、权限信息、字符集信息和分区信息。
2 performance_schema:主要存储数据库服务器性能参数信息
3 mysql:主要存储系统地用户权限信息
4 sys :mysql5.7之后引入的心得sys数据库,sys库里面的表、视图、函数以及存储过程可以让用户快速了解MySQL的一些信息,他的数据来源于performance_schema.
(2)用户数据库
用户数据库是用户根据实际需求创建的数据库。主要针对用户数据库。
2.1.4 SQL简介
1 SQL的含义
结构化查询语言(Structured Query Language,SQL)的概念是在1974年提出,SQL已成为关系型数据库的标准语言。其不同于JAVA这样的程序设计语言,其只能被数据库识别的指令,但是在程序中,可以利用其他编程语言组织SQL语句发送给数据库,数据库再执行相应的操作。例如在JAVA中要得到MySQL数据库表中的记录,可以再JAVA程序中编写SQL语句,再发送给数据库,数据库根据接收到的SQL语句进行执行,并把执行结果返回给JAVA程序。
2 SQL的组成
根据功能划分,SQL主要由以下几部分组成
(1)DML(Data Manipulation Language,数据操作语言)用于插入、修改和删除数据库中的数据,如INSERT、UPDATE、DELETE等。
(2)DDL(Data Definition Language,数据定义语言)用来建立数据库、数据库对象、定义数据表结构等,大部分是以CREATE开头的命令,如CREATE TABLE、CREATE VIEW、DROP TABLE等。
(3)DQL(Data Query Languege,数据库查询语言)用来对数据库中的数据进行查询如SELECT等
(4)DCL(Data Control Languege,数据控制语言):用来控制数据库组件的存取许可、存取权限等如GRANT、REVOKE等。
除此之外,SQL还包括变量说明、内部函数等其他命令。
3 SQL中的常用运算符
运算符是一种符号,用来进行列间或者变量之间的比较和数学运算。在SQL中,常用的运算符包括算数运算符、赋值运算符、比较运算符和逻辑运算符
(1)算术运算符。表示两个数或者表达式进行数学运算,包括+、-、*、/、%五种
(2)比较运算符,=(等于)、>(大于)、<(小于)、!=等
(3)逻辑运算符,AND、NOT、OR,例如以下代码含义为年龄在18-45岁的非男性:
NOT(NAME='男')AND(年龄>18AND年龄<45)
2.1.5 MySQL数据库的基本操作
上文讲解了SQL语句的相关知识,包括SQL语句的含义、组成和常用运算符,后续将重点介绍如何使用SQL语句创建数据库、查看数据库列表等相关操作。
1 创建数据库
MySQL中创建数据库的基式如下
CREATE DATABASE 数据库名;
【示例一】
创建myschool数据库
CREATE DATABASE myschool;
运行结果如下
在MySQL中,以英文半角分好“;”作为一条命令的结束,且在windows系统下面,默认不区分英文大小写。
Query OK, 1 row affected (0.00 sec)可以分为三部分分别表示语句执行成功、该操作影响的行数、以及操作执行的时间。
2 查看数据库列表
执行查看数据库命令可以查看已存在的数据库,语法格式如下。
SHOW DATABASES;
运行结果除了新的myschool数据库之外还有其他系统数据库
3 选择数据库
数据是存放在数据库表中的,在对数据进行操作之前,首先需要确定该表所在的数据库,因此需要先选择一个数据库,语法格式如下:
USE 数据库名;
【示例二】
选择适应mybase数据库、myschool数据库
USE mybase;
USE myschool;
运行结果如下
如果选择的数据库存在且用户有权限访问,则提示“Database changed”,表示数据库已切换
4 删除数据库
DROP DATABASE 数据库名;
【示例3】
删除myschool数据库
DROP DATABASE myschool;运行结果如下
2.2 任务2:使用Navicat管理工具连接并操作MySQL数据库
破解版的安装与下载参照
Navicat Premium 16 永久破解激活 - 酷酷的阿杰 - 博客园 (cnblogs.com)
2.2.1 通过Navicat连接MySQL数据库
启动MySQL服务后,我们通过Navicat管理工具就可以实现对MySQL数据库的联结,下面介绍其登录过程:选择连接->mysql会弹出来如下对话框,输入密码点击确定即可进行连接
点击我们的连接之后的MySQL可以出现以下画面
2.2.2 使用Navicat工具创建数据库
在Navicat中有两种方式可以创建数据库
(1)通过工具向导创建数据库:点击MySQL,右键新建数据库,在其中填写数据库名,选择字符集和排序规则如下图所示:
(2)通过SQL语句创建数据库,除了工具向导创建数据库外,还可以命令界面通过输入SQL语句来达到数据库的创建,同样右键点击MySQL,在弹出的快捷窗口中选择“命令列界面”选项,通过create database myschool;创建数据库,并点击MySQL后右键刷新:
3使用SQL语句操作数据库
2.3.1 使用SQL语句操作数据表
有了数据库之后,则需要为数据库创建数据库表。在创建数据库表之前,首先介绍数据库表中常用的几个概念。
1 数据类型
在JAVA中会把实体抽象为一个实体类。一个实体有很多属性,每个属性都有自己的数据类型,如保存员工的姓名采用String类型,而保存员工的性别,可以使用Integer类型或Boolen类型。同理数据库中的数据库表与实体对应,也存在许多类型。
2 创建表
(1)语法
创建数据库表的语法格式如下:
CREATE TABLE [IF NOT EXISTS] 表名(
字段1 数据类型 [字段属性|约束][索引][注释],
字段2 数据类型 [字段属性|约束][索引][注释],
...
字段n 数据类型 [字段属性|约束][索引][注释],
)
在MySQL中,如果使用的数据库名、表名或字段名等与保留字有冲突,需使用英文输入法状态下的反单英豪"`"括起来。在MySQL自动生成的代码中,表名或字段等都用“`”括起来,例如:
CREATE TABLE `student`(
`studentNo` INT(4) PRIMARY KEY,
`name` CHAR(10),
....
)
在使用CREATE TABLE语句创建表时,多字段之间用逗号“,”最后一个字段无须逗号。在MYSQL中常用两种注释方式如下。
(1)单行注释:#。。。(2)多行注释/#......#/
(2)字段的约束和属性
数据完整性实质数据的准确性和一致性。例如,学生的学号必须唯一,性别必须是男或女,学生参加的课程必须是学校开设的课程等。数据库是否具备数据完整性关系到数据库系统是否能真实地反映现实世界,因此数据库是否具备数据完整性关系到数据库系统是否能真实地反映现实世界,因此数据库的完整性十分重要,在MYSQL中同样也提供了约束机制以保证数据的完整性。
为了对字段的数据作进一步的限定,可以为字段设置字段约束下表列出可mysql中常用的字段属性约束。
字段属性约束名 | 关键字 | 说明 |
非空约束 | NOT NULL | 如果某字段不允许为空,则需要设置非空约束。例如:学生姓名字段不允许为空 |
默认约束 | DEFAULT | 赋予某字段默认值,如果该字段没有赋值,例如:学生表中男生巨多,可设置性别列默认值为‘男’ |
唯一约束 | UNIQUE KEY(UK) | 设置字段的值是唯一的。允许为空,但只能有一个空值 |
主键约束 | PRIMARY KEY(PK) | 设置该字段为表的主键,可以作为该表记录的唯一标识,例如:学好能唯一确定一名学生,可设置为主键 |
外键约束 | FORIGN KEY(FK) | 用于在两表之间建立关系,需要指定引用主表的哪一个字段。在插入或更新表中数据室,数据库将自动检查更行的字段是都符合约束的限制。 (1)InnoDB支持外键,MyISAM不支持,外键关联的表要求都是InnoDB的表。 (2)作为外键的字段要求在主表中是主键 |
自动增长 | AUTO+INCREMENT | (1)设置该列为自增字段,默认每条自增1;(2)通畅用于设置主键,且为整数类型 (3)可以设置初始值和步长 |
在这些字段属性约束中,主键约束是非常重要的约束,当需要使用数据库表中某个字段或某几个字段来唯一标识所有记录时,需要将该字段设置为表的主键,主键可以使单字段也可以是多字段。
(1)单字段主键
在定义字段的同时指定主键,语法格式如下:
CREATE TABLE [IF NOT EXISTS] 表名(
字段1 数据类型 PRIMARY KEY,
....
);
在定义完所有字段之后指定主键,语法格式如下:
CREATE TABLE [IF NOT EXISTS] 表名(
字段1 数据类型,
...
[CONSTRAINT<约束名>] PRIMARY KEY
);
例如:
CREATE TABLE student(
`studentNo` INT(4) PRIMARY KEY,
....
);
或
CREATE TABLE student(
`studentNo` INT(4),
...
PRIMARY KEY(`studentNo`)
);
(2)多字段联合主键
主键由多字段组成,语法格式如下。
CREATE TABLE [IF NOT EXISTS] 表名(
PRIMARY KEY(字段1,字段2)
);
例如
CREATE TABLE tb_temp(
`id` INT(4),
`NAME` VARCHAR(11),
PRIMARY KEY(id,name)
);
(3)注释
在创建表的同时可以为表或字段添加说明性文字,即注释。注释是使用COMMENT关键字来添加的,例如:
CREATE TABLE test(
`id` INT(11) UNSIGNED COMMENT '编号'
)COMMENT='测试表';
(4)编码格式的设置
在默认的情况下,MySQL所有数据库、表、字段等使用MySQL默认字符集,前面已经讲解了设置MySQL默认字符集为UTF-8,也可以通过my.ini修改default-character-set参数来修改默认字符集。
【示例4】利用CREATE TABLE语句在数据库myschool中创建学生表student
序号 | 字段名称 | 字段说明 | 数据类型 | 长度 | 属性 | 备注 |
1 | studentNo | 学号 | INT | 4 | 非空,主键 | |
2 | loginPwd | 密码 | VARHCAR | 20 | 非空 | |
3 | studentName | 学生姓名 | VARCHAR | 50 | 非空 | |
4 | sex | 性别 | CHAR | 2 | 非空,默认男 | |
5 | gradeId | 年级编号 | INT | 4 | 无符号 | |
6 | phone | 联系电话 | VARCHAR | 50 | --- | |
7 | address | 地址 | VARCHAR | 255 | 默认值“地址不详” | |
8 | birthday | 出生日期 | DATETIME | --- | --- | |
9 | 邮件账号 | VARCHAR | 50 | |||
10 | identityCard | 身份账号 | VARCHAR | 18 | 唯一 | 身份证号全国唯一 |
关键代码如下:
CREATE TABLE student(
`studentNo` INT(4) NOT NULL PRIMARY KEY COMMENT '学号' ,# 非空,主键
`loginPwd` VARCHAR(20) NOT NULL COMMENT '密码' ,
`studentName` VARCHAR(50) NOT NULL COMMENT '学生姓名' ,# 非空
`sex` CHAR(2) DEFAULT 'M' NOT NULL COMMENT '性别' ,# 非空,默认‘男’
`gradeId` INT(4) UNSIGNED COMMENT '年级编号' ,# 无符号
`phone` VARCHAR(50) COMMENT '联系电话' ,
`birthday` DATETIME COMMENT '出生日期',
`email` VARCHAR(50) COMMENT '邮件账号',
`identityCard` VARCHAR(18) COMMENT '身份账号' UNIQUE KEY #唯一
);
3 查看表
在创建完表之后需要查看表是否存在,可以使用show tables;进行查看,在使用该句代码的时候必须先选择数据库,否则会给出错误提示‘No database selected’,如果需要查看表的定义,可以使用DESCRIBE 表名或DESC 表名
当在DOS窗口中显示MySQL数据库中的信息时,中文内容可能会出现乱码,这是因为DOS窗口中默认字符集为GBK格式,如果当前MySQL设置的默认编码格式为非GKB格式,在输出信息之前,需要执行如下语句:
SET NAMES gbk;
4 删除表
与创建数据库一样,如果当前数据库中已存在表student,则再次创建时系统会提示出错。我们可以用IF EXISTS语句预先检测当前数据库中是否存在该表,如果存在,则先删除,然后创建。删除表的语法格式如下。
DROP TABLE [IF EXISTS]表名;
上机练习3 创建成绩表
序号 | 字段名称 | 字段说明 | 数据类型 | 长度 | 属性 | 备注 |
1 | studentNo | 学号 | INT | 4 | 非空 | |
2 | subjectNo | 课程编号 | INT | 4 | 非空 | |
3 | examData | 考试日期 | DATETIME | -- | 非空 | |
4 | studentResult | 成绩 | INT | 4 | 非空 |
CREATE TABLE results(
`studentNo` INT(4) NOT NULL COMMENT '学号', # 非空
`subjectNo` INT(4) NOT NULL COMMENT '课程编号', # 非空
`examData` DATETIME NOT NULL COMMENT '考试日期', # 非空
`studentResult` INT(4) NOT NULL COMMENT '成绩' # 非空
);
上机练习4 创建课程表
序号 | 字段名称 | 字段说明 | 数据类型 | 长度 | 属性 | 备注 |
1 | subjectNo | 课程编号 | INT | 4 | 非空 | 主键,标识列,自增1 |
2 | subjectName | 课程名称 | VARCHAR | 50 | -- | |
3 | classHour | 学时 | INT | 4 | -- | |
4 | gradeId | 年级编号 | INT | 4 | -- |
CREATE TABLE subject(
`subjectNo` INT(4) NOT NULL PRIMARY KEY AUTO_INCREMENT COMMENT '课程编号',# 非空
`subjectName` VARCHAR(50) COMMENT '课程名称',
`classHour` INT(4) COMMENT '学识',
`gradeId` INT(4) COMMENT '年级编号'
);
创建年级表
序号 | 字段名称 | 字段说明 | 数据类型 | 长度 | 属性 | 备注 |
1 | gradeId | 年级编号 | INT | 4 | 无符号,非空 | 主键,列标识,自增1 |
2 | gradeName | 年级名称 | VARCHAR | 50 | 非空 |
CREATE TABLE grade(
`gradeId` INT(4) UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT COMMENT '年级编号',# 无符号
`gradeName` VARCHAR(50) NOT NULL COMMENT '年级名称'
);
5 修改表
在创建了数据表之后,用户可能会因为某些原因需要修改表结构,如添加列等。这是,如果删除后又重建的表,往往还需要考虑表中现有的数据,风险比较大,此时就需要在原来已经存在的数据结构上对其进行修改。MySQL中使用ALTER关键字可以实现这一点,需要注意的是,使用SHOW TABLES语句查看该数据库中是否存在该表。
(1)修改表名
在一个数据库中,表名是唯一的。可以通过SQL语句对已创建的表改名字,语法如下
ALTER TABLE<旧表名> RENAME [TO] <新表名>;
【示例7】
在TEST数据库中创建表DEMO01,并将其改名为demo02
CREATE DATABASE test;
USE test;
CREATE TABLE demo01(
`id` INT(10) NOT NULL AUTO_INCREMENT,
`name` VARCHAR(32) NOT NULL,
PRIMARY KEY(id)
);
#修改表名
ALTER TABLE `demo01` RENAME `demo02`;
(2)添加字段
随着业务需求的变化,可能需要向已存在的表中添加新的字段,添加字段的语法格式如下:
ALTER TABLE demo2 ADD `password` VARCHAR(32) NOT NULL;
(3)修改字段
数据表中的字段包含字段名和数据类型,字段名和数据类型均可修改。下面介绍修改字段的SQL语句,其语法格式如下:
ALTER TABLE demo02 CHANGE `name` `username` CHAR(10) NOT NULL;
值得注意的是由于不同类型的数据存储方式和长度不同,修改数据类型可能会影响数据表中已有的数据,因此,在数据表已有数据的情况下不应轻易修改数据类型。
(4)删除字段
删除字段是将数据表中的某个字段从表中移除,语法格式如下
ALTER TABLE 表名 DROP 字段名;
【示例10】删除demo2表中的password字段
ALTER table demo02 DROP `password`;
以上列举了部分常用的修改表结构的ALTER TABLE语句,在实际应用中,也许还会用到其他修改表结构的语句,这时可以通过查看系统帮助来找到他们:HELP ALTER TABLE;可以查看所有修改表结构的SQL语句
(5)添加主键约束
添加主键约束的语法格式如下
ALTER TABLE 表名 ADD CONSTRAINT 主键名 PRIMARY KEY 表名(主键字段);
关键代码如下:
ALTER TABLE `grade` ADD CONSTRAINT pk_grade PRIMARY KEY `grade`(`gradeId`);
(6)添加外键约束
添加外键约束的语法如下
ALTER TABLE 表名 ADD CONSTRAINT 外键名 FOREIGN KEY (外键字段)REFERENCES 关联表名(关联字段);
#将student表的gradeId字段和grade表的gradeId字段建立主外键关联。
ALTER TABLE `student` ADD CONSTRINT fk_student_grade FOREIGN KEY (`gradeId`) REFERENCES `grade`(`gradeId`);
注意:在MySQL中,InnoDB存储类型的表支持外键,MyISAM存储的类型表不支持外键。
上机练习6 创建数据表,并实现对于表的修改操作
(1)在test数据库中创建person表,其数据结构如下所示
序号 | 字段名称 | 字段说明 | 数据类型 | 长度 | 属性 | 备注 |
1 | number | 序号 | INT | 4 | 自增列 | 主键 |
2 | name | 姓名 | VARCHAR | 50 | 非空 | |
3 | sex | 性别 | CHAR | 2 | -- | |
4 | birthday | 出生日期 | DATATIME | -- | -- |
(2)将表名修改为tb_person
(3)删除出生日期字段
(4)添加出生日期字段,数据类型为DATE类型
(5)将number字段名改为id,数据类型改为BIGINT类型
求解
(1)
USE TEST;
CREATE TABLE person(
`number` INT(4) AUTO_INCREMENT PRIMARY KEY,
`name` VARCHAR(50) NOT NULL,
`sex` CHAR(2),
`birthday` DATETIME
);
(2)
ALTER TABLE person RENAME tb_person;
show tables;
(3)
ALTER TABLE tb_person DROP `birthday`;
desc tb_person;
(4)
ALTER TABLE tb_person ADD `birthday` DATE;
DESC tb_person;
(5)
ALTER TABLE tb_person CHANGE `number` `id` BIGINT;
DESC tb_person;
上机练习7 使用SQL语句为myschool数据库中的result表添加约束
(1)主键约束:学号、课程编号和日期构成复合主键
(2)外键约束:主表student盒从表result通过studentNo字段建立主外键关系。
解答
(1)
USE myschool;
ALTER TABLE `results` ADD CONSTRAINT pk_stu_sub_date PRIMARY KEY `results`(`studentNo`,`subjectNo`,`examData`);
DESC results;
(2)
ALTER TABLE `student` ADD CONSTRAINT `fk_stu_resu` FOREIGN KEY (`studentNo`) REFERENCES `results` (`studentNo`);
2.3.2 HELP命令
MySQL中有帮助系统HELP,语法格式如下HELP 查询内容例如 HELP DOUBLE;
本章练习
建立一个图书馆系统的数据库,用来存放图书馆的相关信息,包括图书馆的基本信息、图书馆借阅的信息和读者的信息。要求全部用SQL语句来实现。推荐步骤如下。
(1)创建数据库Library
CREATE DATABASE Library;
(2)创建一下四个表
图书信息表(book)
字段名称 | 数据类型 | 说明 |
bId | 字符型 | 图书编号,主键,该列必填 |
bName | 字符型 | 图书书名,该列必填 |
author | 字符型 | 作者姓名,该列必填 |
pubDate | 日期型 | 出版日期,该列必填 |
bCount | 整形 | 现存数量,该列必填 |
pubComp | 字符型 | 出版社,该列必填 |
price | 浮点型 | 单价,该列必填 |
CREATE TABLE book(
`bId` VARCHAR(20) PRIMARY KEY NOT NULL,
`bName` VARCHAR(20) NOT NULL,
`author` VARCHAR(20) NOT NULL,
`pubComp` DATE NOT NULL,
`price` FLOAT NOT NULL
);
读者信息表(reader)
字段名称 | 数据类型 | 说明 |
rId | 字符型 | 读者编号,主键,该列必填 |
rName | 字符型 | 读者姓名,该列必填 |
rAddress | 字符型 | 联系地址 |
lenNum | 整形 | 借阅书目,该列必填 |
CREATE TABLE reader(
`rId` VARCHAR(20) PRIMARY KEY NOT NULL COMMENT '读者编号',
`rName` VARCHAR(20) NOT NULL,
`rAddress` VARCHAR(20) ,
`lendNum` INT(4) NOT NULL
);
图书借阅表(borrow)
字段名称 | 数据类型 | 说明 |
rId | 字符型 | 读者编号,复合主键,该列必填 |
bId | 字符型 | 图书编号,复合主键,该列必填 |
lendDate | 日期型 | 借阅日期,复合主键,默认值为当前日期,该列必填 |
willDate | 日期型 | 应归还日期 |
returnDate | 日期型 | 世纪归还日期 |
CREATE TABLE borrow(
`rId` VARCHAR(20) NOT NULL,
`bId` VARCHAR(20) NOT NULL,
`lendDate` DATETIME ,
`willDate` DATETIME NOT NULL,
`returnDate` DATETIME ,
PRIMARY KEY(`rId`,`bId`,`lendDate`)
);
罚款记录表(penalty)
字段名称 | 数据类型 | 说明 |
rId | 字符型 | 读者编号,复合主键,该列必填 |
bId | 字符型 | 图书编号,复合主键,该列必填 |
pDate | 日期型 | 罚款日期,复合主键,该列必填 |
pType | 整形 | 罚款类型 1-延期,2-损坏,3-丢失,该列必填 |
amount | 浮点型 | 罚款金额,该列必填 |
CREATE TABLE penalty(
`rId` VARCHAR(20) NOT NULL,
`bId` VARCHAR(20) NOT NULL,
`pDate` DATETIME NOT NULL,
`pType` INT(4) NOT NULL,
`amount` FLOAT NOT NULL,
PRIMARY KEY(rId,bId,pDate)
);