sqlite3数据库-sqlite语句(四)

语法:
(a) SQL语句要以分号结尾;  
(b) SQL不区分关键字大小写;
(c)字符串和日期用单引号括起来,数字直接写;
(d) 使用英文,数字,下划线作为数据库,表和列的名称;

DDL(Data Definition Language,数据定义语言)

(1) CREATE:创建数据库和表等对象;

通过CREATE TABLE语句创建;表和列的命名需使用有意义的文字;指定列的数据类型(整数型,字符型和日期型等);可在表中设置约束(主键约束和NOT NULL约束等);

CREATE TABLE <表名>
( <列名1> <数据类型> <该列所需约束>,
  <列名2> <数据类型> <该列所需约束>,
  <列名3> <数据类型> <该列所需约束>,
              .
              .
  <该表的约束1>,<该表的约束2>,.... );

约束可以在定义列的时候进行设置,也可以在末尾进行设置(NOT NULL除外);

创建一张商品表:

CREATE TABLE Product
(id CHAR(4) NOT NULL,
 name VARCHAR(100) NOT NULL,
 type VARCHAR(32) NOT NULL,
 sale_price INTEGER,
 purchase_prise INTEGER,
 data DATA,
 PRIMARY KEY (id));
  1. INTEGER用于指定整数的列的数据类型,不能存小数;

  1. CHAR 用于指定存储字符串的列的数据类型(字符型);可以像CAHR(10)或CHAR(200)这样,在括号中指定该列可存储的字符串的最大长度;支付长超出最大长度的部分是无法输入到该列中的; 当存储的字符串长度达不到最大长度时,使用半角空格补足;

  1. VARCHAR 用来指定存储字符串的列的数据类型(字符串类型), 在括号中指定该列可存储的字符串的最大长度;该类型是可变长字符串形式来保存字符串的,当存储的字符串长度达不到最大长度时,不会使用半角空格补足;

  1. DATA 用于存储日期(年月日)的列的数据类型;如'2022-12-11';

  1. NOT NULL约束表该列不能输入空白;否则出错;

  1. PRIMARY KEY 用于给id列设置主键约束; 主键:唯一确定一行数据的列,主键列中值不能重复;

(2) DROP:删除数据库和表等对象;
DROP TABLE Product

说明: 删除的表是无法恢复的;

(3) 修改(变更)数据库和表等对象的结构;

使用ALTER TABLE语句向表中添加列或删除列;

把表创建出来后发现少了几列,无需删除表重新创建,可使用ALTER TABLE语句变更表;可添加或删除列;

  1. 添加列的语句

ALTER TABLE <表名> ADD COLUMN <列的定义>;
/*如在商品表中添加一列:*/
ALTER TABLE Product ADD COLUMN lagunge VATCHAR(100);
  1. 变更表名

若表名写错,可通过RENAME修改;

ALTER TABLE Product RENAME to Producter

示例

void CreateAddrDB()
{
    int ret;
    char *sql = NULL;
    char *errMsg = NULL;
    sqlite3 *ppDb = NULL;

    ret = sqlite3_open("./config.db", &ppDb);
    if(ret != SQLITE_OK){
        printf("open config.db failed %s\n",sqlite3_errmsg(ppDb));
        return ;
    }

    printf("open config.db ok\n");

    sql = "CREATE TABLE Addressbook "\
          "(regist_no INTEGER PRIMARY KEY NOT NULL,"\
           "name VARCHAR(128) NOT NULL, "\
           "address VARCHAR(256) NOT NULL,"\
           "tel_no CHAR(10),"\
           "mail_address CHAR(20));";

    ret = sqlite3_exec(ppDb,sql, NULL ,NULL, &errMsg);
    if(ret != SQLITE_OK){
        printf("sqlite3_exec create Addressbook err %s\n",errMsg);
        sqlite3_free(errMsg);
    }

    sql = "INSERT INTO Addressbook VALUES(0,'ZhangShan','ShangHai','7652110','999@qq.com');";
    ret = sqlite3_exec(ppDb,sql, NULL ,NULL, &errMsg);
    if(ret != SQLITE_OK){
        printf("sqlite3_exec insert err %s\n",errMsg);
        sqlite3_free(errMsg);
    }
    
    //sql = "ALTER TABLE Addressbook ADD COLUMN postal_code CHAR(8);";//ok
    //sql = "ALTER TABLE AddressBK RENAME to Addressbook;"; //ok
    sql = "DROP TABLE Addressbook"; //ok
    ret = sqlite3_exec(ppDb,sql, NULL ,NULL, &errMsg);
    if(ret != SQLITE_OK){
        printf("sqlite3_exec ALTER err %s\n",errMsg);
        sqlite3_free(errMsg);
    }

    sqlite3_close(ppDb);
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

天未及海宽

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值