MySQL从删库到跑路(四)——MySQL数据库创建实例

2024-01-19 04:40

本文主要是介绍MySQL从删库到跑路(四)——MySQL数据库创建实例,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

作者:天山老妖S

链接:http://blog.51cto.com/9291927

一、创建数据库

1、创建数据库

创建数据库,指定数据库的默认字符集为utf8。
create database schoolDB default character set utf8;
连接数据库,客户端必须选择UTF8字符集。
数据库中的三张表分别为学生表(student)、课程表(TSubject)、分数表(TScore)。

2、创建学生表

CREATE TABLE `TStudent` (  `StudentID` varchar(15) NOT NULL,  `Sname` varchar(10) DEFAULT NULL,  `sex` char(1) DEFAULT NULL,  `cardID` varchar(20) DEFAULT NULL,  `Birthday` date DEFAULT NULL,  `Email` varchar(40) DEFAULT NULL,  `Class` varchar(20) DEFAULT NULL,  `enterTime` datetime DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

3、创建课程表

create table TSubject
(
subJectID nvarchar(10),
subJectName nvarchar(30), BookName nvarchar(30), Publisher nvarchar(20) )ENGINE=InnoDB DEFAULT CHARSET=utf8;

4、创建分数表

create table TScore
(
StudentID nvarchar(15),
subJectID nvarchar(10), mark decimal)ENGINE=InnoDB DEFAULT CHARSET=utf8;

二、数据库信息的生成

1、插入课程表信息

insert into TSubject values ('0001','计算机网络','奠基计算机网络','清华出版社');insert into TSubject values ('0002','数据结构','大话数据结构','人邮出版社');insert into TSubject values ('0003','JAVA开发','JAVA企业级开发','人邮出版社');

2、创建产生学生姓名的函数

create function CreateName()RETURNS varchar(3)beginDECLARE LN VARCHAR(300);DECLARE MN VARCHAR(500);DECLARE FN VARCHAR(500);DECLARE LN_N INT;DECLARE MN_N INT;DECLARE FN_N INT; SET LN='李王张刘陈杨黄赵周吴徐孙朱马胡郭林何高梁郑罗宋谢唐韩曹许邓萧冯曾程蔡彭潘袁于董余苏叶吕魏蒋田杜丁沈姜范江傅钟卢汪戴崔任陆廖姚方金邱夏谭韦贾邹石熊孟秦阎薛侯雷白龙段郝孔邵史毛常万顾赖武康贺严尹钱施牛洪龚'; SET MN='伟刚勇春菊毅俊峰强军平保东文辉力明永健世广志瑗琰韵融园艺咏卿聪澜纯毓悦昭冰爽琬茗羽希宁欣飘育滢馥新利筠柔竹霭凝晓欢霄枫芸菲寒伊亚宜可姬舒义兴良海山仁波宁贵福生龙元全国胜学祥亮政谦亨奇固之岚苑富顺信子杰涛昌成康星光天达安岩中茂进林有坚和彪博诚先敬震振壮会思群豪清飞彬娜静淑惠珠翠雅芝妍茜秋珊莎锦黛青倩婷姣婉娴瑾颖露瑶怡婵雁蓓纨仪荷丹蓉眉君琴蕊薇菁梦素伟刚勇毅俊峰强军平保东文辉力明永健世广志义兴良海山仁波宁贵福生龙元全国胜学祥才发武新利清飞彬富顺信子杰涛昌成康星光天达安岩中茂进林有坚和彪博诚先敬震振壮会思群豪心邦承乐绍功松善厚庆磊民友裕河哲江超浩亮政谦亨奇固之轮翰朗伯宏言若鸣朋斌梁栋维启克伦翔旭鹏泽晨辰士以建家致树炎德行时泰盛雄琛钧冠策腾楠榕风航弘'; SET FN='伟刚勇毅俊云莲真环雪荣爱妹霞香月莺媛艳瑞凡佳嘉琼勤珍贞莉桂娣叶璧才发武丽琳轮翰朗伯宏言若鸣朋斌梁栋维启克伦翔旭鹏泽晨辰士以建家致树炎德河哲江超浩璐娅琦晶裕华慧巧美婕馨影荔枝思心邦承乐绍功松善厚庆磊民友玉萍红娥玲芬芳燕彩兰凤洁梅秀娟英行时泰盛雄琛钧冠策腾楠榕风航弘峰强军平保东文辉力明永健世广志义兴良海山仁波宁贵福生龙元全国胜学祥才发武新利清飞彬富顺信子杰涛昌成康星光天达安岩中茂进林有坚和彪博诚先敬震振壮会思群豪心邦承乐绍功松善厚庆磊民友裕河哲江超浩亮政谦亨奇固之轮翰朗伯宏言若鸣朋斌梁栋维启克伦翔旭鹏泽晨辰士以建家致树炎德行时泰盛雄琛钧冠策腾楠榕风航弘'; SET LN_N=CHAR_LENGTH(LN); SET MN_N=CHAR_LENGTH(MN); SET FN_N=CHAR_LENGTH(FN);return Concat(substring(LN,ceil(rand()*LN_N),1),substring(MN,ceil(rand()*MN_N),1),substring(FN,ceil(rand()*FN_N),1)); end

3、创建添加学生的存储过程

create procedure addStudent(in num int)
begin
declare i int;
set i=1;delete from TStudent;while num>=i doinsert TStudent values (       LPAD(convert(i,char(5)),5,'0'),       CreateName(),       if(ceil(rand()*10)%2=0,'男','女'),       RPAD(convert(ceil(rand()*1000000000000000000),char(18)),18,'0'), Concat(convert(ceil(rand()*10)+1980,char(4)),'-',LPAD(convert(ceil(rand()*12), char(2)),2,'0'),'-',LPAD(convert(ceil(rand()*28),char(2)),2,'0')),       Concat(PINYIN(sname),'@hotmail.com'),       case ceil(rand()*3) when 1 then '网络与网站开发' when 2 then 'JAVA' ELSE 'NET' END,       NOW() ); set i=i+1; end while;select * from TStudent; End

插入1000个学生记录。
call addStudent(1000);

4、创建汉字转拼音的函数

--创建汉字转拼音的函数使用的表

CREATE TABLE `pinyin` (  `letter` char(1) NOT NULL,  `chinese` char(1) NOT NULL,  PRIMARY KEY  (`letter`) ) ENGINE=MyISAM DEFAULT CHARSET=gbk; 

--插入数据

INSERT INTO `pinyin` VALUES ('A','驁'),('B','簿'),('C','錯'),('D','鵽'),('E','樲'),('F','鰒'),('G','腂'),('H','夻'),('J','攈'),('K','穒'),('L','鱳'),('M','旀'),('N','桛'),('O','漚'),('P','曝'),('Q','囕'),('R','鶸'),('S','蜶'),('T','籜'),('W','鶩'),('X','鑂'),('Y','韻'),('Z','咗'); CREATE FUNCTION PINYIN(str CHAR(255))RETURNS char(255)BEGINDECLARE hexCode char(4);DECLARE pinyin varchar(255);DECLARE firstChar char(1);DECLARE aChar char(1);DECLARE pos int;DECLARE strLength int; SET pinyin    = ''; SET strLength = CHAR_LENGTH(LTRIM(RTRIM(str))); SET pos       = 1; SET @str      = (CONVERT(str USING gbk));WHILE pos <= strLength DO    SET @aChar = SUBSTRING(@str,pos,1);    SET hexCode = HEX(@aChar);    IF hexCode >= "8140" AND hexCode <= "FEA0" THEN        SELECT letter into firstChar        FROM   pinyin        WHERE  chinese >= @aChar        LIMIT  1;    ELSE      SET firstChar = @aChar;    END IF;    SET pinyin = CONCAT(pinyin,firstChar);    SET pos = pos + 1; END WHILE;  RETURN UPPER(pinyin); END

5、创建插入学生成绩的存储过程

create procedure fillScore()
begin
DECLARE St_Num INT;
DECLARE Sb_Num INT;
DECLARE i1 INT;
DECLARE i2 INT;set i1=1;set i2=1; delete from TScore;select count(*) into St_Num from TStudent;select count(*) into Sb_Num from TSubject;while St_Num>=i1 doset i2=1;while Sb_Num>=i2 doinsert TScore values (LPAD(convert(i1,char(5)),5,'0'),LPAD(convert(i2,char(4)),4,'0'),ceil(50+rand()*50));set i2=i2+1; END WHILE;set i1=i1+1; END WHILE; End

插入学生成绩
call fillScore();

三、学生成绩表的查看

select a.*,b.*,c.* from TStudent a join TScore b on a.studentid=b.studentid join TSubject c on b.subjectid=c.subjectid limit 50;

 

喜欢的小伙伴们可以搜索我们个人的微信公众号“程序员的成长之路”点击关注或扫描下方二维码

转载于:https://www.cnblogs.com/cxydczzl/p/9789546.html

这篇关于MySQL从删库到跑路(四)——MySQL数据库创建实例的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/621294

相关文章

MySQL数据库约束深入详解

《MySQL数据库约束深入详解》:本文主要介绍MySQL数据库约束,在MySQL数据库中,约束是用来限制进入表中的数据类型的一种技术,通过使用约束,可以确保数据的准确性、完整性和可靠性,需要的朋友... 目录一、数据库约束的概念二、约束类型三、NOT NULL 非空约束四、DEFAULT 默认值约束五、UN

CentOS和Ubuntu系统使用shell脚本创建用户和设置密码

《CentOS和Ubuntu系统使用shell脚本创建用户和设置密码》在Linux系统中,你可以使用useradd命令来创建新用户,使用echo和chpasswd命令来设置密码,本文写了一个shell... 在linux系统中,你可以使用useradd命令来创建新用户,使用echo和chpasswd命令来设

MySQL 多表连接操作方法(INNER JOIN、LEFT JOIN、RIGHT JOIN、FULL OUTER JOIN)

《MySQL多表连接操作方法(INNERJOIN、LEFTJOIN、RIGHTJOIN、FULLOUTERJOIN)》多表连接是一种将两个或多个表中的数据组合在一起的SQL操作,通过连接,... 目录一、 什么是多表连接?二、 mysql 支持的连接类型三、 多表连接的语法四、实战示例 数据准备五、连接的性

MySQL中的分组和多表连接详解

《MySQL中的分组和多表连接详解》:本文主要介绍MySQL中的分组和多表连接的相关操作,本文通过实例代码给大家介绍的非常详细,感兴趣的朋友一起看看吧... 目录mysql中的分组和多表连接一、MySQL的分组(group javascriptby )二、多表连接(表连接会产生大量的数据垃圾)MySQL中的

使用Python和Pyecharts创建交互式地图

《使用Python和Pyecharts创建交互式地图》在数据可视化领域,创建交互式地图是一种强大的方式,可以使受众能够以引人入胜且信息丰富的方式探索地理数据,下面我们看看如何使用Python和Pyec... 目录简介Pyecharts 简介创建上海地图代码说明运行结果总结简介在数据可视化领域,创建交互式地

MySQL 中的 JSON 查询案例详解

《MySQL中的JSON查询案例详解》:本文主要介绍MySQL的JSON查询的相关知识,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录mysql 的 jsON 路径格式基本结构路径组件详解特殊语法元素实际示例简单路径复杂路径简写操作符注意MySQL 的 J

Windows 上如果忘记了 MySQL 密码 重置密码的两种方法

《Windows上如果忘记了MySQL密码重置密码的两种方法》:本文主要介绍Windows上如果忘记了MySQL密码重置密码的两种方法,本文通过两种方法结合实例代码给大家介绍的非常详细,感... 目录方法 1:以跳过权限验证模式启动 mysql 并重置密码方法 2:使用 my.ini 文件的临时配置在 Wi

MySQL重复数据处理的七种高效方法

《MySQL重复数据处理的七种高效方法》你是不是也曾遇到过这样的烦恼:明明系统测试时一切正常,上线后却频频出现重复数据,大批量导数据时,总有那么几条不听话的记录导致整个事务莫名回滚,今天,我就跟大家分... 目录1. 重复数据插入问题分析1.1 问题本质1.2 常见场景图2. 基础解决方案:使用异常捕获3.

SQL中redo log 刷⼊磁盘的常见方法

《SQL中redolog刷⼊磁盘的常见方法》本文主要介绍了SQL中redolog刷⼊磁盘的常见方法,将redolog刷入磁盘的方法确保了数据的持久性和一致性,下面就来具体介绍一下,感兴趣的可以了解... 目录Redo Log 刷入磁盘的方法Redo Log 刷入磁盘的过程代码示例(伪代码)在数据库系统中,r

mysql中的group by高级用法

《mysql中的groupby高级用法》MySQL中的GROUPBY是数据聚合分析的核心功能,主要用于将结果集按指定列分组,并结合聚合函数进行统计计算,下面给大家介绍mysql中的groupby用法... 目录一、基本语法与核心功能二、基础用法示例1. 单列分组统计2. 多列组合分组3. 与WHERE结合使