GreatSQL/MySQL数据库练习

GreatSQL/MySQL数据库练习

vate_room 186 2022-08-22

/3. 从MySQL官网下载employees、sakila数据库,导入。

/4. 创建一个InnoDB表t1,至少包含int、varchar、datetimie等多种类型的数据列,并根据下述要求插入数据。

4.1 要求:用自增INT作为主键列。

4.2 对t1表插入一列,放在varchar列的前面。

4.3 对照t1表的各列类型,采用各自相关类型的函数,生成随机数据(包含中文字符)并写入该表。

下载数据库

安装sakila

官方文档

下载页面

下载页面

下载,安装

wget https://downloads.mysql.com/docs/sakila-db.tar.gz
tar xvf /root/sakila-db.tar.gz
rm sakila-db.tar.gz 
cd sakila-db/
 
mysql -u root -p'123456'
source /root/sakila-db/sakila-schema.sql;
source /root/sakila-db/sakila-data.sql;
[root@localhost sakila-db]# ls
sakila-data.sql  sakila.mwb  sakila-schema.sql

  • sakila-schema.sql文件包含创建sakila数据库结构所需的所有create语句,包括表、视图、存储过程和触发器。
  • sakila-data.sql文件包含填充由sakila-schema.sql文件创建的结构所需的insert语句,以及初始数据加载后必须创建的触发器的定义。
  • sakila.mwb文件是一个mysql工作台数据模型,您可以在mysql工作台中打开它来检查数据库结构。

安装Employees

Employees数据库是一个用于学习和测试的数据库,大约160MB,4百万条记录

GitHub仓库

wget https://github.com/datacharmer/test_db/releases/download/v1.0.7/test_db-1.0.7.tar.gz

wget https://ghproxy.com/https://github.com/datacharmer/test_db/releases/download/v1.0.7/test_db-1.0.7.tar.gz

tar xvf test_db-1.0.7.tar.gz
cd test_db/
mysql -u root -p'123456'

source /root/test_db/employees.sql;

创建数据库

创建表

CREATE DATABASE db1;
use db1;
CREATE table t1 (
	id int(10) not null auto_increment,
	name varchar(20),
	birthday datetime DEFAULT(1999-1-1),
	last_update timestamp not null default current_timestamp on update current_timestamp,
	primary key (id)

)engine=innodb default charset=utf8mb4;

插入字段

desc t1;
alter table t1 add nickname varchar(20) AFTER id;
desc t1;

插入字段演示

插入字段演示

创建函数

SET GLOBAL log_bin_trust_function_creators=TRUE;
DELIMITER $$
CREATE FUNCTION make_data()
RETURNS INT 

BEGIN
	DECLARE word_lib varchar(2056) DEFAULT '嘉懿煜城懿轩烨伟苑博伟泽熠彤鸿煊博涛烨霖烨华煜祺智宸正豪昊然明杰诚立轩立辉峻熙弘文熠彤鸿煊烨霖哲瀚鑫鹏致远俊驰雨泽烨磊晟睿天佑文昊修洁黎昕远航旭尧鸿涛伟祺轩越泽浩宇瑾瑜皓轩擎苍擎宇志泽睿渊楷瑞轩弘文哲瀚雨泽鑫磊梦琪忆之桃慕青问兰尔岚元香初夏沛菡傲珊曼文乐菱痴珊恨玉惜文香寒新柔语蓉海安夜蓉涵柏水桃醉蓝春儿语琴从彤傲晴语兰又菱碧彤元霜怜梦紫寒妙彤曼易南莲紫翠雨寒易烟如萱若南寻真晓亦向珊慕灵以蕊寻雁映易雪柳孤岚笑霜海云凝天沛珊寒云冰旋宛儿绿真盼儿晓霜碧凡夏菡曼香若烟半梦雅绿冰蓝灵槐平安书翠翠风香巧代云梦曼幼翠友巧听寒梦柏醉易访旋亦玉凌萱访卉怀亦笑蓝春翠靖柏夜蕾冰夏梦松书雪乐枫念薇靖雁寻春恨山从寒忆香觅波静曼凡旋以亦念露芷蕾千兰新波代真新蕾雁玉冷卉紫山千琴恨天傲芙盼山怀蝶冰兰山柏翠萱乐丹翠柔谷山之瑶冰露尔珍谷雪乐萱涵菡海莲傲蕾青槐冬儿易梦惜雪宛海之柔夏青亦瑶妙菡春竹修杰伟诚建辉晋鹏天磊绍辉泽洋明轩健柏煊昊强伟宸博超君浩子骞明辉鹏涛炎彬鹤轩越彬风华靖琪明诚高格光华国源宇晗昱涵润翰飞翰海昊乾浩博和安弘博鸿朗华奥华灿嘉慕坚秉建明金鑫锦程瑾瑜鹏经赋景同靖琪君昊俊明季同开济凯安康成乐语力勤良哲理群茂彦敏博明达朋义彭泽鹏举濮存溥心璞瑜浦泽奇邃祥荣轩';
	
	 DECLARE length_word_lib int DEFAULT LENGTH(word_lib) / 3;
	
	DECLARE i INT DEFAULT 0;
	WHILE i < 100 DO 				
		 INSERT IGNORE INTO t1(`id`,`nickname`,`name`,`birthday`) 
		 VALUES(
		 i,
		 substring(md5(rand()), 1, 15),
		 SUBSTRING(word_lib, FLOOR(1 + RAND() * length_word_lib), 3),
		 concat(floor(rand()*50+1970),'-',floor(rand()*11+1),'-',floor(rand()*27+1))
		 );
		SET i=i+1;	
END WHILE;

return 1;
END $$

DELIMITER ;
 #运行函数
SELECT make_data();
#删除函数
drop  FUNCTION IF EXISTS make_data;

运行结果:

运行结果