MariaDB学习记录
MariaDB的学习
MariaDB的学习
关于MariaDB的历史,不再概述
下面是mariadb的官网:https://mariadb.com/
同样的,MariaDB一样有连接java的jar包:https://downloads.mariadb.com/Connectors/java/connector-java-2.2.1/ 选.jar结尾但名称最短那个 mariadb-java-client-2.2.1.jar
而这篇文章,讲解为什么MariaDB将取代MySQL:https://www.csdn.net/article/2013-07-12/2816207-5-reasons-its-time-to-ditch-mysql
java连接MariaDB的设置 http://blog.csdn.net/wwwdc1012/article/details/52749188
好的,我们开始MariaDB的学习:
1.MariaDB介绍
数据库应用程序 与 主应用程序 分开存在, 并存储数据集合. 每个数据库都使用一个或多个API来创建, 访问, 管理, 搜索和复制其包含的数据.
数据库还是用非关系数据源, 例如对象或文件. 然而, 数据库证明是大数据集的最佳选择, 这将遭受缓慢的检索和与其他数据源的写入.
关系数据库管理系统(RDBMS)将数据存储在各种表中. 这些表之间的关系使用主键和外键建立.
刚看了下webgl,threejs群里发的QQ腾讯在南极开设了什么黑科技实验室啊?
RDBMS提供以下功能:
- 它们使您能够使用表, 列和索引来实现数据源.
- 它们确保多个表行间引用的完整性.
- 它们自动更新索引.
- 他们解释SQL查询和操作从表操作或源数据.SQL 是用于访问和处理数据库的标准的计算机语言。SQL学习:http://www.w3school.com.cn/sql/index.asp
RDBMS(关系型数据库管理系统)术语
在我们开始讨论MariaDB之前, 让我们来看一下与数据库相关的一些术语.
- Database - 数据库是由保存相关数据的表组成的数据源.
- Table - 表, 这意味着电子表格, 是包含数据的矩阵.
- Column - 表示数据元素的列是保存一种类型的数据的结构; 例如, 送货日期.
- Row - 行是对相关数据进行分组的结构;例如, 用于客户的数据. 它也被称为元组, 条目或记录.
- Redundancy - 此术语指的是存储数据两次, 以加速系统.(中文意思:冗余)
- Primary Key - 这指的是唯一的标识值. 此值不能在表中出现两次, 并且只有一个行与其关联.
- Foreign Key - 外键用作两个表之间的链接.(Foreign:有外国外籍的意思)
- Compound Key - 复合键, 或混合键, 是指多个列的关键.
- Index - 索引实际上与书的索引意思相同.
- Referential Integrity - 此术语指确保所有外键值指向现有行.
关系型数据库讲解可以看http://www.icourse163.org/
搜索数据库系统,查看哈工大讲解的数据库系统(上,中,下)
同时,该课程在线上考试后如果成绩合格或优秀,可获取实体证书!(找工作的利器)
还有很多其他课程都发证以及奖学金.
Maria 数据库
MariaDB是由MySQL的原始开发人员创建的MySQL的流行分支. 它源于与Oracle收购Sun&MySQL有关的问题. 它旨在成为MySQL的替代, MariaDB提供与MySQL等相同的功能.
MariaDB的重要特性
- 所有的MariaDB都在GPL, LGPL或BSD下.
- MariaDB包括各种存储引擎, 包括高性能存储引擎, 用于与其他 RDBMS 数据源一起工作.
- MariaDB使用标准和流行的SQL语言.
- MariaDB在多个操作系统上运行, 并支持各种各样的编程语言.
- MariaDB提供Galera集群技术.
- MariaDB还提供了许多在MySQL中不可用的操作和命令, 并消除/取代影响性能的功能.
- MariaDB同样有jar包驱动与java程序的结合.
MariaDB的下载: https://mariadb.com/downloads/mariadb-tx
2.在windows/Linux上使用MariaDB
我原本打算想找一个MariaDB的网上社区进行快速学习,但不料没有,而且那个MariaDBpub网站首页居然显示拒绝.
后来找到这个,https://www.server110.com/mariadb/ 关于MariaDB的内容不算太多,入门感觉足够了.
其实MariaDB的操作跟MySQL几乎是一样的, 只不过在Linux端可能有些命令不同.
http://blog.csdn.net/cccheer/article/details/56479090 还是这篇文章.
我已经安装好了. 只需要输入xshell命令 :
然后提示你输入数据库的密码,之后就来到了MariaDB的命令行:
虽然说这MariaDB是MySQL作者的分支,而且不属于被收购的项目,但是从上面可以看出有Oracle的字眼,可能是为了尊重原来与MySQL兼容的原因吧.(其中不少代码或者结构上应该跟MySQL相似甚至相同吧).
但毕竟现在MariaDB是单独一个产品了.而且是开源且快速更新迭代的.
在MariaDB的官网上https://mariadb.com/,我们到底部的版权信息: Copyright © 2018 MariaDB. All rights reserved. 而且网站上有说明把MySQL转移到MariaDB的教程,以及各种路演,而且我惊诧地发现在靠近下面的”成功故事专题”中,分别有3个视频,,,让我怀疑MariaDB是不是国人开发的,因为这3个视频分别来自:阿里巴巴,华泰证券,以及腾讯…
这里是MariaDB的官方文档及问答:https://mariadb.com/kb/en/ 虽然有中文版,,,但是不敢恭维汉化程度,还是看英文版吧!
- 在下载完windows版的MariaDB后,随安装的还有工具HeidiSQL.
- https://www.heidisql.com/help.php#connecting 官方的本地连接远程服务器的教程.ssh
在这个教程中,介绍了怎样建立一个127.0.0.1的连接,然后介绍了连接远程服务器端数据库的ssh连接.
因为都是英文,虽然能看懂一大半,但是还是需要整理一下:
1.[会话管理器界面(以下都是)] 在heidisql界面新建会话,在设置栏目选择网络类型为MySQL(SSH tunnel)//ssh隧道secure shell简称ssh 简介: https://baike.baidu.com/item/ssh
2.[扳手设置栏目] 下面输入远程服务器数据库的 IP,用户名,密码和端口 下面可以指定哪个数据库信息,可以不指定.注意这里的密码可能要更改! 继续看下面!
3.[蓝色锁头栏目] 下载putty,这个工具在学习Linux的片段中使用过,它的下载地址:https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html ,下载好后,将该包解压到指定本地目录,并加入环境变量.然后切到heidisql界面的蓝色锁头选项,把与putty.exe同目录的plink.exe位置填入进去.
4.[蓝色锁头栏目] 后面的SSH主机+端口号依旧填写远程服务器IP地址,端口号为默认的22.输入远程服务器的账户,密码.及本地端口,其他先不用管.保持默认.
5.[会话管理器界面] 点击打开,然后会遇到问题说你密码错了不用着急!之前第二步骤中,我们说这里密码可能要改,如何改呢?
备用教程博客:http://blog.csdn.net/ly_dengle/article/details/77835882 关于之上问题.
轻松一下,利用 HeidiSQL 界面新建一个数据库.
取名叫做hello_mariadb,之后字符集先默认就可以. (我的是utf8-unicode-ci.)
之后在xshell or putty中调用MariaDB指令: (也就是查看远程服务器时候有这个新建立的数据库了呢)
是不是看到光辉时刻了呢?
2018年1月7日 00:09:20
今天最后附上linux查看数据库的基础命令及该博客作者的座右铭…
https://www.cnblogs.com/cnteam/p/4091468.html <作者的座右铭in it
3.SQL语句与MariaDB的结合使用实测与练习
因为在界面heidisql中建立数据库和表比较简单,所以我们先略过.
本节主要将使用命令行式的SQL语句.
关于什么是SQL语句,不再深入概述
来到xshell的命令行,调出MariaDB的指令输入状态.
新建一个数据库
这时创建成功,返回语句: Query OK, 1 row affected (0.00 sec)
接着我们在 mydb1234 中创建一个表.
首先要先使用这个数据库:
这时使用了我们刚建立的数据库,并且指令行中的none变为了数据库的名称:
接着我们继续输入创建表的命令:
有了最后的这个 ; 号我们再按回车就会执行指令.(有的可能不需要加 ; )
- PersonID 列的数据类型是 int ,包含整数.
- 其他三项因为要用文字表述, 数据类型都是 varchar ,包含字符, 且这些字段最大长度为 255 个字符.
有了这个 Persons 空表, 我们向其中添加数据.
之后返回的 Query OK 证明SQL语句执行成功了,但我们还是想看一看数据库表中”赵本山”的样子.
上面使用了SELECT * FROM 表名称; 去查询并返回给你看. * 代表着全部的在 Persons表里的数据.
但如果我们只向Name中添加一个数据,其他不添加呢?
同样使用INSERT INTO语句插入,不过我们指定列名称在表名后面:
注意:像上面这种其他列的值为NULL时是种很不好的数据结构!
当我们想删除这行不完整的数据时,可以使用DELETE :
注意上面如果在DELETE语句使用…..WHERE PersonID=NULL 或者=’NULL’都是删除不了的.
接下来我们发现这个表只有3个属性,收集的数据特别少,我们想加一列年收入情况:
annual income 是年收入的英文,我们为了精简,使用 YearIncome来作为年收入的列名;
后来我发现,这没有必要啊,因为我们可以直接指定表中列名为中文”年收入(元)“啊!
注意上面 `年收入(元)` 两边的反引号.用来转义特殊字符. 可以看这篇博客:https://www.cnblogs.com/lzxianren/p/trick-problem.html
结果:
在这里,我们设置的年收入(元)的这一列数据类型是 bigint ,但好像我们应该设置为浮点数.能把小数点后的使用上表示更确切的数字. 关于MariaDB的数据类型可以看这里:http://www.cnblogs.com/ukzq/p/8229156.html
让我们更改 它的数据类型!:
本山大叔钱很多我们使用 DECIMAL(99,2) 类型来表示他的年收入,99代表最大位数,而2代表小数点后有几位. 然后弹出 ERROR 1426, 是说我们指定的这个属性的精度99太高啦,并说明了最大的应该是65位.
之后改为65位, OK.
可以改一个属性的类型,那么改这个属性的名称呢?
我们发觉Gender来表示性别不是那么很明确,我们改为Sex好了,通俗易懂:
在上面,我们同时更改了Sex的数据类型变为了 char 并且大小更改为了 5. 因为相对来说, char 是固定长度,处理速度比可变长度的 varchar 要快, 但我们性别这一栏目,就只要设置一个汉字, 所以设置为5, (在普遍的系统下,UTF-8的一个汉字占3个字符,GBK占2个字符),我们设置5为了宽裕一下. 极端主义请设置为3!
接下来我们把现有这个数据表填充起来
上面暂时没找到同时插入两行中同一属性的方法.
4.
下面我们开始设置主键和主键的自增. 因为我们每次添加新行如果都要输入PersonID去排序太麻烦了,
设置自增可解决这个问题.
https://www.w3cschool.cn/sql/2phntfpq.html <自增
休息好后,开始设置主键的自增. 并开始着手制作动态页面注册登录与数据库连接.
2018年1月7日 20:39:04
5.JDBC连接远程MariaDB数据库
先看一段代码: (文章中关于IP和密码等not real)
上面的这些在一个新类中,其作用是连接我们的数据库mydb1234,
看起来稍微比heidisql.exe麻烦,但是这是浏览器端连接数据库显示数据库内容的基本的java的思路.
- String 声明的 driver, url, user, password 都将用于其下册的功能使用.
- Class.forName(org.mariadb.jdbc.Driver); 是声明注册这个驱动.
- 利用Connection类和DriverManager获取数据库的连接,括号中是url, 数据库用户名, 密码
- url是 jdbc:mariadb://IP地址:3306/数据库名
MariaDB一样有连接java的jar包:https://downloads.mariadb.com/Connectors/java/connector-java-2.2.1/ 选.jar结尾但名称最短那个 mariadb-java-client-2.2.1.jar .
用原来的Class.forName(“com.mysql.jdbc.Driver”);其实也是可以的,因为MariaDB大部分兼容MySQL.
花费了9牛2虎之力,可算把java中的select * from tablename; 命令完整返回出数据了.
很明显输出没有很好的排列地像在HeidiSQL或是xshell中那样.
没有关系,我们就做一个Excel表格样式的东西去格式化一下返回的数据.
MariaDB学习记录的更多相关文章
- mysql/mariadb学习记录——limit
在mysql/mariadb 中可以用limit来限制查询的条数.例子如下: 1.limit后加一个参数 limit n: //选中查询所有结果中的前两条记录并返回 mysql> ; +---- ...
- mysql/mariadb学习记录——查询2
Alias——使用一个列名别名AS 关键字: mysql> select sno as studentId,sname as studentName from student; +------- ...
- mysql/mariadb学习记录——查询
连接查询:同时设计两个及以上的表的查询 连接条件或连接谓词:用来连接两个表的条件一般格式: [<表名1>]<列名1> <比较运算符> [<表名2>]&l ...
- mysql/mariadb学习记录——创建删除数据库、表的基本命令
查看已有的数据库: mysql> show databases; +--------------------+ | Database | +--------------------+ | inf ...
- mysql/mariadb学习记录——连接查询(JOIN)
//本文使用的数据表格//persons表中id_p为主键//orders表中id_o为主键,id_p为外键参考persons表中的id_p mysql> select * from perso ...
- mysql/mariadb学习记录——查询3(AVG、SUM、COUNT)函数
AVG() 求平均数函数: //求emp表中的sal属性的平均值 mysql> select avg(sal) as salAverage from emp; +-------------+ | ...
- Quartz 学习记录1
原因 公司有一些批量定时任务可能需要在夜间执行,用的是quartz和spring batch两个框架.quartz是个定时任务框架,spring batch是个批处理框架. 虽然我自己的小玩意儿平时不 ...
- Java 静态内部类与非静态内部类 学习记录.
目的 为什么会有这篇文章呢,是因为我在学习各种框架的时候发现很多框架都用到了这些内部类的小技巧,虽然我平时写代码的时候基本不用,但是看别人代码的话至少要了解基本知识吧,另外到底内部类应该应用在哪些场合 ...
- Apache Shiro 学习记录4
今天看了教程的第三章...是关于授权的......和以前一样.....自己也研究了下....我觉得看那篇教程怎么说呢.....总体上是为数不多的精品教程了吧....但是有些地方确实是讲的太少了.... ...
随机推荐
- Python学习方法(待补充)
一.好思想总结: 1.一个东西,正在学会了,是需要能简单教会别人,才是真正的理解透彻了,要是讲不透彻,还是一知半解. 2.思路别人教不了你,学会简单处理任何问题,再复杂的东西,在我看来现实项目中,很多 ...
- 常用python包(依赖)Ubuntu下
amqp==1.4.9anyjson==0.3.3apturl==0.5.2beautifulsoup4==4.4.1billiard==3.3.0.23blinker==1.3Brlapi==0.6 ...
- Tensorflow(二)
1---------------- 试用tensorflow的模块,必须配套tensorflow的方法 import tensorflow as tf a=3 ##定义 行向量 w=tf.Variab ...
- 002-Spring Cloud 功能简介
一.主要功能 分布式/版本化配置.服务注册与发现.路由.服务间调用.负载均衡.断路器.分布式消息传递 1.云本地应用[Cloud Native Applications] Spring Cloud C ...
- docker 批量删除容器和镜像
docker 批量删除容器和镜像 1,删除单个镜像或者容器 docker rmi 镜像ID/镜像名字:TAG docker rm 容器ID/容器名字 1.停止所有的container,这样才能 ...
- iOS UI基础-3.0图片浏览器及plist使用
需求: 1.显示当前图片序号/总图片数 2.显示图片 3.上一张图片.下一张图片转换 4.显示图片描述 下面用代码来实现 // // UYViewController.m // 3.0图片查看器 // ...
- MVC5+Easyui1.3.6+EF6 开发部分备忘笔记
一点一点增加,后面继续. 1.Row Editing in DataGrid 编辑,总是绑定不了checkbox的问题
- myeclipse自定义JSP模板
- 【调优】Nginx性能调优
一.Nginx优化配置 1.主配置文件优化:# vi /usr/local/nginx/conf/nginx.conf----------------------------------------- ...
- mysql回滚日志
一.回滚日志(undo log) 1.作用 保存了事务发生之前的数据的一个版本,可以用于回滚,同时可以提供多版本并发控制下的读(MVCC),也即非锁定读 2.内容 逻辑格式的日志,在执行undo的时候 ...