数据库实验一 创建数据库

一.实验目的

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',''));语句消除。

相关推荐
阡陌数智3 小时前
Extended Thinking 深度拆解:Claude Opus 5.5 推理范式、Token 计费陷阱与 Agent 工程落地
数据库
Dragon~Snow3 小时前
Centos Stream10 安装 MySQL-9.7.2-linux-glibc2.28-x86_64.tar
linux·mysql·centos
skywalk81634 小时前
不用 SSH、不装数据库:我用 1 个 Python 脚本 + Git,把 15 个 AI Agent 串成了一条流水线
数据库·人工智能·python·ssh·集群
Decay__4 小时前
19_MySQL 告警与自动化运维 —— 告警分级收敛 / Webhook / 定时巡检 / 脚本库
运维·数据库·sql·mysql·架构
代码不停4 小时前
Spring Aop
java·数据库·spring
keyipatience4 小时前
MySQL 学习(4)常用数据类型
数据库·mysql
达梦产品与服务4 小时前
SQLark V4.2 更新 | 新增TiDB、SSL安全连接、数据字典、清空/截断表等40+项功能已上线!
数据库·安全·tidb·ssl
码农阿豪4 小时前
SQL Server数据迁移完成后,凌晨的数据库告警该怎么查?
数据库·sqlserver
bjzhang755 小时前
sqlsugar入门
数据库·sqlsugar
全栈陈序员7 小时前
【Git】从入门到精通(十)—— 撤销与恢复:git checkout与git restore
运维·网络·数据库·git