猫史档案馆


【box3.0】SQL教程--创建01

用户:小熊与雪小熊与雪查看:16 回复:13 评论:16 创建时间:2021-03-11T20:10:51


你在做BOX3.0是,是不是想做存档功能?

你在游玩别人的地图时,是不是十分羡慕?

如果是,那么这篇教程十分适合你!

闲话少说,进入主题!

1、注意

使用SQL语句时,将语句包含在反引号 ` ` 里面。反引号前添上db.sql如:

db.sql`SELECT * FROM users`

2、技巧

用${}可以将大括号内的值转变为适用语句的类型,可以与字符串相拼接,注:要用反引号引起来。如:

console.log(`${entity.player.name}进入地图`)//益智作者进入地图
`SELECT * FROM users WHERE name=${entity.player.name}` //

3、类型

可以存入表中的类型有:

TEXT字符串 'abc' 、`${entity.player.name}`

INTEGER整数 3、157、-21

REAL浮点(小数) 3.42 、 5.18 、-0.09

NUMERIC其余类型 true、flase

以上是SQL常用的类型

4、表

这是一个SQL表格:

 

序号      用户名         钱

—————————————

1        '益智作者'       500

2         '吉吉喵'        3000

async function createTable() {
    await db.sql`CREATE TABLE IF NOT EXISTS players (
        name VARCHAR(50) PRIMARY KEY UNIQUE NOT NULL,
        money INTEGER DEFAULT ''
    )`;
}
//普通键的创建方法:属性名 类型 DEFAULT 初始值 

1、因为要用到await,所以要用async function

2、IF NOT EXISTS players 当不存在players表时,EXISTS存在

3、除搜索键外其他都是普通键 如:

async function createTable() {
    await db.sql`CREATE TABLE IF NOT EXISTS players (
        name VARCHAR(50) PRIMARY KEY UNIQUE NOT NULL,
        money INTEGER DEFAULT '',
        ifBig NUMERIC DEFAULT true,
        say TEXT DEFAULT ''
    )`;
}
//name是搜索键,以后会讲

4、赋值后要加逗号,最后一行不能加,见上代码3-6行末尾(这也是我经常犯的错误)

 

可以看到,表格主要分为 序号、属性与数值,SQL表创建出来后,里面是没有数据的,这个我们以后再说

这节课,我们主要学了类型与技巧,请大家多多复习~

具体怎么创建,我们在下节课将会运用今天的知识来解决!

 

留个作业:

1、在上表中,用户名、钱分别是什么类型?

2、用普通键的创建方法:属性名 类型 DEFAULT 初始值 的方法分别创建一个整数、浮点、字符串、其他类型的普通键

 


回复

上一页1 页 / 共 1下一页
SKQASKQA

??

点赞0


评论


迷失冷光迷失冷光

NUMERIC占空间很大,如果要储存布尔值的话用BIT就行了

点赞0


评论


该账号已被封禁该账号已被封禁

所以为什么现在很多人在写sql储存整数的时候很多都在写real not nullemotion_doge

点赞1


评论


FML饭米粒FML饭米粒

async function createTable() {
    await db.sql`CREATE TABLE IF NOT EXISTS players (
        name VARCHAR(50) PRIMARY KEY UNIQUE NOT NULL,
        money INTEGER DEFAULT ''
    )`;
}

这里的money是整数类型,默认值应该为0,不是‘’

点赞0


评论


FML饭米粒FML饭米粒

求助!!!

db.sql`CREATE TABLE IF NOT EXISTS VIP(
    id TEXT PRIMARY KEY UNIQUE NOT NULL,
    vip NUMERIC DEFAULT false
)`
world.onPlayerJoin(async ({entity})=>{
    const data =  await db.sql`SELECT vip FROM VIP WHERE id = ${entity.player.userKey}`
    for (const vip of data) {
        const data = JSON.stringify(vip)
    }
    console.log(data)
    if(data == 1){
        entity.player.invisible=true;
        entity.player.canFly=true;
        textDialog(entity,'您好,尊贵的VIP用户,您已获得飞行及隐身权限!','VIP系统')
    }else{
        if(data && !data.length){
            await db.sql`INSERT INTO VIP(id, vip) VALUES (${entity.player.userKey}, false)`
        }
        await db.sql`UPDATE vip SET vip = "true" WHERE id = ${entity.player.userKey}`
………………

为什么我执行了以后告诉我data是[object Object]?请问如何修改?

点赞0


评论


凌_墨水凌_墨水

我差点大喊一声

点赞0


评论


SKQASKQA

PRIMARY KEY到底是干嘛用的

还有讲一下ALTER和SELECT

点赞0


评论


SKQASKQA

作业:

1.用户名是字符串,钱是整数

2.

async function createTable(){
    await db.sql`CREATE TABLE IF NOT EXISTS table(
        int INTEGER DEFAULT 0
        fl REAL DEFAULT 0.1 --初始值的类型必须是值的类型吗?
        str TEXT DEFAULT '' --和VARCHAR类型有什么区别?
        bool NUMERIC DEFAULT true
    )
    `
}
createTable()//这个已经是异步函数了,需要再套async吗?

点赞0


评论


◢■■■+O◢■■■+O

QAQ

看不懂

点赞0


评论


Alex79Alex79

我直接看API不香吗?emotion_doge

点赞0


评论


SKQASKQA

大佬看一下https://shequ.codemao.cn/community/377229 哪里错了?

点赞0


评论


星辰Lolita星辰Lolita

这个看一下:https://shequ.codemao.cn/community/377031

点赞0


评论


小熊与雪小熊与雪

第二期:

https://shequ.codemao.cn/community/379575

话说之前发过一次教程,不过被莫名其妙的删了……

点赞0


评论