数据库基本表定义及修改

该博客详细介绍了如何在MySQL环境中创建名为'books_db'的数据库,并在此数据库中建立图书、读者、借书和还书四个表。每个表的字段和约束都得到了明确的定义,包括主键和外键。随后,对读者表进行了增加、修改和删除字段的操作,以及修改图书表中'库存'字段的数据类型。在操作过程中,博主遇到了一些问题,如误设唯一属性和主键设置,但通过重新创建表和调整语句成功解决了问题。
摘要由CSDN通过智能技术生成

题目:

1、创建数据库:创建名为“books_db”的数据库。
2、建立基本表
在MySQL命令行客户端中,使用SQL语句在“books_db”数据库中建立以下四个表。表结构如下:(注意:在创建表之前,需使用use命令打开“books_db”数据库)
(1)图书表,表名:book
在这里插入图片描述
(2)读者表, 表名:reader
在这里插入图片描述
(3)借书表, 表名:borrow_book在这里插入图片描述
(4)还书表,表名:return_book
在这里插入图片描述
建表时,注意如下约束:
①图书表:书号为主码
②读者表:编号为主码;
③借书表:(书号, 读者编号)为主码;
书号为外码,参照表、列是图书表的书号列;
读者编号为外码,参照表、列是读者表的编号列。
④还书表:(书号, 读者编号)为主码;
书号为外码,参照表、列是图书表的书号列;
读者编号为外码,参照表、列是读者表的编号列。

3、修改基本表(使用SQL语句)
(1)给读者表增加一个“备注”字段,类型为varchar(150);
(2)将“备注”字段的类型修改为varchar(200);
(3)删除“备注”字段;
(4)将图书表中的“库存”字段类型改为smallint。

实验答案:

总体实现代码(一个要求一个答案)

1.进入

mysql -uroot -p;
create database books_db DEFAULT CHARACTER SET utf8;
show databases;

2.进入books_db数据库且创建四个表

use books_db;
SELECT DATABASE();

(1)创建图书表

CREATE TABLE book          
	   (book_number   CHAR(10) NOT NULL PRIMARY KEY,               
            category  VARCHAR(12), 
            book_name   VARCHAR(30) NOT NULL,
            publisher   CHAR(30) NOT NULL,
            author  CHAR(10),
	    price   NUMERIC(5,2),
            book_total   INT NOT NULL,
            inventory  INT NOT NULL
           );
desc book;

(2)创建读者表

CREATE TABLE reader        
	   (reader_number   CHAR(10) NOT NULL PRIMARY KEY,                 
            name  VARCHAR(8)   NOT NULL,
            department   CHAR(20),
            gender   CHAR(2) NOT NULL,
            telephone  CHAR(15)
           );
desc reader;

(3)创建借书表

CREATE TABLE borrow_book       
	   (reader_number   CHAR(10) NOT NULL,           
            book_number  CHAR(10)   NOT NULL,
            borrow_time   DATETIME NOT NULL,
	    PRIMARY KEY ( reader_number, book_number ),
	    FOREIGN KEY(book_number) REFERENCES book(book_number),
	    FOREIGN KEY(reader_number) REFERENCES reader(reader_number)
           );
desc borrow_book;

(4)创建还书表

CREATE TABLE return_book      
	   (reader_number   CHAR(10) NOT NULL,           
            book_number  CHAR(10)   NOT NULL,
            return_time  DATETIME NOT NULL,
	    PRIMARY KEY ( reader_number, book_number ),
	    FOREIGN KEY(book_number) REFERENCES book(book_number),
	    FOREIGN KEY(reader_number) REFERENCES reader(reader_number)
           );
desc return_book;

看整体建的表

show tables;

(1)给读者表增加一个“备注”字段,类型为varchar(150);

ALTER TABLE reader ADD extra VARCHAR(150);
desc reader;

(2)将“备注”字段的类型修改为varchar(200);

