前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >MySQL从删库到跑路(四)——MySQL数据库创建实例

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

作者头像
良月柒
发布2019-03-20 15:57:43
2.4K0
发布2019-03-20 15:57:43
举报

作者:天山老妖S 链接:http://blog.51cto.com/9291927

一、创建数据库

1、创建数据库

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

2、创建学生表

代码语言:javascript
复制
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、创建课程表

代码语言:javascript
复制
create table TSubject
(
subJectID nvarchar(10),
subJectName nvarchar(30),
BookName nvarchar(30),
Publisher nvarchar(20)
)ENGINE=InnoDB DEFAULT CHARSET=utf8;

4、创建分数表

代码语言:javascript
复制
create table TScore
(
StudentID nvarchar(15),
subJectID nvarchar(10),
mark decimal)ENGINE=InnoDB DEFAULT CHARSET=utf8;

二、数据库信息的生成

1、插入课程表信息

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

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

代码语言:javascript
复制
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、创建添加学生的存储过程

代码语言:javascript
复制
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、创建汉字转拼音的函数

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

代码语言:javascript
复制
CREATE TABLE `pinyin` (  `letter` char(1) NOT NULL,  `chinese` char(1) NOT NULL,
  PRIMARY KEY  (`letter`)
) ENGINE=MyISAM DEFAULT CHARSET=gbk; 

--插入数据

代码语言:javascript
复制
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、创建插入学生成绩的存储过程

代码语言:javascript
复制
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;

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-10-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 程序员的成长之路 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、创建数据库
    • 1、创建数据库
      • 2、创建学生表
        • 3、创建课程表
          • 4、创建分数表
          • 二、数据库信息的生成
            • 1、插入课程表信息
              • 2、创建产生学生姓名的函数
                • 3、创建添加学生的存储过程
                  • 4、创建汉字转拼音的函数
                    • 5、创建插入学生成绩的存储过程
                    • 三、学生成绩表的查看
                    相关产品与服务
                    对象存储
                    对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
                    领券
                    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档