一、创建数据库

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、创建课程表

CEATE 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)begin
DECLARE 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 do
insert 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)BEGIN
DECLARE 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 DOSET @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;
ELSESET 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 do
insert 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;

Hello MySQL(四)——MySQL数据库创建实例相关推荐

  1. 使用 MySQL Workbench为现有 MySQL 或 MariaDB 数据库创建ER图

    本文将向您展示如何使用 MySQL 工作台为现有 MySQL 或 MariaDB 数据库创建图表. 对数据库进行反向工程 要从现有数据库创建关系图,您需要使用逆向工程功能来创建模型. 了解 MySQL ...

  2. MySQL跨不同数据库创建视图

    MySQL跨不同数据库创建视图 语法: create view 视图所在库库名.视图名称 as ( SELECT 表所在库库名.表名.列名 AS 列的重命名..... FROM 表所在库库名.表名); ...

  3. 达梦数据库创建实例(图形化界面流程)

    虚拟机:VMWARE 操作系统:Kylin-Server-10-SP2-x86-Release-Build09-2021052474 数据库:dm8_20210818_x86_rh6_64_ent_8 ...

  4. oracle数据库创建实例

    oracle数据库创建实例 1.打开 Database Configuration Assistant软件 2.点击下一步 3.选择所有账户,输入密码,点击下一步 4.改一下字符集,下一步 5.点击口 ...

  5. 使用MySQL Workbench进行数据库创建

    MySQL Workbench是一款专门为了MySQL设计的ER和数据库建模工具. 我们可以使用它进行设计和创建数据库图表,以及可以进行复杂的MySQL数据迁移等多种功能. MySQL在计算机行业中是 ...

  6. oracle mysql 同义词_Oracle数据库创建同义词(synonym)详细讲解

    1.1数据库创建同义词(synonym) Oracle的同义词(synonyms)从字面上理解就是别名的意思,和视图的功能类似,就是一种映射关系.它可以节省大量的数据库空间,对不同用户的操作同一张表没 ...

  7. linux部署的Oracle 11G数据库创建实例

    背景:在工作的过程中会出现新的需求就是,在原来的数据库的基础上新增数据库实例,如下就是介绍了如何去新增数据库实例的操作,这里以图形为例. 切换到Oracle用户下, root# su - oracle ...

  8. Mongodb数据库创建实例

    启动MongoDB Mongodb启动教程 创建数据库     在Mongo命令行窗口输入 use dbName,按5执行.其中dbName是新建数据库名. 输入 show dbs显示如下 local ...

  9. phpstudy mysql创建表_MySQL_Mysql入门基础 数据库创建篇,1.创建数据表---基础(高手跳 - phpStudy...

    Mysql入门基础 数据库创建篇 1.创建数据表---基础(高手跳过) 正统方法:create [TEMPORARY] table 表名 [if not exists] (创建的列项定义) [表的选项 ...

  10. 【檀越剑指大厂--mysql】mysql高阶篇

    文章目录 一.Mysql 基础 1.数据库与实例? 2.mysql 的配置文件 3.mysql 体系结构 4.innodb 的特点? 5.innodb 和 myisam 的区别 6.其他存储引擎? 7 ...

最新文章

  1. java——File类常用方法
  2. 老男孩python21期作业_(禁闲聊)绘画讨论10个群第176期作业展示
  3. Maven 项目的 org.junit.Test 获取不到(转载)
  4. Unity AssetBundle内存管理相关问题
  5. Spark的新方案UnifiedMemoryManager内存管理模型分析
  6. 解决POI大数据导出Excel内存溢出、应用假死
  7. 解决RStudio(非conda安装)在使用Anaconda中的R环境时,缺失“ libbz2-1.dll ”而不能正常启动问题
  8. DPDK性能优化技术汇总
  9. BIM族库下载——Revit灯具族库
  10. html用js连接sql,如何从浏览器中的JavaScript连接到SQL Server数据库?
  11. Cocos2d-x3.2刀塔创奇三消游戏源码,跑酷游戏源码,塔防游戏源码
  12. ThinkPad T480 Win10系统键盘失灵
  13. span之间的空隙怎样解决?
  14. samba服务器介绍
  15. ClientId 解释
  16. 博客字体颜色、大小、字体都可以更改,直接套用就可以
  17. 使用PayPal补习注册(2/3):PayPal项目的真实注册
  18. 小铃铛shake动画
  19. excel转java 常量_【转】八种常见Excel错误提示及解决方法
  20. 计算机网络(六)——网络安全

热门文章

  1. mysql5.5手册读书日记(3)
  2. 802.11协议精读1:学习资料整理
  3. 当“程序猿”遇到“母亲节”,看他们是如何送上特殊的祝福
  4. 计算机出现蓝屏怎么恢复,重启电脑后出现蓝屏怎么办
  5. 怎样选择合适的电流继电器
  6. 数十年从事java工作的经验分享
  7. 论文查重系统如何才安全?
  8. 命令行排序文件夹大小
  9. 百度指数批量查询获取工具
  10. 小米10系列详细参数对比,小米10 青春版\10\10Pro\10至尊纪念版