MatrixOne从入门到实战——MatrixOne的连接和建表

前景回顾

前几篇文章,为大家介绍了MatrixOne这个产品,以及编译、部署MatrixOne的服务。

直通车:

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中创建工程

      1. 启动IDEA之后,选择左上角的File > New > Project创建一个新的项目工程

      2. 在弹出的对话框中选择Maven > Next > 在Name中输入项目名称 >点击Finish

      3. 项目创建完成后,编辑项目中的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>
      4. 然后点击页面右上角的maven的刷新按钮,加载依赖

      5. 此时选择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代码

  • 环境要求

    • Python – one of the following:

    安装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的连接和建表的更多相关文章

  1. Spring Boot从入门到实战:整合通用Mapper简化单表操作

    数据库访问是web应用必不可少的部分.现今最常用的数据库ORM框架有Hibernate与Mybatis,Hibernate貌似在传统IT企业用的较多,而Mybatis则在互联网企业应用较多.通用Map ...

  2. 【Java框架型项目从入门到装逼】第九节 - 数据库建表和CRUD操作

    1.新建学生表 这节课我们来把和数据库以及jdbc相关的内容完成,首先,进行数据库建表.数据库呢,我们采用MySQL数据库,我们可以通过navcat之类的管理工具来轻松建表. 首先,我们得建一个数据库 ...

  3. MatrixOne从入门到实践03——部署MatrixOne

    MatrixOne从入门到实践--部署MatrixOne 前两章节我们简单介绍了MatrixOne和源码编译了MatrixOne.本章节将使用不同的部署方式,来部署MatrixOne的服务. 注意:不 ...

  4. Spring Boot 从入门到实战汇总

    之前写过几篇spring boot入门到实战的博文,因为某些原因没能继续. 框架更新迭代很快,之前还是基于1.x,现在2.x都出来很久了.还是希望能从基于该框架项目开发的整体有一个比较系统的梳理,于是 ...

  5. MatrixOne从入门到实践08——SSB性能测试

    MatrixOne从入门到实践--SSB性能测试 SSB 星型模式基准测试是 OLAP 数据库性能测试的常用场景,通过本篇教程,您可以了解到如何在 MatrixOne 中实现 SSB 测试. 测试环境 ...

  6. MatrixOne从入门到实践02——源码编译

    MatrixOne从入门到实践--源码编译 ​ 在部署MatrixOne前,我们可能会比较纠结使用哪个版本合适,MatrixOne在github上有各个版本的Releases,包含源码包和适用于Lin ...

  7. Ionic 入门与实战之第一章:Ionic 介绍与相关学习资源

    原文发表于我的技术博客 本文是「Ionic 入门与实战」系列连载的第一章,主要对 Ionic 的概念.发展历程.适配的移动平台等知识进行了介绍,并分享了 Ionic 相关的学习资源. 原文发表于我的技 ...

  8. React.js 入门与实战之开发适配PC端及移动端新闻头条平台课程上线了

    原文发表于我的技术博客 我在慕课网的「React.js 入门与实战之开发适配PC端及移动端新闻头条平台」课程已经上线了,文章中是目前整个课程的大纲,以后此课程还会保持持续更新,此大纲文档也会保持更新, ...

  9. Docker技术入门与实战 第二版-学习笔记-8-网络功能network-3-容器访问控制和自定义网桥

    1)容器访问控制 容器的访问控制,主要通过 Linux 上的 iptables防火墙来进行管理和实现. iptables是 Linux 上默认的防火墙软件,在大部分发行版中都自带. 容器访问外部网络 ...

随机推荐

  1. 2022-7-13 第五组 pan小堂 java基础

    ###java基础 1.java语言发展史和概述平台(了解) 詹姆斯·高斯林(James Gosling)1977年获得了加拿大卡尔加里大学计算机科学学士学位,1983年获得了美国卡内基梅隆大学计算机 ...

  2. 关于 CMS 垃圾回收器,你真的懂了吗?

    大家好,我是树哥. 前段时间有个小伙伴去面试,被问到了 CMS 垃圾回收器的详细内容,没答出来.实际上,CMS 垃圾回收器是回收器历史上很重要的一个节点,其开启了 GC 回收器关注 GC 停顿时间的历 ...

  3. Docker容器保姆:在centos7.6上利用docker-compose统一管理容器和服务

    原文转载自「刘悦的技术博客」https://v3u.cn/a_id_108 众所周知,一个大型的Docker容器组成的微服务应用中,容器的数量是非常巨大的,如果依赖传统的人工配置方式进行维护,对于开发 ...

  4. 利用DockerHub在Centos7.7环境下部署Nginx反向代理Gunicorn+Flask独立架构

    原文转载自「刘悦的技术博客」https://v3u.cn/a_id_165 上一篇文章:Docker在手,天下我有,在Win10系统下利用Docker部署Gunicorn+Flask打造独立镜像,是在 ...

  5. 轻盈潇洒卓然不群,敏捷编辑器Sublime text 4中文配置Python3开发运行代码环境(Win11+M1 mac)

    原文转载自「刘悦的技术博客」https://v3u.cn/a_id_210 20世纪初,几乎所有的飞机都是并列双翼结构,此时,美国著名飞行大亨霍华德·休斯认为自己的飞机不够快,助手委婉地提醒他,如果速 ...

  6. Linxu用户名验证登录MySQL管理数据库

    GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源. 前情介绍: 我们都知道登录MySQL数据库时,连接层接入数据库需要经过mysql.user表中,用户名密码的验证才能登录数 ...

  7. Java源码分析 | Object

    本文基于 OracleJDK 11, HotSpot 虚拟机. Object 定义 Object 类是类层次结构的根.每个类都有 Object 类作为超类.所有对象,包括数组等,都实现了这个类的方法. ...

  8. 用RocketMQ这么久,才知道消息可以这样玩

    在上一章节中,我们讲解了RocketMQ的基本介绍,作为MQ最重要的就是消息的使用了,今天我们就来带大家如何玩转MQ的消息. 消息中间件,英文Message Queue,简称MQ.它没有标准定义,一般 ...

  9. 「雅礼集训 2017 Day2」线段游戏(线段树懒标记“启发式下传”,李超树)

    题面 题解 加入一条线段,可以把它转化为在[L,R]区间内加一条线 y=ax+b (如果原线段与y轴平行,就相当于在{x1}处加一条线 y=max(y1,y2)) 我们可以把它加到线段树上,线段树上每 ...

  10. ar9485 win10 笔记本电脑 无线网间歇性掉线

    问题  新安装了系统,刚开始上网正常,下载东西或者待机一段时间后掉线了. wifi都能搜到,就是连不上,重启电脑可以解决,但是每次重启很麻烦,必须找到治本的方法. 排除问题 1.手机连接没有问题,排除 ...