数据库实验一 创建数据库

一.实验目的

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

相关推荐
夜泉_ly2 小时前
MySQL -安装与初识
数据库·mysql
qq_529835353 小时前
对计算机中缓存的理解和使用Redis作为缓存
数据库·redis·缓存
月光水岸New5 小时前
Ubuntu 中建的mysql数据库使用Navicat for MySQL连接不上
数据库·mysql·ubuntu
狄加山6756 小时前
数据库基础1
数据库
我爱松子鱼6 小时前
mysql之规则优化器RBO
数据库·mysql
chengooooooo6 小时前
苍穹外卖day8 地址上传 用户下单 订单支付
java·服务器·数据库
Rverdoser7 小时前
【SQL】多表查询案例
数据库·sql
Galeoto7 小时前
how to export a table in sqlite, and import into another
数据库·sqlite
人间打气筒(Ada)7 小时前
MySQL主从架构
服务器·数据库·mysql
leegong231117 小时前
学习PostgreSQL专家认证
数据库·学习·postgresql