MySQL数据库基础(四)——MySQL数据库创建实例

MySQL数据库基础(四)——MySQL数据库创建实例

一、创建数据库

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)
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 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 do
set 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;

原文地址:http://blog.51cto.com/9291927/2091340

时间: 2024-12-07 15:07:06

MySQL数据库基础(四)——MySQL数据库创建实例的相关文章

MySQL数据库基础(3)多实例应用实战

一.什么是MySQL多实例? 简单的说,就是在一台机器上开启多个不同的服务端口(如:3306,3307),运行多个MySQL服务进程,这些服务进程通过不同的socket监听不同的服务端口来提供各自的服务. 共用一套MySQL安装程序 使用不同(也可以相同)的my.cnf配置文件.启动程序.数据文件 作个比喻,MySQL多实例相当于房子的多个卧室一样,每个势力可以看做一个卧室,整个服务器就是一套房子.逻辑上是独立的,但是互相会有影响. 二.多实例的作用与问题 1.有效利用服务器资源 当单个服务器资

一,数据库基础,MySQL安装,配置文件,语法

今日总结: 一,数据库基础 ***** 二:mysql 的下载安装 ***** 三:修改密码 四 配置文件 *** 五:数据库基础语法 ****** 一,数据库基础: 1,数据库基础概念 1,之前储存到文件中 ,数据格式也是千差万别的 2,软件开发目录规范,规定了数据的存放位置,数据都是保存在本地的, 3,将保存数据的,存储到一个公共的地方 MySQL就是一个基于C/S 架构的应用软件,也是一个基于网络通信的socket套接字应用软件 服务端:socket 套接字通信 收发消息 SQL语句(是一

Mysql入门基础(2)--&gt;Mysql数据库安装

第二章      Mysql数据库安装 声明数据库和实例: 在数据库领域中有两个词很容易混淆,它们就是"实例"和数据库(database). 数据库:在物理操作系统上,以文件或者其它的形式文件类型的集合,在Mysql中,数据库文件可以,frm,myd,myi,等文件结尾, 数据库实例:是由数据库后台的进程/线程以及一共享内存区组成,这个区域可以被运行在后台线程和进程所共享,需要牢记的是,数据实例才是真正用来操作数据库文件的. 实例和数据库的通常关系是---1对1对应的,即是一个实例对用

数据库基础以及表的创建

/*SQL多行注释*/ -- SQL单行注释 -- 创建用户: CREATE USER '用户名' [@'主机名'] IDENTIFIED BY '密码' -- 主机名可以为空,为空默认为%权限,表示所有主机可连接. CREATE USER 'jredu' @ 'localhost' IDENTIFIED BY 'jredu' ; -- 给用户分配权限:GRANT 权限名  ON  数据库名. 表明  TO 用户@主机 -- ALL 表示所有权限  *.*表示所有数据中的所有表 GRANT AL

mysql入门基础及mysql安装(01)

数据库是存储和管理数据的仓库,但是数据库本身不能直接存储数据,数据存储在表中.存储数据必然会用到数据库服务器,即就是一台计算机上安装了数据库管理程序,如:mysql. sql语言:用于管理数据库中的数据,如:存取数据,查询数据,更新数据.        数据定义语言(Data Definition Language,DDL):定义数据库,表等. CREATE,ALTER,DROP语句 数据操作语言(Data Manipulation Language,DML):对数据库进行添加,修改,删除操作.

【原创】数据库基础之Mysql(1)常用命令

1 创建用户 CREATE USER 'username'@'host' IDENTIFIED BY 'password'; 比如 create user 'test_user'@'%' identified by 'test'; ps:如果只允许本机登录则host=localhost,如果允许从任意远程主机登陆则host=% 修改密码 SET PASSWORD FOR 'username'@'host' = PASSWORD('newpassword'); 2 授权 GRANT privile

数据库基础四

一.主键 主键:一个表只能有一个主键,主键的特点是:非空值+唯一性 创建表设置主键 原文地址:https://www.cnblogs.com/st-st/p/9742057.html

数据库基础知识:数据库中的约束和三大范式

一.数据库中的范式: 范式, 英文名称是 Normal Form,它是英国人 E.F.Codd(关系数据库的老祖宗)在上个世纪70年代提出关系数据库模型后总结出来的,范式是关系数据库理论的基础,也是我们在设计数据库结构过程中所要遵循的规则和指导方法,以下就是对这三个范式的基本介绍: 第一范式(1NF): 数据表中的每一列(字段),必须是不可拆分的最小单元,也就是确保每一列的原子性. 例如: userInfo: '山东省烟台市 1318162008' 依照第一范式必须拆分成            

Mysql性能优化(四)--MySQL优化

Mysql 优化 一.使用索引进行优化 在mysql中,创建数据表后会生成数据文件,索引文件,后缀名为.MYI的文件就是索引文件.索引的原理就是通过空间换取时间,所以索引并不是建立的越多越好. 我们可以通过explain的结果来分析该查询语句是否使用了索引.通过查看type,extra和rows的结果是可以看出来的. type的结果为all表示肯定没有使用索引: extra的结果中如果是using index则表示使用了索引,如果extra的结果为空则表示没有使用索引. rows的结果如果等于全

重学JAVA基础(四):线程的创建与执行

1.继承Thread public class TestThread extends Thread{ public void run(){ System.out.println(Thread.currentThread().getName()); } public static void main(String[] args) { Thread t = new TestThread(); t.start(); } } 2.实现Runnable public class TestRunnable