乐趣区

关于数据库:MatrixOne从入门到实战04MatrixOne的连接和建表

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:

      • CPython : 3.6 and newer
      • PyPy : Latest 3.x version

    装置 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 类型的字段,用来当做主键。

退出移动版