SQL入门

来源:互联网 发布:电脑钢琴是什么软件 编辑:程序博客网 时间:2024/05/21 22:53

最近想做一个人脸相册,需要用到数据库。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 sqlite3conn = 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)
原创粉丝点击