Skip to content

数据表操作

Create Table DTS

创建数据表类型描述

ts
/**
 * 表配置
 */
export interface TableOption {
  /**
   * 表名
   */
  tableName: string
  /**
   * 表字段
   */
  columns: ColumnOption[]
  /**
   * 定义存储文本数据时使用的编码. default: utf8mb4
   */
  charset?: string
  /**
   * 定义字符排序和比较规则的关键字. default: utf8mb4_0900_bin
   */
  collate?: string
  /**
   * 存储引擎. default: InnoDB
   */
  engine?: TABLE_ENGINE
}
/**
 * 表字段配置信息
 */
export interface ColumnOption {
  name: string // 字段名
  dataType: COLUMN_DATA_TYPE
  length?: number // 类型长度
  point?: number // DECIMAL 小数点位数
  primaryKey?: boolean // 是否主键
  notNull?: boolean // 是否不为空
  unique?: boolean // 是否唯一
  unsigned?: boolean // 是否限定整数的范围
  zeroFill?: boolean // 是否长度不够,在前面补0表示
  autoIncrement?: boolean // 是否自增长列
  comments?: string // 列表述
  defaultValue?: any // 默认值
}

/**
 * 表字段类型
 */
export type COLUMN_DATA_TYPE =
  | 'INT'
  | 'BINARY'
  | 'BIGINT'
  | 'BIT'
  | 'BLOB'
  | 'CHAR'
  | 'DATE'
  | 'DATETIME'
  | 'DECIMAL'
  | 'DOUBLE'
  | 'ENUM'
  | 'FLOAT'
  | 'GEOMETRY'
  | 'GEOMETRYCOLLECTION'
  | 'INTEGER'
  | 'JSON'
  | 'LINESTRING'
  | 'LONGBLOB'
  | 'LONGTEXT'
  | 'MEDIUMBLOB'
  | 'MEDIUMINT'
  | 'MEDIUMTEXT'
  | 'MULTILINESTRING'
  | 'MULTIPOINT'
  | 'MULTIPOLYGON'
  | 'NUMERIC'
  | 'POINT'
  | 'POLYGON'
  | 'REAL'
  | 'SET'
  | 'SMALLINT'
  | 'TEXT'
  | 'TIME'
  | 'TIMESTAMP'
  | 'TINYBLOB'
  | 'TINYINT'
  | 'TINYTEXT'
  | 'VARBINARY'
  | 'VARCHAR'
  | 'YEAR'

Create

创建数据表

ts
import emysql from '@dpapejs/emysql'

// 数据库实例化
const mysql = new emysql({
  password: '[db登录密码]',
  user: '[db登录用户名]',
  database: '访问数据库名称'
})

// 创建 t_user 表
mysql.table
  .create([
    {
      tableName: 't_user',
      columns: [
        {
          name: 'id',
          primaryKey: true,
          autoIncrement: true,
          dataType: 'INT',
          comments: '主键'
        },
        {
          name: 'username',
          dataType: 'VARCHAR',
          length: 255,
          notNull: true,
          unique: true,
          comments: '用户名'
        },
        {
          name: 'sex',
          dataType: 'TINYINT',
          notNull: true,
          defaultValue: 1,
          comments: '性别'
        },
        {
          name: 'password',
          dataType: 'VARCHAR',
          length: 255,
          notNull: true,
          comments: '用户登陆密码'
        },
        {
          name: 'create_at',
          dataType: 'DATETIME',
          notNull: true,
          comments: '创建时间'
        }
      ]
    }
  ])
  .then(() => {
    // 创建成功
  })
  .catch(() => {
    // 创建失败
  })

Drop

删除数据表结构(注:请谨慎调用操作)

ts
import emysql from '@dpapejs/emysql'

// 数据库实例化
const mysql = new emysql({
  password: '[db登录密码]',
  user: '[db登录用户名]',
  database: '访问数据库名称'
})

// 创建 t_user 表
mysql.table
  .drop('t_user')
  .then(() => {
    // 删除成功
  })
  .catch((err) => {
    // 删除失败
    console.error('[ERROR]::', err)
  })

Exist

获取数据库表是否存在

ts
import emysql from '@dpapejs/emysql'

// 数据库实例化
const mysql = new emysql({
  password: '[db登录密码]',
  user: '[db登录用户名]',
  database: '访问数据库名称'
})

// 创建 t_user 表
mysql.table
  .exist('t_user')
  .then((result: boolean) => {
    // true -> 存在
    // false -> 不存在
  })
  .catch((err) => {
    // 查询失败
    console.error('[ERROR]::', err)
  })

Truncate

清空表数据不记录 mysql 日志,不可以恢复数据。

ts
import emysql from '@dpapejs/emysql'

// 数据库实例化
const mysql = new emysql({
  password: '[db登录密码]',
  user: '[db登录用户名]',
  database: '访问数据库名称'
})

// 创建 t_user 表
mysql.table
  .truncate('t_user')
  .then(() => {
    // 清空表数据成功
  })
  .catch((err) => {
    // 清空表数据失败
    console.error('[ERROR]::', err)
  })