ALTER TABLE reader MODIFY extra VARCHAR(200);
desc reader;

(3)删除“备注”字段;

ALTER TABLE reader DROP extra ;
desc reader;

(4)将图书表中的“库存”字段类型改为smallint。

ALTER TABLE book MODIFY  inventory  SMALLINT;
desc book;

分布代码:每一句SQL以及对应效果

//进入
mysql -uroot -p;  

在这里插入图片描述

//让中文输入不会乱码
create database books_db DEFAULT CHARACTER SET utf8;

在这里插入图片描述

//进bools_bd数据库
use books_db;

在这里插入图片描述

//查看当前数据库是什么
SELECT DATABASE();

在这里插入图片描述

//建立book表
CREATE TABLE book          
	   (book_number   CHAR(10) NOT NULL PRIMARY KEY,               
            category  VARCHAR(12), 
            book_name   VARCHAR(30) NOT NULL,
            publisher   CHAR(30) NOT NULL,
            author  CHAR(10),
	        price   NUMERIC(5,2),
            book_total   INT NOT NULL,
            inventory  INT NOT NULL
           );

在这里插入图片描述

//查看book表
desc book;

在这里插入图片描述

//建reader表
CREATE TABLE reader        
	   (reader_number   CHAR(10) NOT NULL PRIMARY KEY,                 
            name  VARCHAR(8)   NOT NULL,
            department   CHAR(20),
            gender   CHAR(2) NOT NULL,
            telephone  CHAR(15)
           );

在这里插入图片描述

//查看reader表
desc reader;

在这里插入图片描述

//建borrow_book表
CREATE TABLE borrow_book       
	   (reader_number   CHAR(10) NOT NULL,           
            book_number  CHAR(10)   NOT NULL,
            borrow_time   DATETIME NOT NULL,
	    PRIMARY KEY ( reader_number, book_number ),
	    FOREIGN KEY(book_number) REFERENCES book(book_number),
	    FOREIGN KEY(reader_number) REFERENCES reader(reader_number)
           );

在这里插入图片描述

desc borrow_book;//查borrow_book表

在这里插入图片描述

//建return_book表
CREATE TABLE return_book      
	   (reader_number   CHAR(10) NOT NULL,           
            book_number  CHAR(10)   NOT NULL,
            return_time  DATETIME NOT NULL,
	    PRIMARY KEY ( reader_number, book_number ),
	    FOREIGN KEY(book_number) REFERENCES book(book_number),
	    FOREIGN KEY(reader_number) REFERENCES reader(reader_number)
           );

在这里插入图片描述

//查return_book表
desc return_book;

在这里插入图片描述

//查看全部的数据库有哪些
show databases;

在这里插入图片描述

//查看当前数据库下表有哪些
show tables;

在这里插入图片描述

//给读者表增加一个“备注”字段,类型为varchar(150);
ALTER TABLE reader ADD extra VARCHAR(150);

在这里插入图片描述

//查看reader表
desc reader; 

在这里插入图片描述

//将“备注”字段的类型修改为varchar(200);
ALTER TABLE reader MODIFY extra VARCHAR(200);

在这里插入图片描述

//查看reader表
desc reader;

在这里插入图片描述

//删除“备注”字段;
ALTER  TABLE reader DROP extra ;

在这里插入图片描述

//查看reader表
desc reader;

在这里插入图片描述

//将图书表中的“库存”字段类型改为smallint。
ALTER TABLE book MODIFY  inventory  SMALLINT;

在这里插入图片描述

//查看book表
desc book;

在这里插入图片描述

遇到的困难及解决办法:

(1)创建book表时不小心给category加了UNIQUE属性。解决办法:删除整个book(drop TABLE book ;)表后在创建新的book表。
(2) Borrow表中主码是多个属性一起,如何设置主码?解决办法:将PRIMARY KEY放到所有元组之后,使用括号一起定义。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值