zoukankan      html  css  js  c++  java
  • sqlite3主键,外键

    //参考 https://blog.csdn.net/yimenglin/article/details/92794528?utm_medium=distribute.pc_relevant_right.none-task-blog-BlogCommendFromMachineLearnPai2-16.channel_param_right&depth_1-utm_source=distribute.pc_relevant_right.none-task-blog-BlogCommendFromMachineLearnPai2-16.channel_param_right

    关系型数据库中的一条记录中有若干个属性,若其中某一个属性组(注意是组)能唯一标识一条记录,该属性组就可以成为一个主键。

    1.主键是能确定一条记录的唯一标识

    比如,一条记录包括身份证号,姓名,年龄。

    身份证号是唯一能确定这个人的,其他都可能有重复,所以,身份证号可以是主键。

    主键:一般用于对数据的快速定位(索引作用)(在A表中创建一个名为ID的自增长的主键 CREATE TABLE IF NOT EXISTS A(ID INTEGER PRIMARY KEY AUTOINCREMENT);

    2.外键用于与另一张表的关联。是能确定另一张表记录的字段,用于保持数据的一致性。

    外键:对数据的增加或删除加条件,满足条件时才能更改(约束作用)(将数据库中指定的两个表的指定列关联。CREATE TABLE IF NOT EXISTS B(A_ID INT,foreign key(A_ID) references A(ID) on delete cascade); 作用:将B表中的A_ID列设为外键且和A表中的ID关联。此处外键是删除限制,当删除A表中ID=1的行时,B表中所有A_ID=1的行都会被删除)《-级联操作 还可以加上foreign key(ROI_Info_ID) references ROI_Info(ID) on update cascade 更新限制。

    删除:PRAGMA foreign_keys=ON; Delete From A Where ID= 4;(删除A表中ID=4的行,表B中A_ID=4的所有行同时删除,需要在执行的sql语句中加上PRAGMA foreign_keys=ON;,因为sqlite3默认为关闭外键限制的)

    查询语句理解:

    int sqlite3_get_table(
    sqlite3 *db, /* An open database */
    const char *zSql, /* SQL to be evaluated */
    char ***pazResult, /* Results of the query */
    int *pnRow, /* Number of result rows written here */
    int *pnColumn, /* Number of result columns written here */
    char **pzErrmsg /* Error msg written here */
    );

    参数
    db:已经打开的db的指针
    zSql:sqlite3查询语句
    pazResult:所有符合查询条件的数据的一个数组
    pnRow:一共有(pnRow + 1)行(从0开始,第0行是表头)
    pnColumn:一共多少列(从0开始)
    取最后一行最后一列的数据:pazResult[pnRow * pnColumn + pnColumn - 1]

  • 相关阅读:
    极大似然法估计
    概率统计
    打怪升级必备书单
    嵌入式运用的思路
    清华大学保研笔试题
    使用ffmpeg将海康视频rtsp转为hls
    Linux基础系统权限
    Ubuntu使用tzselect修改时区
    Apache mod_rewrite规则重写的标志说明
    Postgresql导出指定的数据表
  • 原文地址:https://www.cnblogs.com/linxisuo/p/13640398.html
Copyright © 2011-2022 走看看