SQL入门

最近想做一个人脸相册,需要用到数据库。python内置有sqlite3,可以直接使用,不用安装。

首先说一下数据库的几个基本概念:

  1. table(表)是数据库中存放数据的集合,一个数据库里面包含多张表,比如我要设计的数据库里面,包含image table, face table, person table。表和表之间用外键(foreign key)关联, 比如在我的例子中,外键是: image_id, person_id, face_id.
    这里写图片描述

  2. 要操作数据库,首先需要连接到数据库,一个数据库的连接称为connection

  3. 链接到数据库后,需要打开游标(cursor), 通过cursor执行SQL语句,然后获得执行结果。上面那个例子,用SQL语句
    这里写图片描述

  4. SQL语句
    这部分我看了W3School的基础教程,很快就看完了
    SQL (结构化查询语言)语句,对大小写不敏感,分为

    • data manage language (DML)数据操作语言
    • 包括查询和更新
    • SELECT 从数据库表中获取数据

      • SELECT 列名称 FROM 表名称
      • SELECT * FROM 表名称
      • SELECT DISTINCT 列名称 FROM 表名称
      • SELECT 列名称 FROM 表名称 WHERE 列 运算符 值 SELECT * FROM Persons WHERE City='Beijing',SQL 的文本值用单引号
      • AND OR `SELECT * FROM Persons WHERE (FirstName=’Thomas’ AND LastName=’Carter’)
      • ORDER NY (DESC SELECT Company, OrderNumber FROM myTable ORDER BY Company DESC, number ASC
    • DELETE 从数据库表中删除数据

      • DELETE FROM 表名称 WHERE 列名称 = 值 一整行的数据被删除
      • DELETE * FROM 表名称 不删除表的情况下删除所有的行。意味着表的结构、属性和索引都是完整的.
    • INSERT INTO 向数据库表中插入数据
      • 向表中插入新的一行数据 INSERT INTO 表名称 VALUES ('Chunying', 'female', '24', 'Shanghai')
      • 向指定的列中插入数据 INSERT INTO 表名称 (Name, gender) VALUES ('Neo', 'male') 这样,只填了这两列
    • UPDATE 用于修改表中的数据,比如的硕士的,起薪10k
      • UPDATE 表名称 SET 列1 = 新值 WHERE 列2 = 某值,比如UPDATE 表名称 SET age = 23, city='Shanghai' WHERE Name = 'Neo' 这样把上面那空的两列补上了
    • data definition language (DDL) 数据定义语言
    • CREATE DATABASE 创建新数据库
    • ALTER DATABASE 修改数据库
    • CREATE TABLE 创建新表
      • CREATE TABLE 表名称
        (
        列名称1 数据类型,
        列名称2 数据类型,
        列名称3 数据类型,
        ....
        )

        这里写图片描述
    • ALTER TABLE 变更(改变)数据库表
    • DROP TABLE 删除表
    • CREATE INDEX 创建索引(搜索键)
    • DROP INDEX 删除索引

下面是我写个一个小例子,3个表, Image, Person, Face

import sqlite3
conn = sqlite3.connect('face.db')
print ("Opened database successfully")
def creat_Image_table(conn):
    sql='''
    CREATE TABLE Image(
    Image_id    int,
    Image_name  varchar(50),
    Image_path  varchar(255),
    Image_date  date
    );
    '''
    conn.execute(sql)
def creat_Person_table(conn):
    sql='''
    CREATE TABLE Person(
    Persion_id        int,
    Person_name       varchar(50),
    Person_birthdate  date,
    Person_gender     int(1)
    );
    '''
    conn.execute(sql)
def creat_Face_table(conn):
    sql='''
    CREATE TABLE Face(
    Face_id           int,
    Face_feature      BLOB,
    Face_person_id    int,
    Face_image_id     int
    );
    '''
    conn.execute(sql)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值