数据库实验一 创建数据库

一.实验目的

1.学会数据表的创建;

2.加深对表间关系的理解;

3.理解数据库中数据的简单查询方法和应用。

二. 实验内容

1.题目要求

给定一个实际问题,实际应用问题的模式设计中至少要包括3个基本表。应用问题是供应商给工程供应零件(课本P70)。

(1)创建一个数据库,数据库名称命名为自己的学号。

(2)在已建立的数据库中使用SQL语句和可视化环境分别建立应用中的四个表,包括属性名、数据类型,正确创建表的主键、外键。

(3)向工程表J中增加适当规模的记录(至少1000条,上万条最好,项目名可以用"项目+序号"简单命名,每个项目名唯一);然后基于项目名属性列建唯一索引,并编写查询语句验证所建索引是否有效。(提示:查询语句中的条件要用到项目名属性;在建索引前先执行该语句,建索引后再执行,然后比较两次执行的时间)。

(4)将数据库转储到D盘根目录下,命名为自己的学号。点击右键选择"转储SQL文件",选择"结构和数据"。

(5)完成数据库的备份和还原。首先为建好的数据库新建备份,然后在将备份拷走,和同学合作在另一台电脑上还原备份,还原后查看原有数据库中的信息是否存在。

2.实验结果

代码:

sql 复制代码
SET  sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''));

CREATE TABLE P
(
  PNO char(20) PRIMARY KEY,
  PNAME char(20),
  COLOR char(20),
  WEIGHT int
);

CREATE TABLE J
(
  JNO char(20) PRIMARY KEY,
	JNAME char(20),
	CITY char(20)
);

CREATE TABLE S
(
  SNO char(20) PRIMARY KEY,
  SNAME char(20) UNIQUE,
  SSTATUS char(20),
  CITY char(20)
);

CREATE TABLE SPJ
(
  SNO char(20),
  PNO char(20),
  JNO char(20),
  QTY int,
  PRIMARY KEY(SNO,PNO,JNO),
	FOREIGN KEY(SNO)REFERENCES S(SNO),
	FOREIGN KEY(PNO)REFERENCES P(PNO),
	FOREIGN KEY(JNO)REFERENCES J(JNO)
);

DELIMITER $$
CREATE PROCEDURE proc_insert_J(in args int)
BEGIN
	DECLARE i INT DEFAULT 0;
-- 	开启事务,不开的话100w条按天算
	start transaction;
	REPEAT
		set i=i+1;
		insert into J values(concat('J',i),CONCAT('项目',i),'济南');	
	  UNTIL i >= args END REPEAT;
	commit;
END
$$
DELIMITER ;

call proc_insert_J(100000);

CREATE UNIQUE INDEX J_JNAME ON J(JNAME);

SELECT * FROM J WHERE JNAME='项目99999' ;

实验截图

由上图可见建立索引前的查找时间为0.023s。

由上图可见建立索引后查询时间有所缩短,查询时间为0.007s。

转储SQL文件。

备份还原后查看原有数据库中的信息仍然存在。

注意:在建表的过程中会出现[Err] 1055 - Expression #1 of ORDER BY clause is not in GROUP BY clause and contains nonaggregated column 'information_schema.PROFILING.SEQ' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by的错误,使用SET sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''));语句消除。

相关推荐
程序员小白条6 小时前
0经验如何找实习?
java·开发语言·数据结构·数据库·链表
liulilittle6 小时前
C++ 浮点数封装。
linux·服务器·开发语言·前端·网络·数据库·c++
郭涤生6 小时前
QT 架构笔记
java·数据库·系统架构
韩立学长6 小时前
基于Springboot流浪动物领养网站0kh2iyb4(程序、源码、数据库、调试部署方案及开发环境)系统界面展示及获取方式置于文档末尾,可供参考。
数据库·spring boot·后端
DBA小马哥6 小时前
Oracle迁移到金仓数据库:完整迁移步骤与兼容性优化实战
数据库·oracle·国产化平替
@nengdoudou6 小时前
KStudio 客户端无法访问 KES 数据库服务器的指定 IP / 端口
数据库
R.lin7 小时前
windows MySQL解压版安装教程
windows·mysql·adb
宋军涛7 小时前
记一次Sqlserver数据库存储过程调用导致的连接池耗尽事件
数据库
前端小臻7 小时前
MySQL 错误 1005 (errno: 150) 深度解析与解决方案
数据库·mysql
魔镜前的帅比7 小时前
向量数据库原理
数据库·人工智能