数据库基础和sqlite

数据库介绍

SQL

structured query language 结构化查询语言。专门对数据库进行查找、增加、修改、删除、统计的操作语言。
CURD 增删查改 create update retrieve delete。
书写风格,关键字大小写都行,建议大写。表名大小写都行,但是在一些数据库中不区分大小写,建议小写。

基本语法

  1. 查找
    SELECT 字段1,字段2,字段3,… FROM 表名; python中返回值形如[(1, 502班, 小明, 男), (), ()]。
    字段比较多时简写为 SELECT * FROM 表名; 由于数据库执行时会把*转换为字段再执行,性能极微小下降。
    SELECT * FROM 表名 WHERE 字段1 = 过滤值,字典2=过滤值 ; where限定条件查找。
  2. 添加
    INSERT 字段1,字段2,… INTO 表名 VALUES (1, “小明”, “男”);
    简写 INSERT INTO 表名 VALUES (1, “小明”, “男”);
  3. 修改
    UPDATE 表名 SET 字段1=新值,字段2=新值 WHERE 字段1 = 过滤值;
    注意没有where条件限定行的话将会更新整张表。
  4. 删除
    DELETE FROM 表名; 注意会删除整张表。
    DELETE FROM 表名 WHERE 字段1 = 过滤值; 限定条件删除某些行。
  5. 创建表
    CREATE TABLE 表名 {
    字段类型 字段名 其它关键字(主键 备注),
    INT id PRIMARY KEY,
    VARCHAR(20) username ,
    进阶语法
    分组group by、统计、聚合having max avg,后续文章再讲。

下面写几个 sqlite的例子:

# student_list3 = cursor.fetchall()
student3 = cursor.fetchone()
# print(student_list3)
print(f'学生姓名是 {student3[1]}')
# print('学生姓名是{} 性别{} 住址{} 电话{}'.format(student3['name'], student3[2], ))

cursor.execute("""
    UPDATE student SET name="大红" WHERE id=3;
""")
connect.commit()
cursor.execute(""" select * from student; """)
print(cursor.fetchall())

cursor.close()
connect.close()

“”"
cursor.fetchall() 取回结果集,形如[(1, ‘小王’), (2, ‘小明’)] 大列表,列表每一项是元组、是一行,元组里的每一项对应每一列的值。结果空返回[]。
cursor.fetchone() 取回一条数据,形如 (2, ‘小明’) 。结果空返回None类型。如果select符合多条,返回多条结果里的第一条。

cursor.fetchxxx() 方法为了节省内存和速度采用了生成器结构,只能取一次。
“”"

“”"
sql基础语法补充:

  1. 主键:一张表一般都有一列主键,主键primary key一般名叫 id,字段类型一般为自增整数。当insert行内容时,sql语句可以不插入id列,数据库会帮你自动插入并自增auto increase。
    主键不能重复。主键好处是确保数据一致性、方便查询。如果一列为主键,那么必然非空not null和唯一unique。
    2.如果工作中一个数据库连接实例下有多个库,那么表名要带上命名空间,例如main.student。
    3.丢弃表 drop。跟delete关键字相比更为严重,delete删除某行或清空表内容 表结构还在。而drop是完全删除丢弃整个表,内容和结构都删除。 drop table [表名]。
    4.字段被双引号括住 ,形如SELECT “id”, “name” FROM student; ,结果一样。好处是避免数据库关键字导致的错误。当数据库解释器遇到引号时,会认为引号里的名字就是用户自定义的字段名而不是内置关键字。平时省事可以不加引号。

数据库概念补充:
数据库的大概原理:数据按树形结构存储,查找数据时只需比对几次就能查出来。数据量增大时,查询时间成对数慢速增长。
索引:index,目录。索引会占据一定存储空间,在数据库中以树型数据结构存储,建立的是目录到硬盘存储的数据的映射。就好像平时看的书籍。创建主键的那一列会自动创建索引。一般在查询经常比较的字段上创建索引(如id列、phone列)。优点大幅提高select查询效率。缺点是占据更多的硬盘空间。
事务:transaction。 当有多句sql语句的时候,例如sql1 插入银行交易表一行数据金额100元、sql2 修改刚才插入的一行数据的金额为98元,但执行sql1的时候由于用户拥堵等原因执行失败,这时再执行sql2必然错误或误修改其它的正常数据。为了避免这种情况,把这两句sql都放入一个事务执行,只要一个事务中任意一条sql执行失败,那么其它已执行的sql会回到修改前状态(回滚rolling),只有当所有sql都执行成功,才会一起commit生效。简单来说,事务要么都执行,要么出错都不行。优点 保证数据一致性。
“”"

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值