MatrixOne从入门到实战04——MatrixOne的连接和建表
MatrixOne从入门到实战——MatrixOne的连接和建表
前景回顾
前几篇文章,为大家介绍了MatrixOne这个产品,以及编译、部署MatrixOne的服务。
直通车:
本章主要讲述如何使用不同方式连接MatrixOne以及进行表的创建。
连接MatrixOne
使用MySQL Client连接
使用MySQL Client连接mo服务时,我们需要在能够和MO服务通信的机器上准备一个mysql client。
安装MySQL Client
卸载mariadb
# 查询有无相关依赖
rpm -qa |grep mariadb
# 卸载相关依赖
rpm -e xxx
安装mysql-client
# 下载以下rpm包
https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-community-common-5.7.35-1.el7.x86_64.rpm https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-community-libs-5.7.35-1.el7.x86_64.rpm https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-community-client-5.7.35-1.el7.x86_64.rpm
# 安装rpm
rpm -ivh mysql-community-common-5.7.35-1.el7.x86_64.rpm rpm -ivh mysql-community-libs-5.7.35-1.el7.x86_64.rpm rpm -ivh mysql-community-client-5.7.35-1.el7.x86_64.rpm
使用mysql-client
mysql -h 192.168.110.170 -P6001 -uroot -p
连接成功后
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 1001
Server version: 0.5.0 MatrixOne Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql>
使用JDBC驱动
Java代码
下载JDBC 连接器
下载安装JDK
具备一款代码编辑工具(IntelliJ IDEA,Eclipse)
准备测试数据
MatrixOne 建表
CREATE DATABASE test;
USE test;
CREATE TABLE `user` (`id` int(11) ,`user_name` varchar(255) ,`sex` varchar(255));
insert into user(id,user_name,sex) values('1', 'weder', 'man'), ('2', 'tom', 'man'), ('3', 'wederTom', 'man');
select * from user;
+------+-----------+------+
| id | user_name | sex |
+------+-----------+------+
| 1 | weder | man |
| 2 | tom | man |
| 3 | wederTom | man |
+------+-----------+------+
在IDEA中创建工程
启动IDEA之后,选择左上角的File > New > Project创建一个新的项目工程
在弹出的对话框中选择Maven > Next > 在Name中输入项目名称 >点击Finish
项目创建完成后,编辑项目中的pom.xml文件,增加以下内容:
<dependencies>
<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.47</version>
</dependency>
</dependencies>
然后点击页面右上角的maven的刷新按钮,加载依赖
此时选择
src > main > java目录,鼠标右键点击选择New > Java Class > 选择Class 并输入类名为:MoDemo
编辑代码
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement; public class MoDemo { //test为数据库名称
// MySQL 8.0 以下版本选择
// static final String JdbcDriver = "com.mysql.jdbc.Driver";
// static final String Url = "jdbc:mysql://192.168.110.173:6001/test"; // MySQL 8.0 以上版本选择
static final String JdbcDriver = "com.mysql.jdbc.Driver";
static final String Url =
"jdbc:mysql://192.168.110.173:6001/test?useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=UTC"; //输入连接数据库的用户名与密码
static final String User = "root";//输入你的数据库用户名
static final String PassWord = "111";//输入你的数据库连接密码 public static void main(String[] args) {
Connection conn = null;
Statement stmt = null;
try {
// 注册 JDBC 驱动
Class.forName(JdbcDriver); // 打开链接
System.out.println("连接数据库...");
conn = (Connection) DriverManager.getConnection(Url, User, PassWord); // 执行查询
System.out.println("输入sql语句后并执行...");
stmt = conn.createStatement();
String sql;
sql = "select * from user";// 这里填写需要的sql语句
//执行sql语句
ResultSet rs = stmt.executeQuery(sql); // 展开结果集数据库
while (rs.next()) {
// 通过字段检索
int id = rs.getInt("id");//获取id值
String name = rs.getString("user_name");//获取user_name值
String sex = rs.getString("sex");//获取sex值 // 输出数据
System.out.println("id: " + id);
System.out.println("名字: " + name);
System.out.println("性别: " + sex);
}
// 完成后关闭
rs.close();
stmt.close();
conn.close();
} catch (SQLException se) {
// 处理 JDBC 错误
se.printStackTrace();
} catch (Exception e) {
// 处理 Class.forName 错误
e.printStackTrace();
} finally {
// 关闭资源
try {
if (stmt != null) {
stmt.close();
}
} catch (SQLException se2) {
}
try {
if (conn != null) {
conn.close();
}
} catch (SQLException se) {
se.printStackTrace();
}
}
System.out.println("\n执行成功!");
}
}
执行结果
连接数据库...
输入sql语句后并执行...
id: 1
名字: weder
性别: man
id: 2
名字: tom
性别: man
id: 3
名字: wederTom
性别: man 执行成功!
python代码
环境要求
安装PIP
python3 -m pip install PyMySQL
准备测试数据
CREATE DATABASE test;
USE test;
CREATE TABLE `user` (`id` int(11) ,`user_name` varchar(255) ,`sex` varchar(255));
insert into user(id,user_name,sex) values('1', 'weder', 'man'), ('2', 'tom', 'man'), ('3', 'wederTom', 'man');
select * from user;
+------+-----------+------+
| id | user_name | sex |
+------+-----------+------+
| 1 | weder | man |
| 2 | tom | man |
| 3 | wederTom | man |
+------+-----------+------+
具备一款代码编辑工具 (pycharm) 或者直接在Linux 上编辑python文件
编辑代码
import pymysql.cursors # Connect to the database
connection = pymysql.connect(host='127.0.0.1',
user='dump',
password='111',
database='test',
cursorclass=pymysql.cursors.DictCursor) with connection:
with connection.cursor() as cursor:
# Create a new record
sql = "INSERT INTO user (id,user_name,sex) VALUES (%s, %s, %s)"
cursor.execute(sql, ('4', 'Jerry', 'man')) # connection is not autocommit by default. So you must commit to save
# your changes.
connection.commit() with connection.cursor() as cursor:
# Read a single record
sql = "SELECT id,user_name,sex FROM user WHERE id=%s"
cursor.execute(sql, ('4',))
result = cursor.fetchone()
print(result)
执行结果
{'id': 4, 'user_name': 'Jerry', 'sex': 'man'}
建表
目前MatrixOne没有特殊的建表语法,建表时,只需要按照下列语法进行即可
CREATE TABLE [IF NOT EXISTS] [db.]table_name
(
name1 type1,
name2 type2,
...
)
示例
创建普通表
CREATE TABLE test(a int, b varchar(10));
清空普通表
目前还不支持truncate语法
删除普通表
drop table test;
创建带有主键的表(注意:MatrixOne 表名和列名不区分大小写,大写的表名和列名都会转为小写)
CREATE TABLE Persons (
ID int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Age int,
PRIMARY KEY (ID)
);
查看表:
MySQL [ssb]> desc persons;
+-----------+---------+------+------+---------+---------+
| Field | Type | Null | Key | Default | Comment |
+-----------+---------+------+------+---------+---------+
| id | INT | NO | PRI | NULL | |
| lastname | VARCHAR | NO | | NULL | |
| firstname | VARCHAR | YES | | NULL | |
| age | INT | YES | | NULL | |
+-----------+---------+------+------+---------+---------+
4 rows in set (0.00 sec)
主键表目前支持多个字段作为主键,如下面的建表语句:
MySQL [ssb]> CREATE TABLE Students (
ID int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Age int,
PRIMARY KEY (ID,LastName)
);
Query OK, 0 rows affected (0.01 sec)
查看表:
+-----------------------------+---------+------+------+---------+---------+
| Field | Type | Null | Key | Default | Comment |
+-----------------------------+---------+------+------+---------+---------+
| id | INT | NO | | NULL | |
| lastname | VARCHAR | NO | | NULL | |
| firstname | VARCHAR | YES | | NULL | |
| age | INT | YES | | NULL | |
| __mo_cpkey_002id008lastname | VARCHAR | NO | PRI | NULL | |
+-----------------------------+---------+------+------+---------+---------+
5 rows in set (0.03 sec)
这里会发现有一个隐藏字段是id和lastname结合的一个varchar 类型的字段,用来当做主键。
MatrixOne从入门到实战04——MatrixOne的连接和建表的更多相关文章
- Spring Boot从入门到实战:整合通用Mapper简化单表操作
数据库访问是web应用必不可少的部分.现今最常用的数据库ORM框架有Hibernate与Mybatis,Hibernate貌似在传统IT企业用的较多,而Mybatis则在互联网企业应用较多.通用Map ...
- 【Java框架型项目从入门到装逼】第九节 - 数据库建表和CRUD操作
1.新建学生表 这节课我们来把和数据库以及jdbc相关的内容完成,首先,进行数据库建表.数据库呢,我们采用MySQL数据库,我们可以通过navcat之类的管理工具来轻松建表. 首先,我们得建一个数据库 ...
- MatrixOne从入门到实践03——部署MatrixOne
MatrixOne从入门到实践--部署MatrixOne 前两章节我们简单介绍了MatrixOne和源码编译了MatrixOne.本章节将使用不同的部署方式,来部署MatrixOne的服务. 注意:不 ...
- Spring Boot 从入门到实战汇总
之前写过几篇spring boot入门到实战的博文,因为某些原因没能继续. 框架更新迭代很快,之前还是基于1.x,现在2.x都出来很久了.还是希望能从基于该框架项目开发的整体有一个比较系统的梳理,于是 ...
- MatrixOne从入门到实践08——SSB性能测试
MatrixOne从入门到实践--SSB性能测试 SSB 星型模式基准测试是 OLAP 数据库性能测试的常用场景,通过本篇教程,您可以了解到如何在 MatrixOne 中实现 SSB 测试. 测试环境 ...
- MatrixOne从入门到实践02——源码编译
MatrixOne从入门到实践--源码编译 在部署MatrixOne前,我们可能会比较纠结使用哪个版本合适,MatrixOne在github上有各个版本的Releases,包含源码包和适用于Lin ...
- Ionic 入门与实战之第一章:Ionic 介绍与相关学习资源
原文发表于我的技术博客 本文是「Ionic 入门与实战」系列连载的第一章,主要对 Ionic 的概念.发展历程.适配的移动平台等知识进行了介绍,并分享了 Ionic 相关的学习资源. 原文发表于我的技 ...
- React.js 入门与实战之开发适配PC端及移动端新闻头条平台课程上线了
原文发表于我的技术博客 我在慕课网的「React.js 入门与实战之开发适配PC端及移动端新闻头条平台」课程已经上线了,文章中是目前整个课程的大纲,以后此课程还会保持持续更新,此大纲文档也会保持更新, ...
- Docker技术入门与实战 第二版-学习笔记-8-网络功能network-3-容器访问控制和自定义网桥
1)容器访问控制 容器的访问控制,主要通过 Linux 上的 iptables防火墙来进行管理和实现. iptables是 Linux 上默认的防火墙软件,在大部分发行版中都自带. 容器访问外部网络 ...
随机推荐
- python--函数--参数传入分类
1. 位置参数 调用函数时传入实际参数的数量和位置都必须和定义函数时保持一致. 2. 关键字参数 好处:不用记住形参位置. 所谓关键字就是"键-值"绑定,调用函数时,进行传递. 特 ...
- (转)git使用收集
由于最近项目开始弃SVN用git,特意整理下git命令.原文链接为http://www.jb51.net/article/55442.htm git branch 查看本地所有分支git status ...
- Java学习 (九)基础篇 包机制&JavaDoc
包机制 为了更好地组织类,Java提供了包机制,用于区别类名的命名空间 包语句的语法为: package pkg[.pkg2[.pkg3...]]; 一般利用公司域名倒置作为包名:com.feng.x ...
- .NET CORE 读书笔记之与.NET Framework对比
.NET Framework存在的问题 它是属于系统级别安装的程序 操作系统内的所有程序共享一个.NET Framework实例,如果其中某一个应用程序需要升级Framework,其他程序也会收到影响 ...
- 微服务性能分析|Pyroscope 在 Rainbond 上的实践分享
随着微服务体系在生产环境落地,也会伴随着一些问题出现,比如流量过大造成某个微服务应用程序的性能瓶颈.CPU利用率高.或内存泄漏等问题.要找到问题的根本原因,我们通常都会通过日志.进程再结合代码去判断根 ...
- 如何在CSS中使用变量
前言 CSS变量(官方称为自定义属性)是用户定义的值,它可以在你的代码库中设置一次并多次使用.它们使管理颜色.字体.大小和动画值变得更加容易,并确保整个web应用的一致性. 举个例子,你可以将品牌颜色 ...
- Python入门系列(六)一篇学会python函数
函数 函数是只在调用时运行的代码块. def my_function(): print("Hello from a function") my_function() 信息可以作为参 ...
- 第九十一篇:Vue 具名插槽作用域
好家伙, 1.作用域插槽 插槽在定义的时候,可以定义一些属性,便于在父组件中使用 来看看代码: Article.vue组件中: <template> <div class=" ...
- 02_Django-路由配置-HTTP协议的请求和响应
02_Django-路由配置-HTTP协议的请求和响应 视频:https://www.bilibili.com/video/BV1vK4y1o7jH 博客:https://blog.csdn.net/ ...
- 【设计模式】Java设计模式 -工厂模式
[设计模式]Java设计模式 -工厂模式 不断学习才是王道 继续踏上学习之路,学之分享笔记 总有一天我也能像各位大佬一样 一个有梦有戏的人 @怒放吧德德 分享学习心得,欢迎指正,大家一起学习成长! 目 ...