SQLite简介、常用SQL语句、SQL使用速查


一.SQLite 简介

目标

  • 知道 SQLite 基本概念
  • 知道关系型数据库的基本概念和术语

简介

  • 是一款轻量级数据库
  • 设计目标是嵌入式
  • 占用资源少
  • 处理速度快
  • 当前版本 3.13,MAC 内置已经安装了 SQLite

官方网站:http://www.sqlite.org/

什么是 SQLite

  • SQLite 是一个 SQL 数据库引擎,具有:

    • 自给自足
      • 不需要任何外部的依赖
    • 无服务器
      • 不需要一个单独的服务器进程或操作的系统
    • 零配置
      • 不需要安装或管理
      • 一个完整的 SQLite 数据库就是一个单一的磁盘文件
    • 轻量级
      • 完全配置时小于 400K,省略可选功能配置时小于 250K
    • 事务性支持
    • 非常适合用于移动端的本地数据存储
  • 服务端使用的数据库,如:OrcalSQL ServerMySQL...则需要独立的服务器,安装,配置,维护……

关系型数据库的特点

  • 一个 列/字段(COL) 存储一个值,类似于对象的一个属性
  • 一 行(ROW) 存储一条记录,类似于一个对象
  • 一个 表(TABLE) 存储一系列数据,类似于对象数组
  • 多个  之间存在一定 关系,类似于对象之间的关系,例如:一条微博数据中包含用户记录

术语

  • 字段(Col / Field):一个字段存储一个值,可以存储 INTEGERREALTEXTBLOBNULL 五种类型的数据
    • SQLite 在存储时,本质上并不区分准确的数据类型
    • 数据库主要的目的是做数据的检索,通常不会把无法检索的二进制数据保存在数据库中
  • 主键:Primary Key唯一标示一条记录的字段,具有以下特点:
    • 名字:xxx_id
    • 类型:Integer
    • 自动增长
    • 准确数值由数据库决定,程序员不用关心
  • 外键:Foreign Key,对应其他关系表的标示,利用外键 可以和另外一个建立起"关系"
    • 方便数据维护
    • 节约存储空间
  • 二.常用 SQL 语句

    目标

    • 知道 SQL 语句的三个分类
    • 掌握常用 SQL 语句的基本语法结构
    • 做到能够基本看懂简单的 SQL 语句
    • 在数据库开发中,针对数据库的操作都是通过 SQL 语句执行的
    • 作为移动端的程序员,需要掌握简单/常用 SQL 语句的编写和维护能力

    SQL 语句分类

    DDL - 数据定义语言

    命令描述
    CREATE创建一个新的表,一个表的视图,或者数据库中的其他对象
    ALTER修改数据库中的某个已有的数据库对象,比如一个表
    DROP删除整个表,或者表的视图,或者数据库中的其他对象
    • 不需要记忆,可以直接从客户端软件复制/粘贴

    DML - 数据操作语言

    命令描述
    INSERT新增
    UPDATE修改
    DELETE删除
    • 需要掌握,语法固定,简单

    DQL - 数据查询语言

    命令描述
    SELECT查询
    • 需要掌握一些简单的查询指令



    三.SQL使用 速查

    创建表

    /*
        创建数据表
    
        CREATE TABLE '表名' (
            '字段名' 类型(INTEGER, REAL, TEXT, BLOB)
                    NOT NULL    不允许为空
                    PRIMARY KEY    主键
                    AUTOINCREMENT 自增长,
            '字段名2' 类型,
            ...
        )
    
        注意:在开发中,如果是从 Navicat 粘贴的 SQL,需要自己添加一个指令
        IF NOT EXISTS 加在表名前,如果数据表已经存在,就什么也不做
    */
    
    CREATE TABLE IF NOT EXISTS "T_Person" (
         "id" INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
         "name" TEXT,
         "age" INTEGER,
         "heigth" REAL
    )
    
    /* 简单约束 */
    CREATE TABLE IF NOT EXISTS t_student
    (
        id INTEGER PRIMARY KEY AUTOINCREMENT,
        name TEXT,
        age INTEGER
    );
    
    CREATE TABLE IF NOT EXISTS t_student
    (
        id INTEGER PRIMARY KEY AUTOINCREMENT,
        name TEXT UNIQUE,
        age INTEGER
    );
    
    /* 添加主键 */
    CREATE TABLE IF NOT EXISTS t_student
    (
        id INTEGER PRIMARY KEY AUTOINCREMENT,
        name TEXT,
        age INTEGER,
        score REAL
    );
    
    /* 添加主键 */
    CREATE TABLE IF NOT EXISTS t_student
    (
        id INTEGER,
        name TEXT,
        age INTEGER,
        score REAL,
        PRIMARY KEY(id)
    );
    

    插入

     INSERT INTO t_student
        (age, score, name)
        VALUES
        ('28', 100, 'zhangsan');
    
     INSERT INTO t_student
        (name, age)
        VALUES
        ('lisi', '28');
    
    INSERT INTO t_student
        (score)
        VALUES
        (100);
    

    修改

    UPDATE t_student
        SET name = 'MM'
        WHERE age = 10;
    
    UPDATE t_student
        SET name = 'WW'
        WHERE age is 7;
    
    UPDATE t_student
        SET name = 'XXOO'
        WHERE age < 20;
    
    UPDATE t_student
        SET name = 'NNMM'
        WHERE age < 50 and score > 10;
    
    /*更新记录的name*/
    UPDATE t_student SET name = 'zhangsan';
    

    删除

    DELETE FROM t_student;
    
    DELETE FROM t_student WHERE age < 50;
    

    查询

    /* 分页 */
    SELECT * FROM t_student
    ORDER BY id ASC LIMIT 30, 10;
    
    /* 排序 */
    SELECT * FROM t_student
    WHERE score > 50
    ORDER BY age DESC;
    
    SELECT * FROM t_student
    WHERE score < 50
    ORDER BY age ASC , score DESC;
    
    /* 计量 */
    SELECT COUNT(*)
    FROM t_student
    WHERE age > 50;
    
    /* 别名 */
    SELECT name as myName, age as myAge, score as myScore
    FROM t_student;
    
    SELECT name myName, age myAge, score myScore
    FROM t_student;
    
    SELECT s.name myName, s.age myAge, s.score myScore
    FROM t_student s
    WHERE s.age > 50;
    
    /* 查询 */
    SELECT name, age, score FROM t_student;
    SELECT * FROM t_student;
    

    删除表

    /*删除表*/
    DROP TABLE IF EXISTS t_student;
    




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值