Web SQL(web数据库)新

作为前端数据持久化的一种方案(关系型数据库)可惜只有谷歌支持https://www.w3.org/TR/webdatabase/

IndexedDB的nosql数据库 https://developer.mozilla.org/zh-CN/docs/Web/API/IndexedDB_API

核心语法

openDatabase 创建新数据库或者打开现有的数据库

transaction 创建事务

executeSql 执行SQL

openDatabase 用法

    const db = openDatabase('mydb', '1.0', 'Test DB', 2 * 1024 * 1024);
    const db = openDatabase('数据库名称', '版本号', '描述文本', '大小',回调方法);

transaction 事务执行

    db.transaction((tx)=>{
      
    }

executeSql SQL语句(增删改查)

需要注意的是事务的执行是异步的

创建名为LOGS 的表

unique 约束为唯一值

CREATE TABLE IF NOT EXISTS 表名 (列名称1 PRIMARY KEY,列名称2 UNIQUE ,列名称3)

db.transaction((tx)=>{
  tx.executeSql('CREATE TABLE IF NOT EXISTS LOGS (id unique, log)');
}

增加条目

单条新增
    INSERT INTO 表名 VALUES (?,?,?,?,?,?,?)
    INSERT INTO 表名 (key1,key2) VALUES (value1,value2)  静态
    INSERT INTO LOGS (id,log) VALUES (?,?)",[e_id,e_log]) 动态 
    `INSERT INTO LOGS (id,log) VALUES (${e_id},${e_log})` ES6
    //静态
    db.transaction((tx)=>{
      tx.executeSql("INSERT INTO LOGS (id,log) VALUES (1,'今天')")
    }
    //动态
    db.transaction((tx)=>{
      const e_id=2,e_log='明天'
      tx.executeSql("INSERT INTO LOGS (id,log) VALUES (?,?)",[e_id,e_log])  
      tx.executeSql(`INSERT INTO LOGS (id,log) VALUES (${e_id},${e_log})`)  //ES6
    }
多条
    INSERT INTO 表名 (key1,key2) VALUES (value1,value1),(value2,value2),(value3,value3)

    db.transaction((tx)=>{
      tx.executeSql("INSERT INTO LOGS (id,log) VALUES (1,'昨天'),(2,'今天')(3,'明天')") 
    })

删除表

    DROP TABLE 表名
    db.transaction((tx)=>{
      tx.executeSql('DROP TABLE LOGS')
    }

清空表

    'DELETE FROM 表名'
    db.transaction((tx)=>{
      tx.executeSql('DELETE FROM LOGS')
    }

删除条目

    DELETE FROM 表名 WHERE id=1 静态
    DELETE FROM 表名 WHERE id=?',[id] 动态
    `DELETE FROM 表名 WHERE id=${id}` ES6
    db.transaction((tx)=>{
       tx.executeSql('DELETE FROM LOGS WHERE id=1')
       tx.executeSql('DELETE FROM LOGS WHERE id=?',[id])
       tx.executeSql(`DELETE FROM LOGS WHERE id=${id}`)
    }

批量修改

UPDATE LOGS SET key=内容 

单条需要加条件否则批量修改

UPDATE LOGS SET key=内容 WHERE id=2

//多条
db.transaction((tx)=>{
    tx.executeSql("UPDATE LOGS SET log='星期天'")
})
//单条
db.transaction((tx)=>{
    tx.executeSql("UPDATE LOGS SET log='星期天'  WHERE id=1 ")
})

查表

SELECT * FROM LOGS //

db.transaction((tx)=>{
    tx.executeSql("SELECT * FROM LOGS ",[],function(tx,results){
    console.log(tx,results)
   })
})

查询条件

%2%表示2开头%2表示 2结尾%2%表示 包含2
_下划线a_表示 2位开头是a_a表示 2位结尾是a_a_表示三位中间是a
< ,>, =,=>,<=
and
or
IN (1,2)等于1或2
NOT IN (1,2)不为1,或2
BETWEEN1 AND 2001 和200之间
     db.transaction((tx)=>{
        tx.executeSql("SELECT * FROM LOGS where id LIKE  '2%'",[],function(tx,results){
          console.log(tx,results)
        })
      })

兼容表

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值